DEV Community

tomasz dobrowolski
tomasz dobrowolski

Posted on Originally published at flashalpha.com

50 Options Strategies, 6 Years, Real Bid-Ask Prices: Only 10 Had a Positive Mean

TL;DR: 50 options strategy profiles, priced from a minute-level options archive at end-of-day quotes, SPY/QQQ/IWM, 2020 to 2025. Identical rules: enter at the close after the first trading day of the month, exit ten sessions later, ~35 DTE, buy at ask, sell at bid, $0.65/contract/side. 10 of 42 monthly profiles had a positive mean after costs. The top five all own equity upside in a market that went up. Every number has a downloadable trade ledger.

Reading the numbers

Mean after costs is average P&L per trade against the value of 100 shares of the ETF. On a $500 ETF that is $50,000, so +31.2 bps ≈ $156 a trade. No risk adjustment: a credit spread and a long call can sit adjacent with very different risk. Mean far from median means a few trades are moving the average.

Monthly ETF table, the positive half

# Strategy Family Trades Mean (bps) Median Win rate Worst
1 Covered call Stock overlay 186 +76.3 +171.3 69.9% -1184.4
2 Protective put Stock overlay 188 +70.2 +117.8 61.7% -936.4
3 Collar Stock overlay 184 +43.1 +106.0 63.6% -759.0
4 Bullish risk reversal Ratio/RR 208 +41.5 +66.2 61.5% -719.2
5 Long call Directional 212 +36.3 +33.1 53.8% -457.4
6 Vol-carry filtered put spread Signal filter 73 +16.5 +28.6 72.6% -224.2
7 Bull call debit spread Directional 185 +12.2 +33.5 59.5% -280.1
8 Call diagonal Calendar/diagonal 176 +10.3 +39.5 63.1% -364.2
9 Cash-secured put Stock overlay 212 +9.0 +50.3 74.1% -2007.2
10 Put ratio spread Ratio/RR 194 +2.8 -2.1 46.9% -141.4

