Every number on this page comes from this project's own walk-forward, no-lookahead evaluation (src/forecasting.py), not a demo, not a mockup. The goal was never to prove the models beat the market; it was to find out, and report it either way.
Explainable baseline. Refit daily on all prior data: 8 technical-indicator features (moving averages, RSI, MACD, 20-day volatility) predicting the next 5-day log return.
Classical time-series baseline fit on log returns, updated (not refit) as each new day arrives. No exogenous features, pure autocorrelation structure.
Tree ensemble on the same 8 features, refit every 20 trading days on an expanding window. Can capture nonlinear interactions the linear baseline can't.
Gradient-boosted trees, same features and refit cadence as the Random Forest, for a second nonlinear comparison point.
1-layer, 32-unit sequence model over the last 30 days of features instead of a single day. Trained once per window, with each number averaged across 5 independently seeded runs, since a single run was not stable enough to trust.
For each model/window, the share of assets in the basket where directional accuracy was statistically significantly better than a coin flip (green) vs. significantly worse (red). The rest were not statistically distinguishable from chance.
Crashes and shocks are where models break. Dot-com crash: Random Forest flips to 18.2% of the basket significantly worse than random. Demonetization: Linear Regression hits 20% significantly worse (n is small here, 34 predictions, so treat it as a hint, not a strong result). 2024–25 Correction: XGBoost is significantly worse on 25% of the basket, its worst showing of any window trained.
Sustained trends are a different story. The Bull Run (2003–07) is the strongest calm-market result on this page. Random Forest hits 66.7% of the basket significantly better than random, XGBoost 50%, and even ARIMA reaches 58.5% directional accuracy on the index alone. The Post-COVID rally (2020–21) shows a similar pattern: Random Forest 30% significantly better, zero percent significantly worse. Momentum, in other words, looks far more learnable than a turning point.
Same pattern as the original 2008/COVID finding, now with 6 more data points: tree-based models find more real-looking structure in trending or calm conditions, but that structure is regime-specific. It's most likely to backfire exactly when a regime breaks (2008, COVID, the 2024–25 correction, the 2016 policy shock). Linear regression's failure mode stays consistent across all 8 windows: it rarely becomes confidently wrong, it just goes weak/silent instead.
All 8 event windows have real trained models (Linear Regression, ARIMA, Random Forest, XGBoost, LSTM), on real yfinance data (1998–2026), using the same walk-forward, no-lookahead method throughout. An LSTM/GRU sequence model and a regime-detection layer (k-means or HMM on volatility/return features) aren't represented on this page.