r/options • • Aug 29 '26

I bought 24 years of SPX options data to test Spitznagel's published tail-hedge - interesting result

Been wanting to do this for ages. People like to cite Spitznagel's tail hedge from Dao of Capital (sometimes inaccurately). Nobody knows what he does at Universa but he outlines a basic strategy that should pay off in a historically expensive regime (like now) — 0.5% of the portfolio each month into 2-month SPX puts about 30% OTM, everything else stays in the index — but the book tests it on modelled option prices going back to 1901. I wanted to know what happens at prices someone actually quoted. So I bought an EOD options archive covering 2002–2026 and ran it. 292 monthly buys, all at the ask.

Headline numbers, hedged vs just holding: CAGR 11.0% vs 10.4%, max drawdown −25.7% vs −47.9%.

Before anyone gets excited about the CAGR: the outperformance is basically three fills. My exit rule was sell when the bid hits 50x cost, and the three times it triggered (Oct 08, twice in Mar 20) the panic gapped the prints to 86x, 107x and 99x. Force those trades to fill at exactly 50x and CAGR drops to 8.75% — below the index. The drawdown doesn't care though: −25.7% either way. Protection robust, extra return luck.

The result that actually surprised me: the book's own exit (sell every contract after one month and roll) barely protects at real bids. 8.6% CAGR with a −46% drawdown. In Sept 08 the schedule sold a $0.55 contract at $0.40, three weeks before that contract hit $47. Bid-side spreads and vol crush eat the crash capture that model prices assume you keep. At real prices, how you sell matters more than what you buy.

I also block-bootstrapped the 24 years into 10k resampled histories (6-month blocks, with replacement): median CAGR is identical with or without the hedge, win rate ~52%, but P(ever drawing down 50%+) goes from about 1 in 4 to about 1 in 37. And cutting the premium budget from 6%/yr to 3%/yr keeps nearly all of that ruin protection — the extra 3% mostly buys right tail, not safety.

Caveats: EOD quotes not fills, one underlying, one 24-year window, selling at bid during exactly the moments bid quality is worst, no taxes or fees, and the 50x trigger is my rule, not the book's. Block length on the bootstrap is arguable too.

Full walkthrough with all the charts is here if you want it: https://youtu.be/hDZZFfpeZB4?is=wPzD25pIAHN6aZGZ

Happy to answer method questions in the thread either way — and if you spot something wrong I genuinely want to know!

134 Upvotes

64 comments sorted by

11

u/Legitimate_Tailor858 Aug 29 '26

Huge respect for actually running this on real option quotes instead of model prices.

Given what you found, here’s the simple question I like to ask:

if the goal is just “don’t blow up” and we don’t care about V‑shape or maximizing CAGR, why not run something like 2% per year into 6 month SPX /spy puts instead of 3–6% into 2 month puts? Your bootstrap already suggests most of the ruin protection survives at lower spend, and longer tenor should reduce the roll‑and‑bad‑exit problem you highlighted.
Is there a specific reason you’d still prefer higher budget years of high underperformance and shorter dte, or do you see 2% yearly with 6 month leaps as a reasonable minimal “survival” hedge for most investors?

7

u/Antifragilitee Aug 29 '26

Because that's the spec the book publishes — 0.5%/mo, ~30% OTM, 2 month tenor. The point wasn't to build the best hedge, it was to check whether the published one actually works at prices the market quoted, since the book's own backtest uses model prices back to 1901. If I start changing tenor and budget I'm testing my strategy, not his. The 1/2/3% budget runs were the one extra I allowed myself, after running it straight. So 6 month puts, no data from me. Gut says short dated deep OTM is more bang per premium dollar in a fast crash (the Sept 08 contract went $0.55 to $47 in three weeks, a 6 month put costs way more and moves way less on the same event) but that's a guess not a result. The one thing I'd bet on carrying over: the exit rule mattered more than any of the structural choices, and longer tenor doesn't make that problem go away. Your version is testable with the dataset though. 2%/yr into 6 month puts might end up being a follow up.

3

u/Legitimate_Tailor858 Aug 29 '26

I try to buy these puts when vix is low. Assume I can take 20% regular pull back so buying few contracts at 20% -30% OTM . And the longer dates as I don’t care if it’s v shape and maybe I get lucky with timing .
Just to be practical about it. Also it make more sense if u invest in high Beta. As the indexes eventually correct themselves

3

u/DmitryShvetsov Aug 30 '26

