ML Signal Filter
A GradientBoosting classifier trained walk-forward on signal outcomes predicts which analyst upgrades will hit +5% within 90 days. Features: firm score, stock momentum, market regime, sector, seasonality. Only signals above 55% confidence are taken.
Filtered Avg Return
+1.14%
per signal, avg over test years
All Signals Avg Return
+1.09%
unfiltered baseline
Filter Outperforms
4 / 8 years
avg precision 76% recall 93%
Avg Signals Taken
93%
of all signals pass threshold
ML-filtered signals (≥55% confidence) vs taking all signals vs SPY — per-signal average return each year.
2018110/116 signals taken · P=69% R=95%
Filter
+0.46%
All
+0.49%
SPY
-5.25%
2019122/139 signals taken · P=86% R=89%
Filter
+2.56%
All
+2.63%
SPY
+31.09%
2020642/781 signals taken · P=82% R=85%
Filter
+1.08%
All
+0.63%
SPY
+17.24%
2021938/1023 signals taken · P=77% R=91%
Filter
+1.88%
All
+1.92%
SPY
+30.51%
2022775/812 signals taken · P=72% R=96%
Filter
-0.40%
All
-0.44%
SPY
-18.65%
20231268/1306 signals taken · P=72% R=97%
Filter
+1.44%
All
+1.45%
SPY
+26.71%
20241424/1489 signals taken · P=75% R=96%
Filter
+1.51%
All
+1.46%
SPY
+25.59%
20251530/1552 signals taken · P=71% R=99%
Filter
+0.63%
All
+0.60%
SPY
+18.01%
Full Year Statistics
| Year | All Signals | Filtered | Filtered Ret | All Ret | SPY | Precision | Recall |
|---|---|---|---|---|---|---|---|
| 2018 | 116 | 110(95%) | +0.46% | +0.49% | -5.3% | 69% | 95% |
| 2019 | 139 | 122(88%) | +2.56% | +2.63% | +31.1% | 86% | 89% |
| 2020 | 781 | 642(82%) | +1.08% | +0.63% | +17.2% | 82% | 85% |
| 2021 | 1023 | 938(92%) | +1.88% | +1.92% | +30.5% | 77% | 91% |
| 2022 | 812 | 775(95%) | -0.40% | -0.44% | -18.6% | 72% | 96% |
| 2023 | 1306 | 1268(97%) | +1.44% | +1.45% | +26.7% | 72% | 97% |
| 2024 | 1489 | 1424(96%) | +1.51% | +1.46% | +25.6% | 75% | 96% |
| 2025 | 1552 | 1530(99%) | +0.63% | +0.60% | +18.0% | 71% | 99% |