Skip to the content.

Tail-Hedging & Convexity: A 50-Year Empirical Test

Does buying tail protection actually raise the geometric return?

July 20, 2026 — Framework research (backtested, not theory)

Why this exists: we had discussed the Taleb/Spitznagel tail-hedging / convexity thesis — spend a little on deep-OTM puts, monetize the spikes, and (allegedly) raise your geometric return (几何收益率) while cutting drawdown, compensating for the fat-tail fragility of the Kelly criterion. Theory is cheap. This page backtests it on 50 years of real S&P 500 total return (1974–2024) and reports what actually happened. All result tables are committed as CSVs in data/ and reproduced by run_backtest.py.

TL;DR verdict — the theory is REAL but NOT a free lunch; price is destiny.

  1. Convexity genuinely reshapes the distribution. A put overlay turned Buy&Hold’s fat left tail (skew −0.90, kurt 3.67) into a symmetric one (skew ≈ +0.02, kurt ≈ 0.2) and clipped the worst month from −19.4% to −6.3%.
  2. When protection is cheap it wins on every axis. Cheap puts raised CAGR 7.80% → 8.57%, cut vol 12.6% → 10.7%, cut maxDD −51.8% → −38.6%, and lifted Sharpe 0.66 → 0.83.
  3. Your instinct to use LONG-dated puts is correct. A 1-year (LEAPS) put halved the drawdown (−40% → −21%) while barely denting CAGR — far better than short 1-month puts, which bleed through slow bear markets.
  4. But at realistic option pricing it costs CAGR. With a normal vol-risk-premium (VRP 25–50%), the hedge gives up ~0.4–1.4%/yr of CAGR to buy that protection — and if bought too expensively (VRP 50%) it can deepen drawdown via premium bleed (−54.4% > −51.8%). This is exactly the AQR vs Universa debate, and the data shows both can be right.
  5. Fair fight (equal drawdown), convexity wins — but narrowly. Tuned to the same −40% maxDD, the put hedge beat a cash barbell 6.13% vs 5.81% CAGR — a real but thin edge.
  6. Follow-up on DAILY data with a lagged-redeploy control (§7). Redeploying crash proceeds into equity beats hoarding them as cash by +1.37%/yrbut the control group shows this is REINVESTMENT discipline, not dip-timing: nailing the exact bottom adds ≈0 (waiting 1–6 months was even marginally better). And the daily path exposes a failure mode: in a fast crash (2020) the mechanical +100%/+200% ladder de-hedged partway down and re-bought insurance at peak IV, turning a −3.8% quarter into −17.2%.
  7. Can discipline fix the ladder? (§7.5) A Universa-style rule (keep a residual core + monetize scaled to crash depth + no peak-IV re-buy) removes the 2020 failure (−17.2% → −2.6%) — but trades it away for weaker slow-crash protection (2008 falls back to ≈ −47%, ≈ unhedged). Capstone: no mechanical monetization beats simply holding the put to expiry and rolling (B) — the plainest hedge had the best hedged drawdown (−47.1%) and Sharpe (0.68), protecting both 2008 and 2020.

Education/analysis, not investment advice.


⚠️ Protocol Notice

Applies the repo’s Two-Step Research Protocol (.github/copilot-instructions.md). §1 = Step-1 concise draft; §2 = Step-2 strict peer review; §3 = results (with data links); §4 = reflection; §5 = limitations; §6 = practical takeaways. This is a cyclical/portfolio research page, so it also leans on Kelly / geometric-return logic and ties back to the repo’s CRule 8 (pre-committed convex exits).

Data: Robert J. Shiller monthly Real Total Return Price (dividends reinvested, CPI-adjusted), 1974-08 → 2024-07 (600 months = 50.0y). Derived series: data/shiller_real_tr_monthly_1974_2024.csv. Method: rolling OTM puts priced by Black-Scholes with IV = trailing 12-month realized vol × (1 + VRP), where VRP is the vol-risk-premium markup (the price-of-insurance knob). Full code: run_backtest.py. ⚠️ Key caveat: Shiller monthly prices are month-averages, which smooth fast intra-month crashes (1987, 2020). Measured drawdowns are therefore understated, and the hedge value reported here is conservative (biased against the hedge). Results are gross of tax and transaction costs.


Section 1 — Step 1: Concise Research Draft

