Oil Market Backwardation Signal
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.
Oil Market Backwardation Signal
Alert ID: CURVE_BACKWARDATION
Category: energy
Cross-detection: no
Severity
WARNING β conditions deteriorating; worth monitoring
Trigger condition
{
"type": "and",
"conditions": [
{
"field": "energy_regime",
"op": "in",
"value": [
"SHOCK",
"CRISIS",
"SHOCK_UP",
"RISING"
]
},
{
"field": "crack_spread",
"op": "gt",
"value": 30
}
],
"_registry_band_intentional": true,
"_intentional_reason": "Mid-band early-warning gated by energy_regime IN {SHOCK, CRISIS, SHOCK_UP, RISING} \u2014 fires earlier than the band edge when the regime is already stressed."
}
All of the following must hold:
energy_regimein [βSHOCKβ, βCRISISβ, βSHOCK_UPβ, βRISINGβ]crack_spread> 30
Message template
Oil market backwardation signal: energy regime {energy_regime} with crack spread at ${crack_spread:.2f}/bbl β supply disruption driving spot premium.
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:
energy_regime,crack_spread(see the signals reference). - Alert reference
- Live alerts feed