Momentum residual-gate A/B (2019→now)
Same momentum_spec universe, RS+sector vs +residual. Fewer trades, slightly higher Sharpe; bear/chop still negative.
Setup: momentum_spec · universe mom_scan (n=170)
Period: 2019-01-01 → 2026-08-27 · min_rr 2.0
Source: private report momentum_residual_ab_20260827_064827
Pooled 1R compound. Not a live book. Not a return promise.
Headline
| metric | rs+sector | +residual | delta |
|---|---|---|---|
| trades | 3300 | 2844 | −456 |
| win% | 44.0 | 44.66 | +0.66 |
| ExpR | 0.1279 | 0.1463 | +0.0184 |
| total R | 422.17 | 415.97 | −6.2 |
| Sharpe | 0.349 | 0.398 | +0.049 |
| trade cut | — | — | 13.82% |
Residual cuts about 14% of trades, lifts per-trade ExpR and Sharpe, and gives back a little total R because the book is smaller.
Subperiods (residual vs base)
| window | base sumR | resid sumR | base Sharpe | resid Sharpe |
|---|---|---|---|---|
| full | 422.17 | 415.97 | 0.35 | 0.40 |
| bear_2022 | −85.42 | −72.52 | −0.65 | −0.64 |
| sideways_2023Q3 | −19.66 | −14.19 | −0.67 | −0.53 |
| bull_2023 | 53.22 | 57.05 | 0.39 | 0.46 |
Bear and chop stay negative. Residual hurts less, it does not flip the sign. destroy_verdict was False on both legs.
What we do with this
The Aug 27 momentum paper book runs with residual ON. That is a protocol choice, not proof the live-style loop will print 0.40 Sharpe. Paper fills, one-name-per-cycle caps, and 30-minute cadence are not this pooled backtest.