MGPraxis42,984 papers mapped
Validation · #358121 · Volatility

VIX-curve expected-utility signal

Trading Signals In VIX Futures, 2021

M. Avellaneda, T. N. Li, A. Papanicolaou & G. Wang · arXiv
Open in ColabColab
The rule

Read the shape of the VIX futures curve each day, model where it is likely to be tomorrow, and take whichever of five fixed long/short pairs of one-month and five-month VIX futures has the best expected outcome — betting the curve reverts to its usual contango shape.

Overstated4.531.58claimed → measured mean per-fold Sharpe
1.58
Measured mean fold Sharpeclaimed 4.53 · 3.96 restated at the true fold length
−10.2%
Per year at the paper's own 20 bps+41.7%/yr gross · +19.2% on the half-spread alone
0.998
Closed form vs the network's targetthe five hidden layers interpolate a two-line formula
AssetVolatility
StrategyCurve mean-reversion, expected-utility argmax
UniverseCboe VIX futures, months 1–6
Period2008–2020 (extended to 2026)
Costsnone in the headline; ½ spread + 20/30/40 bps tested
InstrumentsVX1VX2VX3VX4VX5VX6^VIXThe six nearest monthly Cboe VIX futures, traded as one-month and five-month constant-maturity rolling strategies. Daily settlements (DCRP) from Cboe — the same values VIX Central, the paper's own source, republishes.

The exact rules

Curve at its usual contango shape — nothing to revert toFlat. No position (45% of days)
Contango steeper than usual (front roll ≈ −0.32%/day, five-month minus one-month ≈ 4 points)Long 1× the one-month rolling strategy, short 2× the five-month
Curve flat, or the front has invertedShort 1× the one-month, long 2× the five-month
Backwardation under stress (VIX ≈ 25)Short 1× the one-month, long 1–2× the five-month
Deep backwardation, curve inverted end to endLong 1× the one-month, short 1× the five-month
Any dayPosition sizes convert to whole VIX contracts as n = a · P · w / (1000 · F), w = the front roll weight

The backtest, re-run

$1$4$16$642008201020122014201620182020Curve signal (k-fold OOS)Constant (-1,2)
Growth of $1 · log scale
0%-17%-34%2008201220162020
Drawdown · deepest -34.2%
0242009201220152018claimed 4.53
252-day rolling Sharpe (gross, k-fold OOS)

Inside the model

Position mix
flat 44.6% of days · short 1m / long 5m 35.6% · long 1m / short 5m 19.8%
Average gross exposure
1.45× averaged over all days; 2.62× when in the market; 3× on the (−1,2) and (1,−2) actions
Trading
40 position changes a year; 56% of capital traded per day, ~141× a year. 78.7% of that turnover is the argmax jumping between actions — weight drift is 20.8%, the monthly roll 0.5%
Win rate
31.7% of all days · 57.3% of days in the market · 58.6% of months
Skew / kurtosis
+0.21 / 33.9 — a thin, fat-tailed distribution: it is flat nearly half the time and the payoff comes in bursts
Best / worst day
+21.3% / −23.1%
Best / worst month
+54.9% / −12.6%
Annual returns (gross)
2008 +117% · 2009 +66% · 2010 +11% · 2011 +36% · 2012 +83% · 2013 +14% · 2014 +14% · 2015 +52% · 2016 −8% · 2017 +7% · 2018 −9% · 2019 +83% · 2020 +147%
Return concentration
Everything is made in volatility-event years — 2008 +117%, 2012 +83%, 2015 +52%, 2019 +83%, 2020 +147%. Across 2016, 2017 and 2018 together it lost 10%. This is not a steady premium; it is a bet that pays when the curve dislocates, and it sits flat 45% of the time waiting for one
Capacity
At a $10m book the doubled long-dated legs are 2.4% of the fifth-month contract and 3.6% of the sixth, against 0.2% of the front — month 6 carries ~12,000 contracts of open interest against ~141,000 in the front. A low-tens-of-millions strategy.

The validation ladder

