SPY · Buy Call + Put before the close

Every session, at the chosen minute between 15:30 and 15:50 New York, the page buys SPY options expiring the same day on strikes near the price. The exit is a sale at the 16:10 bid or a valuation at intrinsic value at 17:25, after the close. Every setting below is recalculated in the browser from frozen quotes.

Frozen NBBO archive: 2024-01-02 — 2024-12-31, sessions: 252 · New York time · built 2026-09-24.

Every entry clock and strike

lossprofit· click a cell to select that variant

Cumulative result

Starts from zero on the first day of the period; days without an entry leave it unchanged. It sums trade P&L and is not an account balance. Dots between the panels mark sessions with an after-close report from the basket below. Hover, or focus the chart and use the arrow keys; a click opens the day in the table.

Every trading date

History 2022–2026 · QQQ, SPY, IWM

The project’s NBBO archive holds 0DTE options of QQQ, SPY and IWM since March 2022; every year below is priced by the page’s own model on its frozen quotes. Sessions with a same-day expiry on SPY: 2022 — 142, 2023 — 248, 2024 — 249, 2025 — 247, 2026 — 182. Until November 2022 the ETFs did not expire every day; those sessions have no trade. Hedge shares are bought and sold at the first minute open after the signal, not at the price of the minute that gave it. $0.65 per contract per side and a $0.35 minimum per share order.

  • The page opens on the rule chosen on 2022–2024 on QQQ, SPY and IWM together (their daily results added up) at $1000 a day, for stability: the largest total without its three best days: 15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge. 2022–2024 +$13,926, check 2025–2026 +$67,099 (together).
  • Rules positive in every year 2022–2026: 0 of 18,540 with one contract per leg and 0 at $1000 a day (the three ETFs together); on QQQ alone 42 and 0. Positive without the three best days in both periods: 0 and 0.
  • With the hedge filled at the price of the signal minute, as the page did before, the default on SPY would show +$43,938 over 2022–2026 instead of +$42,141.

The default by year

15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge · open. The strip under each year shows its months on SPY at $1000 a day; the capital includes margin on the hedge and exercise shares (see “Robustness and capital”).

YearQQQ, $1000 a daySPY, $1000 a dayIWM, $1000 a dayTogether, $1000 a day eachSPY, one contract
2022chosen here −$8522 trades · w/o best 3 $0 on capital (50% margin) $147,376: −0.6%−$1,06112 trades · w/o best 3 −$7,283 on capital (50% margin) $657,029: −0.2%$00 trades · w/o best 3 $0 on capital (50% margin) $0: +0.0%−$1,91314 trades · w/o best 3 −$8,135 on capital (50% margin) $657,350: −0.3% −$14212 trades · w/o best 3 −$429
mar+$1,594apr+$2,863may−$3,030sep−$1,511oct−$977
2023chosen here +$1,8086 trades · w/o best 3 −$2,555 on capital (50% margin) $406,202: +0.4%+$5036 trades · w/o best 3 −$2,895 on capital (50% margin) $596,912: +0.1%$00 trades · w/o best 3 $0 on capital (50% margin) $0: +0.0%+$2,31111 trades · w/o best 3 −$6,921 on capital (50% margin) $597,961: +0.4% −$1086 trades · w/o best 3 −$152
feb−$931mar+$2,423oct−$989
2024chosen here +$5,26428 trades · w/o best 3 −$6,926 on capital (50% margin) $686,769: +0.8%+$8,26430 trades · w/o best 3 −$2,590 on capital (50% margin) $763,641: +1.1%$00 trades · w/o best 3 $0 on capital (50% margin) $0: +0.0%+$13,52838 trades · w/o best 3 −$580 on capital (50% margin) $794,400: +1.7% +$74230 trades · w/o best 3 −$141
feb+$5,371apr+$2,886may+$2,581jun−$992jul−$2,713aug+$4,888sep−$2,155oct−$153nov−$888dec−$560
2025check +$3,13158 trades · w/o best 3 −$11,602 on capital (50% margin) $613,529: +0.5%+$6,87249 trades · w/o best 3 −$5,084 on capital (50% margin) $841,432: +0.8%+$6,1251 trade · w/o best 3 $0 on capital (50% margin) $142,837: +4.3%+$16,12768 trades · w/o best 3 −$14,176 on capital (50% margin) $1,223,634: +1.3% +$80649 trades · w/o best 3 −$613
jan−$1,461feb+$3,779mar−$3,150apr+$3,000may+$1,473jun+$165jul+$3,908oct+$98nov−$940
2026check +$23,40855 trades · w/o best 3 +$6,938 on capital (50% margin) $1,214,316: +1.9%+$27,56424 trades · w/o best 3 +$3,829 on capital (50% margin) $1,577,122: +1.7%$00 trades · w/o best 3 $0 on capital (50% margin) $0: +0.0%+$50,97259 trades · w/o best 3 +$17,939 on capital (50% margin) $2,619,307: +1.9% +$93624 trades · w/o best 3 −$2
jan−$913feb−$432mar+$13,825apr+$698may−$987jun+$10,306jul+$6,055aug−$988
2022–2026+$32,759149 trades · w/o best 3 +$15,302months up 15/39 · drawdown −$15,438+$42,141121 trades · w/o best 3 +$18,102months up 17/35 · drawdown −$8,834+$6,1251 trade · w/o best 3 $0months up 1/1 · drawdown $0+$81,026190 trades · w/o best 3 +$43,707months up 21/44 · drawdown −$23,147 +$2,234121 trades · w/o best 3 +$576

