← Back to the Retirement Lab
Read Me First

RET-CC-001 — Covered Calls and Retirement Resilience

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.

This is a model-based study, not a reconstruction of archived option chains. Historical index returns are real. Option prices are generated from realised volatility plus the implied-volatility and skew assumptions you can see and change on the lab page. Taxes are not modelled. Nothing here is investment advice.

The question

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.

The design

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.

Where the returns come from

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.

The two assumptions that decide the answer

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.

How to read the results

What is not modelled

Reproducibility

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