← setups · Research, not advice.
Research, not advice. Read-only study; no orders placed. Built 2026-10-17.
New: Top option mismatches vs fair value (1-minute) — biggest raw/liquid/tradable gaps vs the SVI smile, where they cluster, how fast they close, buyer test (FAIL).
Follow-up: Mismatch accumulation over hours/days vs multi-day Nifty moves — ML test (GBM, HMM, Isolation Forest, SHAP): direction FAIL, range-only predictor.
options-ml-platform/data/options/1m/ (105 expiry files plus the live file for the 2026-10-06 expiry, 117M rows). There is no 1m option history before Aug 2024.nifty50.parquet (1m), read-only. VIX: not available in the bucket. The front-week ATM IV from our own fits stands in for it.Three tests: holdout = fit on 100-point strikes, price the 50-point strikes in between at the same time. ahead30 = parameters from 30 min earlier, with the new forward and T. dayfixed = parameters fixed at 10:00 for the rest of the day.
| model | holdout RMSE pts | holdout RMSE IV (vol pts) | median abs IV err | ahead-30m RMSE pts / IV | day-fixed RMSE pts / IV |
|---|---|---|---|---|---|
| SVI (raw, per expiry per snapshot) | 1.00 | 0.23 | 0.07 | 3.03 / 0.69 | 6.99 / 2.03 |
| Bates (Heston + Merton jumps) | 1.09 | 0.46 | 0.07 | 3.07 / 0.74 | 7.04 / 1.72 |
| SABR (β=1, Hagan) | 1.46 | 0.54 | 0.17 | 3.19 / 0.95 | 7.16 / 2.27 |
| Heston | 1.54 | 1.78 | 0.18 | 3.29 / 2.01 | 7.51 / 3.20 |
| BSM flat IV | 10.33 | 4.25 | 1.31 | 10.55 / 4.34 | – |
By time to expiry (holdout, IV RMSE): SVI 0.54 / 0.30 / 0.21 / 0.16 vol pts for <1d / 1–2d / 2–4d / >4d. Heston breaks down on expiry day (5.9 vol pts <1d) because it cannot make the steep short-dated wings without jumps. Bates fixes most of that (1.1).
By moneyness, SVI wins every bucket: deep OTM puts 0.29, ATM 0.16, deep OTM calls 0.25 vol pts. 2026 test front week: SVI 0.71 pts / 0.26 vol, Bates 0.95 / 0.46, SABR 1.33 / 0.73, Heston 1.47 / 2.56.
Arbitrage checks (SVI): 0.36% of front/next pairs show a calendar violation on |k| ≤ 4% (next-week total variance below front-week). The Gatheral butterfly condition g(k) ≥ 0 holds on |k| ≤ 8% for 97% of next-week fits and 82% of front-week fits. The failures are almost all in the extrapolated far wings near expiry, beyond the quoted strikes. Median in-sample fit error is 0.12 vol pts.
Pricing lesson: a single BSM IV is off by about 10 premium points. SVI, Bates and SABR fit the weekly chain to about 1 point, roughly the bid/ask and 1-minute staleness noise. Weekly Nifty options are priced very consistently with one smooth smile. Little of the "mispricing" is left to harvest.
Rules: top/bottom decile thresholds come from train. Direction comes from train (the sign of the excess 15-minute spot move). The horizon (5/15/30/60 min) is picked on tune. 30-minute cooldown. Entry at the next 1-minute close and exit at the close h minutes later, using real front-week ATM CE/PE (or the flagged contract).
Costs: lot 65, 1 pt slippage per side on premium, ₹50 per round trip per leg. Placebo: the same side and same time of day on 10 random days in the same split. Hit rates are spot direction, with Wilson 95% CI. Full grid: clues_continuous.csv, clues_continuous_allh.csv, clues_contract.csv.
| clue | best variant (side, h) | train n / ₹ (placebo) | tune n / ₹ (placebo) | test n / ₹ (placebo), t | test hit (CI) | verdict |
|---|---|---|---|---|---|---|
| C1 residual z ≤ −3 & ≥1 pt cheap vs SVI → buy that option | buy, 30m | 181 / −267 (−228) | 32 / −343 (−163) | 14 / −35 (−152), t 0.7 | – | FAIL |
| C1 residual z ≤ −2 (looser) | buy, 30m | 642 / −270 (−195), t −2.3 | 196 / −213 (−200) | 173 / −123 (−175), t 1.1 | – | FAIL |
| C2a parity: strike's C−P implies forward ≥3 pts off → buy cheap leg | 30m | 5362 / −194 (−188) | 2599 / −184 (−184) | 4796 / −162 (−179), t 2.5 | – | FAIL (train t −3.4 at 15m, sign flips) |
| C2b implied forward − spot jumps up (15m) | CE 15m | 593 / −199 (−222) | 224 / −197 (−196) | 363 / −138 (−206), t 1.0 | 51.5% (46–57) | FAIL |
| C3a 25Δ risk reversal change (15m), top | PE 5m | 466 / −195 (−186) | 57 / −103 (−175) | 204 / −173 (−190) | 47.8% (41–55) | FAIL |
| C3a risk reversal change, bottom | CE 5m | 490 / −168 (−201) | 69 / −165 (−196) | 239 / −279 (−171), t −2.1 | 46.0% (40–52) | FAIL |
| C3b butterfly (curvature) jump, top | CE 5m | 420 / −212 (−182) | 42 / −191 (−198) | 199 / −82 (−186), t 1.6 | 55.3% (48–62) | FAIL (train worse than placebo) |
| C4 ATM IV − 60m realized vol, lowest decile ("cheap vol") → straddle | straddle 60m | 234 / −535 (−403) | 32 / −282 (−433) | 80 / −570 (−590) | – | FAIL |
| C4 IV − RV, highest decile | CE 5m | 233 / −145 (−167) | 0 | 384 / −156 (−188) | 53.1% (48–58) | FAIL |
| C5 term spread (front − next ATM IV) high → straddle | straddle 30m | 201 / −447 (−429) | 5 / −259 | 94 / −145 (−389), t 1.1 | – | FAIL (tune n=5) |
| C6 ATM IV jump (z>0.42) with spot flat → buy CE | CE 15m | 225 / −162 (−181) | 61 / −228 (−221) | 133 / −104 (−167), t 0.5 | 54.9% (46–63); train 56.4%, tune 55.7% | WATCH (direction only), FAIL as trade |
| C6 IV drop with spot flat → PE | PE 30m | 219 / −73 (−171) | 55 / −30 (−160) | 67 / −392 (−76), t −1.6 | 52.2% | FAIL |
| C7a put-minus-call OI build while IV up | PE 30m (bottom) | 206 / −36 (−146) | 117 / +50 (−162) | 299 / −226 (−226) | 53.2% (48–59) | FAIL (failed in test) |
| C7b put OI build while IV down | – | – | – | 313–327 / −175..−188 (≈ placebo) | 46–51% | FAIL |
| C7c total near-ATM OI unwind (bottom) → straddle | straddle 30m | 440 / −329 (−387) | 294 / −342 (−389) | 468 / −273 (−348), t 1.9 | – | FAIL (consistently less bad than placebo, never positive) |
| C8 OTM calls vs puts richer than 15 min ago | 5m | 436–455 / −186..−211 | +2.3 t in tune | 223–265 / −222..−287, t −2.6 | 45% | FAIL (sign flips) |
| C0 plain 15m ATM IV change | – | 426–434 / −235..−286 | – | 163–292 / −174..−201 (≈ placebo) | 50–52% | FAIL |
Why the residual outliers don't pay: cheap-vs-SVI outliers persist. Only 5–18% flip sign within 5 minutes, so they are mostly staleness or illiquidity in that strike, not a temporary mispricing that snaps back. The typical outlier is only 1.3–3.3 premium pts off fair. The round-trip cost on a cheap OTM option is ≈2.8 pts (₹180/lot), which absorbs it. The placebo OTM buy of the same moneyness loses ≈₹175–230 per trade on its own, so gross P&L ≈ 0 and costs decide it.
Magnitude (volatility clustering), PASS as a predictor. In 2026, nearly every extreme reading was followed by bigger-than-average spot moves. Examples: butterfly jump |5m move| 18.9 vs 11.5 pts average; term-spread inversion 19.3 vs 11.5; IV jump with flat spot 24.8 vs 19.6 (15m); "cheap vol" decile 47.8 vs 40.2 (60m). Straddles bought on these signals still lose (−₹145 to −₹570) because the market already marks IV up at those moments. Use it for position sizing and stop width, not as an entry.
Variance risk premium: front-week ATM IV averaged +2.6 / +2.2 / +4.5 vol pts above trailing 60-minute realized vol (train / tune / 2026). Over 30–60 minutes the average straddle buy lost ≈₹370–590 per pair including ≈₹360 in costs and slippage. Gross, buyers lose a little theta on average, and the edge sits with sellers, which is outside Satya's scope.
"IV pops, spot doesn't move" → lean long. On a 5-minute snapshot of the front-week chain (09:30–14:25): - the SVI-implied ATM IV rises by more than 0.42 × its train-period 5-minute standard deviation, i.e. ΔATM-IV(5m) > ≈0.17 vol pts on the 252-day clock; - while |Δspot over the same 5 min| < half the train median 5-minute move (4.55 pts).
Then the next 15 minutes closed higher 56.4% (train, n=225), 55.7% (tune, n=61), 54.9% (2026 test, n=133, CI 46–63%). Buying ATM CE for 15 minutes still lost −₹162 / −₹228 / −₹104 per trade against a −₹167 placebo. Treat it as a direction filter for other setups, not a standalone buy.
build_snap.py (snapshots, implied forward, IV), models.py (BSM/SVI/SABR/Heston/Bates-COS), fit.py (fits plus OOS errors), rank.py, signals.py/study.py/study_contract.py (clue tests), charts.py, rank_*.csv, clues_*.csv.