Even though Ben Felix claimed using covered call to generate income is financial bullshit, you still feel the itch to collect some premiums while holding your equity, then you can use this tool to compare different strategies and equities.
This runs your rule across 10 years of real prices and shows what the overlay would have earned, how often you'd be called away, and how much upside it caps.
Expiry rule: the call is always rolled at expiration. If it finished in-the-money
(strike below the stock price), the strategy pays the difference — the gain above the strike is handed back — and a fresh call is written for the next cycle. You always keep the shares. Methodology: daily prices are pulled from Yahoo Finance (split- and dividend-adjusted closes, up to ~10 years). There are no live option quotes — each option's price is modeled with the Black–Scholes formula, using a volatility estimated from the stock's own recent price history (chosen estimator above) and marked up by the vol-premium multiplier. Premiums are therefore modeled, not market — best for comparing strategies, not predicting exact dollars.
Each point prices the call you'd sell that day under the current settings — volatility (left axis) comes from the stock's own recent history, and the premium it implies (right axis) rises and falls with it. This is the raw material behind every premium in the charts above.
Outcome of every cycle
Each expiry window, overlay P&L as % of stock price
Kept premium (finished OTM)Called away (capped)
One trade, at a glance
Covered callOwn stock only
Compare strategies — click a row to load it
Strategy
Strike
Expiry
Income / yr
Buyback cost / yr
Net income / yr
Called away
How to read this.Income / yr is annualized premium collected; Buyback cost / yr is the intrinsic paid to roll
in-the-money calls; Net income / yr = Income − Buyback cost, the overlay's standalone yield; Called away is the share of
expiries that finished at or above the strike. Same decomposition as the ticker table below — here for one stock across different strikes and expiries.
Which tickers suit this strategy?
Overlay helpedOverlay hurtdot size = how often called away
Ticker
Realized vol
Stock ann. return
Income / yr
Buyback cost / yr
Net income / yr
Called away
Reading the map. Every ticker runs the same strategy you set above across its own history (always-roll).
Rightward = the stock rose faster. Above the line = net option income is positive (premium collected exceeds
what you pay to buy back in-the-money calls); below = you hand back more than you collect. The sweet spot is upper-left —
flat-to-down, high-vol stocks where calls rarely get run over. The lower-right is the trap: fast risers whose gains the calls keep capping. Click any row to load that ticker above.
Net income / yr = Income − Buyback cost. It's the standalone yield of the call-selling overlay: premium collected minus
the intrinsic you pay to roll ITM calls. Since you always keep the shares, this — not lost stock upside — is what the strategy actually adds or subtracts.
Stock ann. return is the share's own annualized return (what plain holding gave you). Realized vol is the median trailing
21-day realized volatility over the ticker's history — a typical vol level, independent of the estimator above.
COIN, PLTR, ABNB and RBLX have shorter histories (~4–6y), so their figures are noisier.
Modeled, not a broker backtest. Premiums are priced with Black–Scholes from real historical prices and an estimated
volatility — not actual option quotes. Dividends, early assignment, taxes, and bid/ask beyond the haircut are ignored.
Prices are split/dividend-adjusted daily closes. Treat this as a tool for comparing strategies, not for predicting exact dollars.
Volatility. "From history" estimates each cycle's vol point-in-time (no look-ahead): Tenor = rolling window matched to the option's life, 21-day = the classic HV20, EWMA = RiskMetrics λ=0.94. All are then scaled by the vol-premium knob, since real option IV runs a bit above realized.
The overlay P&L. Each cycle you keep the premium and give back anything above the strike: premium − max(0, price − strike). Cycles are non-overlapping for the equity curve, overlapping (every day) for the distribution.