Core conclusion (first): Buying tail protection does raise the geometric return and cut drawdown when the insurance is cheap enough, because truncating deep left-tail losses has a convex benefit to compounding that can exceed the premium bleed. But the effect is entirely conditional on the price paid (the vol-risk-premium): at realistic option prices the hedge modestly lowers CAGR while still meaningfully cutting drawdown and tail risk — so it is best understood as cheap, disciplined ruin-insurance that complements Kelly, not as a standalone alpha source.

3 supporting points (claim → evidence needed):

  1. Claim: Convexity truncates the left tail. → Evidence: skew −0.90 → +0.02, kurtosis 3.67 → 0.19; worst single month −19.4% → −6.3% (see tail_shape).
  2. Claim: Cheap protection raises geometric return. → Evidence: cheap put (VRP 0) CAGR 8.57% > 7.80% Buy&Hold, with lower vol and drawdown (see monthly_put_hedge).
  3. Claim: Long-dated puts protect far better than short-dated. → Evidence: LEAPS 1y put maxDD −21% vs Buy&Hold −40% (annual frame) vs 1-month put’s −45% (see leaps_put_hedge).

2 opposing / counter points (claim → evidence needed):

  1. Claim: At realistic pricing the hedge is a net cost — cash is cheaper (AQR). → Evidence: at VRP 25–50% the hedge CAGR falls to 6.8% / 4.6% (from 7.8%); a cash barbell reaches similar drawdown reduction (see baseline_barbell).
  2. Claim: The “monetize into the crash” redeploy alpha is unproven here. → Evidence: redeploying payoffs into equity changed CAGR by <0.05pp in this dataset — but monthly-average data lacks intra-month V-bottoms, so this is unknown / untestable on this data, not disproven.

Explicitly unknown (not fabricated): the true realized VRP an investor pays (implementation-dependent); the redeploy/rebalancing alpha (needs daily data); whether the next 50 years’ crash frequency resembles the last 50; results net of tax/transaction cost.


Section 2 — Step 2: Strict Peer Review (draft NOT rewritten)

1. Facts that need verification

2. Logical leaps / equivocation (concept substitution)

3. Missing counterexamples / competing explanations

4. Most important primary sources to add

5. Sentences that are at most speculation, not fact


Section 3 — Results

Full tables live in data/; key rows reproduced below. All returns real (inflation-adjusted), dividends reinvested.

3.1 Baseline & the AQR “just de-risk” alternative → results_baseline_barbell.csv

Strategy CAGR Vol maxDD worst-12m Sharpe ×wealth skew kurt
Buy & Hold 100% equity 7.80% 12.6% −51.8% −40.7% 0.66 ×42.8 −0.90 3.67
Barbell 95/5 equity/cash 7.44% 11.9% −49.7% −39.0% 0.66 ×36.2    
Barbell 90/10 7.08% 11.3% −47.6% −37.3% 0.66 ×30.5    
Barbell 80/20 6.34% 10.1% −43.3% −33.8% 0.66 ×21.6    

Holding cash lowers drawdown linearly — and lowers CAGR proportionally (Sharpe unchanged at 0.66). No convexity: it can’t beat the market’s risk-adjusted return, only dilute it.

3.2 Rolling 1-month OTM put — price is destiny → results_monthly_put_hedge.csv

Hedge (1m put) Premium/yr Payoff/yr CAGR maxDD Sharpe skew
k=5% OTM, VRP 0 (cheap) 1.8% 2.3% 8.57% −38.6% 0.83 +0.08
k=5% OTM, VRP 25% (realistic) 3.5% 2.3% 6.77% ↓ −43.9% 0.67 +0.02
k=5% OTM, VRP 50% (expensive) 5.6% 2.3% 4.55% ↓↓ −54.4% 0.47 −0.05
k=10% OTM, VRP 25% 0.6% 0.5% 7.86% −47.3% 0.70 −0.46

The whole AQR-vs-Universa debate in one table: cheap → wins on every axis; expensive → loses CAGR AND deepens drawdown (the premium bleed itself carves a −54% hole).

3.3 Rolling 12-month LEAPS put — your long-dated design → results_leaps_put_hedge.csv

Compared within the annual frame (Buy&Hold annual: CAGR 7.80%, vol 16.4%, maxDD −40.0%, ×42.8):