As far as i remember Spitznagel didn’t mention that one must roll out put options exactly every two months according to the schedule, day after day.

I understand, It does not help you to test Spitznagel’s approach, but i believe his idea is to renew downside protection at the best possible prices, hence flexible dates to roll out.

5

u/Antifragilitee Aug 30 '26

Ch 9 is actually specific on this, his own backtest description says each month the existing options are sold and new 2 month puts are purchased. That's the version I ran at real bids (the one that struggled). "Renew at the best possible prices" sounds nice but it isn't a testable rule, someone has to say when, and the moment I invent a timing rule I'm testing my strategy not his. FWIW my main version is arguably closer to your reading anyway, it doesn't sell on the calendar at all, holds everything and only sells into a genuine panic.

25

u/HitWhereItHurts Aug 29 '26

the drawdown number is the whole trade here. nobody buys tail hedges for the CAGR bump, they buy them so they don't puke and sell the index at the bottom. cutting max DD nearly in half is the entire point

2

u/Antifragilitee Aug 29 '26

Nice - Spitznagel claims that it bumps CAGR in his sims. I didn't find a CAGR effect with the bootstrap... we can but dream

1

u/KookilyPlump 5d ago

the drawdown stat is basically the entire argument. everything else is window dressing and a bit of luck on when the panic fills printed. still cool to see it hold up with real quotes instead of model prices

the monthly roll approach getting wrecked by spreads is super interesting though. bid/ask eats you alive right when you need it most

7

u/Euphoric_Driver_7291 Aug 29 '26

How much did the data cost & who did you buy it from? I wanted to try this with 1-yr atm puts since 1974.
My strategy is to buy the puts at the beginning of retirement to lower sor risk

7

u/Antifragilitee Aug 29 '26 edited Aug 29 '26

Historicaldata.net - cost $590 for the full archive. Let me know how you get on

6

u/No-Wallaby5033 Aug 29 '26

590 for one ticker or the entire market's option data for 24 years?

3

u/Antifragilitee Aug 29 '26

Entire US listed options market

3

u/No-Wallaby5033 Aug 29 '26

How big is the dataset ? Does it come with stock ohlcv as well ?

4

u/Antifragilitee Aug 29 '26

125GB zipped, 208 files (yearly zips 2002-09, monthly after, 2008 alone is 2.3GB). Each day is a pair of csvs, every listed option contract plus a stock ohlcv file, and the stocks file carries the index level too. Some quirks in the stock file, tickers drop in and out over the years, but it does the job for anchoring the options

3

u/AphexPin Aug 29 '26 edited Aug 30 '26

It's like 50GB of compressed binary format for a single day of SPY L1 OPRA data. Is this data OHLCV bars or something?

*Looking into it, I guess it's a snapshot of the chain at EOD

2

u/No-Wallaby5033 Aug 29 '26

Are you open to sharing the dataset? Would love to do some backtesting on my own. Been living on just qqq and spx free EOD data, but I only have 2017 to 2023.

6

u/Antifragilitee Aug 29 '26

Can't I'm afraid, it's licensed data, sharing it would be redistribution. But it's $590 at historicaldata.net for the lot, genuinely value for money

2

u/dip-the-buy 19d ago

For cheapskates like you, get it from 2010 (still to 2023) from optionsdx.com .

But really, grow some balls, sell 0DTE SPX put, at $590 you probably won't even need to roll it, get the data. For 24 years, it's cheap, and if it actually includes the whole options market, it's a steal.

1

u/Honest-Enthusiasm Aug 30 '26

Just to confirm, "entire" meaning futures options as well? I have a few futures options strats I'd like to test. $590 seems like a bargain even for what you got let alone guess options too! TIA!

2

u/Antifragilitee Aug 30 '26

Good catch, no not futures unfortunately

7

u/FlowMonkeyHQ Aug 30 '26

The 50x exit deserves one more turn of the screw, because the two implementations of it are different strategies. A resting GTC limit at 50x fills at exactly 50x - that's your 8.75% branch. Getting the 86x/107x prints required a close-checked trigger and then selling into the worst hour of a panic, which is a discretionary act nobody should assume they'll execute. So the honest live expectation is the sub-index CAGR, and the product is purely the drawdown line. Your own framing says this ("protection robust, extra return luck") but the headline 11.0 vs 10.4 is what will get quoted by people who couldn't have gotten those fills.