C0ReplicateMean per-fold Sharpe 1.58 against 4.53 claimed (3.96 restated at the true fold length); mean profit 69.9% vs 252.1%. Folds 6 and 7 lose money, against the paper's claim that its signal — unlike every benchmark it shows — is positive on every fold. The ordering partly replicates (rank correlation 0.73 on profit, p = 0.016), and agreement is best exactly where the paper claims least — fold 8, its weakest claim at 1.06, measures 0.98. The largest miss is its showcase fold 2: claimed 11.05, measured 1.68.
C0bThe paper's own leakage controlThe paper runs the right leakage control (non-adjacent training blocks, Bergmeir et al.) and reports "almost no difference". Measured on the deterministic signal it costs 35% of pooled Sharpe — 1.32 → 0.86 — and nearly doubles the drawdown, −39.7% → −68.6%.
C1Honest walk-forwardA proper expanding-window walk-forward, no future data of any kind: pooled Sharpe 1.49 → 0.94, +41.7%/yr → +25.0%/yr, drawdown −34% → −45%. Mean per-fold 0.99 over folds 1–9 against 4.44 claimed. About a third of the k-fold result is the k-fold.
C2DeflatePasses on the gross return, fails on the design choice. Fourteen configurations — both utilities × three output activations × the 5×550, 2×20 and 8×1000 architectures, each a full ten-fold pass. G1: best t = 4.32 and all fourteen survive Bonferroni, Holm and BHY plus the t ≥ 3 floor. G2 Deflated Sharpe > 0.999 against 21 trials. But G3 PBO = 0.559 — the in-sample-best design underperforms the median out of sample 56% of the time. Every variant lands between 0.83 and 1.22 monthly-annualised Sharpe, and the two architectures the paper's own tableau calls poor score 0.96 and 1.14 against the chosen 5×550's 1.22. The tableau does not discriminate; the gross edge is real and the architecture is decoration.
C3CrisisA volatility-event harvester, and an inconsistent one. Gross: GFC-2008 +56.7% cumulative, China-2015 +58.1%, COVID-2020 +72.2% — but Volmageddon only +2.4%, and it loses the sharp one-off spikes (flash-crash-2010 −6.1%, GameStop-2021 −4.6%, yen-unwind-2024 −11.6%). Drawdowns of 11–25% inside every window, including the ones it wins.
C4BenchmarksBeats every benchmark the paper prints, and the one it doesn't. Pooled Sharpe: signal 1.49 · SPY 0.47 · best constant action (−1,2) 0.31 · the one-line roll-yield rule in the direction the paper describes −0.71. It is not a relabelled constant position and not a roll-sign rule.
C4bSimpler proxyThe expectation the 5×550 network approximates has a closed form — under the paper's own Gaussian model the day-ahead P&L of each action is exactly Gaussian. Solved exactly, with no network at all: mean fold Sharpe 1.39, pooled 1.32. Averaged over four seeds the network gives 1.39 and 1.30 — the same number. Its apparent edge at our headline seed (1.58) is seed luck; across seeds it spans 1.26–1.58. The paper's own M = 300 target estimator already disagrees with the exact answer on 22.6% of days, and the network is fitted to those noisy targets.
C5FrictionsFails at the paper's own numbers. Gross +41.7%/yr → +19.2%/yr on the half-spread alone (Sharpe 1.49 → 0.68, drawdown −34% → −68%) → −10.2%/yr at 20 bps → −32.6% at 40. Breakeven is 12.4 bps above the half-spread, below the paper's own lowest test level. The argmax moves the book 40 times a year at up to 300% gross, trading 56% of capital a day — 141× a year.
C6DecayThe mechanism survives; the money does not. Fitted once through the paper's own sample end and never refitted, 2021–2026 is gross Sharpe 1.26 (+29.4%/yr). But 2021–2022 is 2.60 and 2023–2026 is 0.59 — and net of the half-spread alone, 2023–2026 is −2.7%/yr. The paper's own 38-day real-time run does reproduce (gross Sharpe 4.61), but 37 days is a coin toss.
C7OriginalityPasses, emphatically. vs SPY: α +38.6%/yr (t = 4.83), β 0.02, R² 0.000. vs the best constant action: α +36.5%/yr (t = 4.50). vs the other volatility paper in this library (372649): correlation 0.045, α +34.9%/yr (t = 4.35). Whatever this is, it is not equity beta and not the volatility risk premium.
Reproduces mechanismReproduces magnitudeStatistically realOriginal vs benchmarksReal after costsCrisis-robustHolds out-of-sampleLeakage-controlled

