CrossSectionalShortTermReversalDispersedAltBasketLS
Hypotheses
Cross-Sectional Short-Term Reversal on a Dispersed Alt Basket (Long Recent Losers / Short Recent Winners, Dollar-Neutral, Binance USD-M, 3-Day Signal, 2-Day Rebalance)
Hypotheses
A MARKET-NEUTRAL (dollar-neutral) CROSS-SECTIONAL SHORT-TERM REVERSAL strategy across a deliberately DISPERSED basket of ~12 liquid Binance USD-M perpetuals spanning multiple sectors and betas. This is the analyst's explicit, repeated recommendation implemented directly: 'cross-sectional REVERSAL (long bottom-k, short top-k) which benefits from mean-reverting spreads in the current chop regime... use a more dispersed universe (include lower-beta/uncorrelated names) so the rank spread carries real signal.' Every 2 days, rank each basket member by its trailing 3-day return; go LONG the bottom-K (recent relative LOSERS, which bounce) and SHORT the top-K (recent relative WINNERS, which give back), equal dollar weight per leg so the book is beta/dollar-neutral. CRITICAL DESIGN NOTES separating this from the closed families and recent failures: (1) it is the SIGN-FLIP of cross-sectional/absolute MOMENTUM, which the session declared dead on majors — short-term reversal is the regime-appropriate factor in the current 2025-26 mean-reverting chop; (2) it is PURE OHLCV — it uses NO supplementary data, deliberately avoiding the multi-year coverage holes in taker_ratio / open_interest that fragmented the backtests and made walk-forward degenerate for the signal-gated trend family (funding/OI/taker); (3) the universe is DISPERSED by construction (majors + L1s + L2s + DeFi + meme + payments) so the long-loser/short-winner rank spread carries real idiosyncratic signal rather than collapsing to tightened-major-correlation noise (the failure mode of the momentum baskets); (4) each leg is a DIFFERENT asset with genuine, non-cancelling relative price PnL the engine credits — not a same-asset basis/carry trade; (5) it rebalances every 2 days across 12 names, so every walk-forward OOS window is DENSELY populated — structurally immune to the event-sparsity / OOS-empty signature that killed the drawdown-accumulation class; (6) NOT cross-venue / HYPERLIQUID, NOT COIN-M, NOT ETH/BTC-ratio (exhausted), NOT single-symbol RSI MR. Intentionally minimal: 3 tunables (reversal_lookback, rebalance_days, basket_fraction).
Hypotheses
Iteration 2 fix: the Layer-2 synthetic proxy invokes `_bar_ts` with an implicit `self`, so the 1-arg `@staticmethod` received 2 positional arguments and raised TypeError across all six synthetic scenarios. Changed `_bar_ts` from a staticmethod (`def _bar_ts(bar)`) to a regular instance method (`def _bar_ts(self, bar)`) so it accepts the bound `self` plus `bar`. This is the only change; the call site `self._bar_ts(bar)` is unchanged and now passes exactly two positionals. All signal, ranking, sizing, and rebalance logic (which already passed Layer 1) is untouched, keeping earlier layers green.
Hypotheses
Not worth optimizing: this is a CLEAN backtest (no leverage/accounting artifact — vol 32%, sane per-trade PnL) that reveals a catastrophically NEGATIVE edge — total_return -97.6%, max_drawdown 97.7% (CI high 98.9%), Sharpe -0.71 (CI -1.30 to -0.03), profit_factor 0.86, expectancy -$23.7/trade, PSR 0.012 — losing in 5 of 7 years with a near-full-span drawdown and a catastrophic 2021 (-79.6%). There is no code bug to fix, so this is not an iterate; the short-term cross-sectional reversal factor is simply negative on a dispersed crypto-alt basket, because in risk-off cascades the recent losers keep falling and the shorts on recent winners get run over. Decisively, this is the SIGN-FLIP of the cross-sectional momentum baskets already abandoned this session and it performs far worse — neither sign of the cross-sectional alt factor has a fee-clearing edge — and it sits in the analyst's repeatedly-refuted reversion family. The 3 tunables (reversal_lookback, rebalance_days, basket_fraction) cannot turn a -97.6% wipeout positive; the failure is the factor itself, not its parameterization. (Note: abandon is for the empirically dead factor on a clean backtest — NOT a data or funding-crediting issue; the dollar-neutral construction is sound, the edge simply does not exist.)
Implementation
Dollar-neutral cross-sectional short-term reversal across a dispersed basket of 12 liquid Binance USD-M perpetuals. Every 2 days, ranks each member by its trailing 3-day return, goes long the bottom-3 (recent losers) and short the top-3 (recent winners), equal dollar weight per leg. Pure OHLCV, no leverage, gross exposure clamped to equity. Rebalances via direct per-leg orders driven from calculate_signal.
Verification Results
Verification failed (Layer 2 — synthetic scenarios):
Parameters used: ['assets', 'vol_floor', 'resize_frac', 'min_notional', 'num_per_side', 'qty_precision', 'rebalance_days', 'basket_fraction', 'reversal_lookback', 'default_qty_precision']
Check that __init__ sets all attributes from self.parameters.get().
- steady_uptrend: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
- steady_downtrend: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
- flat_ranging: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
- volatility_spike: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
- zero_volume: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
- price_gap: TypeError: CrossSectionalShortTermReversalDispersedAltBasketLS._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
Backtest Review
Clean, well-constructed dollar-neutral book (beta -0.09, benchmark_correlation -0.16), pure OHLCV, ample trade count (3,791), densely populated across the sample — no leverage/accounting artifact, metrics reliable
Backtest Review
Directly implements a stated recommendation and fills under-represented market-neutral/multi-instrument buckets in principle
Backtest Review
Catastrophically negative edge on a clean backtest: total_return -97.6%, max_drawdown 97.7% (CI high 98.9%), Sharpe -0.71 (CI -1.30 to -0.03), profit_factor 0.86, expectancy -$23.7/trade, PSR 0.012
Backtest Review
Losing in 5 of 7 years with a near-full-span drawdown (1,989 days) and a catastrophic 2021 (-79.6%) — short-term reversal breaks exactly when alts cascade together (losers keep falling, shorts on winners run over)
Backtest Review
It is the sign-flip of the cross-sectional momentum baskets already abandoned this session, and performs far worse — neither sign of the cross-sectional alt factor clears fees; sits in the repeatedly-refuted reversion family
Backtest Review
High kurtosis 108 / skew -5.2 and fee drag (commission 2.73% of gross, ~3.3-day churn) compound a factor that has no edge to begin with
Outcome Summary
Pitched as the analyst's own recommendation implemented directly — a regime-appropriate short-term reversal on a dispersed universe to give the rank spread real idiosyncratic signal — this dollar-neutral book was cleanly built with sane, reliable metrics. But the clean backtest exposed a catastrophic -97.6% return, a 97.7% drawdown, and a negative Sharpe, losing in 5 of 7 years and cratering -79.6% in the 2021 alt cascade. Recognizing it as the sign-flip of cross-sectional momentum baskets already abandoned this session (and performing far worse), the analyst abandoned it at the backtest-review gate as an empirically dead factor rather than a parameterization problem. It never reached optimization, risk review, or paper trading.
Outcome Summary
Neither sign of the cross-sectional alt factor clears fees — since this is the sign-flip of the momentum baskets already abandoned this session and performed far worse, the failure lies in the factor itself, not its three tunable parameters, so no optimization could rescue it.
Outcome Summary
The analyst issued an 'abandon' verdict at the pre-optimization backtest-review gate: the construction was sound (no bug to iterate on) but the short-term reversal factor was simply and decisively negative on a dispersed crypto-alt basket, breaking hardest in risk-off cascades where losers keep falling and shorts on winners get run over.
Outcome Summary
A dollar-neutral cross-sectional short-term reversal book across a deliberately dispersed basket of ~12 liquid Binance USD-M alt perpetuals, ranking each name by its trailing 3-day return every 2 days and going long the recent relative losers (expecting a bounce) while shorting the recent relative winners (expecting give-back) in equal dollar weight.
Outcome Summary
On a clean, bug-free backtest (2020-2026, 2,082 data days, 3,791 trades, annualized vol 32%) it had a catastrophically negative edge: total return -97.6%, max drawdown 97.7% (CI high 98.9%), Sharpe -0.71 (CI -1.30 to -0.03), profit factor 0.86, expectancy -$23.7/trade, and PSR 0.012. It lost money in 5 of 7 years with a near-full-span drawdown (1,989 days) and a catastrophic -79.6% in 2021.
Backtest and paper results are hypothetical. Trading involves risk of loss.