DispersionGatedMomentumRotationLong
Hypotheses
Dispersion-Regime-Gated Cross-Sectional Momentum Rotation, Long-Only (BINANCE USD-M, 8 Majors, Weekly Hold Top-3 by Relative Strength — but ONLY Concentrate When Cross-Sectional Return DISPERSION Is Elevated (Winners Genuinely Separating); Revert to Cash When Dispersion Is Compressed and the Rotation Would Just Churn Fees for Beta — a DISPERSION Regime Signal No Deployed Basket Uses, 2-Parameter)
Hypotheses
A REAL, codeable strategy (note: my prior abstain 'directives' were force-coded and wasted — this is a tradeable spec). It reuses the strongest LIVE, non-decayed, non-options deployed winner — the cross-sectional relative-strength momentum rotation (Sharpe 2.6) — and adds the second of the two L24-sanctioned unused signal inputs (funding was used by my pending crowding-filter variant; this uses DISPERSION), as a REGIME GATE that decides WHEN the momentum rotation is worth running. Insight: cross-sectional momentum only has an exploitable edge when the majors are DIFFERENTIATING — i.e. when cross-sectional return dispersion is elevated, the top-3 winners genuinely separate from the pack. When dispersion is COMPRESSED (all majors moving together on a common beta factor), the top-3 are barely distinguishable from the rest, so the weekly rotation just churns fees to hold what is effectively the market — adding turnover cost with no relative-strength edge. So: run the proven top-3 relative-strength rotation ONLY when cross-sectional dispersion is above its rolling median; when dispersion is compressed, step aside to cash (or a flat equal-weight hold), avoiding fee churn and concentration risk in the regime where momentum adds nothing. This is NOT a re-weight of relative strength (L24 caution) — it adds a distinct dispersion-based ON/OFF regime the deployed basket lacks; NOT funding (my crowding variant covers that); NOT order flow (fee-dead), NOT options, NOT single-signal reversion. The return engine is the LIVE momentum premium; dispersion only times when to deploy it. Long-only, diversified top-3, weekly, USD-M. 2 core parameters (momentum lookback, dispersion-median lookback).
Hypotheses
Implements the hypothesis faithfully: it reuses the deployed cross-sectional relative-strength momentum rotation (the live, non-decayed Sharpe-2.6 winner) and adds exactly one distinct new input — cross-sectional return DISPERSION — as a REGIME ON/OFF gate that decides WHEN to deploy the rotation (not a re-weight of relative strength, so not L24's duplicate; not funding, not order flow, not options, not reversion). Mechanism in calculate_signal/_rebalance: each aligned bar it recomputes per-name momentum and the cross-sectional std of those momenta (dispersion), maintains a rolling median of dispersion, and at the weekly rebalance runs the top-3 rotation only when current dispersion >= its rolling median; when compressed it closes to cash, avoiding the fee churn and concentration risk of holding effectively-the-market. The continuous signal returned is (dispersion - rolling median), which varies bar to bar. Purely price-driven — no supplementary/tick data — so it sidesteps the cross-instrument-supp and tick-timeout pitfalls entirely and is inherently timeout-safe (per-bar work is bounded: 8 O(1) momentum reads + one std; median only over a <=60-element window). All trading across the 8 legs (including BTC) happens in the rebalance routine via _submit_entry_instrument/close_position; the default primary entry path is neutralized (should_enter None, should_exit False, position_size 0) so the base never double-trades BTC. Warmup defaults the gate ON so it trades once momentum history exists, then the median baseline takes over. VENUE: although long-only/no-leverage nominally suggests spot, USD-M is chosen deliberately — it matches the deployed momentum winner, and USD-M taker fees (0.05%) are HALF spot's (0.10%), materially lowering the turnover cost this dispersion gate is specifically designed to minimize. Risk is bounded (long-only, <=3 names x 0.30 = 0.90 gross equity, leverage 1.0, no compounding blowup). All 8 majors are actively-traded deep-history USD-M perps, so every leg has data (no data_unavailable).
Hypotheses
max_drawdown 67.64% (CI high 76%) is a hard abandon (>50% floor, L19), and the dispersion regime gate — whose entire justification was to cut concentration/fee-churn risk and step aside when momentum adds nothing — demonstrably failed to protect the tail: the book still ate -55.5% in 2022. The reason is structural: the gate goes ON when cross-sectional dispersion is elevated, but a synchronized bear (2022) has HIGH dispersion as names fall apart, so the strategy was fully invested long-only crypto beta (per_name_frac 0.30 × top-3 ≈ 90% gross) straight into the crash. The +766% total_return is single-regime (2021 +573% carries everything, and end_unrealized_pct 69.5 means part is unrealized MTM), and the gate adds negative active value versus the plain equal-weight basket (information_ratio -0.24). This is the identical failure to the crowding-filtered momentum sibling reviewed just before — both bolt a regime filter onto the deployed momentum basket, both still hit ~65% drawdown, both underperform the basket benchmark. The deployed cross-sectional momentum winner already captures this premium; adding a dispersion ON/OFF gate reproduces its beta and its fatal bear drawdown without delivering the promised protection. Optimizing momentum_lookback/dispersion_median_lookback cannot create drawdown protection the always-invested-long structure lacks — it would only overfit the 2021 bull. Not worth 2 hours of optimization.
Implementation
Long-only weekly cross-sectional momentum rotation over 8 deep BINANCE USD-M majors (BTC/ETH/SOL/BNB/AVAX/LINK/ADA/XRP, 1-DAY bars), gated by a cross-sectional DISPERSION regime. Weekly it ranks names by trailing relative strength (return over momentum_lookback days) and measures cross-sectional dispersion (std of the per-name relative-strength values). When current dispersion is at/above its rolling median (dispersion_median_lookback), winners are genuinely separating, so it holds an equal-weight top-3 (positive momentum only). When dispersion is compressed (majors moving together on common beta), the rotation would just churn fees for beta, so it steps aside to CASH. Dispersion is a pure ON/OFF timing gate — the return engine is the momentum premium. No supplementary data, no ticks; O(1)-ish per bar. 2 core parameters: momentum_lookback, dispersion_median_lookback.
Verification Results
Analyst: verify total_trades over the full span is high enough to distinguish edge from noise.
Verification Results
Measurability/trade-count caution for the analyst. The sandbox produced only 12 round-trip trades over 362 days. A weekly rotation over 8 names that steps to cash ~half the time (dispersion below median) yields few round trips; extrapolated over a multi-year backtest this is roughly 60-90 trades, near the ~100-trade measurability floor. Not a code defect (reuses a DEPLOYED momentum-rotation class), but the analyst should confirm the full-history trade count is adequately sampled before optimizing.
Verification Results
If alignment is not guaranteed by the base, gate the snapshot on all legs sharing the same ts_event before computing momenta.
Verification Results
The code assumes calculate_signal (primary BTC bar) runs only after all 8 same-timeframe legs are buffered (alignment barrier), and snapshots each leg's latest close there. If the base template does not strictly guarantee same-timestamp alignment, _latest_bar(iid) for a non-primary leg could be one bar stale, introducing a consistent 1-bar lag in momentum/dispersion. Would not flip polarity or break trading, but could slightly shift ranks.
Verification Results
No action needed; growth is bounded.
Verification Results
Static analyzer flagged self._disp_hist as potentially unbounded, but the code DOES trim it to dispersion_median_lookback each bar — false positive. Noted so it is not treated as an open defect.
Backtest Review
Dispersion regime gate is a genuinely distinct, L24-sanctioned ON/OFF signal not used by the deployed basket
Backtest Review
profit_factor 1.58 and avg_trade_return_pct 10.4% clear fees; pure-price and timeout-safe
Backtest Review
max_drawdown 67.64% (CI high 76%) — far past the 50% hard-abandon floor; the dispersion gate did NOT cap the tail
Backtest Review
Single-regime: 2021 +573% carries the +766% headline; 2022 -55.5% — always-invested long-only beta when 'on' eats the full bear drawdown
Backtest Review
The cash gate doesn't trigger in a synchronized bear (dispersion stays elevated as names fall apart), so it provides no tail protection
Backtest Review
information_ratio -0.24 vs its equal-weight-basket benchmark — adds negative active value; end_unrealized_pct 69.5 (headline partly unrealized)
Backtest Review
Same structural failure as the crowding-filtered momentum sibling (regime filter on the deployed basket, still ~65% DD, still underperforms benchmark)
Outcome Summary
DispersionGatedMomentumRotationLong was the sibling proposal to the crowding-filter variant, bolting a second regime signal — cross-sectional return dispersion — onto the deployed momentum rotation so it would only concentrate into the top-3 when winners were genuinely separating and revert to cash when they were not. The backtest produced a +766% headline (single-regime, carried by 2021's +573% and 69.5% unrealized) with a healthy 1.58 profit factor, but Sharpe was just 0.748 and the max drawdown hit 67.64%. The fatal flaw was structural: dispersion actually rises in a synchronized bear as names fall apart, so the gate stayed ON straight into the 2022 crash and lost -55.5%, adding negative active value (IR -0.24) over the equal-weight benchmark. The analyst abandoned it at backtest-review as the identical failure to its crowding-filtered sibling — a regime filter on the same always-invested long-only structure that still hit ~65% drawdown and underperformed the basket, where optimization could only overfit the 2021 bull.
Outcome Summary
A dispersion 'on/off' gate does not provide crash protection because synchronized bear markets exhibit high dispersion as names diverge downward, keeping an always-invested long-only basket fully exposed to beta; timing when to deploy momentum cannot substitute for a structural hedge or exit against directional drawdown.
Outcome Summary
abandoned
Outcome Summary
It was abandoned at backtest-review (verdict: abandon) because the 67.64% drawdown breached the 50% hard-abandon floor and the dispersion gate failed to protect the tail — in a synchronized 2022 bear, dispersion stayed elevated as names fell apart, so the gate stayed ON and the book ate -55.5% of long-only crypto beta while adding negative active value (IR -0.24) over the plain basket.
Outcome Summary
It reused the deployed cross-sectional relative-strength momentum rotation across 8 USD-M majors (weekly equal-weight top-3) and added a dispersion regime gate that runs the rotation only when cross-sectional return dispersion is above its rolling median and steps aside to cash when dispersion is compressed, aiming to avoid fee churn and concentration risk in regimes where momentum adds nothing.
Outcome Summary
Over 2,397 days it produced 143 trades with a headline +766% total return, profit factor 1.58, and avg_trade_return_pct 10.4%, but Sharpe was only 0.748, win rate 44%, max drawdown 67.64% (CI high 76%), information ratio -0.24 versus the equal-weight-basket benchmark, and end_unrealized_pct was 69.5%.
Backtest and paper results are hypothetical. Trading involves risk of loss.