ML-discovered Nifty day-structure rules (v3)

Descriptive statistics, no trading costs in the probabilities (the backtest columns alone use estimated costs). Rules were discovered and tuned on 2022-01 → 2024-12 only, frozen, then tested once on 2025-01 → 2026-10. Millions of hypotheses were searched, so read the corrected p-values and the out-of-sample columns, not the training hit rates. Not investment advice; not a trading system.
9,242,869hypotheses searched (rule × target, ≥30 train days)
972frozen candidates tested once OOS
276PASS
105WATCH
591FAIL
-5.7median OOS net pts/trade, PASS+WATCH backtests

What this found (honest summary)

familyPASSWATCHFAIL
direction (continuation / reversal)07377
level / structure27698214

All candidate rules (972)

Downloads: rules.csv · rules.json. Click a column header to sort; PASS/WATCH ids link to a rule page. "lift" = hit ÷ base. Placebo p = OOS matched-random (same count of days per year × move-direction stratum, 2000 draws). Corrected p: BH/Holm over all 972 OOS tests; train-side BH/Holm over all 9,242,869 hypotheses. By-year = hit/base % (n rule days). BT = spot-points backtest, net of estimated costs (IS = train, OOS = 2025–26).

rows/page
idverdictrule (plain words)timetarget train ntrain hitbasetrain lift OOS nOOS hitOOS baseOOS lift placebo pBH q (OOS, all)BH q (OOS, family)Holm (OOS)BH q (train, all)Holm (train, all) stableby year BT IS nIS winIS avg ptsIS maxDD BT OOS nOOS winOOS avg ptsOOS maxDDmethod
loading rules.json …

Equity curves: top 20 by OOS avg net (≥20 OOS trades)

Selected by out-of-sample backtest result, so this gallery is optimistic by construction. Every PASS/WATCH rule page also has its own curve.

