Options Backtesting Engine

Run a covered-call, cash-secured-put, or wheel strategy against real historical price data. Returns CAGR, Sharpe, Sortino, max drawdown, win rate, equity curve, and monthly returns. Prices are synthetic Black-Scholes from realized volatility — fast, deterministic, and a strong proxy for live results.

Configure and click "Run backtest".

How the Backtest engine works

Pick a ticker, a strategy (covered call, cash-secured put, or wheel), a date range, and the parameters you would use in real life (delta target, DTE, roll rules). The engine replays each cycle, sells the option at theoretical Black-Scholes price using historical IV, marks each position to expiration, and reports cumulative P&L, win rate, and drawdown.

Methodology

Pricing uses Black-Scholes-Merton with the Abramowitz-Stegun normal CDF approximation. Strike selection for a target delta inverts the BSM delta formula via Newton's method. Each cycle either expires worthless (full premium captured), expires in-the-money (assignment or buy-back at intrinsic), or is rolled at a configurable threshold. We do not assume perfect mid-price fills — the engine applies a configurable bid-ask haircut so results are realistic.

Worked example

A 30-day, 0.30-delta covered-call campaign on SPY over the last 5 years typically shows ~7-9% annualised premium income on top of underlying drift, with a meaningfully lower drawdown than buy-and-hold during high-IV regimes, and worse performance in strong uptrends because of called-away upside.

Limitations

Historical IV is approximated from realized volatility over the trailing 20 days. Real option premiums in 2020-2022 sometimes exceeded BSM model values significantly. Real-world commissions, taxes, and partial-fill slippage are not modeled. Results are illustrative, not a guarantee of future performance.

Frequently asked questions

Why does my backtest differ from real broker P&L?

Three reasons: actual fills sit between bid and ask (we use mid with a configurable haircut), real assignment timing is event-driven not date-driven, and real-world tax-lot churn is not modeled.

How far back can I test?

Up to 10 years of daily history. Older data is sparser and less reliable for short-dated options.

Can I add custom rules?

Currently you can adjust delta target, DTE, roll trigger, and assignment behavior. More complex multi-leg backtests live in the Strategy Builder.