The scoreboard
Every model behind a verdict was tested on years it never saw, against a simple baseline anyone could compute. When a model loses, this page says so and the app stops using it.
Expanding-window walk-forward by calendar year. Training data stops 25 trading days before each test year so no target overlaps it. Every number below is out-of-sample. Test years 2019–2026, Nifty 50 stocks, data to 14 Oct 2026.
Summary
Return range: +1.0% better than the baseline, but its 80% range only caught 75.1% of outcomes.
MarginalUp-or-down calls: right 55.2% of the time. Just assuming "up" was right 57.4%. So the app never makes direction calls.
LosesVolatility: GARCH(1,1) cuts forecast error by 28.5%. The LSTM (deep learning) manages 24.8%, good, but the 1986 model still wins.
Beats baselineMarket regime: days called "Stressed" were followed by 1.9× the volatility of "Calm" days.
InformativeEarnings-call language drift: Needs a scraped transcript archive first. No numbers are shown until it has been backtested like the others.
Not built
20-day return range
Marginal- Model
- LightGBM quantile regression (10th / 50th / 90th pct)
- Baseline
- The stock's own trailing 2-year spread of 20-day returns
- Scored by
- Pinball loss (lower is better); skill = 1 - model/baseline
| Measure | Model | Baseline |
|---|---|---|
| Pinball loss skill vs baseline | +1.0% | — |
| 10–90% range caught the outcome | 75.1% | 78.4% |
| Direction right | 55.2% | 57.4% (always "up") |
- 2019+0.9%
- 2020+0.5%
- 2021+0.8%
- 2022+0.2%
- 2023+0.6%
- 2024+2.2%
- 2025+4.5%
- 2026−1.3%
20-day volatility
Beats baseline- Model
- LSTM (deep learning) vs GARCH(1,1)
- Baseline
- Last 20 days' volatility carried forward
- Scored by
- QLIKE loss (lower is better); skill = 1 - model/baseline
| Contender | QLIKE loss | Skill vs baseline |
|---|---|---|
| LSTM | 0.331 | +24.8% |
| GARCH(1,1) | 0.315 | +28.5% |
| Trailing 20-day vol | 0.441 | — |
- 2019+36.7%
- 2020−7.5%
- 2021+28.7%
- 2022+36.4%
- 2023+22.9%
- 2024+38.9%
- 2025+36.6%
- 2026+45.8%
- 2019+37.6%
- 2020+10.8%
- 2021+38.5%
- 2022+28.7%
- 2023+10.9%
- 2024+48.0%
- 2025+26.7%
- 2026+48.5%
Market regime
Informative- Model
- 3-state Gaussian HMM on Nifty 50 returns and volatility, forward-filtered
- Baseline
- No regime: every day treated alike
- Scored by
- Does the regime called today separate the NEXT 20 days? (out-of-sample)
| Regime called | Days (test years) | Next 20 days: volatility | Next 20 days: Nifty return |
|---|---|---|---|
| Calm | 805 | 11.1% | +0.9% |
| Choppy | 700 | 15.2% | −0.0% |
| Stressed | 395 | 21.1% | +2.0% |
The regime separates future volatility cleanly. It does not reliably separate future returns, so the app uses it only for claims about the market backdrop.
Earnings-call language drift
Not built- Model
- FinBERT + embedding drift between consecutive concalls
- Baseline
- None yet
- Scored by
- None yet
Needs a scraped transcript archive first. No numbers are shown until it has been backtested like the others. The plan: scrape BSE concall PDFs, score each call with FinBERT, measure how far its language drifts from the previous quarter, then test whether drift predicts the next quarter's surprise.
Want to see what these models say about your view?
Test a thesis