What each idea adds: chosen on 2022–2024, checked on 2025–2026

30,240 variants: entry 15:45 or 15:50; strike OTM nearest to +3, or the OTM step nearest to delta 0.15, 0.25 or 0.35; lock at 2, 3 or 5× by closing, a share hedge or a delta hedge; activity: none, range ≥ 0.10 or 0.14%, or ≥ its 20-session median; options of at least 1, 5 or 10¢ or 0.01 or 0.02% of the ETF price; the pair’s spread at entry any, ≤ 7.5% or ≤ 12% of its ask; the previous VIX close any, ≥ 16, ≥ 20 or ≤ 20. Each row allows the earlier grid plus one idea; the choice is the largest 2022–2024 total without its three best days (at least 60 trades); “every year” also asks every year of 2022–2024 to be positive.

$1000 a day · Together2022–2024 (chosen here)202520262025–2026 (check)
Earlier grid only15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$6,344w/o best 3 −$28,475 · quarters up 4/12 · 82 trades−$10,505+$47,302+$36,797w/o best 3 −$17,600 · quarters up 4/7 · 126 trades
+ spread at entry15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge · open +$13,926w/o best 3 −$182 · quarters up 5/12 · 63 trades+$16,127+$50,972+$67,099w/o best 3 +$29,781 · quarters up 5/7 · 127 trades
+ strike by delta15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$6,344w/o best 3 −$28,475 · quarters up 4/12 · 82 trades−$10,505+$47,302+$36,797w/o best 3 −$17,600 · quarters up 4/7 · 126 trades
+ minimum price in % of the ETF15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$6,344w/o best 3 −$28,475 · quarters up 4/12 · 82 trades−$10,505+$47,302+$36,797w/o best 3 −$17,600 · quarters up 4/7 · 126 trades
+ previous VIX close15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$6,344w/o best 3 −$28,475 · quarters up 4/12 · 82 trades−$10,505+$47,302+$36,797w/o best 3 −$17,600 · quarters up 4/7 · 126 trades
All ideas15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge · open +$13,926w/o best 3 −$182 · quarters up 5/12 · 63 trades+$16,127+$50,972+$67,099w/o best 3 +$29,781 · quarters up 5/7 · 127 trades
All ideas, every year positive No rule qualifies.
$1000 a day · QQQ2022–2024 (chosen here)202520262025–2026 (check)
Earlier grid only15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · delta hedge · open +$6,034w/o best 3 −$8,495 · quarters up 5/12 · 88 trades−$7,788+$22,433+$14,645w/o best 3 −$2,813 · quarters up 3/7 · 140 trades
+ spread at entry15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · delta hedge · open +$6,034w/o best 3 −$8,495 · quarters up 5/12 · 88 trades−$7,788+$22,433+$14,645w/o best 3 −$2,813 · quarters up 3/7 · 140 trades
+ strike by delta15:50 · OTM step nearest to delta 0.15 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · delta hedge · open +$9,516w/o best 3 −$5,121 · quarters up 6/12 · 90 trades−$7,466+$27,155+$19,689w/o best 3 +$328 · quarters up 4/7 · 144 trades
+ minimum price in % of the ETF15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · delta hedge · open +$6,034w/o best 3 −$8,495 · quarters up 5/12 · 88 trades−$7,788+$22,433+$14,645w/o best 3 −$2,813 · quarters up 3/7 · 140 trades
+ previous VIX close15:50 · OTM +1 · 2× · report days as usual · range ≥ 0.14% · options of at least 5¢ · VIX ≤ 20 · share hedge · open +$5,342w/o best 3 −$7,338 · quarters up 4/9 · 69 trades−$16,118+$35,051+$18,933w/o best 3 −$6,494 · quarters up 2/7 · 90 trades
All ideas15:45 · OTM step nearest to delta 0.15 · 5× · report days as usual · no filter · options of at least 10¢ · VIX ≤ 20 · close · open +$14,183w/o best 3 −$1,729 · quarters up 4/10 · 63 trades−$14,053+$15,703+$1,650w/o best 3 −$16,043 · quarters up 3/7 · 118 trades
All ideas, every year positive15:50 · OTM nearest · 3× · report days as usual · range ≥ its 20-session median · spread ≤ 12% · delta hedge · open +$1,582w/o best 3 −$12,459 · quarters up 4/11 · 140 trades−$7,603+$82−$7,521w/o best 3 −$18,389 · quarters up 3/7 · 183 trades

$1000 a day, Together: positive in both periods 45 of 18,540; in every year of 2022–2024 0; in every year of 2022–2026 0; without the three best days in both periods 0.

