# Pre-registration — popular-strategies (written 26-Oct-2026 ~19:20 IST, BEFORE any 2026 result of these rules was computed in this study) Context: test the most-cited "popular" Nifty intraday option-buying setups (web sources: stoxgo.in CPR guide, algoram.in options-buying 2026, tradingzenith.net "7 setups", Ojha CPR playbook) as an option BUYER only (long = buy CE, short = buy PE). Regime addendum (Satya 19:17 IST "could it be each strategy works for certain periods") is included below and also fixed before looking at 2026. ## Data Spot Nifty 1m 2022-01-03..2026-10-23 (no intraday data before 2022 exists on the box or from Upstox historical 1m, so the requested 2017 start for the spot walk-forward is NOT possible; walk-forward runs over 2022-2026). Spot bars 15:15-15:29 never used (frozen since 2026-08-03; rule applied to all years). Options: ATM weekly 1m panels 2024-10-21..2026-10-23 (26-Oct partial, excluded). No filling of missing bars. Split (options): TRAIN 2024-10-21..2025-12-31, TEST 2026-01-01..2026-10-23. ## Instrument, entry, exit, costs (identical to buyer-method-audit, REAL cost) ATM (spot at signal rounded to 50), nearest weekly expiry with DTE>=1 (skip 0DTE). Signal on a 5-minute bar close (5m bars = 09:15-09:19, 09:20-09:24, ...; signal minute m = last 1m of the bar) -> buy option at 1m OPEN of m+1. One trade per strategy per day (first signal). PRIMARY EXIT (all strategies, no per-strategy exit selection): structural spot stop (strategy-specific, R clipped to [15,70] pts); once spot open profit on a 1m close reaches 2R, trail = 50% of peak open profit (1m close); hard time exit spot 15:14 -> option 15:15 open. Secondary (reference only): E1 = stop + hold to 15:14. Costs REAL: 0.5 pt slippage/side + brokerage Rs20/order + STT 0.10% sell (0.15% from 1-Apr-2026) + NSE txn + SEBI + stamp + GST. Lot 75 to 2025, 65 from 2026. Spot proxy (2022-2026): spot points from m+1 open to exit-bar+1 open, minus 1.0 pt (futures-like cost) = "spot net". ## Strategies (family of 8 primary tests) P1 ORB15: OR = 09:15-09:29 high/low. First 5m close above ORH (long) / below ORL (short) for bars ending 09:34..11:59. Stop = opposite OR side. P2 ORB5 (first 5-min candle): range 09:15-09:19. First 5m close beyond, bars ending 09:24..10:59. Stop = opposite side. P3 PDH/PDL breakout: day must open inside prior-day range. First 5m close above prior-day high (long) / below prior-day low (short), bars ending 09:24..13:59. Stop = breakout bar low-5 (long) / high+5 (short). P4 Narrow-CPR breakout: P=(H+L+C)/3, BC=(H+L)/2, TC=2P-BC from prior day. Narrow if |TC-BC|/P < 30th percentile of prior 250 sessions' widths (>=120 sessions needed). First 5m close (bars ending 09:34..11:59) above CPR top AND above VWAP -> long; below CPR bottom AND below VWAP -> short. Stop = other CPR edge. P5 Supertrend(10,3) + VWAP on 5m: continuous 5m series across days (Wilder ATR 10). Flip to up with close>VWAP -> long; flip down with close short; bars ending 09:44..14:29. Stop = Supertrend line at signal. P6 EMA 9/21 crossover + VWAP on 5m (continuous EMAs): cross up & close>VWAP -> long; cross down & close short; bars ending 09:44..14:29. Stop = lowest low (highest high) of last 6 5m bars -/+5. P7 RSI(14) 5m reversal (continuous Wilder RSI): RSI crosses up through 30 -> long; crosses down through 70 -> short; bars ending 09:44..14:29. Stop = lowest low / highest high of last 6 5m bars -/+5. P8 Gap fade: 0.3% <= |gap| <= 1.5% (open vs prior official close). Gap up: first 5m close below the 09:15-09:29 low (bars ending 09:34..10:59) -> buy PE; gap down mirror -> CE. Stop = opposite OR side. VWAP = spot typical price weighted by Nifty futures volume (as in earlier studies). Primary test (TEST 2026, always-on): one-sided t-test mean net pts > 0; BH over 8 (q<0.10 survives); percentile vs 2000 random same-size sets of random-day entries at the same minute/direction/R with the same exit. ## Regime labels (ex-ante only; all known at or before 09:15 of the trade day) L1 VIX_open: India VIX daily open on trade day: <13 / 13-16 / >16. L2 DMA_trend: prior close vs 20-DMA and 50-DMA of prior closes: up (above both) / down (below both) / mixed. L3 ER20: Kaufman efficiency ratio of the 20 prior closes |C(t-1)-C(t-21)| / sum|dC|: <0.2 range / 0.2-0.4 mid / >0.4 trend. L4 PDR_ratio: prior-day high-low range / mean range of the 20 days before it: <0.8 compressed / 0.8-1.2 normal / >1.2 expanded. L5 NR7: prior day's range was the narrowest of the last 7: yes / no. L6 Gap: |open - prior close|/prior close: <0.25% flat / 0.25-0.75% medium / >0.75% large. L7 Expiry: weekly expiry day / day before expiry / other (expiries from options panels where available; before that, Thursday weekly expiry moved to the previous trading day on holidays; Tuesday from Sep-2025). L8 FII_long: FII index-futures long % = Long/(Long+Short) from NSE participant-wise OI of the PRIOR trading day: <25 / 25-45 / >45. (If the archive cannot be fetched, L8 is skipped and noted.) Cuts screened: 8 labels, 23 buckets, per strategy -> 8 strategies x 23 = 184 bucket results per data set; every one is reported. ## Regime-filter selection rule (fixed; applied mechanically) For a strategy and a training window: for each label, "good buckets" = buckets with n >= nb and mean net > 0. Filter for that label = trade only in good buckets; needs filtered n >= nf. Pick the single label whose filter gives the highest training total net. If no label qualifies -> "no filter found" (counted as p=1). Options: train = TRAIN window (option net pts), nb=10, nf=20; apply unchanged to 2026. Spot walk-forward: train = all years 2022..Y (spot net), nb=15, nf=30; test year Y+1, Y = 2022..2025 -> pooled OOS 2023-2026. Meta-switch M20 (recent-performance switch): trade a signal only if the sum of net P&L of the strategy's last 20 completed trades (all before the trade day, ALWAYS-ON history) is > 0. Options: history from Oct-2024, evaluated on 2026. Spot: evaluated 2023-2026. Secondary (not in family): M40, last-8-weeks sum > 0. ## Regime family (BH q<0.10 over 32 tests) 8 option regime filters (2026) + 8 spot walk-forward filters (OOS 2023-26) + 8 option M20 (2026) + 8 spot M20 (2023-26). Statistic: one-sided t-test of OOS filtered mean net > 0. Also reported: (a) percentile of the filtered OOS mean vs 2000 random same-size subsets of the strategy's own OOS always-on trades (does the filter pick better trades than chance?); (b) for options, random-entry baseline restricted to the same regime buckets. A regime edge COUNTS only if: q<0.10 AND OOS filtered mean > OOS always-on mean AND (a) percentile >= 90. Everything else is in-sample description only. Descriptive outputs (not tests): by year, half-year, quarter, month heatmap, by each regime bucket, rolling 60-trade expectancy. ## Data deviation noted 19:35 IST (before any 2026 result) Nifty futures 1m volume (needed for VWAP) exists only from Oct-2024 (2024Q3 3%, 2024Q4 69%, full from 2025). VWAP-based P4/P5/P6 therefore produce no signals before ~Oct-2024; their spot walk-forward reduces to train 2024Q4-2025 -> test 2026 (Y=2025 step only). Other strategies use 2022-2026 fully. Option tests unaffected (options start 21-Oct-2024). ## COMBINATIONS / CONFLUENCE pre-registration (appended 21:14 IST 26-Oct-2026, before any combo result on 2026) Question (Satya 21:13 IST): does combining the 8 strategies raise the hit-rate/expectancy? Honesty note: the 2026 results of the single strategies (and of the NR7 filter on P2/P3/P4) were ALREADY SEEN in the earlier run. Combos built from NR7 (N-family) are therefore NOT clean out-of-sample; they are reported but flagged "contaminated". k-of-n and pair combos have not been computed on any period yet. Building block: the existing signal list (results/signals_all.csv; max one signal per strategy per day). Same data, costs (~0.5 pt/side, STT 0.15% of sell premium from 2026-04-01), exit T50 (structural stop, R clipped 15-70, hold stop until 2R then trail locking 50% of peak, time exit 15:15), lots unchanged. Combo trade rule (all combos): the combo fires at the minute of the CONFIRMING signal (the later of the agreeing signals; ties -> lowest P-number), same direction, and the trade is exactly that confirming signal's trade (its entry, structural stop and R). First combo event per day only. Random benchmark = the confirming signal's 30 random same-minute/same-direction/same-R entries on random days of the same split (already generated), 2000 resamples. Declared family (11 tests, BH q<0.10, test = one-sided t of 2026 mean net option pts > 0): K2_15 : >=2 different strategies signal the same direction within 15 minutes (confirming signal m - earlier signal m <= 15). K3_30 : >=3 different strategies, same direction, all within a 30-minute window. K2_D : >=2 strategies same direction on the same day (any gap); fires at the 2nd signal. N2, N3, N4 : prior day NR7 = yes AND P2 / P3 / P4 signal (contaminated, see above). N234 : NR7 day AND >=2 of {P2,P3,P4} same direction same day; fires at the 2nd. PAIR_BEST : over all 28 pairs (Pa,Pb), "pair fires" = both signal same direction same day, fire at the later one. Chosen on TRAIN only: highest train mean net option pts with train n >= 25. Applied unchanged to 2026. PAIR_P1P5 (ORB15 + Supertrend), PAIR_P3P4 (PDH/PDL breakout + narrow CPR), PAIR_P2P5 (ORB5 + Supertrend): pre-declared popular "confirmation" pairs. A combo edge COUNTS only if q<0.10 AND 2026 mean > mean of its constituent single strategies' 2026 trades on 2026 AND random-percentile >= 90. Descriptive (not tests): overlap matrix = P(Pb fires same day same direction | Pa fires), opposite-direction rate, phi correlation of daily direction, and correlation of option P&L on co-fire days; year/quarter breakdown; Jan-Sep 2026 vs Oct 2026 split; spot-level combos 2022-2026 (spot net = spot pts - 1). ## PREMIUM-SUPPORT ("black box" / premium reversal) pre-registration (appended 21:26 IST 26-Oct-2026, before any result) Question (Satya 21:24 IST): "what about option premium support strategy" — buy the ATM CE (PE) when the option PREMIUM itself bounces off a support level on the premium chart. Old work found on the box (nifty-setups-backtest, early Oct-2026): atm-daily-sr (+optbuyer), confluence-v1 (+scaleout), trader-filters-r126. Their numbers are quoted on the page; nothing below is tuned on them. Data: real 1m option bars (opt_panels.pkl), nearest weekly expiry with DTE>=1 (as P1-P8), 21-Oct-2024..23-Oct-2026. Spot 1m only used to pick the ATM strike (spot close of the bar, <=15:14). No filling: a missing option bar = no signal / skipped trade. Chart: 5m premium bars built from 1m option bars of the CURRENT ATM strike = round(spot 5m close/50)*50; levels are computed on that strike's own premium history (same expiry). CE and PE charts both scanned; CE support bounce -> buy CE, PE support bounce -> buy PE (PE premium bouncing = index falling). Touch-and-reclaim (V1-V3): 5m bar k with low <= level+tol and low >= level-tol (tol = max(2, 3% of level)) and the previous 5m close > level+tol (approach from above); confirmation = a 5m close (bar k or k+1) above the touch-bar high and above level. Entry = next 1m option open after the confirming 5m close. Structural premium stop = touch-bar low - 1. V1 PDL: level = prior-day low (09:15-15:29) of the same contract (strike, expiry). Missing prior-day bars -> no V1 that day. V2 SWING (black box): level = most recent confirmed 5m swing low (low below the 2 bars on each side) formed from the 09:30 bar onward, at least 3 bars before the touch bar. V3 ROUND: level = multiple of 25 premium points, premium between 40 and 400. V4 BREAKOUT (premium resistance breakout): 5m close above the highest premium high of that strike so far today (09:15..previous bar). Stop = breakout bar low - 1. Windows: confirmation bars ending 09:45..14:30 (V4 ..13:30). First event per day (CE or PE; if both on the same bar the day is skipped). One trade per variant per day. Exits (both reported, both in the family): X_OLD (Satya's old plan, premium points): hard SL 20 below fill; book 40% at +20, 30% at +40; remaining 30%: target +60, stop to cost+10 after +20, cost+25 after +40, then 15-pt chandelier from peak; time exit 15:15. SL-first if same bar. X_T50: structural premium stop (R = fill - stop, clipped to 5..30 premium pts); hold until profit >= 2R on 1m option closes, then trail to lock 50% of peak profit; stop checked on 1m option lows; time exit at 15:15 option open. Costs: 0.5 pt/side slippage, Rs20/order, STT 0.10% of sell premium (0.15% from 2026-04-01), exchange, SEBI, stamp, GST; lot 75 (65 from 2026). Random benchmark: for each trade, 30 random days of the same split, same minute, same option type, ATM strike at that minute, same exit and same premium R; 2000 resamples -> percentile. Primary family (8 tests, BH q<0.10): V1-V4 x {X_OLD, X_T50}, one-sided t of 2026 mean net option pts > 0. Regime family (8 tests, BH): per variant x exit, regime filter chosen on TRAIN by the earlier fixed rule (labels L1-L8, good buckets n>=10 & mean>0, filtered n>=20, highest train total) and applied unchanged to 2026. Counts only if q<0.10 AND >=90th percentile vs random AND 2026 mean still > 0 without the best 3 trades. Descriptive: year/quarter/month, Jan-Sep 2026 vs Oct 2026, regime buckets. ## TRADER-DISCRETION reverse-engineering pre-registration (appended 21:37 IST 26-Oct-2026, before any taken-vs-skipped result) Question (Satya 21:34 IST): "why can't you find those discretion rules" (trader log Black Box calls 10/11 wins vs our rule versions losing). Inputs: trader-log/trades_timestamped.csv (225 rows, Excel v2) + trader-fill-match/results/fill_match.csv (weekend-resolved date_used, match tiers, replay of logged SL/target on the logged contract). Sensex rows -> Nifty ATM same side (user rule). Gold / no-trade rows dropped. Setups grouped by keyword into families: BLACKBOX (black box / premium reversal), SUPPORT (support/resistance bounce/reversal/rejection), SWEEP (liquidity sweep / trap / stop hunt), AMD, BREAK (breakout/breakdown/retest/trendline/range/opening/high-low break), CONT (continuation/pullback/re-entry/scalp/momentum), PM3 (3 PM / matka / closing spike), BTST, NEWS, OTHER. Candidate pool (log period 2026-05-06..2026-10-05, trader-active days only): V1-V4 premium-support events from the s7 rules but ALL events (15-min cooldown per variant per side, not just first per day), plus P1-P8 signals. Direction: CE=+1, PE=-1. Taken = a trader index entry on the same day, same direction, entry minute within +-10 min of the candidate minute. Recall = share of trader entries with at least one candidate within +-10 min same direction. Outcomes: trader trades - (a) fill-match replay of his logged SL/target (as published 07-Oct), (b) X_OLD on the Nifty ATM option at his entry minute (next 1m open). Candidates - X_OLD and X_T50 (V: structural premium stop; P: R_prem = 0.5 x spot R), corrected costs. Features at the candidate minute (data up to that bar only): tod, prem_dd (ATM premium drawdown from its day high, %), prem_chg15, prem_chg5 (%), spot_pos (side-aligned position in day range), spot_mv15 (side-aligned 15-min spot move), dist_round50, dist_round100, vix (prior close = open), gap (side-aligned %), oi_chg15 (traded ATM leg OI change %), pcr_chg15 (ATM +-2 strikes PE/CE OI ratio change), basis (fut - spot) and basis_chg15, prior_trades (trader entries earlier that day), expiry_day, dte. Effect sizes: standardised mean difference (taken - skipped)/pooled sd + Mann-Whitney p, BH across features. Models (fit = May-Jul 2026 log, holdout = Aug-Oct 2026 log): depth-2 decision tree (min leaf 10) and L2 logistic (standardised); leave-one-day-out CV AUC on fit; then holdout AUC. Filter extraction (mechanical): from the depth-2 tree fit on May-Jul, the leaf with the highest take rate among leaves with >= 10 takes; rule = its path. If no leaf beats the base take rate by >= 1.2x, "no filter found". Held-out tests: (1) take-rate lift of the rule on Aug-Oct log candidates (block bootstrap by day, 90% CI); (2) full-history strategy 21-Oct-2024..23-Oct-2026 EXCLUDING May-Jul 2026: candidates passing the rule, first per day, X_OLD and X_T50, corrected costs, random same-minute/same-type benchmark (30 reps), one-sided t; BH over 4 tests (2 exits x {Oct-2024..Dec-2025, Jan-Apr+Aug-Oct 2026}). Counts only if q<0.10, >=90th pct vs random, positive without best 3 trades, and holdout lift CI > 1. Bias disclosure: the log is self-reported, partly reconstructed from screenshots, fills reproduce at roughly placebo rates (fill-match 07-Oct), losers may be omitted; n is small. Any "taken" pattern could be the logging, not the trading. ## YOUTUBE-CALLS pre-registration (appended 23:40 IST 26-Oct-2026, before any call was scored on real bars and before any taken-vs-skipped result) Source: public live streams of youtube.com/@KarolSEBIRegisteredIITian (metadata + Hindi auto-captions via yt-dlp, no cookies/credentials; 360p 2-s clips only for frame reading, deleted after; nothing redistributed). Window: 33 streams, 31 trading days 2026-08-25..2026-10-23 (all streams >1 h in 2026-08-24..10-23 plus gm1ruMjySXY = 22-Oct pre-restart part). Extraction (scripts/calls_mech.py, frozen; sha256 prefixes in youtube-calls/data/frozen_hashes.txt): caption hits (activation phrases ACT, plan phrases PLAN, "N point SL/risk", "N point target") grouped into episodes (gap <=120 s); gold/crude/bitcoin lines dropped. Call = episode with a non-negated ACT phrase (tier ACT, entry time = first ACT segment) or PLAN with a stated SL or target (tier PLAN, entry time = last episode segment). Side = majority of call/put words in [episode start-60 s, entry+30 s]; tie -> unscorable (side_unknown). Strike/index = hand-written chart label OCR'd from a frame at entry+5 s (side panel: CE top, PE bottom); 5-digit <30000 -> NIFTY, >=50000 -> SENSEX; else the spoken strike; else unscorable (strike_unknown). Expiry = nearest listed expiry >= date (not stated in streams). SL = first stated "N point SL/risk" in the episode, T = first stated "N point target"; missing SL -> 20 pts fallback (Nifty 12) [flagged]; missing T -> 2xSL (his stated 1:2 minimum) [flagged]. Stated outcome = first "target done/touched/hit" vs "SL hit/gone" phrase within 40 min after entry; none -> 'no_claim'. Scoring (scripts/score.py, frozen): entry = open of the next 1m bar after the entry minute + 0.5 slippage; exit SL/T on 1m low/high from the entry bar (same bar both -> SL), else 15:15 close; -0.5 slippage at exit; charges Rs20/order, STT 0.15% sell premium, exch, SEBI, stamp, GST; lot Nifty 65 / Sensex 20. Bars: box Upstox parquet (Nifty by_expiry+live, opt_panels; Sensex by_expiry+live, ends 2026-10-05 15:39). No backfill, no gap-filling; missing bars -> not_scorable. Primary: mean net option pts/trade and win rate on scorable calls (one-sided t > 0; random benchmark: same day, same minute+-0, same side, ATM strike, same SL/T, 30 random days of the window, 2000 resamples). Counts as edge only if p<0.10 AND >=90th pct vs random AND mean > 0 without best 3. Accuracy checks: stated vs real outcome agreement; pilot recall/precision vs hand-read 22-Oct (12 hand-read calls). Discretion: taken = a YouTube call (scorable or not, side known) on the same day, same direction (CE=+1, PE=-1; Sensex mapped to direction as in TRADER-DISCRETION), within +-10 min of a V1-V4/P1-P8 Nifty candidate (s9 scan_all/feats unchanged). Fit = 2026-08-25..09-30, holdout = 2026-10-01..10-23. Same FE list, depth-2 tree, same mechanical rule extraction and lift bootstrap as s10; full-history test exactly as s11 (21-Oct-2024..23-Oct-2026 excluding the fit window, first fire per day, X_OLD and X_T50, BH over 4, same counting rule). ## EXPIRY-CHEAP-COUNTER pre-registration (appended 20:05 IST 27-Oct-2026, before any expiry-day premium statistic was computed) Question (Satya 19:55 IST): on expiry days, does a cheap (~20) option that is opposite to the trend often jump 2x/3x, and is that tradable for a buyer? **Universe.** Every Nifty and Sensex expiry day (weekly and monthly; the expiring contract only) with real 1m option bars on the box: - Nifty: by_expiry 2024-10-03..2026-09-29, opt_panels for 2026-10-06/10-13/10-19 (no volume field), and market-live-stack eod 2026-10-27 (ATM±4 strikes only; used if the band strike is inside it). - Sensex: by_expiry 2024-10-04..2026-10-01. Spot comes from common/data/{nifty,sensex}_1m_clean (+minute_panel_v / eod for Nifty after 10-19). Spot minutes 15:15–15:29 are treated as missing (frozen since 2026-08-03; the rule is applied in all years). Option bars to 15:29 are real. Settlement value = intrinsic at the official close (daily_hist; 10-27 Nifty 22,749.75 from published close). Nothing is filled or backfilled. **Trend state at minute t (decided on spot close at t, t ≥ 09:35):** UP if spot > day open AND spot − spot(t−20) > 0; DOWN if both < 0; else NONE. There is no index volume, so we use no VWAP (stated deviation from the brief). The 20-minute slope is the second leg. **Counter-trend option:** UP → OTM PE (strike < spot); DOWN → OTM CE (strike > spot). With-trend control: UP → OTM CE, DOWN → OTM PE. **Band.** Primary: 1m close in [15,25] raw premium for both indices. Sensitivity: [10,30]. Sensex Nifty-equivalent: [15,25] × (Sensex open / Nifty open that day) (about ×3.3). If several strikes are in band, take the one with close nearest the band centre (then nearest spot). Bars with volume = 0 are not eligible where volume exists. **Entry signal.** One per side per day: the first minute t in 09:35–15:00 where the side is counter-trend and an in-band strike exists. Window splits report the first such minute inside each window: W1 09:35–11:00, W2 11:00–13:00, W3 13:00–14:30, W4 14:30–15:00 (no entries after 15:00). Variant DECAY: same, but the chosen strike must have closed ≥ 2× the band top (≥50 raw) earlier that day. **Controls.** (i) WITH-trend option, same band, same rules. (ii) Random minute: for each signal, a uniformly random minute in the same window, same side, band strike, no trend condition; 30 repeats; the actual mean is ranked against the 30 repeat means (percentile). **Frequency facts** (reference = signal-minute close): max later high ≥2×/3×/5× by 15:29; time to peak; settlement ≤ 1 pt raw (Nifty) / ≤ 3 pt (Sensex) = "near zero". By index, by year and by quarter. **Tradable (buyer).** Fill = next 1m open +0.5 (Nifty) / +1.5 (Sensex: 0.5 pt Nifty-equivalent scaled ×3). Exits: - (a) Half at 2× fill (limit, on 1m high), half at 3× fill or 15:29 close (−slip). - (b) Stop = 50% of fill (on 1m low, checked before the target in the same bar). R = 0.5×fill. Once peak gain ≥ 2R (price ≥ 2× fill), trail: exit on a 1m close with gain ≤ 50% of peak gain. Else 15:29 close. - (c) Hold to settlement at intrinsic (official close), with no slippage. Charges: Rs20/order, STT 0.1% (0.15% from 2026-04-01) of sell value (settlement intrinsic is treated as a sell), exchange 0.03503% NSE / 0.0325% BSE, SEBI, stamp, GST. Lots: Nifty 25/75/65 by date; Sensex 10 to 2024-12-31, then 20. **Splits.** Train 2024-10-01..2025-12-31, test 2026. Primary family = 2 indices × 3 exits, counter-trend, band 15–25, first signal per side per day. BH over these 6 test rows. Sensitivities are reported with their own BH (band 10–30, Sensex scaled band, DECAY, windows) and are not primary. **A primary row counts as an edge only if** the test mean is > 0, t-test p < 0.05, BH q < 0.10, it beats the random percentile 90 and the with-trend control, the train mean is > 0, and the mean stays > 0 without the top 3 trades. **Regimes.** Labels from results/regime_labels.csv (Nifty-based, applied to both indices): L1_VIX, L6_Gap, L5_NR7, L3_ER20 (trend/range), L2_DMA_trend. On train only, for each index × exit pick the single bucket with the highest train mean among buckets with n ≥ 15, then report it on test (same edge criteria). **Fills realism.** Volume at the signal and fill minutes, the share of zero-volume fill bars, and median volume. Spreads are unknown (no bid/ask history) and this is stated. ## WHY-20 pre-registration (appended 20:20 IST 27-Oct-2026, before any WHY-20 number was computed) Question (Satya 20:14 IST): is the ~20 premium LEVEL itself special on expiry days? Same data and rules as EXPIRY-CHEAP-COUNTER: expiring contract, real 1m bars, spot 15:15–15:29 missing, settlement at intrinsic on the official close, buyer only, fill = next 1m open + slip (0.5 Nifty / 1.5 Sensex), same charges and train/test split (train Oct-24..Dec-25, test 2026). **1. Level scan.** Levels L ∈ {5,10,15,20,25,30,40,50,75,100}; band [0.8L, 1.2L]. Event = first-touch-from-above per OTM option (strike, type) per expiry day per level: the first minute t in 09:16–15:00 whose 1m close is in band while some earlier close that day was > 1.2L. Outcomes, with ref = close at t: - P(later high ≥ 2× / 3× ref); - P(settle ≤ 0.05·L) = "≈0"; - net pts and net return per unit premium (pnl / fill) for exits (a) half at 2× / half at 3× or close, (b) SL 50% + trail after 2×, (c) hold to settlement. CIs = 95% bootstrap over days (1000 resamples). Is 20 special? A smooth reference is fitted (quadratic in log L) to the other 9 levels, and the 20 value is compared with it. **20 is special only if** its bootstrap CI excludes the fitted value AND it differs from both neighbours (15 and 25) in the same direction. Sensex: raw levels, plus Nifty-equivalent levels L × (Sensex open / Nifty open). **2. Round-number support.** Levels: round {10,20,25,30,50}, non-round {17,18,22,23}. Touch = first minute an OTM option's 1m low ≤ level after an earlier close > level (one per option per day per level). Measures: P(min low over the next 5 / 15 minutes ≥ level − 2); P(close 15 minutes later > level). Also a scaled tolerance (level × 0.9). Test: round vs non-round pooled difference with a day-bootstrap CI, and 20 vs the mean of 17/18/22/23. **3. "Holds at L" variant.** L ∈ {10,15,20,25,30,40,50}; zone [0.9L, 1.1L]; floor 0.85L. - **Setup:** first close into the zone from above (an earlier close > 1.1L). - **Base:** the next N = 10 or 20 minutes all have low ≥ floor. - **Entry:** the first later 1m close above the base high (by 15:00, floor still unbroken), then buy at the next open. - **Selection:** one per side (CE/PE) per day per L per N, taking the earliest breakout among OTM strikes. - **Exits and splits:** exits a/b/c; time-of-day splits by entry minute: 09:15–11:00, 11–13, 13–14:30, 14:30–15:00. - **Random control:** for each event, a random minute in the same window, same side, option with close in [0.8L, 1.2L], 30 repeats; the event mean is ranked against the repeat means. **Primary family (BH):** holds-at-20 × N {10,20} × exits {a,b,c} × index {NIFTY, SENSEX raw} = 12 test rows. A row counts only if the test mean > 0, p < 0.05, q < 0.10, it is ≥ 90th percentile vs random, the train mean > 0, the mean is > 0 without the top 3, AND it beats the same construct at both neighbouring levels (15 and 25) on test. Other levels and splits are reported as sensitivities, with BH within that table. ## TWENTY-NO-TV pre-registration (appended 20:31 IST 27-Oct-2026, before any computation) Question (Satya 20:29 IST): "20 without timevalue". Is a ~20 premium that is almost all intrinsic value (ITM by ~20, delta ≈1) a better buy on expiry day than the OTM ~20 option (all time value)? - Data: the same expiry-day cache as s16–s19 (109 Nifty / 104 Sensex expiries, expiring contract, real 1m bars). Intrinsic is taken from the 1m spot close at the same minute. Spot 15:15–15:29 is missing and is not filled, so there are no signals at or after 15:15. Signal minutes are 9:35–15:00 (mi 20..345), as before. - State "20-noTV" at minute t for option (typ,K), with level L=20·f (f=1 for Nifty and Sensex raw; f = Sensex open / Nifty open for Sensex scaled): - ITM, with intrinsic I = |spot−K| in [0.9L, 1.1L]; - premium close c in [0.8L, 1.2L]; - extrinsic TV = c − I with −2f ≤ TV ≤ 2f (primary); - volume NaN or >0. - Sensitivities: |TV| ≤ 1f, and |TV| ≤ 10% of c. - TV < −2f (the option trading below intrinsic, i.e. stale print / spot–option timing mismatch) is excluded and its frequency is reported. - Event: the first minute each contract enters the state (frequency analysis, all contracts). Trade: the earliest such event per side per day (one CE, one PE per day max). - Trend label: same as s16. The 20-minute spot change and spot vs official open give +1/−1/0. Counter = PE when +1 or CE when −1; with = the opposite; neutral = 0. - Windows: W1 9:35–11:00, W2 11:00–13:00, W3 13:00–14:30, W4 14:30–15:00. - Frequencies: P(later high ≥2× / ≥3× signal close), P(settle ≤ 0.05L), time to peak. Split by counter/with/neutral and by window. Compared with the OTM-20 first-touch results (w20_scan L=20). - Buyer exits. Fill = next 1m open + 0.5 (Nifty) / 1.5 (Sensex). Charges via chg() (STT 0.15% on sell premium from 2026-04-01). - (a) Half at 2×, rest at 3× or the last close. - (b) Stop at fill − 10f (premium low), R = 10f; once peak gain ≥ 2R, trail at 50% of peak gain (on closes). - (c) Hold to settlement intrinsic on the official close. - Spot/futures control, same minute, same direction (CE = long, PE = short), using the spot 1m bars. - Entry is spot close at t plus slip (0.5 / 1.5). Futures costs: Rs20 per order, STT 0.02% sell (0.05% from 2026-04-01), exchange 0.00173% (NSE) / 0.0005% (BSE approx), stamp 0.002% buy, GST. - (a') Stop −20f, half at +20f, rest at +40f or the 15:14 close. - (b') Stop −10f, trail 50% of peak once +20f. - (c') Stop −20f, else the official close. - Basis is ignored; this is stated. - Random controls (30 reps): - R1: same day, side and window; a random minute where some contract is in the 20-noTV state. - R2: coin-flip direction at the signal minute, with the spot exits. - Split and statistics: train Oct-24..Dec-25, test 2026. Day-clustered t-test (one-sample on trades), BH. - Primary BH family: {NIFTY, SENSEX-scaled} × {all, counter, with} × exits {a,b,c} on test = 18 rows. Sensex raw and the sensitivities form a secondary family. - Counts only if all hold: - test mean > 0, p < 0.05, q < 0.10; - R1 percentile ≥ 90; - train mean > 0; - test mean without the top 3 > 0; - test mean > the matching spot-control mean. - Regime filter (L1_VIX, L2_DMA_trend, L3_ER20, L5_NR7, L6_Gap): pick the best single label per index×exit on train (n ≥ 15); report test as-is with no re-selection. - Fill realism: report signal- and fill-minute volume and the share with no volume. Bid-ask spreads are unknown (no quote data); ITM expiry spreads may be wider than the 0.5/1.5 slippage.