KB / alert
VIX Spike Above 30
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.
VIX Spike Above 30
Alert ID: VIX_SPIKE
Category: volatility
Cross-detection: no
Severity
WARNING — conditions deteriorating; worth monitoring
Trigger condition
{
"field": "vix_close",
"op": "gt",
"value": 30,
"_registry_band_intentional": true,
"_intentional_reason": "B7 (2026-05) tightened the registry High vol band from 30 \u2192 27 to align the BEARISH implication with the big_down SHAP discriminator. The VIX_SPIKE alert deliberately stays at 30 \u2014 it is a tail-spike notification rather than a band-edge crossing, sitting between the new High vol (27) and Fear (40) bands. Moving it down would over-fire the warning during routine elevated-vol weeks; keeping it at 30 preserves the original 'meaningful spike' semantics."
}
vix_close > 30
Message template
VIX spiked to {vix_close:.1f} — elevated volatility regime.
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:
vix_close(no dedicated KB article yet — see /humans#signal-reference). - Alert reference (legacy monolith)
- Live alerts feed