One contract per leg · Together2022–2024 (chosen here)202520262025–2026 (check)
Earlier grid only15:50 · OTM +2 · 5× · report days as usual · no filter · options of at least 5¢ · share hedge · open +$210w/o best 3 −$1,030 · quarters up 3/12 · 88 trades+$640+$1,099+$1,739w/o best 3 −$1,456 · quarters up 3/7 · 142 trades
+ spread at entry15:50 · OTM +1 · 5× · report days as usual · no filter · options of at least 10¢ · spread ≤ 12% · share hedge · open +$892w/o best 3 −$804 · quarters up 5/12 · 70 trades+$1,393+$1,923+$3,316w/o best 3 −$1,318 · quarters up 2/7 · 149 trades
+ strike by delta15:50 · OTM +2 · 5× · report days as usual · no filter · options of at least 5¢ · share hedge · open +$210w/o best 3 −$1,030 · quarters up 3/12 · 88 trades+$640+$1,099+$1,739w/o best 3 −$1,456 · quarters up 3/7 · 142 trades
+ minimum price in % of the ETF15:50 · OTM +2 · 5× · report days as usual · no filter · options of at least 5¢ · share hedge · open +$210w/o best 3 −$1,030 · quarters up 3/12 · 88 trades+$640+$1,099+$1,739w/o best 3 −$1,456 · quarters up 3/7 · 142 trades
+ previous VIX close15:50 · OTM +2 · 5× · report days as usual · no filter · options of at least 5¢ · share hedge · open +$210w/o best 3 −$1,030 · quarters up 3/12 · 88 trades+$640+$1,099+$1,739w/o best 3 −$1,456 · quarters up 3/7 · 142 trades
All ideas15:50 · OTM step nearest to delta 0.15 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · share hedge · open +$228w/o best 3 −$670 · quarters up 5/12 · 72 trades+$440+$2,330+$2,770w/o best 3 +$191 · quarters up 5/7 · 124 trades
All ideas, every year positive No rule qualifies.
One contract per leg · QQQ2022–2024 (chosen here)202520262025–2026 (check)
Earlier grid only15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$84w/o best 3 −$602 · quarters up 3/12 · 69 trades+$190+$1,421+$1,610w/o best 3 +$236 · quarters up 4/7 · 115 trades
+ spread at entry15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$84w/o best 3 −$602 · quarters up 3/12 · 69 trades+$190+$1,421+$1,610w/o best 3 +$236 · quarters up 4/7 · 115 trades
+ strike by delta15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$84w/o best 3 −$602 · quarters up 3/12 · 69 trades+$190+$1,421+$1,610w/o best 3 +$236 · quarters up 4/7 · 115 trades
+ minimum price in % of the ETF15:50 · OTM +2 · 3× · report days as usual · range ≥ 0.10% · options of at least 5¢ · share hedge · open +$84w/o best 3 −$602 · quarters up 3/12 · 69 trades+$190+$1,421+$1,610w/o best 3 +$236 · quarters up 4/7 · 115 trades
+ previous VIX close15:50 · OTM +1 · 2× · report days as usual · range ≥ 0.14% · options of at least 5¢ · VIX ≤ 20 · share hedge · open +$212w/o best 3 −$450 · quarters up 4/9 · 69 trades−$1,189+$2,038+$849w/o best 3 −$101 · quarters up 2/7 · 90 trades
All ideas15:50 · OTM nearest · 5× · report days as usual · range ≥ 0.14% · options of at least 10¢ · spread ≤ 12% · VIX ≥ 16 · close · open +$689w/o best 3 −$307 · quarters up 7/11 · 73 trades+$1,931+$2,250+$4,181w/o best 3 +$1,433 · quarters up 4/7 · 146 trades
All ideas, every year positive15:50 · OTM nearest · 5× · report days as usual · range ≥ 0.14% · options of at least 10¢ · spread ≤ 12% · VIX ≥ 16 · close · open +$689w/o best 3 −$307 · quarters up 7/11 · 73 trades+$1,931+$2,250+$4,181w/o best 3 +$1,433 · quarters up 4/7 · 146 trades

One contract per leg, Together: positive in both periods 126 of 18,540; in every year of 2022–2024 0; in every year of 2022–2026 0; without the three best days in both periods 0.

Rolling choice: each year judged by the rule chosen on all the years before it

All ideas allowed; at least 40 trades on the years before; Together.

