Summary¶
A market regime is a labeled, repeatable state of the options environment that gates which strategies are appropriate and how much risk to carry. The books treat conditions qualitatively — calm vs. choppy vs. typhoon, contango vs. backwardation13 — but a rules-based system needs regimes defined by variables computable ex-ante, before the trading day opens, with no lookahead. This concept fixes the vocabulary and the default state-variable set; detection methods live in Regime Detection Methods and the trading consequences in Regime-Dependent Delta Exposure.
Why Ex-Ante Computability Is Non-Negotiable¶
A regime label used to size or select today's trades must depend only on data observable at decision time:
- No lookahead: today's realized close, today's final VRP print, or "what happened after" cannot define the regime you trade in. This is the regime analogue of the vol-forecast discipline in Vol Forecasting Baselines.
- Stable measurement: each variable has a fixed snapshot time (e.g., prior close, or 09:35 ET), fixed lookback windows, and fixed quantile references computed on trailing data only.
- Hysteresis over flicker: raw thresholds flip labels on noise. Regime definitions should include a confirmation rule (e.g., N consecutive days in band, or enter/exit thresholds spread apart) so the label is a state, not a ticker.
Candidate State Variables¶
| Variable | Definition (ex-ante) | Snapshot | Why it matters |
|---|---|---|---|
| VIX level band | VIX prior close; bands e.g. <15 / 15–25 / 25–35 / >35 | prior close | Proxy for premium richness and fear level; the books' calm/typhoon axis is essentially this1 |
| VIX/VIX3M term slope | VIX ÷ VIX3M prior close; >1 = backwardation, <1 = contango | prior close | Near-dated fear; backwardation marks acute stress and destroys naive short-premium trades3 |
| VRP sign | IV30 (prior close) minus forecast RV30 (e.g., HAR/GARCH on trailing data) | prior close | The edge baseline from the EV contract: only sell premium when VRP is positive2 |
| Realized-vol percentile | Trailing 21d/63d realized vol vs. its trailing 1–3y distribution, fixed windows | prior close | Separates "IV is high because RV was high" from "IV is rich" |
| Correlation / dispersion | Trailing 21d average pairwise index-member correlation, or index-vol minus avg single-stock vol | prior close | Drives dispersion trades and how much single-name vs. index exposure is prudent |
| Credit spreads | IG or HY OAS level and 21d change (e.g., FRED data, prior business day) | prior business day | Leading-ish macro stress signal; widening credit precedes vol spikes more often than it lags them |
| Skew (25Δ put − 25Δ call IV) | Prior close from a liquid index | prior close | Cost of crash protection; the books' five skew stages map directly onto regime shifts1 |
Not all of these belong in the default regime label; each added variable costs data sparsity and fragility.
Sourcing the VIX / VIX3M term axis¶
This table fixes the measurement — both legs at the same prior close — and
deliberately not the vendor. Implementation (tools/regime_snapshot.py) reads:
- FRED
VIXCLS+VXVCLSin one request, latest date carrying both. Primary, and the source cited in every record through 2026-09-25. - Cboe
daily_prices/{VIX,VIX3M}_History.csv— the upstream FRED redistributes — consulted only when FRED is absent or stale againstmax_input_age_business_days, and used only if genuinely fresher.
These are the same numbers, not two opinions: all 23 overlapping trading days
from 2026-08-20 to 2026-09-22 agree to the cent. The fallback exists because
FRED's redistribution of these two series stalled at the 2026-09-22 close for
four business days in September 2026 while the rest of FRED (SP500, T10Y2Y,
DGS10) published normally, and the gate sat dark on inputs Cboe already had.
Every record names the source that actually fed it in provenance.term_source,
and a fallback day carries provenance.term_fallback with FRED's lag.
Never the Cboe live quote. That endpoint ignores the as-of date and produced the 2026-09-17 mixed-instant defect — yesterday's VIX over today's intraday VIX3M, a ratio of no single moment, and a spurious transition. Only the dated history files preserve the prior-close definition above.
Proposed Default Regime Set¶
A minimal, defensible three-axis partition — each axis computable from prior-close index data alone:
- VIX band (calm <20 / normal 20–30 / stressed >30), with a confirmation rule of 2 consecutive closes.
- Term slope (contango: VIX/VIX3M < 0.95 / flat 0.95–1.05 / backwardation > 1.05), same confirmation rule.
- VRP sign (positive: IV30 forecast exceeds RV forecast / negative otherwise), using the baseline forecast stack from Vol Forecasting Baselines.
This yields 3×3×2 = 18 cells; in practice most mass concentrates in a handful (calm/contango/VRP+; stressed/backwarded/VRP−). A transition is any state where the confirmed label changed within the last N days (e.g., 5) — transitions get their own conservative treatment rather than being lumped into either endpoint regime. As implemented in tools/regime_snapshot.py (2026-09-17), a day is in transition when either today's raw label differs from the confirmed label (pending confirmation) or the confirmed label changed within transition_lookback_days business days (cooling-off). A genuine regime change therefore produces at least one pending day plus the full cooling-off window of no new risk. The bootstrap confirmation (from no label) is not a change. The mapping from these labels to delta targets and structures is defined in Regime-Dependent Delta Exposure.
Validation Discipline¶
- Regime-label distributions must be computed point-in-time (labels as of each historical date, using only then-known data).
- Report per-regime base rates: frequency, average duration, transition matrix — so downstream rules are calibrated to how often regimes actually occur, not to memory.
- Any claim "strategy X works in regime R" must be evaluated with the EV contract's cost model and VRP baseline, conditioned on the regime label known ex-ante.
Links¶
- Regime Detection Methods — how labels are inferred and how much lag to expect
- Regime-Dependent Delta Exposure — the trading consequence of the label
- Vol Forecasting Baselines — the RV/VRP half of the default set
- Volatility (TOMIC) — the books' qualitative calm/typhoon picture
References¶
- Sinclair, Euan. Option Trading: Pricing and Volatility Strategies and Techniques. Wiley, 2010 — regime-aware volatility trading, VIX term structure.
- Bollerslev, Tauchen & Zhou, "Expected Stock Returns and Variance Risk Premia," Review of Financial Studies 22(11), 2009 — VRP as a measurable state variable.
- Fernandes, Medeiros & Scharth, "Modeling and predicting the CBOE market volatility index," Journal of Banking & Finance 45, 2014 — VIX dynamics and predictability.
- CBOE VIX white paper: https://www.cboe.com/micro/vix/vixwhite.pdf — VIX methodology; VIX3M contract available via CBOE (https://www.cboe.com/products/vix-index-volatility/vix-options-and-futures/).
Canonical Values¶
The v0 band values above are implemented canonically in tools/regime_config.json (consumed by the snapshot script); this concept documents their rationale. Amendments change the config + mapping_version together per the amendment process.
-
The five stages of skew and calm/typhoon condition language in TOMIC volatility. ↩↩↩
-
Volatility forecasting, mean reversion, and selling IV above estimated RV in Natenberg volatility. ↩
-
Favorable conditions for volatility selling and the risk of selling into backwardation in Volatility Selling. ↩↩
-
Tracking IV levels and term structure through time in Volatility Charts. ↩