When size of the move from the open to 10:15 (either direction) ≤ 0.09% (≈22 pts at 25,000) AND position in today's range so far (0 = at low, 1 = at high) ≥ 0.646 AND 1-min RSI(14) ≥ 53.8 at 10:15
When India VIX change on the prior day (%) > 3.64 AND 1-min ATR(14) as % of price ≤ 0.0639 AND 1-min EMA9 − EMA21 (as % of price) > -0.04% (≈-11 pts at 25,000) at 09:20
When size of the move from the open to 11:00 (either direction) ≤ 0.10% (≈24 pts at 25,000) AND size of the opening gap ≤ 0.22% (≈55 pts at 25,000) AND 1-min EMA9 − EMA21 (as % of price) is negative at 11:00
When range so far (high−low since 09:15) ≥ 1.04% (≈260 pts at 25,000) AND price vs session TWAP (time-weighted VWAP) is negative AND price is below the prior-day low at 13:00
When prior-day range ≤ 0.67% (≈168 pts at 25,000) AND 1-min ATR(14) as % of price > 0.0513 AND 1-min EMA9 − EMA21 (as % of price) ≤ +0.08% (≈+20 pts at 25,000) at 09:45
When size of the move from the open to 09:20 (either direction) ≤ 0.09% (≈23 pts at 25,000) AND position in today's range so far (0 = at low, 1 = at high) ≥ 0.586 AND prior-day range ≤ 0.78% (≈196 pts at 25,000) at 09:20
When India VIX (prior day's close) ≤ 15.9 AND size of the move from the open to 09:30 (either direction) > 0.25% (≈62 pts at 25,000) AND India VIX change on the prior day (%) ≤ -2.36 at 09:30
When size of the move from the open to 09:20 (either direction) ≥ 0.14% (≈35 pts at 25,000) AND price vs prior-day low ≥ +1.04% (≈+260 pts at 25,000) AND 1-min ADX(14) ≥ 36.8 at 09:20
When size of the move from the open to 09:30 (either direction) ≤ 0.05% (≈13 pts at 25,000) AND price vs session TWAP (time-weighted VWAP) ≥ +0.02% (≈+5 pts at 25,000) at 09:30
When size of the move from the open to 13:00 (either direction) > 0.95% (≈237 pts at 25,000) AND 1-min EMA9 − EMA21 (as % of price) > -0.04% (≈-11 pts at 25,000) at 13:00
When position in today's range so far (0 = at low, 1 = at high) ≤ 0.396 AND distance from TWAP in the move's direction ≤ +0.08% (≈+19 pts at 25,000) AND India VIX change on the prior day (%) is positive at 13:00
When distance from TWAP in the move's direction ≥ +0.03% (≈+7 pts at 25,000) AND prior-day range ≥ 0.99% (≈247 pts at 25,000) AND India VIX change on the prior day (%) ≤ -1.33 at 09:20
When size of the opening gap ≤ 0.22% (≈55 pts at 25,000) AND India VIX change on the prior day (%) ≥ 3.36 AND 1-min ATR(14) as % of price ≤ 0.0598 at 09:20
When size of the opening gap ≤ 0.22% (≈55 pts at 25,000) AND India VIX change on the prior day (%) ≥ 3.36 AND 1-min ATR(14) as % of price ≤ 0.0598 at 09:20
When gap measured in the direction of the move so far ≤ -0.39% (≈-98 pts at 25,000) AND India VIX (prior day's close) ≤ 13.7 AND it is not expiry day at 09:30
When size of the move from the open to 09:20 (either direction) > 0.30% (≈74 pts at 25,000) AND prior day's close-to-close return > -0.51% (≈-127 pts at 25,000) AND India VIX change on the prior day (%) > -4.89 at 09:20
When size of the move from the open to 11:00 (either direction) ≤ 0.10% (≈24 pts at 25,000) AND price has not touched the prior-day low yet AND 1-min Supertrend is down at 11:00
When opening-range size ≤ 0.55% (≈138 pts at 25,000) AND India VIX change on the prior day (%) ≤ -5.59 AND 1-min ADX(14) > 14.3 at 11:00
When size of the move from the open to 13:00 (either direction) > 0.95% (≈237 pts at 25,000) AND 1-min EMA9 − EMA21 (as % of price) > -0.09% (≈-22 pts at 25,000) AND opening gap vs prior close > -0.21% (≈-53 pts at 25,00
When size of the move from the open to 10:15 (either direction) ≤ 0.09% (≈22 pts at 25,000) AND CPR width ≤ 0.13% (≈33 pts at 25,000) AND opening gap vs prior close is positive at 10:15

PASS / WATCH rule pages

R0847 R0830 R0950 R0951 R0952 R0698 R0711 R0832 R0413 R0709 R0703 R0408 R0846 R0559 R0712 R0715 R0710 R0781 R0415 R0900 R0558 R0421 R0780 R0903 R0411 R0904 R0566 R0420 R0651 R0782 R0901 R0410 R0504 R0120 R0787 R0424 R0784 R0902 R0278 R0126 R0425 R0279 R0426 R0569 R0507 R0267 R0557 R0280 R0127 R0135 R0701 R0505 R0134 R0649 R0266 R0136 R0121 R0133 R0283 R0078 R0414 R0139 R0123 R0072 R0362 R0111 R0122 R0253 R0108 R0509 R0137 R0768 R0277 R0265 R0888 R0889 R0890 R0891 R0892 R0894 R0138 R0498 R0366 R0637 R0511 R0125 R0774 R0770 R0639 R0510 R0281 R0074 R0124 R0110 R0769 R0401 R0771 R0115 R0541 R0367 R0641 R0252 R0114 R0492 R0132 R0364 R0773 R0257 R0691 R0636 R0494 R0396 R0254 R0399 R0403 R0084 R0521 R0353 R0211 R0792 R0795 R0796 R0816 R0817 R0820 R0821 R0822 R0823 R0688 R0685 R0687 R0794 R0798 R0797 R0818 R0793 R0686 R0518 R0520 R0913 R0914 R0915 R0916 R0917 R0918 R0919 R0661 R0912 R0660 R0664 R0666 R0480 R0936 R0937 R0938 R0939 R0940 R0942 R0943 R0757 R0758 R0759 R0760 R0761 R0762 R0941 R0756 R0876 R0877 R0878 R0879 R0880 R0881 R0882 R0883 R0766 R0767 R0885 R0634 R0886 R0488 R0887 R0380 R0381 R0238 R0548 R0527 R0776 R0524 R0263 R0357 R0644 R0802 R0803 R0922 R0801 R0369 R0671 R0777 R0514 R0790 R0647 R0800 R0923 R0513 R0693 R0946 R0778 R0260 R0262 R0898 R0896 R0418 R0945 R0788 R0824 R0779 R0789 R0515 R0645 R0119 R0692 R0826 R0405 R0944 R0285 R0550 R0899 R0560 R0274 R0694 R0404 R0947 R0416 R0659 R0561 R0658 R0261 R0656 R0275 R0836 R0908 R0791 R0910 R0130 R0272 R0695 R0273 R0657 R0909 R0897 R0911 R0117 R0128 R0129 R0131 R0140 R0142 R0143 R0284 R0407 R0417 R0419 R0428 R0429 R0430 R0431 R0549 R0573 R0574 R0705 R0719 R0837 R0838 R0849 R0968 R0948 R0841 R0954 R0964 R0828 R0842 R0843 R0699 R0960 R0961 R0696 R0845 R0840 R0835 R0697 R0829 R0564 R0713 R0268 R0554 R0700 R0783 R0906 R0702 R0786 R0556 R0905 R0654 R0555 R0655 R0271 R0785 R0412 R0907 R0276 R0282 R0422 R0565 R0264 R0708 R0409 R0652 R0506 R0269 R0893 R0895 R0109 R0493 R0642 R0546 R0542 R0690 R0497 R0255 R0547 R0365 R0113 R0349 R0665 R0495 R0064 R0402 R0819 R0355 R0540 R0144 R0054 R0007 R0519 R0747 R0522 R0487 R0624 R0483 R0763 R0765 R0683 R0884 R0920 R0635 R0441 R0875 R0382 R0585 R0500 R0502 R0670 R0825 R0921 R0572 R0827 R0717 R0706 R0116 R0704 R0118 R0141 R0201 R0286 R0287 R0501 R0551 R0848 R0957 R0958

Verdict criteria

Method & search log

Targets × verdicts

targetPASSWATCHFAIL
price 30 min after 09:20 is further in the move's direction than at 09:200012
price 30 min after 09:30 is further in the move's direction than at 09:300012
price 30 min after 09:45 is further in the move's direction than at 09:450012
price 30 min after 10:15 is further in the move's direction than at 10:150012
price 30 min after 11:00 is further in the move's direction than at 11:000012
price 30 min after 13:00 is further in the move's direction than at 13:000012
price 30 min after 14:30 is further in the move's direction than at 14:300012
price 60 min after 09:20 is further in the move's direction than at 09:200012
price 60 min after 09:30 is further in the move's direction than at 09:300012
price 60 min after 09:45 is further in the move's direction than at 09:450012
price 60 min after 10:15 is further in the move's direction than at 10:150012
price 60 min after 11:00 is further in the move's direction than at 11:000012
price 60 min after 13:00 is further in the move's direction than at 13:000012
price at 13:00 is further in the move's direction than at 09:200111
price at 13:00 is further in the move's direction than at 09:300111
price at 13:00 is further in the move's direction than at 09:450012
price at 13:00 is further in the move's direction than at 10:150111
price at 13:00 is further in the move's direction than at 11:000111
price never trades back to the open after 09:20741
price never trades back to the open after 09:30813
price never trades back to the open after 09:45714
price never trades back to the open after 10:15453
price never trades back to the open after 11:00912
price never trades back to the open after 13:00930
price never trades back to the open after 14:301200
price reaches the prior-day high after 09:20 (days not yet at PDH)1200
price reaches the prior-day high after 09:30 (days not yet at PDH)741
price reaches the prior-day high after 09:45 (days not yet at PDH)1020
price reaches the prior-day high after 10:15 (days not yet at PDH)534
price reaches the prior-day high after 11:00 (days not yet at PDH)471
price reaches the prior-day high after 13:00 (days not yet at PDH)534
price reaches the prior-day high after 14:30 (days not yet at PDH)345
price reaches the prior-day low after 09:20 (days not yet at PDL)1110
price reaches the prior-day low after 09:30 (days not yet at PDL)840
price reaches the prior-day low after 09:45 (days not yet at PDL)912
price reaches the prior-day low after 10:15 (days not yet at PDL)435
price reaches the prior-day low after 11:00 (days not yet at PDL)633
price reaches the prior-day low after 13:00 (days not yet at PDL)363
price reaches the prior-day low after 14:30 (days not yet at PDL)138
the best favourable excursion after 09:20 (in the move's direction, to close) exceeds the worst0012
the best favourable excursion after 09:30 (in the move's direction, to close) exceeds the worst0012
the best favourable excursion after 09:45 (in the move's direction, to close) exceeds the worst0012
the best favourable excursion after 10:15 (in the move's direction, to close) exceeds the worst0012
the best favourable excursion after 11:00 (in the move's direction, to close) exceeds the worst0111
the best favourable excursion after 13:00 (in the move's direction, to close) exceeds the worst0012
the best favourable excursion after 14:30 (in the move's direction, to close) exceeds the worst0012
the close is further in the move's direction than the 09:20 price (continuation to close)0012
the close is further in the move's direction than the 09:30 price (continuation to close)0012
the close is further in the move's direction than the 09:45 price (continuation to close)0012
the close is further in the move's direction than the 10:15 price (continuation to close)0012
the close is further in the move's direction than the 11:00 price (continuation to close)0012
the close is further in the move's direction than the 13:00 price (continuation to close)0111
the close is further in the move's direction than the 14:30 price (continuation to close)0111
the day closes more than 100 pts beyond the open in the direction of the move so far331239
the day closes more than 150 pts beyond the open in the direction of the move so far411132
the day closes more than 50 pts beyond the open in the direction of the move so far35742
the day closes on the same side of the open as the move so far23952

Generated 2026-10-10 00:44 IST. Code: /workspace/nifty-rules/ml-discovered/. Research notes: nifty-market-games-knowledge/research/ml-rules/v3/.