$1000 a day: year and its ruleFor stability: years beforeThat yearEvery year positive: years beforeThat year
2023 No rule made money before. No rule was positive every year before.
202415:50 · OTM step nearest to delta 0.25 · 3× · report days as usual · range ≥ its 20-session median · spread ≤ 12% · VIX ≥ 20 · share hedge +$1,208w/o best 3 −$10,694 · quarters up 3/5 · 48 trades+$1,186w/o best 3 −$4,911 · quarters up 1/2 · 14 trades No rule was positive every year before.
202515:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge +$13,926w/o best 3 −$182 · quarters up 5/12 · 63 trades+$16,127w/o best 3 −$14,176 · quarters up 2/4 · 68 trades No rule was positive every year before.
202615:50 · OTM +3 · 5× · report days as usual · range ≥ 0.10% · options of at least 5¢ · delta hedge +$36,042w/o best 3 +$4,027 · quarters up 6/13 · 75 trades+$43,758w/o best 3 +$3,839 · quarters up 2/3 · 24 trades +$7,068w/o best 3 −$9,851 · quarters up 7/11 · 60 trades15:50 · OTM step nearest to delta 0.15 · 3× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · VIX ≥ 20 · delta hedge+$13,135w/o best 3 −$13,869 · quarters up 1/2 · 15 trades
One contract per leg: year and its ruleFor stability: years beforeThat yearEvery year positive: years beforeThat year
2023 No rule made money before. No rule was positive every year before.
2024 No rule made money before. No rule was positive every year before.
202515:50 · OTM +1 · 3× · report days as usual · range ≥ 0.14% · options of at least 5¢ · spread ≤ 12% · VIX ≥ 20 · close +$581w/o best 3 −$349 · quarters up 3/8 · 40 trades+$1,203w/o best 3 −$785 · quarters up 1/3 · 40 trades No rule was positive every year before.
202615:45 · OTM +1 · 2× · report days as usual · range ≥ 0.14% · options of at least 0.02% of the price · spread ≤ 7.5% · VIX ≥ 20 · delta hedge +$3,006w/o best 3 +$1,094 · quarters up 5/11 · 89 trades−$310w/o best 3 −$553 · quarters up 0/2 · 11 trades No rule was positive every year before.

Hedge filled at the signal minute or at the next open · SPY

The page used to fill hedge shares at the price of the minute whose close triggered the lock, a price already gone when the signal is known (found by the execution audit in research/qqq_call_put_close_2026-09-24). Now every hedge trade fills at the first minute open after its signal. $1000 a day; “+2¢”: also 2 cents over the ask for every option bought. The capital the hedge needs (margin for up to 100 shares per contract) is not counted.

Rule202220232024202520262022–2026
Default15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · spread ≤ 12% · delta hedge −$1,061signal price −$1,069 · +2¢ −$1,272+$503signal price +$776 · +2¢ −$153+$8,264signal price +$8,187 · +2¢ +$6,847+$6,872signal price +$7,023 · +2¢ +$4,687+$27,564signal price +$29,022 · +2¢ +$24,222 +$42,141signal price +$43,938 · +2¢ +$34,331
Chosen on QQQ 2022–2024 (previous default)15:50 · OTM +1 · 5× · report days as usual · range ≥ 0.10% · options of at least 10¢ · delta hedge −$14,986signal price −$14,994 · +2¢ −$15,298−$1signal price +$272 · +2¢ −$668+$3,986signal price +$3,910 · +2¢ +$2,523−$8,041signal price −$7,890 · +2¢ −$10,421+$26,583signal price +$28,041 · +2¢ +$23,243 +$7,542signal price +$9,338 · +2¢ −$620
Chosen on January–June 2026 (earlier default)15:45 · OTM +1 · 3× · report days as usual · range ≥ 0.14%, not low 30-min volatility · share hedge −$51,207signal price −$12,860 · +2¢ −$58,978−$58,447signal price −$58,131 · +2¢ −$68,715−$26,066signal price −$26,124 · +2¢ −$41,389−$13,913signal price −$13,936 · +2¢ −$15,264−$9,932signal price −$4,330 · +2¢ −$9,040 −$159,564signal price −$115,382 · +2¢ −$193,386

Other checks on the default · SPY, $1000 a day

Check2022–2024 (chosen here)2025–2026 (check)
Implied / realised volatility at entry any+$7,70548 trades · w/o best 3 −$4,946+$34,43673 trades · w/o best 3 +$10,701
Implied / realised volatility at entry ≤ 0.8+$2,69626 trades · w/o best 3 −$8,012+$11,93546 trades · w/o best 3 −$1,725
Implied / realised volatility at entry ≤ 1.0+$1,54933 trades · w/o best 3 −$9,573+$28,96761 trades · w/o best 3 +$5,232
Implied / realised volatility at entry ≤ 1.5+$93440 trades · w/o best 3 −$10,188+$30,50169 trades · w/o best 3 +$6,766
Implied / realised volatility at entry ≤ 2.0+$8,21947 trades · w/o best 3 −$4,432+$34,43673 trades · w/o best 3 +$10,701
half on sessions without high 30-min volatility+$4,92448 trades · w/o best 3 −$6,198+$25,64573 trades · w/o best 3 +$9,006
at most 25 contracts a leg+$8,82548 trades · w/o best 3 −$2,880+$30,50773 trades · w/o best 3 +$10,827
at most 50 contracts a leg+$7,70548 trades · w/o best 3 −$4,946+$34,43673 trades · w/o best 3 +$10,701

History built 2026-09-25 00:40 UTC · node scripts/qqq_call_put_history.cjs · python -m scripts.build_qqq_call_put_page --symbol SPY --year 2025

Robustness and capital