Ranks 11 to 42 are all negative, ending at -61.1 bps (bearish risk reversal and poor man's covered call) and -74.8 (term-structure conditioned calendar, 4 trades).

Symmetric butterflies and single-right condors won fewer than one trade in six. The put condor won 5.0%, lowest in the study. Mostly a structure/holding-period mismatch: a debit butterfly earns its value in the final days before expiry, and a ten-session exit on a 35-day option leaves that behind while paying three or four legs of spread.

The stricter comparison: six structures, same 133 months

# Strategy After costs At midpoint Win rate
1 Long call +31.2 +37.9 55.6%
2 Bull call debit spread +10.4 +19.8 58.6%
3 Bull put credit spread +8.6 +13.7 72.9%
4 Iron condor -9.7 -0.2 53.4%
5 Call calendar -17.2 -1.3 33.1%
6 Long straddle -17.6 -2.9 42.1%

Win rate is not P&L. 72.9% wins put the credit spread third. Loss size matters as much as loss frequency.

Costs reorder the table. Call calendar: -1.3 at midpoint, -17.2 after spread. Iron condor: flat to -9.7. If a strategy only works at midpoint, it does not work.

First place is not an edge. The ETFs rose an average of +93.6 bps over the same windows. Five of six have a 95% interval for the mean that includes zero; the long call's is roughly -18.5 to +79.5.

The spread is the story

Every mirror pair in the dataset has exactly opposite midpoint results and both sides lose after costs:

  • iron condor / reverse iron condor
  • iron butterfly / reverse iron butterfly
  • call ratio spread / call backspread
  • put ratio spread / put backspread

Direction of the trade did not decide these outcomes. Crossing the bid-ask four times did.

The worst offender: poor man's covered call, +53.3 bps at midpoint, -61.1 after costs. Largest cost drag in the dataset. Long-dated deep-ITM calls have wide spreads and this sample crosses them twice in ten sessions. A real PMCC holds the long call for months and rolls only the short, which is not what was tested.

Signal filters: one of four did anything

Filter Condition Trades Mean vs unfiltered
Vol-carry put spread ATM IV ≥ 1.2 × 20d RV 73 +16.5 -0.9 → +16.5, skipped the worst month
Vol-carry iron condor Same condition 67 -14.1 -10.5 → -14.1, worse
Skew-conditioned vertical 25d put IV − 25d call IV ≥ 0.03 170 -2.0 fired almost always, same worst trade
Tail-pricing put spread 10d put IV − ATM put IV ≥ 0.05 162 -1.7 fired almost always, same worst trade
Term-structure calendar Back 50d call IV − front ≥ 0.02 4 -74.8 condition almost never held

The lesson in the bottom three rows: a filter that fires on nearly every window is not a filter. Build the control sample (the windows where it did not fire) before believing the conditional mean.

Earnings: 12 events, useful as worked examples only

Four 2025 announcements each for AAPL, MSFT and AMZN. In one session before, out one session after.

Strategy Trades Mean Win rate
Earnings short strangle 11 +96.4 90.9%
Post-earnings vol crush 12 +67.1 66.7%
Earnings iron condor 11 +41.2 81.8%
Pre-earnings vol buildup 12 -31.5 33.3%
Earnings diagonal 12 -44.3 33.3%
Earnings calendar 6 -44.4 0.0%
Earnings long straddle 12 -122.5 25.0%

Six to twelve trades each on three of the most liquid stocks in one year. This shows how the accounting works, not that it keeps working. No margin model, and a short strangle without one measures a position nobody could hold.

The wheel

$100,000 starting cash per account, one contract at a time, held to expiry, assignment on anything finishing ITM, no interest on idle cash, no early assignment. 106 completed cycles.

SPY 22.4%, QQQ 21.9%, IWM 4.8% total return over six years. Mostly cash the whole time. Compare with holding the ETF and with holding cash at a real rate before concluding anything.

Method

  • Schedule: select from first observed trading day's EOD chain each month, enter next close, exit 10 sessions later. No stops, targets, rolls or hedges.
  • Expirations: front 35 calendar days (30–45); back leg 65 (55–80).
  • Strikes: delta 50/25/10 means nearest archived absolute delta, rejected beyond 0.10 away. ATM is nearest strike to spot on signal day.
  • Quote gates: positive uncrossed bid/ask on signal, entry and exit days; signal-day spread ≤ max($0.10, 30% of mid); displayed size covering the trade. Missing later quote excludes and records the trade rather than substituting.
  • Dividends: ex-div windows excluded for stock overlays and any short call. Early assignment not modelled.
  • Costs: one contract per leg, buy at ask, sell at bid, $0.65/contract/side. Stock legs cross the underlying spread, no commission.
  • RV: sample SD of 20 unadjusted log returns, annualised by √252. IV stored as decimal, so 0.03 is three vol points.
  • Uncertainty: 1,000 bootstrap resamples of complete calendar months, three ETFs within a month kept together.

216 scheduled ETF-month windows, 133 survived for all six headline structures (SPY 54, QQQ 39, IWM 40). Requiring valid entry and exit quotes can bias the surviving sample. Expanded release: 7,265 option-trade simulations, 106 wheel cycles, 42 monthly profiles, 7 earnings profiles.

Not modelled: early assignment, financing, margin, collateral yield, taxes, market impact, daily account path. Retrospective study designed in 2026 with no untouched holdout. End-of-day quotes are aggregated views without a contributing timestamp.

Reproduce it

Download packs include raw query responses, selected legs, quote lineage, trade results, exclusions, calculation code and offline reproduction instructions, with file hashes.

The archive behind this runs at one-minute resolution back to January 2017, so the obvious next tests are intraday entries and exits, per-leg spread filters at entry, and holding to expiry instead of a fixed ten sessions.

Top comments (0)