Sustained Shift
YAML type: sustain | Category: Adaptive
Detects run-length deviations that stay above/below baseline for multiple days.
Description
Sustain requires the series to remain away from a rolling baseline for at least minDurationDays. Cooldown reduces re-firing.
How it works

Sustain tracks how long values stay above or below a rolling baseline by at least deviationPercent. Only when that run reaches minDurationDays does it emit an anomaly; coolDownDays then reduces immediate re-firing.
Use it when the business cares about persistent shifts, not one-day blips. Baseline method (median or mean) changes how robust the reference level is.
Setup
Tune deviationPercent, baselineDays, and coolDownDays to match how long a real shift lasts.
Configure detectors on the data view Analysis tab or in YAML. Validate with Data Preview before enabling production schedules.
Settings
| Parameter | Default | Description |
|---|---|---|
baselineDays |
30 |
Rolling baseline window |
minDurationDays |
4 |
Minimum sustained duration |
deviationPercent |
25 |
Required % deviation from baseline |
mode |
both |
Direction -- see Allowed values |
coolDownDays |
7 |
Suppress re-fire after an alert |
baselineMethod |
median |
Baseline statistic -- see Allowed values |
Allowed values
mode
| Value | Meaning |
|---|---|
above |
Flag increases / values above the comparison (or high side of a band) |
below |
Flag decreases / values below the comparison (or low side of a band) |
both |
Flag either direction |
baselineMethod
| Value | Meaning |
|---|---|
median (default) |
Rolling baseline is the median of the prior baselineDays |
mean |
Rolling baseline is the mean of the prior baselineDays |
Shared series filters
Most detectors also accept optional series filters in params:
| Parameter | Purpose |
|---|---|
maxGapAmount |
Skip series when gap amount is too high (null = no limit). Catalog create-default is often 5. |
minValue |
Skip series whose average value is below this (null = no limit). Catalog create-default is often 1000. |
maxValue |
Skip series whose average value is above this (optional; omit/null = no limit) |
useSpecialDates |
When true, suppress anomalies that overlap special dates |
When a filter skips a series, Data Preview shows the reason.
Configuration example
analysis:
detectors:
- type: sustain
params:
baselineDays: 30
minDurationDays: 4
deviationPercent: 25.0
mode: both
coolDownDays: 7
baselineMethod: median
Using the detector
Prefer over Spike when the business cares about persistent shifts.
Use cases
- Prolonged conversion drops
- Multi-day outages reflected in KPIs
- Post-change performance regressions