Hedge (1y LEAPS put) Premium/yr CAGR Vol maxDD ×wealth
k=10% OTM, VRP 0 1.3% 8.15% 14.2% −21.0% ×50.3
k=10% OTM, VRP 25% 2.0% 7.38% 14.2% −22.4% ×35.2
k=10% OTM, VRP 50% 2.9% 6.52% 14.2% −23.9% ×23.6
k=20% OTM, VRP 25% 0.6% 7.40% 16.0% −37.6% ×35.5

The standout result: a 1-year put halves the drawdown (−40% → ~−22%) while costing only ~0.4%/yr of CAGR at realistic pricing — dramatically better protection-per-dollar than 1-month puts, because it captures the cumulative decline of slow bear markets (2000-02, 2008) that a monthly put keeps re-paying premium to miss. This validates using long-dated protection.

3.4 Fair fight: equal-drawdown comparison → results_equal_drawdown.csv

Both defenses tuned to the same −40% maxDD:

Defense (targeted to −40% maxDD) maxDD CAGR Sharpe
Cash barbell (27% cash) −40.1% 5.81% 0.66
Put hedge (k=5%, VRP 25%, 1.55× notional) −40.0% 6.13% 0.64

At equal drawdown, convexity beat linear de-risking by +0.32%/yr — real, but thin, and it flips to the barbell if VRP is high.

3.5 Left-tail shape → results_tail_shape.csv

  skew kurt Worst 6 single months
Buy & Hold −0.90 3.67 −19.4, −18.7, −12.4, −12.1, −11.6, −11.1%
Hedged (realistic) +0.02 0.19 all clipped to ≈ −6.2 to −6.3%

The put literally caps the monthly loss and converts a left-skewed, fat-tailed distribution into a symmetric one — textbook convexity.

3.6 Convexity in the 5 major crashes → results_crash_episodes.csv

Hedge = 1-month k=10% OTM, VRP 25% (weak/short version; understated by month-average smoothing):

Episode Buy & Hold Hedged Protection
1973–74 bear −46.0% −44.5% +1.6pp
1987 crash −19.1% −15.4% +3.7pp
2000–02 dot-com −38.4% −37.7% +0.7pp
2008 GFC −41.9% −36.0% +5.8pp
2020 COVID −12.3% −3.5% +8.8pp

Short-dated puts shine in fast crashes (2020, 1987, 2008’s sharp legs) and bleed through slow grinds (2000-02) — the case for long-dated puts (§3.3).


Section 4 — Reflection & Synthesis

What the data CONFIRMED about the theory

  1. Convexity is real and measurable — the hedge flipped skew from −0.90 to ≈0 and capped the worst month at −6.3%. This is the “cut the left tail” mechanism, verified.
  2. The geometric-return claim holds when protection is cheap — cheap puts raised CAGR 7.80% → 8.57% and cut risk. The mechanism the theory describes is genuine, not a mirage.
  3. A subtler, sharper finding: the geometric benefit comes mostly from removing negative skew/kurtosis (deep drawdowns), not from reducing variance. Pure variance-drain here is only ~0.6–0.8%/yr; the real prize is truncating the fat left tail. This refines the naïve “½σ²” story.
  4. Long-dated beats short-dated decisively — validating the user’s design (long-term puts + monetize), because LEAPS capture the cumulative decline of slow bears while monthly puts keep paying premium to miss them.

What the data QUALIFIED or pushed back on (the AQR side)

  1. No free lunch — price is destiny. Every result hinges on the vol-risk-premium. At realistic VRP (25–50%, since OTM puts are structurally over-priced by skew) the hedge gives up 0.4–1.4%/yr of CAGR; bought too dear it can even deepen drawdown via bleed.
  2. The “buy-the-dip” redeploy alpha did not show up (ΔCAGR < 0.05pp) — honestly, because month-average data has no intra-month V-bottoms. Untestable here, not disproven.
  3. This 50-yr window is crash-rich (1973-74, 1987, 2000-02, 2008, 2020). A calm decade like the 2010s would make the hedge look far worse; survivorship of crashes flatters it.

The reconciliation (both camps are partly right)