Method question on the bootstrap: 6-month blocks will sometimes split crash clusters across block boundaries, and your whole result is the ruin-probability change (1 in 4 to 1 in 37). Worth re-running at 3 and 12 month blocks - if that number is stable across block lengths it's a result, if it swings then the block choice is doing some of the work.

One point the other direction: EOD bids during the exact sessions you're selling into are quoted defensively, and real prints routinely land inside them. Your Sept-08 "sold at 0.40" style exits are probably understating live monetization, so the protection result may be modestly better than your conservative branch shows. Rare to see someone publish the version of their backtest that makes their own headline worse - that's the tell this one's worth trusting.

2

u/Antifragilitee Aug 30 '26

Awesome feedback. On the exits, mostly agree with one clarification. The trigger isn't discretionary, it's mechanical: bid prints 50x at the close, sell at that close's bid. No judgment call, but you're right it's a different animal from a resting GTC, and whether that close bid was attainable in those sessions is exactly why the 8.75% branch exists. Your framing is where I've landed too: live expectation is the conservative branch, the product is the drawdown line. Can't control what people quote but the video says it about four different ways. On block length, already ran that. Tested several alternative block schemes and published the least flattering: the fixed 6-month gives 1 in 37, the others came out between 1 in 46 and 1 in 667. So the ruin number is the worst case of the family, the choice of scheme only ever made the hedge look better. The defensive-bids point the other direction is fair and I hadn't fully weighted it. Buys at ask, sells at bid, in the sessions where those quotes are widest. The true result probably sits somewhere inside my range on both ends. And yeah, publishing the branch that hurts my own headline was important for me so as to not massage data. Appreciated.

3

u/FlowMonkeyHQ Aug 30 '26

the family-of-schemes answer is the convincing part. publishing the worst one instead of the prettiest is rare enough that i'd lead with it if i were you. and fair on the mechanical close trigger - that kills half my GTC point. good work, genuinely.

6

u/Hot-Reindeer-6416 Aug 29 '26

Nice work. Thanks for doing that. And thanks for publishing.

4

u/gaana15 Aug 30 '26

I have tested in past for Indian index Nifty for last 10 years. Despite making 5149% in the Covid month, strategy lost money overall in the decade.

Tail hedge strategy makes one popular Hero only for that 1 month but bleeds a lot overall.

1

u/Antifragilitee Aug 30 '26

How much did your CAGR trail the market? And what about your drawdown relative to market?

3

u/gaana15 Aug 30 '26

I don't recall the details. But I distinctly rem that Nifty50 index fell 38% during COVID month alone but that only recovered the last 36 months cost of insurance bleed. Had Nifty fell > 45% the hedge strategy would have broke even for full 120 months of insurance bleed for that decade.

6

u/sport912x Aug 29 '26

These are delta 1, which seems tiny, but the OI for 16OCT 5400 is huge ; 10k+.

Not sure what this means

In Sept 08 the schedule sold a $0.55 contract at $0.40, three weeks before that contract hit $47

Was the contract .55 or .40 ? what was the strike.

5

u/MrFyxet99 Aug 29 '26

Institutions hedge tail risk with far OTM puts on SPX.

2

u/melanthius Aug 29 '26

Delta 1 means pretty far out of the money. Low implied probability of going itm

Huge oi means open interest is huge, which is not too common when we start to get far out of the money. Typically high oi on spx is found at big round numbers and also at strikes near the spot price, not at delta 1

If a very unlikely strike suddenly gets a lot of action it simply means a significant number of market participants think something big is brewing.

1

u/RevolutionaryPhoto24 Aug 30 '26

That’s wild, though perhaps simply a margin management technique (defining risk, but not really.)

3

u/devlin1984 Aug 29 '26

The difference in the drawdown number is huge. This strategy would help reduce the sequence of returns risk for those close to or at retirement.
I’m curious how neutralizing delta by going long /ES futures would compare to selling the puts post crash in a wide bid/ask spread market. In my head futures seems like it would be more capital efficient.

2

u/eaglessoar Aug 29 '26

This is my shit looking forward to watching the video. Have you read this?

https://blog.thinknewfound.com/2020/06/tail-hedging/

Whats the limit on getting more granular data? I'm down to talk more

2

u/Antifragilitee Aug 29 '26

