Skip to content

View translation

BinanceDailyCrossSectionalVolumeAttentionReversalLS

Hypotheses

Daily Cross-Sectional Volume Attention Reversal: Long Lowest-Volume-Z + Short Highest-Volume-Z Across 6 Major Binance Perps

Hypotheses

A dollar-neutral, cross-sectional mean-reversion strategy on 6 major Binance USD-M perpetuals (BTC, ETH, SOL, BNB, AVAX, LINK — all confirmed clean OHLCV data) that captures the ATTENTION ANOMALY documented in equity factor research and observable in every crypto cycle. Every 24 hours, the strategy computes each asset's volume z-score relative to its 30-day baseline (today's volume - mean_30d) / std_30d, ranks the 6 assets by this z-score, goes LONG the 2 assets with the LOWEST volume-z (most-neglected, under-attended) and SHORT the 2 assets with the HIGHEST volume-z (FOMO/attention-spiked, typically near local tops or panic peaks). Equal-weighted within each leg, dollar-neutral, hold 24h, re-rank. Middle 2 assets excluded. This is the FIFTH in the cross-sectional series on the same universe — covering five orthogonal signal axes: DailyCrossSectional7DReturnReversal (DIRECTION), DailyCrossSectionalLowVolAnomaly (MAGNITUDE), DailyCrossSectional60DayDrawdownReversal (POSITION VS PEAK), DailyCrossSectionalBTCCorrelationReversal (RELATIONSHIP), and this strategy (ATTENTION). Together they form a complete mean-reversion factor stack on the major-basket. The attention-reversal mechanism: low-volume assets have been forgotten by retail and arbitrageur capital, often trading at depressed levels due to neglect; high-volume assets are crowded with FOMO buyers (at tops) or panic sellers (at bottoms), creating overshoots in both directions. The cross-sectional ranking captures the EXTREMES regardless of direction. Hong-Lim-Stein (2000), Da-Engelberg-Gao (2011) documented this in equities; well-observed in crypto FOMO bull-runs and post-FTX-style attention shocks. Uses ONLY BINANCE USD-M perp DAILY bars — no supplementary data, no spot, no options. Avoids ALL confirmed failure modes. Fills FIVE under-represented buckets: long-short direction (14.5% → toward 45%), multi-instrument scope (8.2% → grow), cross-sectional mechanism class (confirmed winner), portfolio diversifier via 5th orthogonal axis, and OHLCV-only data dependency. Position sizing: 12% per leg × 4 legs = 48% gross exposure, dollar-neutral.

Hypotheses

Iteration 3 fixes the Layer-2 synthetic failure: `_zscore_from` (and its sibling `_symbol_of`/`_quantize_qty` helpers) were `@staticmethod`s. The Layer-2 _StrategyProxy rebinds class functions as bound instance methods, which strips the staticmethod descriptor, so `self._zscore_from(base, current)` was passing `self` as a third positional arg into a 2-arg function -> TypeError on every scenario. Converting these three helpers to plain instance methods (adding `self`, dropping `@staticmethod`) makes the bound-call arity correct in both the proxy and real backtest paths. All call sites already used `self.`, so no call-site changes were needed and the previously-passing signal/rebalance/sizing logic is unchanged.

Hypotheses

Volume-attention-reversal premise is empirically inverted on the 6-major Binance perp basket: the strategy loses money in EVERY calendar year 2020-2026 (Sharpe -1.71, CI entirely below 0, PF 0.70, -92.7% total return, negative per-trade expectancy). The code correctly implements the hypothesis (balanced 1,572 long / 1,633 short dollar-neutral), so this is not a fixable code or parameter issue — it is a dead premise with consistent anti-edge across all regimes, which no best-of-225 optimization can rescue. NOTE FOR RESEARCH LEAD: the monotone, near-symmetric negativity (not noise) suggests the OPPOSITE effect may hold on crypto majors — attention MOMENTUM (long highest-volume-z, short lowest-volume-z) rather than reversal. If the cross-sectional series is to add a sixth axis, test the inverted-sign variant rather than re-tuning this one; abandoning here loses no validated edge.