Section 5 — Limitations (read before trusting any number)

  1. Month-average smoothing understates fast crashes → hedge value here is conservative.
  2. VRP is modeled, not observed — a flat multiplier on realized vol; real OTM-put skew may be steeper, worsening the realistic cases.
  3. No taxes, no transaction/roll costs, no bid-ask — all of which hurt an active option-rolling strategy more than Buy&Hold.
  4. Monthly European settlement ≠ a real ladder of American LEAPS monetized on +100%/+200% spikes; §3.3 is a proxy for that design.
  5. One market, one 50-yr path — not a distribution of futures; the redeploy alpha and calm-decade drag are under-represented.

Section 6 — Practical Takeaways


Section 7 — Follow-up: DAILY path-dependent test of the monetize-ladder

The §1–6 backtest used monthly month-average data, which smooths intra-month V-bottoms and therefore could not test the user’s actual rule — hold a long-dated put, monetize on +100%/+200% spikes, and redeploy (“buy the dip”). This section re-runs it on daily ^GSPC (1974–2024, 12,860 days) so the intra-month crashes are visible. Code: run_backtest_daily.py; data: sp500_daily_close_1974_2024.csv (nominal price + ~1.9%/yr dividend drip). The put is marked-to-market daily by Black-Scholes (1-yr, 20% OTM, IV = 63-day realized × 1.25).

First, daily data reveals the true fat tail the monthly series hid: Buy&Hold kurtosis 3.7 (monthly) → 18.6 (daily), maxDD −51.8% → −55.6%. Crashes are now real.

7.1 Five strategies, 50 years → results_daily_ladder.csv

Strategy CAGR Vol maxDD Sharpe kurt ×wealth
A. Buy & Hold 10.45% 17.4% −55.6% 0.66 18.6 ×159
B. Hedge passive (hold to expiry) 9.08% 14.4% −47.1% 0.68 14.2 ×84
C. Ladder monetize → cash (hoard) 7.92% 13.3% −37.9% 0.64 21.3 ×49
E. Ladder → equity, +20d lagged (control) 9.34% 15.7% −44.6% 0.65 16.2 ×95
D. Ladder → equity, immediate (buy the dip) 9.29% 15.7% −45.0% 0.64 16.7 ×93
F. Universa-style (core 30%, depth-scaled) 9.13% 15.7% −51.6% 0.64 13.7 ×87

(Nominal, price + dividend drip — higher absolute level than the real-return §3; the point here is the relative ranking.)

7.2 Isolating the alpha — the lagged-redeploy control group

Strategy E redeploys the monetization proceeds N trading days LATER instead of immediately. Comparing E vs C vs D cleanly splits the +1.37%/yr “redeploy edge” into reinvestment vs dip-timing:

Component CAGR effect Meaning
E − C (reinvest vs hoard cash) +1.42%/yr ≈ the entire edge — value of eventually being reinvested
D − E (pure dip-timing) −0.05%/yr buying the exact bottom vs 20 days later adds ~nothing
D − C (total) +1.37%/yr = the two components above

Lag sensitivityresults_daily_redeploy_lag.csv — CAGR by how long you wait after monetizing before buying equity:

Redeploy timing CAGR dip-timing vs immediate
immediate (buy the dip) 9.29%
+5 days 9.27% +0.02pp
+20 days 9.34% −0.05pp
+60 days 9.41% −0.12pp
+120 days 9.42% −0.13pp
hoard cash forever 7.92% +1.37pp

Honest correction to the first read: the +1.37%/yr is reinvestment discipline, NOT dip-timing skill. Buying the exact bottom is worth ≈0; if anything, waiting 1–6 months to redeploy was marginally better (after a violent monetization the market often keeps falling or chops, so an immediate buy catches more downside — averaging in beats it). The takeaway is redeploy your crash proceeds and stay investednot nail the bottom.

7.3 The failure mode the daily path exposes → results_daily_crash_episodes.csv

Episode Buy&Hold Hedge passive Full ladder Trough DD: B&H → Full
2008 GFC (slow) −46.9% −38.8% −38.9% −55.6% → −45.0%
2000–02 (slow) −32.4% −32.4% −27.3% −46.9% → −40.5%
2022 bear (slow) −18.4% −18.9% −17.2% −24.3% → −21.9% ✅
2020 COVID (fast V) −3.8% −0.6% −17.2% −33.8% → −32.8%

