OracleLaunch →
Verified backtest · sp500_momentum_126_2026

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
Headline metrics

The numbers, eight of them.

All figures computed from the equity curve below. No selection, no smoothing. Source: report.json.

Sharpe
1.70

Annualized · raw, before deflation

Annualized return
42.48%

Total 600.94% over the window

Annualized vol
24.94%

σ of monthly returns, annualized

Max drawdown
19.56%

Peak-to-trough on equity curve

Turnover
25.70×

25.70 portfolio rotations · 5 bps cost applied

Deflated Sharpe P
1.000

n_trials=1 · σ_SR=0.50

Skew
0.01

Of monthly returns

Kurtosis
2.09

Excess · monthly returns

Honest reading

What this is not.

Probability of Backtest Overfitting
0.557

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

Same engine, side-by-side
−0.61 Sharpe

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.

Brutal disclaimer — read once
  • ·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.
Equity curve

From $100,000 to $700,939.

66 monthly rebalance points · total return 532.44% · source: equity_curve.csv.

$748K$577K$406K$235K$64KNov 2020Dec 2021Jan 2023Feb 2024Mar 2025Apr 2026Initial · $100K
Reproducibility

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
What these numbers mean

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.