Implementation

Dollar-neutral cross-sectional volume-attention reversal on 6 major Binance USD-M perps (BTC, ETH, SOL, BNB, AVAX, LINK), daily bars, pure OHLCV. Each day computes each asset's volume z-score vs its prior 30-day baseline, ranks all 6, goes long the 2 lowest-z (neglected) and short the 2 highest-z (FOMO/panic attention-spiked), equal-weight, ~48% gross / ~0% net, holds 24h, re-ranks.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['min_notional', 'rebalance_days', 'leg_capital_pct', 'n_legs_per_side', 'vol_baseline_days'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000) - steady_downtrend: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000) - flat_ranging: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000) - volatility_spike: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000) - zero_volume: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000) - price_gap: TypeError: BinanceDailyCrossSectionalVolumeAttentionReversalLS._zscore_from() takes 2 positional arguments but 3 were given (bar timestamp: 1735693260000)

Backtest Review

Code functions correctly: 3,205 trades, balanced 1,572 long / 1,633 short, dollar-neutral as designed

Backtest Review

Trades match the stated mechanism (long lowest-volume-z, short highest-volume-z) — this is not a bug

Backtest Review

Consistent anti-edge: Sharpe -1.71 with CI [-2.32, -1.12] entirely below zero

Backtest Review

Loses money in EVERY calendar year 2020-2026 (-17% to -68%); no regime works

Backtest Review

profit_factor 0.70, negative expectancy (-$29.70/trade), -92.7% total return, 92.7% max drawdown

Backtest Review

avg_trade_return is negative — edge is below trading costs and inverted, not marginal

Backtest Review

Uniform negativity across all years means optimization has no positive parameter region to tune toward

Backtest Review

all 7 years negative

Outcome Summary

This was the fifth strategy in a cross-sectional mean-reversion series on the 6-major Binance basket, betting that low-volume 'neglected' assets outperform high-volume 'FOMO' assets on a 24h re-rank. The code faithfully implemented the hypothesis — 3,205 balanced dollar-neutral trades — but the mechanism proved to be a dead premise, losing money in every year 2020–2026 with Sharpe -1.71, profit factor 0.70, and a -92.7% total return. The reviewer abandoned it before optimization since the anti-edge was consistent rather than noisy, while noting that the symmetric negativity hints the opposite sign (attention momentum) could hold and would be worth testing as the next axis.

Outcome Summary

The volume-attention-reversal premise is empirically inverted on crypto majors — the monotone, near-symmetric losses suggest attention MOMENTUM (long highest-volume-z, short lowest-volume-z) may be the real edge, so a future axis should test the inverted-sign variant rather than re-tune this one.

Outcome Summary

The backtest reviewer issued an 'abandon' verdict at the pre-optimization gate: the strategy failed every criterion (Sharpe, profit factor, avg trade return, all-years-positive) with uniform negativity across all regimes, so no parameter region existed to optimize toward and it never reached optimization or analyst review.

Outcome Summary

A dollar-neutral, cross-sectional daily mean-reversion strategy on 6 major Binance USD-M perps (BTC, ETH, SOL, BNB, AVAX, LINK) that ranked assets by 30-day volume z-score and went long the 2 lowest-volume-z (neglected) names while shorting the 2 highest-volume-z (attention-spiked) names, capturing the attention anomaly.

Outcome Summary

The code worked as designed — 3,205 trades, balanced 1,572 long / 1,633 short and dollar-neutral — but the edge was a consistent anti-edge: Sharpe -1.71 (CI [-2.32, -1.12] entirely below zero), profit factor 0.70, negative expectancy of -$29.70/trade, -92.7% total return and 92.7% max drawdown, losing money in every calendar year from 2020 to 2026.

Iteration History

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-1-DAY-LAST-EXTERNAL, Bars processed: 2330 Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Strategy report

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