S&P 500 momentum,
walk-forward verified.
Real daily closes from the S&P 500 universe, 2019→2026. A 126-day momentum signal, rebalanced monthly, top-25 equal-weighted, with 5 bps round-trip cost. Walk-forward — no in-sample tuning leaks into the equity curve below.
- Sharpe
- 1.70
- Deflated Sharpe P
- 1.000
- Annualized return
- 42.48%
- Window
- 2019→2026
The numbers, eight of them.
All figures computed from the equity curve below. No selection, no smoothing. Source: report.json.
- Sharpe
- 1.70
- Annualized return
- 42.48%
- Annualized vol
- 24.94%
- Max drawdown
- 19.56%
- Turnover
- 25.70×
- Deflated Sharpe P
- 1.000
- Skew
- 0.01
- Kurtosis
- 2.09
Annualized · raw, before deflation
Total 600.94% over the window
σ of monthly returns, annualized
Peak-to-trough on equity curve
25.70 portfolio rotations · 5 bps cost applied
n_trials=1 · σ_SR=0.50
Of monthly returns
Excess · monthly returns
What this is not.
Borderline — the in-sample winner is roughly coin-flip out of sample.
CSCV across 13 configs · 70 IS/OOS partitions · 35.00 aligned rebalances per config
Survivorship correction; LightGBM model when available:
- Momentum · survivors-only
- Sharpe 1.73 · 22.48% AnnRet
- Momentum · point-in-time S&P 500
- Sharpe 1.11 · 14.74% AnnRet
- LightGBM · trainer subset
- Sharpe 1.41 · 16.06% AnnRet
Headline gap = “joined-after” forward bias in the survivors-only dataset. ML row, when shown, is on a smaller training universe — informative but not strictly apples-to-apples.
- ·Window risk: The 2019–2026 backtest window contains the 2020 COVID recovery rally, the 2021 liquidity surge, and the 2023–2024 AI-driven mega-cap run. Long-only top-K momentum during those periods was structurally advantaged. The headline Sharpe of 1.703 is conditioned on this specific historical episode — not a generalizable claim.
- ·These are backtest numbers, not live trading numbers. Live out-of-sample results are routinely lower than backtests for every strategy ever run.
- ·Past performance does not predict future returns. Anyone who tells you a model can guarantee a profit on any specific stock tomorrow is selling you a lie.
- ·This page is research output, not investment advice. No order routing, no real money, no recommendation to buy or sell any security. Treat it as a methodology demo.
- ·The model is gradient-boosted decision trees (LightGBM). It is not “AI”, not a transformer, not a neural network. It outputs calibrated probabilities, not point price forecasts.
From $100,000 to $700,939.
66 monthly rebalance points · total return 532.44% · source: equity_curve.csv.
The manifest. Click to copy.
No manifest, no publish. Same SHA + same data fingerprint reproduces these numbers exactly. Source: manifest.json.
- Python
- 3.12.12
- Pinned packages
- 7
- Run created
Read the credibility contract.
A raw Sharpe of 1.70 on its own is not a claim. The number that matters is the Deflated Sharpe P-value — the probability that the true Sharpe is positive after correcting for selection bias across 1 candidate configs and the non-normality of returns (skew 0.01, kurtosis 2.09). For this run that probability is 1.000.
This is a momentum baseline — the null hypothesis any ML pipeline in this repo has to beat. It is what a 6-month price trend, equal- weighted across the top 25 names and rebalanced monthly with 5 bps transaction cost, actually returned on real S&P 500 daily closes. Walk-forward, no peeking. The full credibility contract — what is and is not used, how each mechanism prevents a specific way numbers get inflated — is in TRUST.md.