Guide

How to backtest an options strategy honestly

Most options backtests flatter the strategy. The four habits that kept ours honest: real bid and ask fills, no look-ahead, intervals that respect clustering, and judging on the lower bound.

Fill at the real bid and ask

A seller receives the bid and a buyer pays the ask. Backtests that fill at the midpoint hand every trade half the spread for free, and a multi-leg trade collects that gift on every leg. On thin chains it can be the whole result. In our replays shorts fill at the bid, longs at the ask, early closes pay the spread again, and fees are charged per leg.

Where quotes are missing, do not fill at a guess. When we extended our history before real quote data was available, we priced older entries from daily closes with a haircut measured on 781 overlap pairs, deliberately conservative, and tagged those rows so they could be read separately.

Remove look-ahead

Every input to an entry decision must be known at or before the entry. Common leaks: picking strikes using the day's closing price when entering at the open, using a volatility number computed with the holding period in it, and matching a fill to the nearest quote in a window that includes quotes after the fill.

The same rule applies to model selection. A rule chosen on the whole sample and then reported on the whole sample is in-sample. Our regime allocator was trained only on trades settled before each test year. The best structure chosen with hindsight earned about 21% a year; the walk-forward versions earned between about -18% and +3%, and none beat simply holding the put spread.

Respect clustering

Short premium trades entered in the same month share one market draw. Two hundred trades in a quiet stretch are not two hundred independent observations. Bootstrap by month, or by expiry week, so that the interval reflects how many draws you actually have. Our put spread result on QQQ came from 447 trades but 129 months, and the interval was built on the months.

Judge on the lower bound, not the mean

Report a 95% interval and ask whether it excludes zero. A mean of +1% with an interval of -0.4% to +1.6% is not established. An early sample of call spreads on SPY looked strongly positive on 100 entry days and turned negative on a denser sample of the same cell. A short-dated butterfly lead earned 8.7% a trade on 75 fills and regressed to the pack on 205.

Split by year and by trend regime. A result carried by one or two years is a regime bet. And keep a null: the plain version of the trade on the same days. A filter that does not beat its own unfiltered superset is not adding anything.

Write the rule down first

State the hypothesis, the instrument and the pass bar before running, and do not tune after a read. Record the failures too; a list of what did not work is what stops you from rediscovering it. The guide on tracking a trading journal covers the forward half of the same discipline.

Historical replays are not a forecast. Options can lose more than the premium collected. This is education, not a recommendation to trade anything.