This page explains what the Retirement Lab does, what it assumes, and where it should not be trusted. Read it before you draw a conclusion from the numbers.
Can a systematic covered-call overlay improve the retirement experience — sustainability, cash-flow stability, drawdown, and sequence-of-returns risk — compared with simply holding the index?
The goal was never to show that covered calls outperform.
Two portfolios, both starting at $1,000,000, both withdrawing 4% in year one and indexing that to inflation for 30 years. Portfolio A holds the index. Portfolio B holds the same index and writes a 30-delta call every month against the covered fraction.
The essential control: both portfolios are evaluated on identical return paths. Same crashes, same rallies, same order, 10,000 times over. Any difference between them is caused by the option overlay and nothing else. Both also withdraw the same dollars — premium is never spent as extra income, it only reduces how much stock must be sold.
A stationary block bootstrap (Politis–Romano, geometric block lengths, mean 63 trading days) of real adjusted-close daily log returns from August 2001 to August 2026 — 6,285 trading days covering the dot-com aftermath, 2008, COVID and 2022.
Blocks matter. Volatility arrives in clusters, and an independent draw of daily returns destroys that structure, which flatters every strategy you test. The bootstrap reproduces monthly volatility of 4.78% and skew of −1.43, against 5.01% and −1.34 in the actual history.
A covered-call study lives or dies on how the sold option is priced, and two things must be right.
1. The at-the-money variance risk premium. At-the-money implied volatility runs roughly 2
points above subsequently realised volatility. Not 4 — the commonly quoted VIX-minus-realised gap is
inflated by skew, because VIX is a variance-swap strike rather than an at-the-money quote. The lab
models IVATM = 0.75 × trailing RV + α, with α = 6 vol points by default.
2. Call-side volatility skew. An out-of-the-money equity index call trades several vol
points below at-the-money. The lab prices it at IV = IVATM + β × ln(K/S)
with β = −1.1, about a 2.8-point discount at a 2.6% out-of-the-money strike.
Pricing an out-of-the-money call at full at-the-money volatility hands the seller an edge that does not exist, and it is the single easiest way to make covered calls look free. An earlier version of this model made exactly that mistake and reported covered calls beating buy-and-hold roughly eight to one. That result was an artifact of the pricing error and nothing else.
Both α and β are open to every visitor, not just subscribers, because the conclusion genuinely depends on them. Strategy return difference versus buy-and-hold, in percentage points per year:
| β = −0.8 | β = −1.1 | β = −1.4 | |
|---|---|---|---|
| α = 5 pts | −0.30 | −1.24 | −2.11 |
| α = 6 pts | +0.99 | +0.01 | −0.89 |
| α = 7 pts | +2.27 | +1.25 | +0.31 |
Four percentage points of swing on two inputs. Section 8 of the results table reports the realised calibration for every run — mean at-the-money IV, mean call IV, the skew discount, mean premium against mean payoff — so the model can be checked rather than taken on faith.
The simulation runs entirely in your browser. Seed 20260822 with the default parameters reproduces the published figures exactly. Export the full result object, including per-year percentile bands, with Export results JSON.
Open the Retirement Lab