Skip to content

View original

CrossSectionalRelativeStrengthMomentumLSBasket

Hypotheses

Binance USD-M Cross-Sectional Relative-Strength Momentum Dollar-Neutral Basket (Established Majors Only, Market-Demeaned Rank, Weekly Rebalance, Long-Short)

Hypotheses

A dollar-neutral CROSS-SECTIONAL (relative-strength) momentum basket across ~10 ESTABLISHED, confirmed-full-history Binance USD-M majors (BTC, ETH, SOL, BNB, XRP, DOGE, ADA, LTC, LINK, BCH). Each rebalance it ranks the majors by trailing risk-adjusted return relative to the cross-sectional average, goes LONG the top relative performers and SHORT the bottom, in equal dollar notional. This is the data-safe salvage of the broad-alt cross-sectional/dual-momentum baskets that died purely on data_unavailable (ATOM/APT/ARB daily bars are missing) — restricting the universe to the established-majors set that the promoted basket proved is reliably backtestable removes the exact failure mode while preserving the logic. It is a genuinely distinct factor from the factory's promoted TIME-SERIES (absolute) momentum basket: cross-sectional momentum is ALWAYS dollar-neutral (long the strongest relative, short the weakest) regardless of the broad market's direction, so in a synchronized bull it stays market-neutral whereas the absolute-momentum basket goes net-long — making it a complementary, low-correlation sleeve, not a duplicate. It avoids every refuted class (no basis/ratio MR, no funding/carry, no intraday breakout, no options) and every blocked surface (alt-data gaps, Hyperliquid, COIN-M, Deribit, liquidations, multi-leg funding) by using only majors' daily OHLCV. Market-neutral construction improves the portfolio's most-skewed dimension (87% long-only), multi-instrument scope is under-represented vs single-symbol (72.6%), and weekly rebalance keeps fees low. Few parameters resist overfitting.

Hypotheses

Iteration 2 fix: the Layer-2 synthetic verifier rebinds strategy methods, which strips the @staticmethod decorator from `_bar_ts` and passes an implicit `self`, causing 'takes 1 positional argument but 2 were given'. Converting `_bar_ts` to a normal instance method `def _bar_ts(self, bar)` matches the `self._bar_ts(bar)` call site in both normal and proxy execution. This is the smallest change — nothing else was touched, preserving the already-passing Layer-1 static checks and all working signal/rebalance logic. The strategy implements the hypothesis's cross-sectional (relative-strength) momentum: always dollar-neutral (long strongest relative, short weakest) regardless of broad market direction, using only established-majors daily OHLCV to avoid the data_unavailable failure of broader-alt universes.

Hypotheses

Not worth optimizing on two independent grounds. (1) BROKEN RISK CONSTRUCTION: despite claiming dollar-neutral with gross hard-capped at 1.0x (no leverage), the backtest shows a -109.2% single-DAY return (2021-04-19), a -$190,769 single-trade loss (~190% of a $100k account), 79.5% max drawdown (CI high 120%), CAGR -100%, and 59.5% annualized vol — all physically impossible for a genuine dollar-neutral 1.0x-gross book. Realized gross exposure is far above the claimed cap (likely de-selected names not flattened, side-flips doubling exposure, or gross accumulating across rebalances), so the metrics are a blowup artifact of a sizing bug, not a real edge. (2) KNOWN-FAILING MECHANISM: this is a near-duplicate of the cross-sectional-momentum Binance-majors long/short basket already abandoned THIS session after full optimization for failing deflated Sharpe (DSR 0.17, optimized Sharpe below the best-of-225 luck bar) with a NEGATIVE forward holdout (-0.53) — same ~10-major universe, same dollar-neutral weekly-rebalance mechanism; adding risk-adjusted (ret/vol) scoring does not change the factor. Even a correct dollar-neutral rebuild would at best converge to that sibling's ~0.53 Sharpe that could not clear multiple-testing deflation, so iterating the sizing bug then optimizing would just re-derive a known dead end. The base itself has no edge (PF 0.945, negative expectancy). (Note: abandon is for the broken risk construction plus a mechanism already proven un-promotable on this exact universe this session — NOT any data-availability or funding-crediting issue; the cross-sectional momentum factor on liquid crypto majors is simply too weak to survive deflation.)

Implementation