The 2020 anomaly is the key new finding — and it is not a bug, it is the strategy’s real failure mode. In the fast COVID V-crash the mechanical +100%/+200% ladder de-hedged the portfolio partway down (it sold protection as the market kept falling), and then re-established a fresh put at peak implied vol (~80%) — the most expensive possible moment — which then bled to zero on the snap-back. Net: a quarter that was −3.8% unhedged became −17.2% for the “full” strategy. This is the empirical proof of the risk flagged in our original discussion: a fixed monetization ladder can remove your protection exactly when a fast crash is deepening, and “wait for the next round” can mean re-buying insurance at the top of the vol spike.

7.4 Refined synthesis

The monetize-ladder is path- and regime-dependent:

Bottom line of the follow-up: daily data + the lagged control show the “+1.37%/yr redeploy edge” is reinvestment discipline, not dip-timing (nailing the bottom ≈ 0), the whole-hedge still costs ~1.2%/yr over a long bull, and the mechanical +100/+200 ladder carries a genuine fast-crash failure mode the monthly test was blind to. Convexity harvesting rewards staying invested and the right monetization design — not market-timing the low, and not a fixed de-hedging ladder.

7.5 Can a Universa-style rule remove the 2020 failure mode? (strategy F)

F fixes the two flaws behind D’s 2020 blow-up: it (i) monetizes gradually, scaled to crash depth (not a fixed +100/+200 dump), (ii) always keeps a residual core hedge on (never fully de-hedges), and (iii) never re-buys a full put at peak IV (it only rolls at expiry). → results_daily_crash_episodes.csv

Episode (window return) Buy&Hold D (fixed ladder) F (Universa)
2020 COVID (fast V) −3.8% −17.2% −2.6%
1987 crash −21.6% −22.0% −19.8%
2000–02 (slow) −32.4% −27.3% −28.3%
2008 GFC (slow) −46.9% −38.9% −47.0%

The 2020 failure mode is gone (−17.2% → −2.6%, even beating Buy&Hold). But it is not a free fix — F trades away the slow-crash protection. In the multi-month 2008 grind, F’s gradual selling + redeploy walked it back into a market that kept falling — ending at −47.0%, essentially unhedged, and its full-sample maxDD (−51.6%) is worse than D’s (−45.0%). The fixed ladder over-protects the aftermath of a crash but self-destructs inside a fast one; the gradual core-keeping rule survives fast crashes but under-protects slow ones. No single mechanical monetization rule dominates.

(Core sensitivity → results_daily_universa_core.csv: even core = 0% already fixes 2020 (−3.4%), so the fix is mostly the gradual/depth-scaled selling + no peak-IV re-buy, not the core itself; a larger core mainly improves overall maxDD, −54.8% (core 0%) → −49.5% (core 50%), at ~flat CAGR 9.13%.)

The capstone finding

Rank all six strategies by risk-adjusted robustness and a humbling result emerges: the plainest hedge — B, just hold the put to expiry and roll, no monetization at all — was the best-rounded. B protected both 2008 (−38.8%) and 2020 (−0.6%), had the lowest hedged max drawdown (−47.1%) and the highest hedged Sharpe (0.68), with CAGR (9.08%) within ~0.2pp of the fancier variants. Every layer of monetization / redeploy / core sophistication (C/D/E/F) either created a failure mode (D’s 2020), traded one crash type for another (F’s 2008), or added drag (C) — without improving risk-adjusted return over the simple passive rolled put.

Capstone: across 50 years of daily data, the user’s active monetize-ladder is elegant but empirically adds tail risk or gives up protection without beating a simple passive rolled put. The lessons that survived every test: (1) buy protection cheap and long-dated (§3.3); (2) never hoard cash after monetizing (§7.2); (3) don’t over-engineer the exit ladder — passive-and-roll is hard to beat. In spirit this is CRule 8: a simple pre-committed hedge beats a clever discretionary one.


Reproduce it yourself

cd tail_hedge
python run_backtest.py         # monthly real-total-return study -> data/results_*.csv
python run_backtest_daily.py   # daily path-dependent ladder     -> data/results_daily_*.csv

run_backtest.py uses the committed data/shiller_real_tr_monthly_1974_2024.csv (else re-downloads Shiller’s ie_data.xls); run_backtest_daily.py uses data/sp500_daily_close_1974_2024.csv (from Yahoo/yfinance).

Sources


Two-Step Research Protocol applied (§1 draft + §2 review). Bilingual mirror: 中文版 →. Data: data/. Education/analysis only — not investment advice.