S-005Did not hold
Hedging a stock portfolio with index options
Does one beta-sized put spread on SPY or QQQ, rolled quarterly, cut a 20-stock portfolio's drawdowns meaningfully for a small yearly cost?
Result
Failed. Drawdowns cut by 24% for 2.7 points of return a year.
- Median drawdown cut
- 24% (needed 25%)
- Yearly cost
- 2.7 pts (needed ≤2.0)
- Tail losses offset
- 45% (needed 33%)
- Robust pricing cells
- 3 / 9 (needed 7)
What it means
The index hedge did not clear the bar locked in advance, so no portfolio hedge Signal ships from this. The breakdown shows what each hedge actually cost and saved.
Locked setup
- Universe
- 300 random 20-stock portfolios from 395 current S&P 500 members with full history
- Window
- 2007-01-01 to 2026-09-30; rules locked 2026-10-22 before the run
- Method
- Quarterly 95/80 index put spread on whichever of SPY or QQQ best explains the portfolio, sized by its trailing one-year beta. Options priced with Black-Scholes from the index's realized volatility plus a markup and skew, 5% friction per leg, three staggered tranches. Pass needed a 25% cut in median max drawdown, at most 2 points of CAGR a year, a third of tail losses offset, and the first two holding in 7 of 9 pricing-assumption cells.
Breakdown
| hedge | median_cagr_pct | median_max_drawdown_pct | median_drawdown_cut_pct |
|---|---|---|---|
| Portfolio only | 14.9 | 33.1 | 0 |
| Index put at 95% | 5.8 | 36.7 | -9.9 |
| Index put spread 95/80 | 12.1 | 25.3 | 23.6 |
| Index zero-cost collar | 8.9 | 16.9 | 47.4 |
Replay it
python scripts/study_portfolio_hedge.pyOutputs: docs/studies/S-005_portfolio_index_hedge.md, data/research/portfolio_hedge_summary.csv, data/research/portfolio_hedge_by_portfolio.csv, data/research/portfolio_hedge_sensitivity.csv