How far the default rule can be trusted, and what it earns on the money it really ties up. Hedges filled at the next minute open, as everywhere on the page.

  • Among the 18,540 rules of the grid (Together, $1000 a day) the median 2025–2026 result is −$4,950, and 43% are positive. The default, +$67,099, beats 98.8% of them — a good pick, but also a lucky one. The 63 rules that made money on 2022–2024 made +$18,513 in the median in the check: choosing on the past does carry information.
  • The whole choice redone 300 times on 2022–2024 resampled by month: the rule it picks is positive on 2025–2026 in 77% of the cases, median +$23,192, 10–90%: −$21,991 … +$56,850; the spread filter is in 66% of the picks. Expect about +$23,192, not +$67,099.
  • The default’s 21 months of 2025–2026 resampled 10,000 times: Together 5–95% +$5,385 … +$137,454, a loss in 3.5%; QQQ −$9,029 … +$71,491, 13.8%. Without its best month: +$35,728 and +$5,473.
  • To keep the intrinsic value at 17:25 an in-the-money option is exercised, so the day needs 100 shares per contract; the hedge needs them earlier. At $1000 a day cheap options mean up to $3,143,700 of SPY in shares on one day, so on a 50% margin the capital is $1,581,663 and 2022–2026 returns +2.7% on it. A fixed number of contracts ties up far less for the same profit (table below).

Neighbours: one setting changed at a time

$1000 a day; ★ is the default. A rule worth trusting sits on a plateau: its neighbours earn too.

SettingTogether: 2022–2024Together: 2025–2026QQQ: 2025–2026SPY: 2025–2026IWM: 2025–2026
Entry: 15:40 −$48,311w/o best 3 −$69,728 −$6,503w/o best 3 −$49,788 −$1,972−$8,915+$4,385
Entry: 15:45 −$41,043w/o best 3 −$61,390 +$26,191w/o best 3 −$11,989 +$15,892+$7,357+$2,942
Entry: 15:50 ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Strike: OTM nearest −$69,375w/o best 3 −$82,592 +$5,374w/o best 3 −$28,592 +$3,925+$1,416+$33
Strike: OTM +1 ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Strike: OTM +2 +$3,300w/o best 3 −$17,719 +$53,065w/o best 3 +$21,982 +$48,630+$4,435$0
Strike: OTM +3 +$6,386w/o best 3 −$9,596 +$13,431w/o best 3 −$5,091 +$12,063+$1,368$0
Strike: delta 0.15 +$5,973w/o best 3 −$12,660 +$56,850w/o best 3 +$21,587 +$29,151+$27,700$0
Strike: delta 0.25 −$43,383w/o best 3 −$58,067 +$32,890w/o best 3 −$13,751 +$10,841+$17,958+$4,091
Strike: delta 0.35 −$71,043w/o best 3 −$85,119 +$16,721w/o best 3 −$19,068 +$11,239+$4,862+$620
Lock at: 2× +$1,425w/o best 3 −$10,443 +$35,981w/o best 3 +$9,562 +$12,616+$18,978+$4,386
Lock at: 3× +$8,835w/o best 3 −$5,192 +$36,585w/o best 3 +$10,688 +$11,887+$22,209+$2,490
Lock at: 4× +$14,342w/o best 3 −$1,521 +$48,833w/o best 3 +$18,612 +$17,345+$28,998+$2,490
Lock at: 5× ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Lock at: 7× +$10,254w/o best 3 −$4,848 +$68,777w/o best 3 +$26,546 +$27,563+$34,902+$6,311
Lock at: 10× +$6,540w/o best 3 −$7,277 +$78,425w/o best 3 +$28,844 +$29,215+$40,240+$8,970
15-min range: any +$17,042w/o best 3 −$1,015 +$42,826w/o best 3 +$5,508 +$13,849+$22,852+$6,125
15-min range: ≥ 0.05% +$17,042w/o best 3 −$1,015 +$44,775w/o best 3 +$7,456 +$13,849+$24,801+$6,125
15-min range: ≥ 0.08% +$10,978w/o best 3 −$3,130 +$55,634w/o best 3 +$18,316 +$18,258+$31,252+$6,125
15-min range: ≥ 0.10% ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
15-min range: ≥ 0.12% +$5,973w/o best 3 −$7,926 +$57,885w/o best 3 +$25,453 +$30,554+$21,207+$6,125
15-min range: ≥ 0.14% +$4,455w/o best 3 −$8,562 +$60,603w/o best 3 +$28,170 +$29,214+$25,265+$6,125
15-min range: ≥ its 20-session median +$2,629w/o best 3 −$11,271 +$32,831w/o best 3 +$5,209 +$19,845+$12,985$0
Lock method: close +$13,990w/o best 3 −$325 +$64,451w/o best 3 +$27,457 +$25,200+$33,277+$5,974
Lock method: share hedge +$14,273w/o best 3 −$482 +$64,737w/o best 3 +$26,998 +$24,960+$33,817+$5,960
Lock method: delta hedge ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Minimum option price: any −$19,105w/o best 3 −$33,213 +$39,970w/o best 3 +$2,652 +$11,644+$22,752+$5,575
Minimum option price: 3¢ −$18,175w/o best 3 −$32,282 +$39,970w/o best 3 +$2,652 +$11,644+$22,752+$5,575
Minimum option price: 5¢ −$15,722w/o best 3 −$29,830 +$43,389w/o best 3 +$6,070 +$15,062+$22,752+$5,575
Minimum option price: 7¢ −$5,544w/o best 3 −$19,652 +$54,315w/o best 3 +$16,996 +$19,348+$28,843+$6,125
Minimum option price: 10¢ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Minimum option price: 12¢ +$18,697w/o best 3 +$4,589 +$75,824w/o best 3 +$38,699 +$32,235+$37,465+$6,125
Minimum option price: 15¢ +$14,322w/o best 3 +$422 +$63,284w/o best 3 +$31,974 +$36,913+$20,246+$6,125
Minimum option price: 20¢ +$10,766w/o best 3 −$2,497 +$57,561w/o best 3 +$26,328 +$38,382+$13,055+$6,125
Pair spread at entry: any −$5,562w/o best 3 −$23,618 +$39,578w/o best 3 +$1,159 +$14,645+$18,542+$6,392
Pair spread at entry: ≤ 6% +$9,661w/o best 3 −$3,602 +$40,459w/o best 3 +$15,888 +$27,192+$13,267$0
Pair spread at entry: ≤ 8% +$13,568w/o best 3 −$540 +$58,371w/o best 3 +$21,246 +$27,682+$24,565+$6,125
Pair spread at entry: ≤ 10% +$19,146w/o best 3 +$5,038 +$58,683w/o best 3 +$21,364 +$22,818+$29,740+$6,125
Pair spread at entry: ≤ 12% ★ +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Pair spread at entry: ≤ 14% +$9,734w/o best 3 −$6,527 +$57,848w/o best 3 +$20,529 +$25,400+$26,601+$5,847
Pair spread at entry: ≤ 16% +$2,973w/o best 3 −$13,288 +$51,769w/o best 3 +$14,450 +$22,605+$23,317+$5,847
Pair spread at entry: ≤ 20% −$5,429w/o best 3 −$22,036 +$45,737w/o best 3 +$8,418 +$19,410+$20,480+$5,847
Pair spread at entry: ≤ 25% −$2,867w/o best 3 −$20,773 +$44,954w/o best 3 +$6,535 +$16,869+$19,496+$8,589
Previous VIX close: any +$13,926w/o best 3 −$182 +$67,099w/o best 3 +$29,781 +$26,539+$34,436+$6,125
Previous VIX close: ≥ 16 −$1,229w/o best 3 −$13,161 +$55,276w/o best 3 +$17,958 +$21,092+$28,059+$6,125
Previous VIX close: ≥ 20 +$7,135w/o best 3 −$4,262 +$26,768w/o best 3 −$9,832 +$7,868+$12,776+$6,125
Previous VIX close: ≤ 20 +$6,791w/o best 3 −$7,317 +$38,351w/o best 3 +$11,210 +$17,680+$20,670$0