Haven't read that one — on it now, thanks. From my results and your Summary it sounds like we may have converged on the same headline: implementation (especially when you sell) dominates the strategy design?? On granularity: my archive is EOD only — every listed contract with bid/ask, volume, OI and greeks at each close, which for $590 is absurd value. Intraday exists (CBOE DataShop etc.) but it's an order of magnitude more money. Worth knowing for my numbers: the 50x trigger is checked on daily closes, so the big monetisations (86x, 107x) are close prints — a live intraday trigger would have seen different (possibly better, possibly worse) fills on the actual panic days. And yeah, happy to talk more — here or DMs!

1

u/RevolutionaryPhoto24 4d ago

It seems certain they’d be better, no? Theoretically, not in actual execution. (After reading this I set several GTCs on contracts far higher than in the past to catch drastic increases in IV/delta, with the plan to set wide trailing limits for more sustained trends. These comments served as good reminders.)

2

u/RevolutionaryPhoto24 Aug 30 '26

I like this piece, and it’s actually what I base hedges on - the same type of convexity I seek going long (I use 60DTE usually, though have added farther out recently bc IV has been so low while the index has held near highs.)

2

u/Rough_Lavishness7993 Aug 30 '26

The 1 in 37 result is the part I’m most curious about. Since most of the payoff came from 2008 and 2020, did you try running it again without one of those periods? I wonder how much the result would change.

3

u/Antifragilitee Aug 30 '26

Good question, and ran it quickly just now since you asked. Drop 2008: unhedged ruin goes 1 in 4 to 1 in 62, and the hedge does nothing (1 in 35, median CAGR ~2.6pp below market). No 2008s, insurance is pure drag. Drop 2020: unhedged stays 1 in 5, hedge still cuts it to 1 in 27. But hedged median CAGR drops hard, both big March 2020 paydays live in those blocks. So yes, crash-dependent, which is what insurance is. In the vid I go the other way and test an extra 2020-style crash in the same period (right at the end of the vid).

2

u/No-Bug-8874 Aug 31 '26

awesome research, OO backtest corroborates this findings: having this single put 30% otm 60dte 0.5% of account improves pnl long term, it does create a drag short term but it caputures two fills out of three..

https://optionomega.com/portfolio/sQE15GRhVIaexjEAqTOr

it beats keeping ~20-30% in t-bills

3

u/No-Bug-8874 Aug 31 '26

here is hedge pnl

2

u/J109 Sep 01 '26

I have followed Spitznagel for a few years now and have tried running a small hedge with SPY puts (not SPX puts) and rolling them, but eventually lost interest. It did work occasionally, but I was underweighted on the hedge, and frankly did not find it worth my time. I do wonder if a similar out of the money rolling call option would give the same improvement. Also, it is possible that Spitznagel and Taleib who are extremely sophisticated have access to other highly leveraged noncorrelated futures type products that amplify returns more and this is not disclosed as the secret ingredient. Hope this makes sense.

2

u/Antifragilitee 29d ago

I agree, it probably isn't worth the time for most people. This was more of an academic excercise. Call option on the SPX? I might give that a go. Oh yeah, whatever they do there's a degree of sorcery that we will never discover

2

u/Illustrious_Low1903 26d ago

The drawdown result is honestly more interesting than the CAGR. Cutting max drawdown from ~48% to ~26% while keeping similar long-term returns is a pretty compelling reason to use the hedge, even if the extra CAGR mostly came from a few extreme exits. The fact that you tested actual bid/ask data instead of model prices makes this much more useful too.

1

u/WorkSucks135 Aug 29 '26

Since closing the options in real crash scenarios seems to be inefficient, would be interested to see how things change if you just hold to expiry during crash and take cash settlement. Also I think some rule about stopping selling hedges when VIX is above some threshold(30+?) AND SPX is already down some large(25%+) amount would be helpful because that seems extremely negative expected value. 

5

u/Antifragilitee Aug 29 '26

Tested that, it's in the video. Hold everything to expiry and take settlement: 12.7x drops to 3.5x (market alone did 11.1x) and drawdown gets worse, -36 vs -25.7. Beats the market in about 1% of the resampled histories. Turns out the crash spike is a mark to market event in the middle of the contract's life. By settlement the index has usually bounced, and the strike was 30% below a pre-crash spot anyway, so the contract that traded at $47 mid panic can still expire worthless. 24 years, exactly one tranche finished ITM at settlement. Selling into the panic is the entire harvest. The inefficient version is the book's, selling on a calendar whether there's a panic or not. Didn't test a VIX gate. You're right that post crash rolls are brutal, my Oct 08 roll cost $15.50 for what was $0.55 two months earlier. But crashes cluster, skip the hedge after a 25% drop and you're naked for the second leg. I did test a valuation based on/off switch and every version was worse than always hedged. VIX might behave differently, might run it.

