CrossSectionalMomentumDollarNeutralBasketLS
Hypotheses
Binance USD-M Cross-Sectional Momentum Dollar-Neutral Basket (Relative-Strength Rank, Broad Alt Universe, Weekly Rebalance, Long-Short)
Hypotheses
A dollar-neutral, multi-instrument CROSS-SECTIONAL (relative-strength) momentum basket across a broad universe of ~20 liquid Binance USD-M alt perpetuals. Each rebalance, assets are RANKED against each other by trailing risk-adjusted return; the basket goes LONG the top-ranked relative winners and SHORT the bottom-ranked relative losers, in equal dollar notional. This is a DIFFERENT factor from the factory's one promoted edge (time-series/absolute momentum, where each asset is judged on its OWN trend — Sharpe 1.48): cross-sectional momentum harvests DISPERSION (winners keep outperforming losers) and is market-neutral by construction, so it is complementary rather than redundant. It is also distinct from the existing 7-day cross-sectional REVERSAL (opposite sign — that buys losers; this buys winners — and a longer ~30-day horizon). Critically, it is chosen for DATA-SAFETY: it uses Binance USD-M OHLCV only — the one surface that reliably backtests in this harness — avoiding every infrastructure block that killed recent novel ideas (Deribit no per-option data, COIN-M inverse-sizing broken, Hyperliquid alt daily bars unavailable, liquidations live-WS-only, multi-leg funding primary-symbol-only). The broad Binance universe (deepest available) is the statistical-robustness ingredient cross-sectional ranking needs, which the data-sparse non-Binance venues cannot provide. Same-venue, same daily timestamps; few parameters to resist overfitting. Improves the portfolio's most-skewed dimension (87% long-only) with a genuinely market-neutral sleeve.
Hypotheses
Iteration 2 fix: Layer 2 synthetic verification failed with `_bar_ts() takes 1 positional argument but 2 were given` — the `@staticmethod` decorator on `_bar_ts` was not being honored under the NautilusTrader/Cython base class, so the call `self._bar_ts(bar)` passed both `self` and `bar` to a 1-arg function. The smallest fix converts `_bar_ts` from a staticmethod to a normal instance method `def _bar_ts(self, bar)`, which correctly accepts `(self, bar)`. No other logic changed — all earlier-passing layers (imports, structure, signal computation) are untouched. The strategy implements the hypothesis: dollar-neutral cross-sectional momentum harvesting dispersion across a broad Binance USD-M universe, market-neutral by construction, using only reliably-backtestable Binance OHLCV.
Hypotheses
Failed the forward holdout and multiple-testing robustness decisively on optimization attempt 1. The untouched time-ordered HOLDOUT FAILED and is NEGATIVE (holdout_sharpe -0.635, ratio -1.202 vs the 0.70 bar; walk-forward-OOS baseline 0.529) — the recent regime loses money, realizing the decay visible in the returns (2026 annual -14.1%, rolling Sharpe sliding to ~-5 through 2026). PBO=0.5741 (>0.5) means the parameter selection is more likely than not overfitting, and the base edge is not significant to begin with: Sharpe 0.52 with sharpe_ci_low -0.16 straddling 0, profit_factor a fee-fragile 1.109, information_ratio -0.34. The apparent full-sample profit is outlier-carried (2021 alone +118% while 2026 is negative; return_kurtosis 103, skew 6.2, a +37% single week 2021-02-19) rather than a persistent dispersion premium. deflated_sharpe is null (not computable), so significance cannot even be confirmed. Not iterate (attempt 1 of 2): the binding failure is a NEGATIVE forward holdout driven by genuine recent regime decay, not an under-explored parameter region — the entire sensitivity surface sits uniformly at ~0.40-0.58 Sharpe (one cliff on rebalance_days), so a second best-of-225 sweep re-selects the same weak, decaying config with no robust region to tune toward. Not revise_hypothesis: cross-sectional momentum was already handed the broadest, deepest Binance USD-M alt universe (its own stated robustness ingredient) on the one reliable data surface, and there is no promoted cross-sectional-momentum sibling stranded on a dead target — this is a weak-edge/forward-generalization failure, not a wrong-instrument premise. FAILURE PATTERN: a genuinely market-neutral, non-overfit-flagged 20-asset cross-sectional relative-strength momentum basket (avg IS 1.33 -> avg OOS 0.53) still fails promotion because its edge is thin (PF 1.11), insignificant (Sharpe CI through 0), 2021-outlier-concentrated (kurtosis 103), and decayed in the recent regime — producing a NEGATIVE forward holdout (-0.635) and PBO 0.57. A clean sensitivity surface and a positive walk-forward OOS measure consistency, not forward-generalization or significance, and do not rescue a market-neutral sleeve whose out-of-sample holdout loses money.
Implementation
Dollar-neutral cross-sectional (relative-strength) momentum basket across ~20 liquid Binance USD-M alt perpetuals on 1-DAY bars. Each weekly rebalance ranks the universe by trailing 30-day risk-adjusted return (momentum/vol), goes long the top 5 winners and short the bottom 5 losers in equal dollar notional (gross 1.0x, net 0). Rebalances via direct per-leg orders with low-churn resizing.
Verification Results
Verification failed (Layer 2 — synthetic scenarios):
Parameters used: ['top_n', 'assets', 'lookback', 'gross_cap', 'vol_floor', 'resize_frac', 'min_notional', 'qty_precision', 'rebalance_days', 'default_qty_precision']
Check that __init__ sets all attributes from self.parameters.get().
- steady_uptrend: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
- steady_downtrend: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
- flat_ranging: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
- volatility_spike: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
- zero_volume: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
- price_gap: TypeError: CrossSectionalMomentumDollarNeutralBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)
Backtest Review
Trades match the hypothesis precisely: 510 long / 588 short, dollar-neutral, beta 0.02, benchmark_correlation 0.06 — a genuinely market-neutral sleeve, not a closet long. This is the differentiated cross-sectional factor the hypothesis promised.
Backtest Review
Healthy trade sample (1098 trades over 5.7 years) — enough to make walk-forward/sensitivity statistically meaningful rather than noise-fitting.
Backtest Review
Multi-instrument execution across 20 Binance USD-M alts is functioning; metrics_reliable=true, no liquidation, positive expectancy across most annual buckets (2021–2025 all positive).
Backtest Review
Positive alpha (0.15) and information vs equal-weight basket; data-safe venue choice avoids the infra blocks that killed recent ideas.
Backtest Review
Modest Sharpe 0.52 with sharpe_ci_low -0.16 straddling zero — significance is marginal before any multiple-testing correction.
Backtest Review
Recent regime decay: 2026 annual -14%, rolling Sharpe negative through H1 2026 — this is the primary risk the holdout gate will test.
Backtest Review
Thin profit_factor (1.11) with ~5% modeled market impact — the edge is real but not fat; fee/impact fragility is a concern.
Backtest Review
Elevated return_kurtosis (103) / skew (6.2) — some contribution concentrated in 2021 dispersion spikes (Feb +37%, Jun +40%).
Analysis
Genuinely market-neutral by construction (beta 0.0215, benchmark_correlation 0.0585) — addresses the portfolio's 87% long-only skew if it worked
Analysis
Walk-forward not flagged overfit (avg IS 1.33 -> avg OOS 0.53, ratio ~2.5 < 3.0 threshold); a real but marginal OOS edge exists
Analysis
Sensitivity mostly clean (only 1 cliff: rebalance_days); low churn, engine-safe construction
Analysis
Adequate sample (1098 trades, 2085 data days, 225 trials) and clean data path on the reliable Binance USD-M surface
Analysis
Time-ordered HOLDOUT FAILED and is NEGATIVE: holdout_sharpe -0.635, ratio -1.202 vs the 0.70 bar — the recent regime loses money
Analysis
PBO 0.5741 > 0.5 — parameter selection is more likely than not overfitting
Analysis
Base Sharpe 0.52 with sharpe_ci_low -0.16 straddling 0 — not statistically significant; deflated_sharpe not computable (null)
Analysis
profit_factor 1.11 — thin, fee-fragile edge below the 1.2 viability bar; information_ratio -0.34
Analysis
Edge is outlier-carried (2021 annual +118% dominates; return_kurtosis 103, skew 6.2) and decaying (2026 annual -14%, rolling Sharpe to ~-5)
Analysis
Entire sensitivity surface sits at ~0.40-0.58 Sharpe — no robust region above a significance bar to tune toward
Outcome Summary
This strategy aimed to fill the portfolio's 87% long-only skew with a genuinely market-neutral cross-sectional momentum sleeve, ranking 20 Binance USD-M alts weekly to buy relative winners and short relative losers on the one data surface that reliably backtests. It cleared the pre-optimization gate ('optimize') on the strength of true neutrality, a healthy 1,098-trade sample, and a +258% headline return — despite a modest Sharpe of 0.52 and thin profit factor of 1.11. But optimization exposed the edge as thin and non-robust: PBO 0.57, a Sharpe CI straddling zero, 2021-outlier concentration, recent-regime decay, and a decisively failed, negative forward holdout (Sharpe -0.635). The analyst abandoned it on attempt one, concluding the failure was genuine weak-edge regime decay rather than an under-explored parameter region a second sweep could rescue.
Outcome Summary
A clean sensitivity surface and a positive walk-forward OOS Sharpe measure consistency, not forward-generalization or significance — an outlier-carried (2021-concentrated, kurtosis 103), decaying (2026 -14%), fee-fragile market-neutral edge with a Sharpe CI through zero will still fail a forward holdout.
Outcome Summary
The analyst issued an 'abandon' verdict after the first optimization attempt because the time-ordered holdout failed and was negative and PBO 0.57 indicated likely overfitting, so it never reached risk review or promotion.
Outcome Summary
A dollar-neutral cross-sectional (relative-strength) momentum basket across ~20 liquid Binance USD-M alt perpetuals that each weekly rebalance ranked assets by trailing risk-adjusted return and went long the top-ranked relative winners while shorting the bottom-ranked losers in equal dollar notional, aiming to add a market-neutral dispersion sleeve to a long-skewed portfolio using only reliable OHLCV data.
Outcome Summary
The full-sample backtest was genuinely market-neutral (beta 0.02, benchmark correlation 0.06) with 1,098 trades (510 long / 588 short) and a +258% total return, but only a marginal Sharpe of 0.52 (CI low -0.16, straddling zero), a thin profit factor of 1.11, and a 28.9% max drawdown; optimization then showed avg in-sample Sharpe 1.33 vs OOS 0.53, PBO 0.57, and a failed, negative holdout (Sharpe -0.635, ratio -1.202 vs the 0.70 bar).
Backtest and paper results are hypothetical. Trading involves risk of loss.