← all research
VALIDATED ALPHA

The Flagship: A Walk-Forward ML Rotation That Survived Its Own Gauntlet

2026-08-24

Most published ML trading strategies die on contact with three questions: was the model retrained only on the past? was the test window touched during development? and what does a permutation null say? This post documents a system built to answer all three affirmatively, plus the unglamorous findings that made it work.

Architecture

Universe: 59 large-cap US names (every 10th name of the S&P list, plus eight mega-caps), twenty years of daily data.

Signal stack, per name:

  1. ~100 engineered features (trend lags, volatility structure, volume dynamics, calendar, market-relative and cross-sectional ranks), strictly causal through each day's close
  2. Gradient-boosted regression ensemble, retrained every 12 months on data strictly before the cutoff, predictions applied only after a 50-bar embargo
  3. Two horizons (5-day and 21-day forward returns) trained separately, then blended at signal level
  4. A cross-sectional entry overlay: on each bar, among eligible names, only the top-8 by combined score may enter; exits are never gated

The overlay deserves emphasis because it was found the honest way: it passed a pre-registered tuning gate on calibration data (+8.7pp over baseline), then delivered more on the untouched window than in tuning — test CAGR +28.06% vs baseline +17.71%, with drawdown improving from −29% to −19%. Selection quality over selection quantity: trade count barely changed.

The gauntlet results

On the held-out 2021–26 window, never used for any development decision:

metricvalue
CAGR+27.9%
Sharpe1.26
Max drawdown−19.4%
Permutation null (40 shuffles)p = 0.000 — zero nulls beat it
Trade bootstrap P(loss)≈ 0

Year-by-year breadth matters more than the headline: the overlay beat baseline in four of six years, including both bull (2024: +33% vs +16%) and chop (2022: +4% vs −10%).

Three findings that made the difference

1. The edge is name-concentrated. Rebuilding the identical pipeline on the full S&P cross-section (~450 names) collapsed the profit factor from 1.46 to 1.04. Three independent studies agree: this is not a broad anomaly, it is a specific book. Breadth does not scale it; it dilutes it.

2. Drawdown breakers can kill live edges. The original config locked trading below −35% total drawdown. Backtests showed that breaker retired the strategy for entire multi-year stretches while the edge was intact, costing hundreds of percent. Loosening to −50% preserved protection while letting a live edge breathe. Risk limits need their own validation.

3. Generalization has a price floor, not a guarantee. Re-running the whole pipeline on random unseen-name samples produced profitable portfolios every time — but at PF ≈ 1.25 rather than the flagship's 1.46, and below buy-and-hold. The universe itself carries part of the result. Honest accounting says so.

What it is not

Not market-neutral, not high-frequency, not ML magic. It is a long-biased rotation that happens to have real cross-sectional discrimination on one carefully-chosen universe, validated the boring way: frozen test windows, permutation nulls, full grids, and a ledger of everything that failed before it. The companion post describes that protocol end-to-end.

All figures are backtests plus paper-trading deployment; nothing here is investment advice.