Top-10 Universe Momentum — Backtest Report ⛔ FAILS out-of-sample
Date: 2026-06-10
Analyst: Claude (for Jacques)
Engine: /root/backtest_xsmom_PY-00027_100626.py · Runner: /root/xsmom_top10_100626.py
Companion: see 2026-06-10_cross-sectional-momentum.md (top-100 version, which PASSED).
1. What was requested & the honest data caveat
Requested: redo the momentum backtest using only coins that have been in the top 10, trading a coin only while it is currently in the top 10, over 30 May 2026 going back 5 years.
The 5-year window is not possible. The 1d crypto candles in crypto_cross.db start
2024-06-05 — there is no data before that, and the older big_bots.db is equities, not crypto.
A 5-year test would need data to May 2021. Rather than fabricate it, this report uses the maximum
real window: 2024-06-05 → 2026-05-30 (~2 years). A true 5-year test would require backfilling
older candles from an exchange first (a separate job).
2. Universe & rules
- "Top 10" = top 10 by trailing-30d dollar volume (no market-cap field exists; volume is the proxy).
- Recomputed weekly, point-in-time — no look-ahead. A coin is eligible only while in the current top 10.
- 64 distinct coins touched the weekly top-10 over the window: a stable core (BTC, ETH, SOL, XRP, DOGE) plus a rotating tail (WIF → FARTCOIN → HYPE → ZEC → LAB → PIPPIN …).
- Strategy: weekly cross-sectional momentum (rank by lookback return, long strongest / short weakest), optional BTC-regime gate. Full costs (0.17% round-trip/position-week), max 8 positions, no leverage.
- Tune < 2026-01-01. OOS = 2026 (untouched).
3. Results
Tune set (pre-2026) — momentum does work here
| Variant | Trades | Win | Avg R | PF | Return | Max DD | Sharpe |
|---|---|---|---|---|---|---|---|
| ls L21 N2 | 312 | 51% | +0.0108 | 1.21 | +44.7% | −17.1% | 1.06 |
| ls L21 N3 | 468 | 50% | +0.0082 | 1.16 | +50.8% | −15.2% | 1.06 |
| ls L60 N2 | 292 | 52% | +0.0079 | 1.17 | +29.5% | −16.9% | 1.00 |
Out-of-sample (2026) — it breaks
| Variant | Trades | Win | Avg R | PF | Return | Max DD | Sharpe |
|---|---|---|---|---|---|---|---|
| ls L21 N2 (best on tune) | 80 | 40% | −0.0012 | 0.99 | −8.5% | −26.3% | −0.05 |
| ls L21 N3 | 120 | 44% | −0.0101 | 0.87 | −21.3% | −33.4% | −0.58 |
| ls L45 N2 | 80 | 45% | −0.0518 | 0.58 | −44.4% | −53.5% | −2.41 |
| ls L60 N2 (lone survivor) | 80 | 44% | +0.0135 | 1.15 | +9.5% | −18.7% | +0.72 |
OOS monthly (best-on-tune variant, ls L21 N2): Jan +18.6% · Feb −5.2% · Mar −0.9% · Apr −13.0% · May −5.5%. A front-loaded January gain, then a steady bleed. Last ~14 days: −4.9%.
Robustness (point-in-time neighbourhood sweep)
- Only 9 / 30 parameter cells positive (PF>1) in both tune and OOS.
- Median OOS PF 0.90 (below break-even) · median OOS Sharpe −0.43.
- Every lookback except 60-day is negative OOS. The 60-day corner is an isolated island, not a plateau — its neighbours fail, so it is most likely luck, not a real edge.
Full-period (2024-06 → 2026-05-30) for the headline variant: PF 1.08, +13.3%, max DD −32.2%, Sharpe 0.36 — i.e. the modest tune-era gains are almost entirely given back in 2026.
4. Honest conclusion — this variant FAILS validation
Shrinking the universe from top-100 to top-10 destroys the edge. Momentum needs cross-sectional dispersion — a field of names where winners keep winning and losers keep losing. The top-10 is the wrong field for it: - It is dominated by a few megacaps (BTC/ETH/SOL/XRP/DOGE) that move largely together — little to rank. - Its rotating tail (FARTCOIN, ZEC, LAB, PIPPIN…) is news-/hype-driven and mean-reverting, so "buy the strongest" buys the blow-off top. OOS win rate fell to 40%.
This is a negative result, which is still a result (per the project rules). The takeaway is concrete and reusable: the cross-sectional momentum edge lives in breadth (top-100), not concentration (top-10). The companion top-100 report stands as the strategy that passed; this one shows the boundary where it stops working.
Status: FAIL (out-of-sample). Do not pursue top-10 momentum.
Caveat already stated: tested on ~2 years, not the requested 5 — but the OOS failure is clear within the data we have, and more history would not rescue a strategy that loses on the most recent 5 months.