Crack Spread Spike
Last verified
Auto-generated. This article is rebuilt from
app/signals/config/alert_thresholds.jsonbyscripts/build_alerts_kb.py. Edit the alert config and re-run the script β do not edit this file directly.
Crack Spread Spike
Alert ID: CRACK_SPREAD_SPIKE
Category: energy
Cross-detection: no
Severity
WARNING β conditions deteriorating; worth monitoring
Trigger condition
{
"type": "computed",
"computation": "vol_scaled_spike",
"field": "crack_spread",
"value": 35,
"_registry_band_intentional": true,
"_intentional_reason": "Mid-band early-warning between elevated (25) and extreme (40). Recalibrated 2026-07 (audit item #8) \u2014 see REAL_YIELD_RESTRICTIVE's condition comment for the pattern. crack_spread > 35 alone fired on 7/10 audited days from a stable elevated level; now requires clearing that same 35 floor AND a >=1.75-sigma break from the 20d baseline (app/signals/alerts.py:_vol_scaled_fires)."
}
crack_spread > 35 AND its deviation from the trailing 20-trading-day baseline exceeds the vol-scaled sigma multiplier (_VOL_SCALED_K in app/signals/alerts.py:_vol_scaled_fires). Falls back to the floor alone when no baseline was injected (missing history, <10 observations, or zero variance β see app/signals/capture.py:_inject_alert_baselines).
Message template
3-2-1 crack spread at ${crack_spread:.2f}/bbl {_crack_spread_baseline_note}, floor $35.00/bbl β refining margins extremely elevated, consumer fuel price pressure.
Rendered with the current signals dict via Python str.format. Placeholders that fail to resolve fall back to the raw template (see _format_message in app/signals/alerts.py).
Cooldown / dedup
- Cooldown: none. Re-evaluation on every cycle.
- Dedup: at most one
active(oracknowledged) row peralert_idat a time. Re-firing while active updatesfired_atand the message but keeps the originalfirst_fired_at.
Notifies
- Active alert feed (
/api/v1/alerts/active,/alerts/summary). - SSE stream (
/api/v1/agents/stream) for real-time consumers. alert_firedwebhook on first fire.alert_resolvedwebhook when the condition clears (non-cross-detection alerts only).
See also
- Signal fields referenced:
crack_spread(see the signals reference). - Alert reference
- Live alerts feed