Joint SPX/VIX Volatility Research System  ·  14 components  ·  666 tests  ·  end-of-day data  ·  by Navnoor Bawa
S&P 500
7,656.98
+0.86% vs prev close
2026-09-11
VIX 30-DAY IMPLIED
15.84
🟢 NORMAL range
VVIX VOL-OF-VOL
91.28
Normal VVIX
Term Structure
CONTANGO
Front=14.47 → Back=20.39
Slope=+5.92 pts
Current Regime — rule-based label
R1 · SHORT GAMMA
Deterministic rule (rv₂₀ vs VIX · VVIX gate) — the label the backtest trades on. As of 2026-09-11.
ML classifier · research only R1 · 60.8%
R0 LONG γ
0.0%
R1 SHORT γ
60.8%
R2 VOMMA
39.2%
63.4% out-of-sample, it loses to the 90% “predict-yesterday” baseline, so it is not used for trading (shown for research only).
R0
Low VIX / backwardation → buy straddles
R1
Normal contango → sell premium
R2
High VVIX → vomma trades
PDV Model Forecast vs ATM Implied
CURRENT VIX (30D IMPLIED)
15.84%
PDV FORECAST (REALISED)
8.37%
IMPLIED − REALISED SPREAD
+7.47pp
Moderate vol risk premium → favours short vol strategies
1.1th
percentile
2015–2025 mean: +3.76pp
ⓘ Spread at 1.1th percentile — vol appears cheap relative to 10-year history. Historical mean: +3.76pp. Current: +7.47pp.
Implied–Realised spread — last 60 trading days
σ₁ (5d EWMA): 8.71%
σ₂ (60d EWMA): 14.32%
Model: OLS + GARCH(1,1)
Updated: 2025-12-30
VIX Term Structure
Rule-Label Distribution — Full Period (2010 – 2026)
R0 LONG GAMMA
10.2%
428 / 4,181 days
Buy straddles
R1 SHORT GAMMA
68.0%
2,841 / 4,181 days
Sell premium
R2 VOMMA ACTIVE
21.8%
912 / 4,181 days
Vomma trades
Overall Accuracy: 63.4%
Persistence baseline: 90.0%
Features: 5 (vvix excluded — C16)
Top Feature: fear_premium (39%)
Model: XGBoost 3-class
Status: RESEARCH ONLY (C17)
C16: vvix removed from training — the R2 label is defined as VVIX>threshold, so including it inflated accuracy to 86.2% by letting the model recover its own labelling rule; 63.4% is the honest out-of-sample number. C17: 63.4% loses to the no-skill persistence baseline ("predict yesterday's regime" scores 90.0% on 2020+, and yesterday's label is fully observable). The classifier is demoted from the trading loop — the backtest uses the lagged deterministic rule labels directly. Kept here as a documented negative result: regimes are too sticky for daily ML classification to add value.
PDV Model — Guyon-Lekeufack (2023)
σ̂(t) = 0.354 × σ₁ + 0.241 × σ₂ − 1.496 × lev + 0.0346
σ₁ half-life: 5 days (EWMA)
σ₂ half-life: 60 days (EWMA)
Walk-fwd R² (linear): 0.31
Walk-fwd R² (kernel): 0.23
GARCH persistence: 0.979
GARCH β: 0.890
Active model: PDVLinear3F  ·  PDVLinear4F requires VIX column in stored features.
COVID Stress Test — 2020-03-16
PDV predicted 92.4% ann vol. Actual realised: 202.6%. Error: −110pp — structural limitation of backward-looking models.