Are our backtests biased against option buying? Audit, fixes and a clean re-run

Built 2026-10-26 18:10 IST. Research only, not advice. Read-only data, no orders. Asked 26-Oct-2026 17:11 IST: “you are not able to find 1 strategy in option buying which is profitable, you are doing something wrong, there are thousands of strategies and you say all of them lose.”

Update 26-Oct-2026 (asked 18:06 IST): “trail the profit at 50% after 1:2” re-run → section 6. It does not change the verdict.

Short answer.
  1. Yes, we got one big thing wrong: costs. Earlier pages (recoveries, lows, call-wall, pre-expiry, last-30, overnight) charged 3 pts slippage per side on ATM weekly options. The real Upstox order book (31,096 snapshots, 11 sessions, Oct-2026) shows a median ATM/±1 bid-ask spread of 0.25 pt (90th percentile 0.40). Top-of-book size is about 9–10 lots. A realistic fill is ≈0.5 pt per side. That is about 2.0 pts (≈₹133/lot of 65) per 2-order round trip including all charges, not ≈7. Fixing it improves every result by ≈+4.9 pts/trade. The famous “random entries lose −9” falls to about −2.5.
  2. The other suspected flaws were checked and are small. Buyer-style exits (structural spot stop, no scale-out, hold to 15:14, 2R/4R targets, ATR-like trail) do not beat the old scale-out on average. Pooled across 804 trades: trail E4 -2.13, old E0 -2.52, 2R -2.57, 4R -4.33, hold-to-close -4.94 pts. With-trend beats counter-trend by only ≈0.2–0.7 pt. First-hour entries are no cheaper than mid-day. Strike choice (ITM/ATM/OTM) moves results by ±1 pt. No lookahead was found in the old code.
  3. Even after the fixes, none of the 6 pre-declared candidates is profitable out of sample. In 2026, 5 of 6 are negative. The trend-day filter is +0.93 pts/trade (n=28, p=0.41, BH q=1). None survives BH. Most sit at or below random same-time entries with the same exits.
  4. Where the edge really is: ORB with-gap plus a structural stop held to 15:14 makes +5.9 (ORB15) / +8.1 (ORB30) Nifty points per trade on spot, 2022–2026, positive in every year (ORB30 p=0.04 before multiple-testing correction). The option buyer keeps only ≈25–50% of that move. Theta and the intraday IV drift eat the rest, then about 2 pts of cost, so the trades end at −1 to −5 pts. The problem is not that we test the wrong patterns. Intraday spot edges of 5–10 points are smaller than what a long option bleeds over the hours needed to collect them.
  5. A lead, not a strategy (found after looking at 2026, so it is post-hoc): the put side of ORB with-gap (gap-down day, breaks the opening range down, 2–6 strikes ITM, structural stop, hold to 15:14) made +5.6 to +7.4 pts/trade in 2026 (n≈50) but about 0 in 2024–25 (−3.5 to +2.6). It goes on a forward-watch list, not a trade list.

1. What we were doing wrong (measured)

