Every model in our "zoo" gets the same features, the same label (stock minus S&P 500 over the next 20 trading days) and the same walk-forward schedule: refit every 63 trading days on the trailing 756, with a 20-day gap so no label leaks into training.
The leaderboard (development period, mean daily rank IC)
| Model | IC | t-stat |
|---|---|---|
| Trend rule (price vs 100-day average + 12-1 momentum) | +0.0149 | 0.64 |
| GRU | +0.0101 | 0.50 |
| Ridge regression | +0.0091 | 0.50 |
| LightGBM | +0.0086 | 0.53 |
| LSTM | −0.0018 | −0.09 |
| MLP | −0.0090 | −0.49 |
| Low-volatility rule | −0.0251 | −0.98 |
Twelve families in total. The best Deflated Sharpe probability, which accounts for how many we tried, was 0.16.
Three observations
- Nothing is significant. A t-stat of 0.64 is well inside the noise. "Top of the table" here means "least bad".
- The year-by-year numbers swing. LSTM's IC was −0.07 in 2022 and +0.14 in 2025. A model that looks brilliant in one year and broken in the next has not found structure; it has found that year.
- Complexity added nothing. With roughly 100 stocks and a noisy one-month label, there isn't enough structure for a sequence model to learn what a moving average can't.
We also run a LightGBM on shuffled labels as a control. Its IC was −0.004, about where the real models sit.
The full leaderboard, including each model's code idea and yearly numbers, is public on the models page.
From Quantooo Lab, the makers of quantooo.com, a free, open and educational quant lab: every formula, every test and every failure is public. See it here: https://quantooo.com/models
Educational, not investment advice.