VOL · 2017 – 2026 DATA

Sector Vol Surface Research

Pre-registered statistical tests of whether sector-ETF option surfaces predict forward realised volatility.

RESEARCH
Confirmatory resultsVOL
LOADING_

Each pre-registered test with its estimate and 95% block-bootstrap interval. Hover a row for the note.

Method
  • Model-free variance (Cboe VIX method) and an arbitrage-free SSVI surface per ETF
    • Calendar arbitrage removed by isotonic regression; parameters kept inside the no-butterfly region
  • Hypotheses written down before looking at results
  • Partial Spearman IC · 10k circular block bootstrap · BH correction · placebos
▶ Every statistic pinned to the git SHA that produced it, re-runnable on demand
Sessions
72,168
ETFs
29
History from
2017
Bootstrap draws
10,000
Hypotheses passed
1 of 3
H-INV effect
+0.8–2.1 vol pts
Overview

A volatility-forecasting study: rebuild sector-ETF implied-volatility surfaces from 2017 onward and test, under pre-registration, whether their shape predicts realised volatility. Hypotheses, horizons and thresholds were fixed before looking at results, and multiple-testing correction was applied across them.

Inverted term structures do precede volatility expansion (+0.8 to +2.1 vol points at 5–10 day horizons; 7 of 9 pre-registered cells pass, the 21-day tail cells don’t). The risk-reversal hypothesis failed, and a cross-sector spill-over result was withdrawn after overlap placebos showed it was an errors-in-variables artefact.

Highlights
  • SSVI calibrator: ATM total variance read per slice, isotonic regression to remove calendar arbitrage, and (ρ, η) searched within the Gatheral–Jacquier no-butterfly region. Replaced an earlier raw-SVI fit.
  • Four realised-vol estimators including Yang-Zhang; PCA on daily changes of the vol curve (level, slope, curvature); a regime classifier on Cboe implied correlation.
  • A descriptive surprise: sector-ETF curves are inverted on about half of all sessions, and rolling-percentile thresholds fire above their nominal rate.
  • CONFIRMATORY-RESULTS.json stores each statistic against the commit that produced it; one command re-runs them to check nothing has drifted.
Stack
PHP / LaravelCboe VIX methodologySSVIBootstrap inferenceMySQL