← Live dashboard · Research index · generated 2026-10-21 07:15 IST

Nifty early-warning signals: does anything warn before the move?

Short answer.

1. Lag audit: fusion bias vs actual moves (8–21 Oct 2026)

Moves = swings of 80+ points between turning points of Nifty 1-minute closes, from Upstox exchange candles, with each session split separately. The move start is the turning point. For each move I checked the fusion label in force at the start and the first label in the move's direction afterwards, up to 30 min after the move ended. A move is excluded when fusion was "insufficient-data" for more than half of it. That is a fair exclusion: the engine had no inputs, so it was not wrong.

Fusion logmovesscoredexcluded (no data)already aligned before startflipped after startmedian lag (min)median % of move done at flipnever flippedindividual lags (min)
VPS (shown on /live/), every 2 min221111247674%54.5, 126.5, 25.5, 161.5
Box, every ~2.5–5 min22148275574%56.8, 122.1, 24.9, 80.2, 54.7, 10.8, 163.7

On 8 Oct the 4.5-min "lag" is just the engine's first run (it starts at 09:20). The 2 "aligned" cases were labels already in place 17-48 min before the move, during an existing trend. Fusion versions changed from v1.1 to v1.4 during the window, so this is a short, mixed sample.

Today (21 Oct). Gap-up open 23,016, high 23,120.9 at 09:40, drop to 22,922.45 at 10:20 (about −198 pts). The Upstox token was missing until about 10:41. Fusion showed "insufficient-data" from 09:22 to 10:40, and its first live label (10:44 VPS) was range, after the drop had ended. These moves are excluded from the numbers above. As an anecdote only: on today's exchange candles (fetched after the fact), the opening-range-failure rule would have flagged DOWN at 09:47 (23,072). That rule is not live because it failed the 2026 robustness check.

All moves (VPS fusion)
datemove (IST)ptsfusion label at startresultlag min (negative = lead)% of move done at flipshare of move with no fusion data
2026-10-0809:16→15:07-377no-logflipped after457%
2026-10-0909:24→11:20+226insufficient-dataflipped after1088195%
2026-10-0911:20→12:01-80insufficient-datanever––0%
2026-10-0912:01→14:18+130mild_upaligned before-40–
2026-10-1209:16→15:09-335no-logflipped after1267738%
2026-10-1309:15→10:01+253no-logflipped after268348%
2026-10-1310:01→11:28-91strong_upnever––9%
2026-10-1311:28→15:28+238mild_upaligned before-18–
2026-10-1409:32→09:48+86insufficient-datanever––100%
2026-10-1409:48→13:14-194insufficient-dataflipped after2029268%
2026-10-1413:14→13:55+99rangenever––0%
2026-10-1509:22→13:37+367insufficient-datanever––100%
2026-10-1513:37→15:12-126insufficient-datanever––100%
2026-10-1609:15→09:36-132no-logflipped after4426100%
2026-10-1609:36→10:36+228insufficient-datanever––33%
2026-10-1610:36→11:10-84rangenever––41%
2026-10-1611:10→15:28+84insufficient-datanever––100%
2026-10-1909:18→09:28-190no-lognever––100%
2026-10-1909:28→09:37+185insufficient-datanever––80%
2026-10-1909:37→14:25-314rangeflipped after1627219%
2026-10-2109:16→09:35+91no-lognever––100%
2026-10-2109:35→10:12-188insufficient-datanever––100%

2. Candidate leading signals: method

3. Results, all signals (test = 2025-01-01 to 2026-10-06)