Pair spread × minimum option price · Together

Each cell: 2025–2026 (check), and under it 2022–2024 (where the choice was made); the rest of the rule as the default.

Price \ spreadany≤ 6%≤ 8%≤ 10%≤ 12%≤ 14%≤ 16%≤ 20%≤ 25%
any −$28.4k−$534.7k+$40.5k+$9.7k+$54.8k+$11.2k+$43.4k−$0.1k+$40.0k−$19.1k+$33.3k−$21.1k+$50.0k−$44.7k+$65.0k−$105.1k+$40.7k−$162.3k
3¢ +$17.2k−$187.2k+$40.5k+$9.7k+$54.8k+$11.2k+$43.4k−$0.1k+$40.0k−$18.2k+$33.3k−$19.2k+$37.8k−$40.8k+$40.9k−$91.4k+$14.8k−$115.0k
5¢ +$29.8k−$69.1k+$40.5k+$9.7k+$54.8k+$11.2k+$45.4k+$1.4k+$43.4k−$15.7k+$35.7k−$23.2k+$32.3k−$32.2k+$45.7k−$56.8k+$32.1k−$55.0k
7¢ +$39.8k−$36.9k+$40.5k+$9.7k+$57.4k+$12.0k+$53.3k+$7.6k+$54.3k−$5.5k+$50.9k−$11.9k+$46.2k−$26.5k+$49.2k−$34.9k+$42.0k−$26.1k
10¢ +$39.6k−$5.6k+$40.5k+$9.7k+$58.4k+$13.6k+$58.7k+$19.1k+$67.1k+$13.9k+$57.8k+$9.7k+$51.8k+$3.0k+$45.7k−$5.4k+$45.0k−$2.9k
12¢ +$56.8k+$0.7k+$40.5k+$9.7k+$67.2k+$16.5k+$67.3k+$24.6k+$75.8k+$18.7k+$71.3k+$17.8k+$66.9k+$11.0k+$62.8k+$2.8k+$61.3k+$5.3k
15¢ +$51.3k+$2.2k+$38.8k+$9.1k+$53.1k+$8.9k+$55.7k+$19.2k+$63.3k+$14.3k+$58.5k+$16.1k+$56.2k+$10.2k+$55.2k+$4.6k+$55.2k+$4.9k
20¢ +$54.2k+$7.3k+$44.6k+$9.1k+$54.0k+$9.8k+$53.3k+$12.5k+$57.6k+$10.8k+$57.6k+$14.0k+$57.7k+$11.3k+$57.3k+$8.8k+$57.3k+$9.1k

Capital and return by position size