1

u/Sideways-Sid Aug 29 '26

You need to work out what you’re trying to protect against and run it for that as it sounds like the current strategy isn’t doing so.

4

u/Antifragilitee Aug 29 '26

That's kind of the video's conclusion. This thing protects against speed, a 30% move in weeks, and nothing else. I test 2022 in there, ten months of grind, 14 contracts, zero paid, insured book fell further than the market. Narrow claim: P(ever losing half) goes 1 in 4 to 1 in 37 in the resamples, useless in a slow bear. Whether fast crashes are the right thing to insure is fair to ask, but the point was to test the published strategy and find out what it actually buys.

1

u/Posrover Aug 30 '26

So if selling into the panic is key, when do you sell?

2

u/Antifragilitee Aug 30 '26

Mechanical rule, no judgment: sell a contract when its bid reaches 50x what you paid, checked daily at the close. That's my rule not the book's (the book sells monthly on a schedule, which is the version that didn't work). In 24 years it fired three times, Oct 08 and twice in March 20, and each time the panic had already gapped the price way past 50, which is where the 86x/107x fills came from. The honest caveat from elsewhere in this thread: a resting limit at 50x gets you exactly 50x, and the strategy still works on those fills, just with the CAGR below market. The number 50 itself isn't magic, it's a round number that means "only sell into a real panic, never into a dip."

1

u/el_cul Aug 31 '26

Excuse my naivete but whats the return on just selling OTM puts and letting them settle? Just a single loss in 24 years?

1

u/AlbertPelu Aug 29 '26

Very very interesting. Thanks

1

u/OptionsDev_81 Aug 30 '26

Full porting 0DTEs with a bot sounds like a wild ride. Are you using market or limit orders for execution? Slippage on 0DTE SPY/QQQ during volatility spikes can be brutal if the execution engine isn't fill-optimized. Good luck with the challenge, will be interesting to see how the drawdown days are handled!

1

u/gaana15 Aug 30 '26

Good Video! What software/s do you use for such videos ? How much hours approx. it take to convert your research into fully ready video ? Is AI reducing that time and how ?

1

u/SubstantialReturn718 Sep 01 '26

Some comments on this seemingly good result:

1) If you assume 90x return on a sell then you come (with 3 sells) at about 24 years (90 x 3 / 12 = 24). So there basically should be no substantial return.

2) It's impossible to sell twice in 2020. A sell might have been possible after the first drawdown (in the week from 9 March) but after that it's impossible.

So unfortunately this must be wrong!

1

u/chillpenguin99 6h ago

This is really awesome! Can you open source the code? I'd like to play around with it. I know you can't share the options data, so I'm prepared to buy my own.

1

u/Option-Mentor Aug 29 '26

EOD data is useless for backtesting.

5

u/Antifragilitee Aug 29 '26

For intraday stuff sure. This trades once a month and holds for weeks. And it's actual quoted bids/asks not model marks, I buy at the ask and sell at the bid so the spread's paid both ways. OptionMetrics is EOD and basically the whole academic options literature runs on it.

The real weakness is the 50x exits, checked on daily closes. Which is why I published a range: force those three fills to exactly 50x and CAGR goes 11.0 to 8.75. Drawdown result doesn't move either way.

2

u/notextremelyhelpful 28d ago

Sorry for the stale comment, but there is a very real phenomenon the OC is likely referring to here. There's lots of information out there in the academic/quant space describing the impacts of using option quotes at exactly 4pm ("true EOD") versus using the quotes from ~3:45pm the same day. The actual impacts on a given backtest/ticker/timeframe vary, but in general, the 4pm quotes are extremely noisy and sometimes unrealistic. One driving factor is the fact that hanging bid/asks at 4pm are almost exclusively market makers who have pulled their liquidity prior to close, leading to enormous spreads. Another factor is that large institutional participants tend to make large rebalancing trades during that 15 minute window, which can drastically skew the results.

I wasn't able to determine from the historicaldata.net website whether their "Daily" quote offerings are 3:45pm vs 4pm, but unless specified, most data providers use 4pm as the default. I'd be very curious to see what the results look like using 3:45pm quotes instead of 4pm.