Signaltest nper dayhit 40pt/15mvol-matched basetime-of-day baseopposite dirhit 40pt/30mvol-matched base80pt/15m hit/base80pt/30m hit/basemedian min to 40 ptstrain 40/15 hit vs basefirst hour (09:20-10:15) test hit vs baseverdict
Fast market: 40+ pt 5-min burst (either way)
spot · direction-agnostic
13233.053.4%42.1%28.7%–76.5%65.0%12.8% / 8.0%26.6% / 19.5%1053.7% vs 37.0%59.2% vs 47.2%PASS → live
Bank Nifty breaks away from Nifty (either way)
Bank Nifty 1m (Upstox hist) · direction-agnostic
8101.952.1%41.1%34.7%–74.2%63.2%10.4% / 7.5%25.1% / 18.4%1043.1% vs 31.7%58.6% vs 46.7%PASS → live
Day high/low rejection 10:00-13:00
spot · directional
5451.218.5%14.8%10.6%13.8%31.4%26.5%4.4% / 2.7%8.1% / 6.7%1316.9% vs 11.5%22.2% vs 18.9%PASS → live
5-min burst, follow its direction
spot · directional
15363.529.0%21.9%14.7%27.6%41.8%34.9%8.4% / 4.1%15.4% / 10.1%1030.3% vs 19.6%30.9% vs 24.2%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate
VIX rising while Nifty flat (either way)
India VIX 1m (Upstox hist) · direction-agnostic
4341.028.6%28.7%24.4%–52.5%49.5%6.7% / 4.6%14.7% / 12.3%1425.7% vs 23.4%42.2% vs 40.3%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01); no edge in 2026 alone
Bank Nifty leads: follow BN direction
Bank Nifty 1m (Upstox hist) · directional
9112.127.2%21.3%17.9%26.9%41.5%33.9%6.0% / 3.8%14.5% / 9.5%1223.9% vs 16.6%29.1% vs 24.0%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate; 2026: opposite-direction moves as common as signalled ones
Opening-range failure (break then back inside)
spot · directional
5441.223.0%16.3%16.0%18.0%35.5%28.2%4.0% / 2.4%9.2% / 6.5%1216.0% vs 12.3%24.2% vs 18.7%fail
2026: opposite-direction moves as common as signalled ones
ATM straddle jumps while spot flat (IV pop)
options (Aug-2024+) · direction-agnostic
12722.922.8%22.2%22.5%–40.5%41.5%3.5% / 3.2%9.6% / 9.1%1427.8% vs 28.3%40.0% vs 39.9%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01); no edge in the training period
Options leading index (synthetic-forward vs spot, 5-min change)
options (Aug-2024+) · directional
28146.518.7%14.9%12.6%13.6%31.5%26.5%3.8% / 2.4%8.7% / 6.5%1314.5% vs 14.8%26.7% vs 22.6%fail
no edge in the training period
PCR (full-chain OI) 15-min change
options OI (Aug-2024+) · directional
10232.416.5%18.3%13.7%13.6%28.6%30.8%2.2% / 3.1%5.9% / 8.0%1323.3% vs 23.3%18.3% vs 20.3%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate; no edge in the training period
Opening-range breakout with gap/trend (first hour)
spot · directional
3190.716.0%17.2%17.7%16.0%29.8%29.2%1.9% / 2.5%6.3% / 6.7%1413.3% vs 13.4%17.0% vs 18.3%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate; no edge in the training period; big moves are LESS likely than at a normal minute of the same time of day (16.0% vs 17.7%) - fails as a warning
VIX rising while Nifty flat → down
India VIX 1m (Upstox hist) · directional
4341.014.7%15.2%13.0%14.3%26.0%26.7%2.8% / 2.5%6.9% / 6.5%1315.1% vs 13.1%24.2% vs 21.3%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate
Range compression (30-min range vs 20-day norm)
spot · direction-agnostic
17294.010.2%7.6%20.4%–26.1%20.8%1.0% / 0.5%2.9% / 2.1%187.4% vs 4.7%20.9% vs 17.0%fail
big moves are LESS likely than at a normal minute of the same time of day (10.2% vs 20.4%) - fails as a warning
Breakout of a compressed range
spot · directional
10102.35.5%4.4%10.1%4.5%14.1%11.5%0.6% / 0.3%2.3% / 1.2%184.6% vs 2.7%4.2% vs 8.2%fail
test hit rate not >=1.2x and +3 pts over the volatility-matched base (p<0.01), or not >=3 pts above the opposite-direction rate; big moves are LESS likely than at a normal minute of the same time of day (5.5% vs 10.1%) - fails as a warning

"Median min to 40 pts" is the lead time: minutes from the alert to the 40-pt touch, among hits. The fusion bias, by contrast, typically flipped about an hour after the move started.

4. Option-buyer sanity check (2025-01 to 2026-09 test signals)

Buy the ATM option at the close of the minute after the alert: CE for up, PE for down, or a CE+PE straddle for either-way alerts. Exit when spot moves 40 pts in favour, 30 pts against (directional only), or after 30 min (15 min for straddles). Cost is 3 pts per leg round trip. Control: random entries at the same times of day on test days, random direction.

Signaltradenwin %avg P&L per unit (pts, after costs)random control win %random control avg
Day high/low rejection 10:00-13:00buy ATM CE/PE53838%-2.1535%-3.42
Options leading index (synthetic-forward vs spot, 5-min change)buy ATM CE/PE281439%-3.3038%-2.58
Opening-range failure (break then back inside)buy ATM CE/PE53841%-2.8138%-3.23
Fast market: 40+ pt 5-min burst (either way)buy ATM straddle130218%-6.6012%-6.46
Bank Nifty breaks away from Nifty (either way)buy ATM straddle80118%-6.1614%-6.32

All are negative. Option prices already move ahead of the index: the "options lead the index" signal is literally the option price having moved first, so the buyer is late by construction. Premium also expands in fast markets. For Satya's style, the practical use is timing and filtering: an either-way alert says the tape is about to move, so a with-trend entry has a better chance of follow-through, and no alert means expect chop. A rejection alert against the trend is a reason not to chase. None of these combinations has been tested as a full strategy yet.

5. Live-period replay (8–21 Oct, box feed logs)

The live bot's code replayed on the logged feeds. This is a tiny, unproven sample, shown only so nobody is surprised. Hit = 40 pts within 15 min.

signalalertshits
Bank Nifty breaks away from Nifty (either way)148 (57%)
Fast market: 40+ pt 5-min burst (either way)2414 (58%)
Day high/low rejection 10:00-13:0070 (0%)
Options leading index (synthetic-forward vs spot, 5-min change)6011 (18%)
Opening-range failure (break then back inside)61 (17%)

6. What went live

A new box bot bots/early-warning/ recomputes the passing signals every minute from the Upstox feed. It writes feeds/early-warning/latest.json, which is synced to the VPS like the other feeds, and drives the Early warning panel on /live/. Each alert stays active for 15 minutes. The fusion bias is untouched. The failed signals that came closest (options-lead, opening-range failure) are computed as hidden "shadow" alerts and logged so they can be checked live, but they are never shown as warnings.

7. Not proven (live-only inputs)

8. Caveats

Code and data: box /workspace/early-warning/; S3 s3://analyticsdata123/options-ml-platform/data/knowledge/early-warning/. Read-only research. No orders placed. Not investment advice.