Prove Me Wrong

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

  1. Return range: +1.0% better than the baseline, but its 80% range only caught 75.1% of outcomes.

    Marginal
  2. Up-or-down calls: right 55.2% of the time. Just assuming "up" was right 57.4%. So the app never makes direction calls.

    Loses
  3. Volatility: GARCH(1,1) cuts forecast error by 28.5%. The LSTM (deep learning) manages 24.8%, good, but the 1986 model still wins.

    Beats baseline
  4. Market regime: days called "Stressed" were followed by 1.9× the volatility of "Calm" days.

    Informative
  5. Earnings-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
MeasureModelBaseline
Pinball loss skill vs baseline+1.0%—
10–90% range caught the outcome75.1%78.4%
Direction right55.2%57.4% (always "up")
10th50th90th
model · baseline (drawn side by side at each percentile). On the dashed line means the quantiles are honest: the 10th percentile should be undercut 10% of the time.
Skill by test year (right of the line = beats baseline)
  • 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
ContenderQLIKE lossSkill vs baseline
LSTM0.331+24.8%
GARCH(1,1)0.315+28.5%
Trailing 20-day vol0.441—
LSTM skill by year (right of the line = beats baseline)
  • 2019+36.7%
  • 2020−7.5%
  • 2021+28.7%
  • 2022+36.4%
  • 2023+22.9%
  • 2024+38.9%
  • 2025+36.6%
  • 2026+45.8%
GARCH skill by year (right of the line = beats baseline)
  • 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 calledDays (test years)Next 20 days: volatilityNext 20 days: Nifty return
Calm80511.1%+0.9%
Choppy70015.2%−0.0%
Stressed39521.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