← all research

Split IS<2023-01-01 / OOS>=2023-01-01 (fixed in advance). Long-only, next-open, 10bps one-way. OOS read once as confirmation.

VariantIS SharpeIS maxDDOOS SharpeOOS maxDDOOS retturn/yr
V0 BASE raw/H21/k101.05-48.8%1.64-18.4%+170.0%8.3
V1 +SMA gate1.07-54.8%1.37-25.2%+170.6%10.9
V2 resid+SMA1.07-54.8%1.37-25.2%+170.6%10.9
V3 +sector0.89-54.9%1.09-26.9%+104.0%12.1
V4 H421.00-54.3%1.38-25.5%+157.6%7.4
V5 k15%0.97-46.0%1.22-18.5%+96.2%11.3
V6 reversal-tilt1.00-53.7%1.01-24.8%+83.0%17.0
V7 vol120.84-23.5%1.02-16.9%+42.9%6.8
V8 vol180.90-30.8%1.03-19.1%+62.2%9.1
V9 thin-book0.81-55.2%1.06-29.8%+107.9%12.5

IS winner on Sharpe: V1 +SMA gate (1.07).

  • V1 +SMA gate: IS p=0.099, OOS Sharpe delta -0.27
  • V2 resid+SMA: IS p=0.099, OOS Sharpe delta -0.27
  • V3 +sector: IS p=0.598, OOS Sharpe delta -0.55
  • V4 H42: IS p=0.296, OOS Sharpe delta -0.26
  • V5 k15%: IS p=0.700, OOS Sharpe delta -0.42
  • V6 reversal-tilt: IS p=0.443, OOS Sharpe delta -0.63
  • V7 vol12: IS p=0.999, OOS Sharpe delta -0.62
  • V8 vol18: IS p=0.994, OOS Sharpe delta -0.61
  • V9 thin-book: IS p=0.725, OOS Sharpe delta -0.58

Verdicts (2026-09-09)

ADOPT: nothing. No variant clears the pre-registered bar (all IS p > 0.05), so per house rules nothing is promoted on ranking/hold/breadth.

  • V1 SMA gate — INCONCLUSIVE, kept as philosophy. IS 1.07 vs 1.05 (p=0.099, noise), OOS worse (1.37 vs 1.64). Kept ON as the multi-timeframe leg with TESTBOT_SMA_GATE=0 reproducing pure BASE. Costs turnover (10.9 vs 8.3/yr).
  • V2 resid — NULLO. Bit-identical portfolio to V1: under an equal-weight market proxy, large-cap 126d betas sit near 1, so residualization is a near-monotone transform of raw momentum and preserves ranks. Complexity with zero benefit in this setup → default back to raw (TESTBOT_MOM_MODE=resid stays opt-in). Discrepancy vs live-eqmom docs (resid 1.61 vs raw 1.24) is scoped to their 501-name setup — live eqmom untouched; follow-up study on the delisting-inclusive universe before any claim there.
  • V3 sector demean — REJECT here. Hurts both segments (IS 0.89, OOS 1.09). Default OFF (TESTBOT_SECTOR_NEUTRAL=1 opt-in).
  • V6 reversal-tilt — REJECT. The "mean reversion takes weight in chop/bear" hypothesis fails outright (OOS 1.01, worst DD-adjusted, turnover 17/yr). Agrees with the P5b PEAD reversal-blend rejection. Stays out; revisit only with a new mechanism, not a re-blend.
  • V5 k15% — REJECT. Breadth dilutes (OOS 1.22 vs 1.37 at same DD).
  • V9 thin-book proxy — REJECT as proxy. Half-sizing on dollar-volume alone hurts; the full wall+thin overlay stays cited from reports/equity_book_overlay.md (needs high/low the ADJ cache lacks). TESTBOT_BOOK_OVERLAY default OFF, opt-in.
  • V7/V8 vol-target — INSURANCE, not alpha. Confirms the B5 trade: IS Sharpe cost (0.84/0.90 vs 0.89) for DD halved (-23.5%/-30.8% vs -54.9%). Default shadow-only (TESTBOT_VOL_TARGET=0 logs the scale, deploys full gross); set 0.12/0.18 to actually cut exposure.
  • V4 H42 — approved cost-fallback (turnover 7.4 vs 10.9/yr, OOS 1.38 ≈ V1), consistent with the existing H42/H63 fallback stance. Not default (H21 wins IS).

Caveats

  • 99-name curated current-constituent universe → survivorship bias inflates absolute Sharpes. Compare P5a BASE OOS 1.07 on the 501-name delisting-inclusive universe for absolute claims; only relative ordering is used here.
  • OOS 2023+ was megacap-momentum friendly; an earlier informal probe had already eyeballed OOS, so this read is confirmatory. 30d forward shadow still required before any live-testbot promotion.
  • Regime deploy fractions were NOT applied in-study (isolated ranking question); the live testbot keeps them + log-only C7 hedge proxy.