Dollar-neutral cross-sectional relative-strength momentum basket across 10 established Binance USD-M majors (BTC, ETH, SOL, BNB, XRP, DOGE, ADA, LTC, LINK, BCH) on daily bars. Each weekly rebalance scores every name by risk-adjusted trailing return (ret/vol), demeans by the cross-sectional average, then goes LONG the 3 strongest relative performers and SHORT the 3 weakest in equal dollar notional. Gross exposure hard-capped at 1.0x (no leverage), vol floored to prevent 1/vol blow-ups. Rebalances directly via per-leg orders from calculate_signal; base single-position hooks are inert.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['assets', 'lookback', 'gross_cap', 'vol_floor', 'resize_frac', 'min_notional', 'num_per_side', 'vol_lookback', 'qty_precision', 'rebalance_days', 'default_qty_precision'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - steady_downtrend: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - flat_ranging: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - volatility_spike: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - zero_volume: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - price_gap: TypeError: CrossSectionalRelativeStrengthMomentumLSBasket._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)

Backtest Review

Healthy trade count (664) and genuinely low market correlation intent (beta -0.02); data-safe established-majors universe avoids the alt-data gaps that killed prior siblings

Backtest Review

Clean, few-parameter construction that is conceptually a complementary market-neutral sleeve

Backtest Review

Risk construction is broken: -109.2% single-day return (2021-04-19), -$190,769 single-trade loss (~190% of capital), max_drawdown 79.5% (CI high 120%), CAGR -100%, annualized vol 59.5%, kurtosis 409 — all impossible for a true dollar-neutral 1.0x-gross book, so realized gross exposure far exceeds the claimed cap (de-selected names not flattened / side-flip doubling / gross accumulation)

Backtest Review

No base edge: profit_factor 0.945, expectancy -$64.5/trade, total_return -40.1%, Sharpe 0.14 (CI low -0.50), losing in 4 of 7 years

Backtest Review

Near-duplicate of the cross-sectional-momentum Binance-majors L/S basket already abandoned THIS session after optimization for failing deflated Sharpe (DSR 0.17) with a negative holdout — same universe, same mechanism; risk-adjusted scoring is not a material differentiator

Backtest Review

benchmark_meaningful false (market-neutral) so judge on absolute metrics — which are catastrophic

Outcome Summary

This strategy was the data-safe salvage of earlier broad-alt cross-sectional momentum baskets, restricting the universe to ten established, reliably backtestable Binance USD-M majors while keeping the dollar-neutral, weekly-rebalance relative-strength mechanism. Its backtest showed no base edge (profit factor 0.945, -40.1% return, Sharpe 0.14) and, worse, exhibited impossible tail losses for a supposed 1.0x-gross neutral book — a -109% day and a -$190k single trade — signaling that realized gross exposure blew past the intended cap. The analyst abandoned it at the pre-optimization gate, noting it was also a near-duplicate of a cross-sectional momentum majors basket already killed this session for failing multiple-testing deflation with a negative holdout. It never reached optimization, risk review, or paper trading.

Outcome Summary

A dollar-neutral long/short book must actually flatten de-selected names and avoid side-flip/gross accumulation, and re-skinning a factor already proven un-promotable on the same universe (here, risk-adjusted scoring on liquid crypto majors) does not create a new edge.

Outcome Summary

The analyst issued an 'abandon' verdict at the pre-optimization backtest-review gate (so optimization never ran) on two grounds: the risk construction was broken (realized gross exposure far exceeded the claimed 1.0x cap, making the metrics a sizing-bug blowup rather than a real edge), and the strategy was a near-duplicate of a cross-sectional-momentum majors L/S basket already abandoned this session for failing deflated Sharpe (DSR 0.17) with a negative holdout (-0.53).

Outcome Summary

A dollar-neutral cross-sectional relative-strength momentum basket that each week ranks ~10 established Binance USD-M majors by risk-adjusted trailing return, going long the top relative performers and short the bottom in equal dollar notional, capped at 1.0x gross.

Outcome Summary

The initial backtest over 2019-2026 (2,114 data days, 664 trades) lost 40.1% total return with a Sharpe of 0.14 (CI low -0.50), a profit factor of 0.945 and negative expectancy of -$64.5/trade. It also produced physically impossible figures for a claimed dollar-neutral 1.0x-gross book — a -109.2% single-day return, a -$190,769 single-trade loss (~190% of capital), 79.5% max drawdown, and CAGR -100%.
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.