Joint SPX/VIX Volatility Research System  ·  14 components  ·  637 tests  ·  end-of-day data  ·  by Navnoor Bawa
S&P 500
7,413.18
+0.07% vs prev close
2026-07-27
VIX 30-DAY IMPLIED
18.67
🟢 NORMAL range
VVIX VOL-OF-VOL
100.91
Elevated VVIX
Term Structure
CONTANGO
Front=16.85 → Back=22.28
Slope=+5.43 pts
Current Regime — rule-based label
R2 · VOMMA ACTIVE
Deterministic rule (rv₂₀ vs VIX · VVIX gate) — the label the backtest trades on. As of 2026-07-27.
ML classifier · research only R2 · 77.0%
R0 LONG γ
0.0%
R1 SHORT γ
23.0%
R2 VOMMA
77.0%
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)
18.67%
PDV FORECAST (REALISED)
8.37%
IMPLIED − REALISED SPREAD
+10.30pp
Implied vol significantly overstates expected realised → premium selling environment
0.6th
percentile
2015–2025 mean: +3.46pp
ⓘ Spread at 0.6th percentile — vol appears cheap relative to 10-year history. Historical mean: +3.46pp. Current: +10.30pp.
Implied–Realised spread — last 60 trading days
σ₁ (5d EWMA): 8.71%
σ₂ (60d EWMA): 14.32%
Model: OLS + GARCH(1,1)
Updated: 2026-07-27
VIX Term Structure
C8 Classifier — Full-Period Statistics (2015 – 2025)
R0 LONG GAMMA
12.7%
350 / 2,757 days
Buy straddles
R1 SHORT GAMMA
42.8%
1,180 / 2,757 days
Sell premium
R2 VOMMA ACTIVE
44.5%
1,227 / 2,757 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.