How we rebuilt it

Data
Cboe daily VIX-futures settlements (months 1–6) + the Cboe VIX index, 2008-04-14 → 2026-08-31. The paper used VIX Central, which republishes these same settlements — 42/42 values match across a test week.
Method
Eleven-number curve state (VIX, five constant-maturity futures, five roll yields) → mode-centred Gaussian VAR(1) → expected utility of five fixed (one-month, five-month) positions → daily argmax → whole VIX contracts by the paper's Appendix A.
Universe
The six nearest monthly VIX futures on every trading day; 3,164 usable days inside the paper's own window against its stated ~3,165.
Regime stated
None declared. Measured, the signal is a volatility-event harvester: it makes its money in 2008, 2012, 2015, 2019 and 2020, and lost 10% across 2016–2018 combined.
Deviations from the paper
  • Every equation in the published PDF extracts as a placeholder, so the state vector, the VAR, the utilities, the cost function and the position map were reconstructed from the prose plus Avellaneda & Papanicolaou (2019) — then pinned to what the paper itself prints: the roll weight of Table A.1 to five decimals, all eight of its contract counts and both net positions, and its Section 2.2 description of the modal curve.
  • Data one step upstream of the paper's: Cboe's own settlement files rather than VIX Central, which republishes them. Verified identical on 42/42 values across a week.
  • One unresolved discrepancy, and it flatters the paper. Checked against the paper's own constant-position tables (Appendix B — no model, no seed, pure data), the profit signs agree on 36 of 40 cells and the volatility identities hold, but our rolling strategies are 12–18% LESS volatile than the paper's, fold by fold. A smaller volatility denominator raises a Sharpe ratio: matching the paper's level would take our measured mean fold Sharpe from 1.58 to roughly 1.37. We report the kinder reconstruction.
  • Five trading days dropped from the paper's window — three where Cboe prints no settlement for the sixth contract, two market holidays with no VIX print. 3,164 days against the paper's ~3,165.
  • Optimiser, learning rate, seeds and the risk-free rate are not disclosed. Adam at 1e-3, r = 0, and the spread across seeds is reported rather than a single number.
  • The cost equation is not machine-readable and neither reading of 'c bps of contract value' reproduces the paper's own Table 3.4 — the natural reading (c bps of 1000 × F) is far harsher, the narrow one (c bps of F) does nothing at all. The ladder is reported under the natural reading and the discrepancy is flagged rather than papered over.
  • Network results depend on hardware and seed, because an argmax over five close values flips on some days between fits. Every other number in this report is deterministic.

ProvenanceBeta

Engine
v1
Blocks
3 new (VIX-futures curve adapter, curve-state VAR with closed-form and Monte-Carlo expected utilities, the 5×550 PReLU approximator), 3 reused (deflation G1/G2, PBO, spanning)
Data
cboe_vx_2026-09-07 · Cboe VIX futures months 1–6 + VIX index · Apr 2008 – Aug 2026 · run_id 16
Source
Cboe VIX futures historical settlements · Cboe VIX index history · VIX Central (the paper's stated source) · Avellaneda & Papanicolaou (2019), the curve model this builds on
Tests
22 known-value tests, anchored on the paper's own Table A.1 and its own data source; engine, notebook and client bundle agree to machine precision
Reproduce
view code ↗
Validation Report · #358121

Trading Signals In VIX Futures, 2021

One email opens this reproduction in full, and the rest of the library: ten systematic strategies, re-run and audited. Free.

Descriptive research, not investment advice. No card, no trial clock.
© MMXXVI MarketGraphs · descriptive research, not investment advice