#Suspected flawEvidence in our codeVerdictMeasured impact
1Slippage 3 pts/sideSLIP=3.0 in recov/tradelib.py, lows/part2_options.py, callwall/cwlib.py, pre-expiry/backtest_pre.py, last30/options_pnl.py, overnight/backtest.py. (nifty-setups-backtest used 0.3–0.5, which is fine.)CONFIRMED, the main flawOLD→REAL: E0 -7.45→-2.52; E1 -9.92→-4.94 pts/trade, i.e. +4.9 pts/trade (≈₹320/lot). Stress at 1 pt/side costs another −1.0.
1bSTTOld code used 0.10% on all sells. It has been 0.15% since 1-Apr-2026 (Finance Act 2026, NSE circular).Confirmed, tiny≈−0.07 pt/trade in 2026 (it made old 2026 results slightly too good)
2Premium stop −20 + scale-out cut the right tailE0 in tradelib/cwlib: stop −20, 40% at +20, 30% at +40, 60-min capNot confirmedPooled REAL: E0 -2.52 vs structural stop + hold to 15:14 -4.94, 4R -4.33, 2R -2.57, trail -2.13. Longer holds raise the payoff ratio (1.4–2.7) but win rates drop to 20–35% and theta is paid for longer. Only the trail is better, by ≈+0.4.
3Entries were countertrend or late; first hour ignoredrecov and lows were rebound fades. callwall was a mid-day cross.Partly true, smallRandom entries: with-trend -2.69 vs counter -2.91 (first hour -2.49 vs -3.19). First-hour random entries -3.07 vs later -2.69, so no free first-hour edge. All 6 candidates here are with-trend and first-hour.
4aLookahead / same-bar entryAll old option sims fill at the next minute's open. Stops fill at min(open, stop).Not found0. One small optimism: recov 'spotstop' exits at the same bar's close.
4bWrong strikeATM only in recov/callwallMinorITM1/ITM2/OTM1 vs ATM: −0.1 to +0.6 pt on average. 0DTE is worse (−0.5 to −1.1).
4cSpot close vs executable option priceOld trades already used real 1-min option barsNot a flaw–
4dToo many variants / BH kills everythingcallwall picked 1 of 440 combos per side. Last30 had dozens of variants.Real issue (it cuts both ways)Here the family is fixed at 6 tests, declared before 2026 was opened. Nothing is positive enough for BH to even matter: the best raw p is 0.41.
4e60-min hold caprecov/callwall used 60 min (runner 240)Tested via E1–E4 (hold to 15:14)Holding longer did not help on average (see #2)
4fSessions excluded / missing dataSpot 15:15–15:29 frozen since 2026-08-03 is treated as missing. Options are real to 15:40.HandledThe time exit is at the 15:15 option open, so the frozen window is never used.

2. Corrected cost per trade

Bid-ask from the Upstox ATM-feed snapshots (strikes ATM±2, CE+PE, 08–26 Oct 2026). Spread in option points:

tod n mean median p90 half_spread_med
09:15-19 108 0.294 0.300 0.450 0.150
09:20-29 180 0.284 0.300 0.400 0.150
09:30-10:14 1350 0.257 0.250 0.400 0.125
10:15-13:59 11724 0.262 0.250 0.400 0.125
14:00-15:14 4470 0.242 0.250 0.400 0.125
15:15+ 825 0.231 0.250 0.400 0.125
dte n mean median p90
0 3993 0.131 0.100 0.200
1 3618 0.236 0.225 0.350
3 330 0.257 0.250 0.350
4 3300 0.263 0.250 0.350
5 5700 0.319 0.300 0.450
6 1716 0.364 0.350 0.500
offset n mean median p90
-2 6220 0.293 0.250 0.500
-1 6219 0.266 0.250 0.450
0 6219 0.251 0.250 0.400
1 6219 0.251 0.250 0.400
2 6219 0.272 0.250 0.450

Charges (2-order round trip, ATM premium ≈145, lot 65): brokerage ₹40, STT 0.15% of sell premium ≈₹14, NSE txn 0.03503% ≈₹7, GST 18% on brokerage+txn ≈₹8.5, SEBI and stamp <₹1. Total ≈₹68 = 1.04 pts. Scale-out exits use 3–4 orders: 1.43–1.96 pts. Slippage: 0.5 pt/side used as REAL, against a measured half-spread of ≈0.13. That leaves room for a tick and for faster minutes. Stress case 1.0 pt/side. Total REAL ≈ 2.0 pts/trade (₹133/lot) versus the old ≈7.0–8.0. Caveat: the spreads come from calm-to-normal Oct-2026 sessions. Gap opens and news minutes can be wider.

3. Re-run: 6 pre-declared candidates (PREREG.md, choices frozen in frozen_choices.json at 2026-10-26 17:22 IST before any 2026 number)

Instrument: ATM, nearest weekly with DTE≥1, CE for long / PE for short. Entry at the next minute's option open after a spot-bar-close signal. Exits are decided on spot and executed at the next option open. Time exit at the 15:15 option open. R = structural stop distance clipped to 15–70 spot pts. Exit set E0 legacy / E1 structural stop + time / E2 2R / E3 4R / E4 BE at 1R then trail 1R. The exit is chosen per candidate on TRAIN (Oct-2024..Dec-2025), then tested once on 2026 (to 23-Oct). REAL cost. Random = same-time, same-direction, same-R entries on random days of the same period with the same exit; percentile = rank of the candidate mean among 2,000 random same-size sets. ₹ per lot uses lot 75 in 2024–25 and 65 in 2026.

cand name ex split n mean median win avg_win avg_loss payoff rs_per_trade rs_total maxdd_rs worst_month worst_month_rs random_mean random_pctile t_p_one q_bh
A O30 >150 continuation E1 train 17 3.07 -25.50 29.41 97.91 -36.45 2.69 230.26 3,914.39 -23,448.74 2025-04 -9,860.44 -5.66 79.60 0.44 –
A O30 >150 continuation E1 test 9 -11.93 -29.75 22.22 62.59 -33.23 1.88 -775.73 -6,981.56 -15,118.79 2026-03 -3,346.15 -3.01 34.85 0.76 1.00
B15 ORB15 with-gap E2 train 133 -0.13 -15.29 40.60 42.25 -29.10 1.45 -10.05 -1,336.65 -25,211.85 2024-11 -14,230.38 -2.99 80.90 0.52 –
B15 ORB15 with-gap E2 test 99 -3.25 -19.85 29.29 55.51 -27.59 2.01 -210.92 -20,881.33 -51,903.72 2026-05 -22,166.98 -4.31 59.95 0.78 1.00
B30 ORB30 with-gap E2 train 124 -1.18 -14.26 39.52 43.50 -30.37 1.43 -88.47 -10,970.85 -29,207.01 2024-11 -13,852.35 -2.17 62.25 0.62 –
B30 ORB30 with-gap E2 test 96 -0.87 -18.04 32.29 56.26 -28.11 2.00 -56.34 -5,408.30 -49,342.77 2026-05 -16,037.32 -2.78 69.10 0.58 1.00
C Rule B early-low rebound (CE) E4 train 56 -1.97 -14.26 33.93 44.72 -25.94 1.72 -147.47 -8,258.33 -24,044.11 2025-04 -17,015.99 -2.86 55.15 0.60 –
C Rule B early-low rebound (CE) E4 test 57 -3.90 -9.77 38.60 25.50 -22.38 1.14 -253.38 -14,442.78 -21,655.55 2026-03 -7,891.55 -4.24 59.45 0.84 1.00
D First-hour VWAP pullback E3 train 88 -3.68 -12.35 22.73 41.61 -17.00 2.45 -275.90 -24,279.48 -46,854.24 2025-05 -11,671.27 -2.02 29.95 0.88 –
D First-hour VWAP pullback E3 test 57 -9.47 -13.51 19.30 31.62 -19.30 1.64 -615.63 -35,090.99 -39,340.72 2026-01 -13,295.99 -2.11 1.30 1.00 1.00
E Trend-day filter E0 train 40 -3.90 -6.53 42.50 15.87 -18.51 0.86 -292.19 -11,687.46 -19,634.85 2025-04 -4,249.78 -0.13 11.55 0.89 –
E Trend-day filter E0 test 28 0.93 5.90 60.71 14.02 -19.29 0.73 60.65 1,698.25 -5,163.77 2026-06 -2,343.53 -3.21 89.35 0.41 1.00

Per year (chosen exit, REAL cost)

cand year n mean win rs
A 2024 5 -28.8 20.0 -10,815.1
A 2025 12 16.4 33.3 14,729.5
A 2026 9 -11.9 22.2 -6,981.6
B15 2024 22 -9.1 31.8 -14,977.2
B15 2025 111 1.6 42.3 13,640.6
B15 2026 99 -3.2 29.3 -20,881.3
B30 2024 20 -5.6 35.0 -8,397.0
B30 2025 104 -0.3 40.4 -2,573.9
B30 2026 96 -0.9 32.3 -5,408.3
C 2024 20 -3.1 40.0 -4,641.0
C 2025 36 -1.3 30.6 -3,617.4
C 2026 57 -3.9 38.6 -14,442.8
D 2024 6 31.7 50.0 14,267.6
D 2025 82 -6.3 20.7 -38,547.0
D 2026 57 -9.5 19.3 -35,091.0
E 2024 6 -1.8 50.0 -817.7
E 2025 34 -4.3 41.2 -10,869.8
E 2026 28 0.9 60.7 1,698.3

per-month CSV

Secondary: every exit, REAL cost (exploratory, not in the family)

cand ex mean_test mean_train n_test n_train
A E0 -9.66 -1.68 9.00 17.00
A E1 -11.93 3.07 9.00 17.00
A E2 -4.01 -9.12 9.00 17.00
A E3 -11.93 -4.69 9.00 17.00
A E4 -7.14 -0.62 9.00 17.00
B15 E0 -1.04 -0.51 99.00 133.00
B15 E1 -2.24 -3.69 99.00 133.00
B15 E2 -3.24 -0.13 99.00 133.00
B15 E3 -2.18 -3.66 99.00 133.00
B15 E4 -1.03 -1.48 99.00 133.00
B30 E0 -4.07 -1.81 96.00 124.00
B30 E1 -4.62 -4.39 96.00 124.00
B30 E2 -0.87 -1.18 96.00 124.00
B30 E3 -3.44 -4.20 96.00 124.00
B30 E4 -1.56 -2.99 96.00 124.00
C E0 -0.72 -5.49 57.00 56.00
C E1 -4.92 -11.43 57.00 56.00
C E2 -0.42 -7.84 57.00 56.00
C E3 -1.90 -8.06 57.00 56.00
C E4 -3.90 -1.97 57.00 56.00
D E0 -5.16 -3.99 57.00 88.00
D E1 -7.81 -3.87 57.00 88.00
D E2 -4.78 -5.70 57.00 88.00
D E3 -9.47 -3.68 57.00 88.00
D E4 -5.02 -3.70 57.00 88.00
E E0 0.93 -3.90 28.00 40.00
E E1 6.17 -17.13 28.00 40.00
E E2 9.86 -8.71 28.00 40.00
E E3 13.05 -17.13 28.00 40.00
E E4 18.38 -9.80 28.00 40.00

The trend-day filter (E) with the trail E4 is +18.4 pts in 2026, but −9.8 in train. It was the worst-ranked choice on train, so taking it now would be fitting to 2026. Not claimed.

4. Why buyers still lose: the spot edge exists, the option eats it

Spot-only proxy (index points, no costs, same signal and exit; 2022–23 has no futures volume, so VWAP-based D/E start in Oct-2024):

cand ex 2022 2023 2024 2025 2026
A E1 -56.9 -30.0 -44.4 27.2 -15.5
A E4 -15.4 0.1 -22.8 9.9 -10.4
B15 E1 4.5 4.0 8.7 8.2 4.3
B15 E4 1.2 -0.6 4.5 6.2 3.4
B30 E1 13.2 5.1 11.8 7.6 3.0
B30 E4 11.8 0.5 12.3 6.3 5.0
C E1 – – 3.9 -4.3 0.8
C E4 – – -1.3 11.2 -2.0
D E1 – – 40.2 -0.6 -0.8
D E4 – – 14.6 -3.4 -2.3
E E1 – – -10.2 -17.2 16.9
E E4 – – -5.9 -8.9 34.6

ORB with-gap held to 15:14 (E1): spot points vs what the option buyer keeps after REAL cost, by strikes ITM:

cand itm scen split n spot_pts opt_gross pnl
B15 0 REAL test 99 4.96 -1.19 -2.24
B15 0 REAL train 133 4.01 -2.73 -3.69
B15 2 REAL test 99 4.96 -1.57 -2.75
B15 2 REAL train 134 4.86 -1.48 -2.54
B15 4 REAL test 99 4.96 -1.73 -3.05
B15 4 REAL train 133 3.90 -1.65 -2.85
B15 6 REAL test 99 4.96 -1.38 -2.88
B15 6 REAL train 134 4.86 -0.30 -1.64
B30 0 REAL test 96 2.95 -3.58 -4.62
B30 0 REAL train 124 4.29 -3.43 -4.39
B30 2 REAL test 96 2.95 -4.01 -5.18
B30 2 REAL train 125 5.20 -2.27 -3.33
B30 4 REAL test 96 2.95 -4.02 -5.34
B30 4 REAL train 125 5.20 -1.36 -2.55
B30 6 REAL test 96 2.95 -3.79 -5.28
B30 6 REAL train 125 5.20 -1.21 -2.56

By direction (all periods): on short signals spot gains +13.3 pts, the ATM put gains +3.2 before costs, and the 6-ITM put +6.6. On long signals spot loses −3.9 and calls lose −6. Over 3–5 hours a long weekly option gives back roughly 3–6 pts to theta and the falling intraday IV. That is the same size as the spot edge.

Random ATM buys by entry time (REAL cost)

ex hm E0 E1 E4
09:20 -2.29 -4.38 -2.51
09:30 -2.53 -4.02 -3.12
09:45 -2.59 -3.86 -2.31
10:15 -2.78 -2.11 -2.26
11:00 -2.86 -2.83 -2.80
12:00 -2.53 -2.07 -2.40
13:00 -3.05 -2.97 -2.91
14:00 -2.84 -2.80 -3.17

6. Follow-up (asked 26-Oct-2026 18:06 IST): “trail the profit at 50% after 1:2” instead of a fixed exit

Verdict: the trail does not rescue any strategy.

Exit rules.

Disclosure: rule C allows up to 3 triggers a day, as in the recoveries rule. 20 trades in 15 days were extra. With the first trigger only, C is −5.4 (train) and −11.7 (2026), so the verdict does not change.

Primary: spot-based trail, 6 pre-declared strategies

cand mode inst split n mean median win avg_win avg_loss payoff rs_per_trade rs_total maxdd_rs worst_month worst_month_rs random_mean random_pctile t_p_one q_bh
A spot ATM train 17 3.89 -25.50 29.41 100.69 -36.45 2.76 470.73 8,002.44 -21,090.90 2025-04 -9,860.44 -5.28 82.75 0.42 –
A spot ATM test 9 -7.14 -29.75 33.33 54.96 -38.19 1.44 -464.17 -4,177.53 -12,314.76 2026-04 -3,250.52 -1.67 41.65 0.65 0.99
B15 spot ATM train 133 -3.90 -15.48 36.84 38.16 -28.43 1.34 -209.29 -27,835.68 -38,923.19 2025-05 -15,993.87 -4.50 57.45 0.87 –
B15 spot ATM test 99 -0.67 -19.96 27.27 70.01 -27.18 2.58 -43.67 -4,323.64 -56,253.62 2026-05 -17,460.26 -3.67 74.85 0.55 0.99
B30 spot ATM train 124 -3.49 -15.20 36.29 42.19 -29.52 1.43 -217.38 -26,955.64 -37,691.72 2025-05 -20,503.40 -4.05 56.85 0.82 –
B30 spot ATM test 96 -2.10 -18.44 29.17 59.72 -27.56 2.17 -136.60 -13,113.55 -61,637.63 2026-05 -12,615.14 -2.42 55.50 0.66 0.99
C spot ATM train 56 -6.93 -22.90 30.36 52.51 -32.83 1.60 -336.17 -18,825.51 -28,899.31 2025-04 -17,772.42 -4.58 32.10 0.81 –
C spot ATM test 57 -10.24 -22.35 31.58 29.14 -28.41 1.03 -665.45 -37,930.74 -46,184.02 2026-05 -19,820.97 -6.68 26.45 0.99 0.99
D spot ATM train 88 -6.52 -11.49 25.00 24.24 -16.77 1.45 -519.23 -45,692.41 -60,283.74 2025-06 -12,341.42 -2.48 6.65 0.98 –
D spot ATM test 57 -6.18 -11.22 31.58 18.18 -17.43 1.04 -401.86 -22,905.80 -27,540.30 2026-02 -7,622.31 -1.90 12.20 0.96 0.99
E spot ATM train 40 -12.03 -26.26 30.00 37.53 -33.27 1.13 -900.26 -36,010.50 -45,050.56 2025-02 -14,110.76 -1.28 5.10 0.96 –
E spot ATM test 28 9.56 -12.65 46.43 62.14 -36.00 1.73 621.64 17,405.83 -17,915.64 2026-06 -4,957.85 -1.95 89.20 0.20 0.99

Trail vs the old exits (same trades, pts/trade)

cand train_best_old train_E0 train_trail50 test_E0 test_trail50
A 3.07 -1.68 3.89 -9.66 -7.14
B15 -0.13 -0.51 -3.90 -1.04 -0.67
B30 -1.18 -1.81 -3.49 -4.07 -2.10
C -1.97 -5.49 -6.93 -0.72 -10.24
D -3.68 -3.99 -6.52 -5.16 -6.18
E -3.90 -3.90 -12.03 0.93 9.56

Per year (primary trail; the L rows are the post-hoc lead, 2-ITM puts)

cand year n mean win rs
A 2024 5 -17.3 20.0 -3,434.7
A 2025 12 12.7 33.3 11,437.2
A 2026 9 -7.1 33.3 -4,177.5
B15 2024 22 -15.5 27.3 -14,563.9
B15 2025 111 -1.6 38.7 -13,271.8
B15 2026 99 -0.7 27.3 -4,323.6
B30 2024 20 -9.3 35.0 -8,406.2
B30 2025 104 -2.4 36.5 -18,549.5
B30 2026 96 -2.1 29.2 -13,113.5
C 2024 20 -1.9 35.0 7,463.0
C 2025 36 -9.7 27.8 -26,288.5
C 2026 57 -10.2 31.6 -37,930.7
D 2024 6 2.9 50.0 -1,363.6
D 2025 82 -7.2 23.2 -44,328.8
D 2026 57 -6.2 31.6 -22,905.8
E 2024 6 -9.7 50.0 -4,276.9
E 2025 34 -12.4 26.5 -31,733.6
E 2026 28 9.6 46.4 17,405.8
L15 2024 11 -13.9 27.3 -5,562.0
L15 2025 47 1.8 46.8 6,421.5
L15 2026 53 6.7 26.4 22,939.5
L30 2024 8 14.0 50.0 4,587.5
L30 2025 43 -2.2 46.5 -6,957.9
L30 2026 49 7.3 30.6 23,333.6

per-month CSV

Sensitivity (spot trail, ATM; activation 1.5/2/3R at 50%, lock 40/50/60% at 2R). Reported only; nothing was picked from it.

cand act lock count_test count_train mean_test mean_train
A 1.50 0.50 9 17 -7.14 3.89
A 2.00 0.40 9 17 -9.07 2.98
A 2.00 0.50 9 17 -7.14 3.89
A 2.00 0.60 9 17 -7.14 -5.68
A 3.00 0.50 9 17 -11.93 6.47
B15 1.50 0.50 99 133 -1.83 -2.64
B15 2.00 0.40 99 133 -0.55 -3.99
B15 2.00 0.50 99 133 -0.67 -3.90
B15 2.00 0.60 99 133 -0.57 -3.04
B15 3.00 0.50 99 133 -1.24 -3.87
B30 1.50 0.50 96 124 -4.24 -2.91
B30 2.00 0.40 96 124 -2.70 -3.73
B30 2.00 0.50 96 124 -2.10 -3.49
B30 2.00 0.60 96 124 -1.67 -3.57
B30 3.00 0.50 96 124 -3.76 -4.75
C 1.50 0.50 57 56 -7.38 -7.14
C 2.00 0.40 57 56 -11.96 -8.57
C 2.00 0.50 57 56 -10.24 -6.93
C 2.00 0.60 57 56 -8.91 -5.06
C 3.00 0.50 57 56 -4.25 -10.50
D 1.50 0.50 57 88 -5.36 -7.65
D 2.00 0.40 57 88 -7.67 -6.40
D 2.00 0.50 57 88 -6.18 -6.52
D 2.00 0.60 57 88 -7.96 -5.71
D 3.00 0.50 57 88 -8.01 -6.34
E 1.50 0.50 28 40 16.29 -10.30
E 2.00 0.40 28 40 9.71 -13.42
E 2.00 0.50 28 40 9.56 -12.03
E 2.00 0.60 28 40 9.83 -11.45
E 3.00 0.50 28 40 8.27 -17.13

Secondary: premium-based trail

cand mode inst split n mean median win avg_win avg_loss payoff rs_per_trade rs_total maxdd_rs worst_month worst_month_rs random_mean random_pctile t_p_one q_bh
A prem ATM train 17 4.78 -25.50 29.41 103.72 -36.45 2.85 537.48 9,137.08 -21,090.90 2025-04 -9,860.44 -4.72 86.05 0.41 –
A prem ATM test 9 -7.14 -29.75 33.33 54.96 -38.19 1.44 -464.17 -4,177.53 -12,314.76 2026-04 -3,250.52 -2.06 41.60 0.65 –
B15 prem ATM train 133 -0.92 -15.05 42.10 37.83 -29.11 1.30 6.21 826.22 -28,158.78 2025-05 -15,825.36 -3.87 80.80 0.60 –
B15 prem ATM test 99 -0.76 -19.85 30.30 61.72 -27.93 2.21 -49.68 -4,918.76 -53,934.32 2026-05 -17,460.26 -3.46 73.95 0.56 –
B30 prem ATM train 124 -2.71 -15.33 39.52 40.11 -30.69 1.31 -162.94 -20,204.45 -36,017.79 2025-05 -12,987.79 -3.98 62.35 0.77 –
B30 prem ATM test 96 -2.21 -18.22 31.25 54.54 -28.00 1.95 -143.55 -13,781.23 -56,854.13 2026-05 -12,615.14 -1.95 50.80 0.68 –
C prem ATM train 56 -4.08 -21.59 33.93 50.08 -31.89 1.57 -292.53 -16,381.48 -26,229.34 2025-04 -16,892.41 -3.29 42.70 0.70 –
C prem ATM test 57 -7.12 -21.07 35.09 30.18 -27.27 1.11 -462.45 -26,359.40 -36,496.15 2026-05 -16,259.30 -5.71 41.60 0.96 –
D prem ATM train 88 -3.69 -10.82 31.82 24.20 -16.71 1.45 -324.82 -28,584.14 -47,498.33 2025-05 -9,431.94 -2.19 31.05 0.88 –
D prem ATM test 57 -6.74 -11.07 38.60 12.25 -18.67 0.66 -437.92 -24,961.46 -29,243.63 2026-01 -7,684.69 -1.71 7.05 1.00 –
E prem ATM train 40 -9.82 -25.66 32.50 38.61 -33.13 1.17 -762.86 -30,514.54 -41,234.95 2025-02 -14,110.76 -1.53 9.90 0.92 –
E prem ATM test 28 12.46 -4.15 50.00 60.91 -35.98 1.69 810.24 22,686.75 -16,987.45 2026-06 -4,867.02 -1.55 92.10 0.13 –

Post-hoc lead: gap-down ORB, puts 2/4 ITM, spot trail. Labelled post-hoc.

cand mode inst split n mean median win avg_win avg_loss payoff rs_per_trade rs_total maxdd_rs worst_month worst_month_rs random_mean random_pctile t_p_one q_bh
L15 spot ITM2 train 58 -1.15 -20.50 43.10 45.13 -36.21 1.25 14.82 859.49 -28,007.88 2025-05 -12,747.98 -2.88 61.85 0.57 –
L15 spot ITM2 test 53 6.66 -21.11 26.41 108.36 -29.85 3.63 432.82 22,939.50 -35,429.14 2026-08 -8,823.24 0.27 78.00 0.25 –
L15 spot ITM4 train 57 -2.12 -27.81 43.86 50.23 -43.02 1.17 -47.19 -2,689.96 -31,518.76 2025-05 -13,671.76 – – 0.61 –
L15 spot ITM4 test 53 7.19 -24.52 33.96 96.14 -38.55 2.49 467.42 24,773.47 -41,086.13 2026-08 -10,732.92 – – 0.26 –
L30 spot ITM2 train 51 0.38 -10.55 47.06 44.39 -38.75 1.15 -46.48 -2,370.38 -21,892.52 2025-05 -10,409.64 -2.09 64.25 0.48 –
L30 spot ITM2 test 49 7.33 -20.97 30.61 96.73 -32.12 3.01 476.20 23,333.58 -38,930.08 2026-04 -9,668.13 3.03 69.95 0.23 –
L30 spot ITM4 train 51 1.68 -12.37 47.06 54.55 -45.31 1.20 36.77 1,875.28 -26,123.07 2025-05 -11,464.24 – – 0.42 –
L30 spot ITM4 test 49 7.97 -23.09 34.69 97.97 -39.85 2.46 517.92 25,377.95 -45,892.93 2026-08 -10,835.05 – – 0.24 –

How much of the spot ORB edge does the option keep with this exit?

Spot proxy with the same trail (index points, no costs), 2022–2026:

cand 2022 2023 2024 2025 2026 all p
A -56.9 -8.2 -40.1 19.2 -10.4 -15.1 0.3
B15 5.3 1.8 3.2 7.4 5.9 4.7 0.2
B30 11.3 2.5 6.2 9.1 6.6 7.1 0.1
C – – 7.8 1.5 -10.3 -3.2 0.6
D – – 15.6 -6.6 -1.9 -3.6 0.4
E – – -0.0 -12.5 24.3 3.8 0.7

Option gross before slippage versus spot points on the same trades:

cand inst split n spot_pts opt_gross_ex_slip net capture_pct
B15 ATM test 99 6.56 1.38 -0.67 21.10
B15 ATM train 133 2.26 -1.94 -3.90 -85.68
L15 (puts) ITM2 test 53 18.78 8.82 6.66 46.99
L15 (puts) ITM2 train 58 7.50 0.90 -1.15 11.97
L15 (puts) ITM4 test 53 18.78 9.50 7.19 50.57
L15 (puts) ITM4 train 57 5.31 0.05 -2.12 0.92
B30 ATM test 96 6.56 -0.05 -2.10 -0.81
B30 ATM train 124 5.71 -1.54 -3.49 -26.90
L30 (puts) ITM2 test 49 20.99 9.48 7.33 45.17
L30 (puts) ITM2 train 51 13.38 2.39 0.37 17.87
L30 (puts) ITM4 test 49 20.99 10.26 7.97 48.89
L30 (puts) ITM4 train 51 13.38 3.82 1.68 28.55

With this exit, ORB30 still makes about +7 spot pts/trade over 2022–26 (p=0.05). The ATM option keeps about 0% of it (ORB15 about 21% in 2026 and negative in train). ITM puts on the gap-down side keep 45–50% in 2026 but only 1–29% in train.

Case: 26-Oct-2026 (full-session Upstox intraday, fetched read-only after the close; spot 15:15+ treated as missing)

Gap −75.6 (open 22,524.4 vs the 23-Oct close of 22,600). No ORB with-gap signal and no O30 or VWAP-pullback signal fired. Rule C fired at 09:16 and 09:26, and E fired at 10:14 (long).

cand signal dir R mode inst K typ fill exit_min why pnl pnl_rs spot_pts
E 10:14 1 70.00 spot ATM 22,700.00 CE 166.40 10:39 stop -56.61 -3,679.80 -86.20
E 10:14 1 70.00 prem ATM 22,700.00 CE 166.40 10:39 stop -56.61 -3,679.80 -86.20
E 10:14 1 – old_E0 ATM 22,700.00 CE 166.40 10:16 prem_stop -21.58 -1,402.66 –
E 10:14 1 – old_E1 ATM 22,700.00 CE 166.40 10:39 stop -56.61 -3,679.80 –
C 09:16 1 45.50 spot ATM 22,500.00 CE 170.80 09:18 stop -28.63 -1,860.71 -47.00
C 09:16 1 45.50 prem ATM 22,500.00 CE 170.80 09:18 stop -28.63 -1,860.71 -47.00
C 09:16 1 – old_E0 ATM 22,500.00 CE 170.80 09:17 prem_stop -21.59 -1,403.34 –
C 09:16 1 – old_E1 ATM 22,500.00 CE 170.80 09:18 stop -28.63 -1,860.71 –
C 09:26 1 35.90 spot ATM 22,400.00 CE 171.10 11:34 trail 79.07 5,139.31 127.50
C 09:26 1 35.90 prem ATM 22,400.00 CE 171.10 09:33 trail 16.69 1,084.59 127.50
C 09:26 1 – old_E0 ATM 22,400.00 CE 171.10 09:31 prem_stop 26.26 1,706.91 –
C 09:26 1 – old_E1 ATM 22,400.00 CE 171.10 15:15 time 210.51 13,683.43 –

Trail result today: C 09:16 −28.6, C 09:26 +79.1 (trailed out at 11:34), E −56.6. Net −6.2 pts (≈−₹400/lot). Holding the 09:26 call to the close (old E1) would have made +210.5. One day like this is what makes the tail look attractive, but over two years the stops cost more than the tail pays.

5. Data, limits, gaps

Files: results · scripts · charts · pre-registration. Related: intraday recoveries, flow forensics, opening-30m rule.