Capital: the largest day of premium plus margin on the most shares that day needs (the hedge at its largest and the shares an exercise delivers, at the entry price), plus the largest drawdown. 50% is Reg T for shares held overnight; 25% is intraday buying power. Margin cash can sit in Treasury bills, which is not counted. Returns per year on 50% margin.

SPY202220232024202520262022–2026Shares at most, $Capital 50% / 25%Return 50% / 25%
$1000 a daycontracts per trade 35.8 −0.2%−$1,061+0.1%+$503+1.1%+$8,264+0.8%+$6,872+1.7%+$27,564 +$42,141drawdown −$8,834 $3,143,700median $812,364 $1,581,663$795,738 +2.7%+5.3% over 2022–2026
1 contract per legcontracts per trade 2.0 −0.6%−$142−0.5%−$108+2.5%+$742+2.3%+$806+2.5%+$936 +$2,234drawdown −$1,188 $74,850median $55,854 $38,635$19,923 +5.8%+11.2% over 2022–2026
5 contractscontracts per trade 9.3 −0.3%−$350−0.5%−$491+2.7%+$3,891+2.8%+$4,809+2.5%+$4,724 +$12,583drawdown −$4,477 $374,250median $271,665 $191,714$98,151 +6.6%+12.8% over 2022–2026
10 contractscontracts per trade 18.2 −0.3%−$589−0.5%−$948+2.6%+$7,647+2.6%+$8,903+2.4%+$9,091 +$24,104drawdown −$8,634 $748,500median $542,560 $383,107$195,982 +6.3%+12.3% over 2022–2026
20 contractscontracts per trade 35.3 −0.2%−$1,069−0.5%−$1,862+2.7%+$15,551+1.5%+$10,116+2.3%+$17,591 +$40,327drawdown −$17,032 $1,497,000median $1,070,600 $765,978$391,728 +5.3%+10.3% over 2022–2026
Together202220232024202520262022–2026Shares at most, $Capital 50% / 25%Return 50% / 25%
$1000 a daycontracts per trade 47.3 −0.3%−$1,913+0.4%+$2,311+1.7%+$13,528+1.3%+$16,127+1.9%+$50,972 +$81,026drawdown −$23,147 $5,215,170median $856,608 $2,632,710$1,328,918 +3.1%+6.1% over 2022–2026
1 contract per legcontracts per trade 2.9 −0.9%−$207−1.1%−$216+2.4%+$1,278+3.0%+$1,992+5.2%+$3,784 +$6,631drawdown −$2,160 $144,729median $70,292 $74,708$38,561 +8.9%+17.2% over 2022–2026
5 contractscontracts per trade 13.5 −0.5%−$546−1.0%−$1,029+1.2%+$3,350+3.2%+$10,301+5.3%+$19,266 +$31,342drawdown −$10,276 $723,645median $315,922 $373,012$192,280 +8.4%+16.3% over 2022–2026
10 contractscontracts per trade 26.4 −0.4%−$948−1.0%−$1,947+1.0%+$5,680+3.2%+$20,793+5.1%+$37,467 +$61,046drawdown −$20,818 $1,440,370median $631,844 $744,919$384,827 +8.2%+15.9% over 2022–2026
20 contractscontracts per trade 49.9 −0.4%−$1,930−0.9%−$3,784+1.4%+$14,999+3.0%+$37,785+4.6%+$67,737 +$114,807drawdown −$33,847 $2,880,740median $1,195,458 $1,482,049$761,864 +7.7%+15.1% over 2022–2026
How it is calculated
  • Data. Minute NBBO snapshots and the full quote stream of SPY 0DTE options from the project archive; the SPY price is the last completed minute.
  • Strike. Chosen from the SPY price at the entry minute. OTM: the Call is the nearest strike strictly above the price, the Put strictly below; ITM is the reverse. “+N steps” moves N strikes further out in the same direction ($1 per step).
  • Entry. Buy at the ask of the entry-minute snapshot. The quote must be valid, the ask at least $0.01 with at least one contract displayed, and no older than the chosen limit. The project rule is 15 s; far OTM quotes often stand unchanged longer, so the default allows 5 minutes.
  • 16:10 exit. Sell at a bid no older than 15 s. Without one, the first positive bid before 16:15. Contracts the bid size could not take are valued at intrinsic value from the SPY price at 16:15.
  • 17:25 exit. Intrinsic value from the SPY price at 17:25 (a minute no older than 4 minutes). The option is assumed exercised before 17:30 and the share position closed at that price. This is not an observed trade.
  • Profit lock. From the minute after entry until the scheduled exit, the page checks the SPY price every minute. As soon as the intrinsic value of the whole position reaches the chosen multiple of the money spent (fees included), the position is closed at that price: before 16:15 by selling the options, later by trading SPY shares after hours and exercising the options, which locks at least the intrinsic value. Otherwise the scheduled exit applies. A leg with no intrinsic value at that minute counts as closed at $0, a conservative choice that ignores its remaining time value. Minute closes are trade prices, not executable quotes; after-hours trading and exercise deadlines depend on the broker.
  • Lock method. “Close the position” works as described above. “Hedge with shares”: the options are kept to 17:25; at the lock minute every in-the-money leg is hedged with 100 SPY shares per contract (a Call by selling shares, a Put by buying them), so its intrinsic value at that minute is kept, and if SPY comes back through the strike, the other side of the position gains again. That is the same as buying a deep in-the-money option of the other kind, without paying its spread. “Delta hedge”: at the lock minute every leg is hedged with shares by its Black–Scholes delta (volatility implied from the entry mid price, time to 17:30), and the hedge is reset every minute in which the delta has moved by 0.05; if no volatility can be implied, the leg gets the plain share hedge. Shares are closed at the 17:25 price. Costs: $1 per 100 shares for the share hedge, 1 cent a share for every delta-hedge trade. Both hedges apply only to the 17:25 exit, since they need the after-hours minutes. All lock methods compared, including a vertical spread and a bought in-the-money option.
  • Stability. Besides the total, the page shows how many calendar months ended in profit, on what share of the sessions the running total stood above zero, and the P&L of each month under the chart. The default rule is chosen on 2022–2024 for stability at $1000 a day: the largest total without its three best days, so a rule cannot win on a few jumps; 2025–2026 is the check (see “History 2022–2026”). It is chosen on QQQ, SPY and IWM together (their daily results added up), so one rule has to work on all three.
  • $1000 a day. The page opens with $1000 of options a day. With the daily budget it also shows the return on capital: the budget plus the largest drawdown the rule went through, and that result scaled to 252 sessions a year without compounding.
  • Costs. Share trades after the close cost 1 cent a share in the model ($1 per 100 shares for a share hedge); the form can double or triple that for wider after-hours spreads, and can add 1–2 cents to the price of every contract bought.
  • SPY and IWM. The same page and model run on their own snapshots from the same archive. The report-day basket is the same; the 30-minute volatility filter is QQQ-only because its thresholds are QQQ quartiles.
  • Minimum per share order. Some brokers charge at least $0.35 or $1.00 for a share order. The share costs above already include $0.0035 a share, so each order adds only what it lacks to that minimum. The share hedge and a close after 16:15 trade 100 shares per contract and are barely touched; the delta hedge trades small lots many times, so the minimum costs it most with one contract and matters less as contracts are added.
  • Report days. The project research basket: AAPL, MSFT, NVDA, AMZN, META, Alphabet, TSLA, AVGO, AMD, MU. All of them publish results after the close; the dates come from the Nasdaq calendar saved in the project (sessions in the period: 28). The largest late moves happen on these days, so a profit lock can cut them short: the “hold” mode disables the lock on report days only.
  • Hedge fills. A lock is decided on a minute’s closing price, which is gone by then. By default every share trade of a hedge fills at the first minute open after its signal (the archive’s verified minute bars); “signal minute price” shows the earlier, optimistic model. Found by the execution audit in research/qqq_call_put_close_2026-09-24.
  • Strike by delta, spread and VIX. Strike by delta: of the four OTM steps, the one whose Black–Scholes delta at entry (volatility from the quote mid, to the 17:30 cut-off) is nearest to the target, so “how far out” follows the price and volatility of the year. Minimum price in % of the ETF: the same idea for the option price. Spread: the pair’s combined bid/ask spread at entry over its combined ask. VIX: the Cboe close of the previous session (data/vix_prices_v1.json). All are known before the entry.
  • Filters. Activity: the SPY range (high minus low over the first price) of the minute closes in the 15 minutes before entry, either at least a fixed percentage or at least a share of the median 15:30–15:45 range of the previous 20 sessions. Minimum price: both options must cost at least this much at entry; very cheap options mark quiet sessions and are mostly fees. Evenings: the mean after-hours range (16:15–17:25) of the previous 10 sessions; 0.19% and 0.25% are the median and the upper third of January–June. Every filter uses only data known before the entry. How the filters were checked.
  • 30-minute volatility. From the study research/qqq_late_move_2026-09-24: 100 × the square root of the sum of squared one-minute QQQ returns from 15:15 to entry. Its groups are fixed by the quartiles of 2023–2024: low ≤ 0.122%, high ≥ 0.218%, so 2026 never shaped them. The window needs QQQ from 15:15, so the filter works for entries from 15:45. How it did on this pair.
  • Fees are charged for every contract bought and sold. When intrinsic value does not cover the fee, the option is not exercised and the exit is worth nothing.
  • Several contracts per leg are bought at the same ask; with displayed sizes respected, a leg gets no more than the ask size shown at entry. Everything else, fees and share hedges included, scales with the count.
  • Budget is split equally between the selected legs. Contracts per leg = leg budget ÷ (ask × 100 + fee), rounded down. With displayed sizes respected, a purchase is capped by the ask size and a 16:10 sale by the bid size.
  • Limits. Quotes do not prove fills; latency, queue position and slippage are not modeled. The default variant was chosen on January–June and checked on July–September, so only the July–September result is out of sample; the January–June result is overstated by the choice itself. A reliable check needs future sessions with the rule fixed in advance.
  • Reproduction. The quote facts are rebuilt by python -m scripts.build_qqq_call_put_page; the page model matches independent Python calculations to the cent, with and without the profit lock, for every lock method.