Skip to content

View original

BnbWeekendDrawdownMeanReversionLongDaily

Hypotheses

BNB Weekend Drawdown Mean Reversion on Daily Bars

Hypotheses

A long-only single-instrument calendar-effect mean reversion strategy on BNBUSDT perpetual futures using daily (1D) bars. The hypothesis exploits a well-documented but underexploited microstructure pattern in crypto: weekend liquidity drainage on centralized derivatives venues. From late Friday UTC through Sunday UTC, market-maker inventory and CEX desk activity drop sharply (TradFi closed, Asian institutional flow muted), so order books thin out and even modest sell flow produces exaggerated drawdowns. By Monday Asia open and the US institutional Tuesday, liquidity returns and overshoots tend to revert. The strategy waits for a meaningful weekend drawdown then takes a 2-3 day reversion long. This is structurally distinct from the failure set: not trend-following, not a standard indicator, not a funding/L-S contrarian, and uses only OHLCV. BNBUSDT is chosen because (a) it's not in the failure set or current pipeline, (b) it has high crypto-native CEX trading concentration (Binance ecosystem token) so the weekend effect is more pronounced than on BTC where TradFi flows dominate, and (c) it's liquid enough for clean fills.

Hypotheses

Iteration-2 minimal fix for the Layer-2 TypeError (_weekday() takes 1 positional argument but 2 were given). Root cause: _weekday was declared as a @staticmethod, but the Layer-2 _StrategyProxy rebinds class callables onto a stand-in instance, which discards the staticmethod descriptor and passes the proxy instance as an injected first positional argument — so the 1-param function is called with 2 args and raises across every synthetic scenario. The fix moves _weekday out of the class to a module-level function (module functions are never bound to an instance, so no self can be injected) and updates the single call site from self._weekday(ts) to _weekday(ts). Nothing else changed: imports stay clean (datetime still used by the module function, Layer 1 green), and the weekend-drawdown signal/entry/exit/sizing logic is byte-identical, so no earlier-layer regression. Venue remains BINANCE USD-M futures, leverage 1.0 (not used for amplification, so the leverage_set_but_unused gate does not trigger).

Hypotheses

The weekend-drawdown mean-reversion premise has NO edge on BNB: profit_factor 0.881, Sharpe -0.33, total_return -11.6% over 6.4 years, negative expectancy (-$257.7/trade), omega 0.91. The strategy is implemented correctly and trades exactly as the calendar hypothesis specifies (44 weekend-drawdown entries, 0 dropped, ITER-2 fix worked), so this is a hypothesis-level no-edge result, not a code bug to iterate. The signal is sparse (~7 trades/yr) and the only positive year is 2021 (+33.1%), itself carried by two bull-mania outlier days (2021-05-24 +16.3%, 2021-03-01 +10.6%); every other year is flat or negative (2022 -17.8%, 2024 -9.8%, 2026 -7.8%) with rolling Sharpe -3.5 by 2026, alongside a 33% max drawdown. Fading weekend sell-offs at the 3% threshold has negative expectancy — overshoots continue as often as they revert — and optimizing the calendar/threshold params via best-of-225 on a sparse, net-losing base would only fit the 2021 outliers and fail the recent holdout. Not worth 2 hours. FAILURE PATTERN: single-asset calendar-effect (weekend-drawdown) mean-reversion long on a crypto major produces a net-negative, sparse result (PF 0.88, negative Sharpe/expectancy) whose only positive contribution is a couple of 2021 bull-mania outlier days — the weekend-liquidity-drainage reversion thesis does not generate a fee-surviving edge on BNB, and a pure calendar/threshold rule offers no optimizable signal to rescue it, the same no-edge calendar-strategy signature as the abandoned SOL turn-of-month strategy.

Implementation

Long-only weekend-drawdown mean-reversion calendar strategy on BNBUSDT.BINANCE USD-M futures, DAILY bars, pure OHLCV. Records the Friday UTC close, then on the Sunday UTC weekend-end bar measures the weekend drawdown vs that Friday close and enters LONG when it has fallen at least 3% (a liquidity-drainage overshoot). Exits on a 4% take-profit, 4% stop, or after 3 days (the reversion window). The signal is the continuous weekend-drawdown magnitude recomputed every bar; the calendar+drawdown condition is the discrete entry gate. leverage 1.0.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['entry_dow', 'friday_dow', 'min_notional', 'position_pct', 'max_hold_days', 'stop_loss_pct', 'take_profit_pct', 'drawdown_threshold'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000) - steady_downtrend: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000) - flat_ranging: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000) - volatility_spike: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000) - zero_volume: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000) - price_gap: TypeError: BnbWeekendDrawdownMeanReversionLongDaily._weekday() takes 1 positional argument but 2 were given (bar timestamp: 1735689720000)

Backtest Review

Implemented correctly and trades as specified: 44 weekend-drawdown reversion entries, 0 dropped, all long — no code bug; ITER-2 staticmethod fix worked

Backtest Review

No edge, net losing: profit_factor 0.881, Sharpe -0.33, Sortino -0.41, omega 0.91, total_return -11.6% over 6.4 years, expectancy -$257.7/trade (negative)

Backtest Review

Sparse and regime-concentrated: 44 trades (~7/yr); the only positive year is 2021 (+33.1%), driven by two bull-mania outlier days (2021-05-24 +16.3%, 2021-03-01 +10.6%); negative in 5 of 7 years

Backtest Review

High risk: max_drawdown 33.2% (CI to 55%), downside_deviation 36.5%, annualized_vol 45.6%, rolling Sharpe -3.5 by 2026

Backtest Review

Premise not borne out: fading weekend sell-offs in BNB has negative expectancy at the 3% threshold — overshoots continue as often as they revert; optimizing calendar/threshold params on a no-edge sparse base would fit the 2021 outliers and fail the holdout

Outcome Summary

This strategy bet that weekend liquidity drainage on Binance produces exaggerated BNB drawdowns that revert by Monday, buying after a ≥3% Friday-to-Sunday sell-off. A prior iteration crashed in Layer-2 on a staticmethod descriptor issue; the iter-2 fix (moving the weekday helper to module level) let it run cleanly — 44 entries, none dropped — confirming the implementation was correct. But the premise didn't hold: profit factor 0.881, negative Sharpe and expectancy, -11.6% over 6.4 years, and a 33% drawdown, with the only green year (2021) resting on two bull-mania outlier days. The analyst abandoned it before optimization, judging that fading weekend sell-offs simply has negative expectancy on BNB and that tuning a sparse calendar rule would only overfit the 2021 spikes and fail the recent holdout.

Outcome Summary

The weekend-liquidity-drainage reversion thesis does not generate a fee-surviving edge on BNB — a pure calendar/threshold rule is sparse (~7 trades/year), net-losing, and dependent on a couple of 2021 bull-mania days, with no optimizable signal to rescue it (the same no-edge calendar signature as the abandoned SOL turn-of-month strategy).

Outcome Summary

The analyst abandoned it at backtest review as a hypothesis-level no-edge result rather than a bug — after the iter-2 staticmethod fix the code traded exactly as the calendar rule specified, but fading weekend sell-offs at the 3% threshold has negative expectancy (overshoots continue as often as they revert), and optimizing sparse calendar/threshold params would only fit the 2021 outliers and fail the holdout.

Outcome Summary

A long-only calendar-effect mean-reversion strategy on BNBUSDT daily perpetual futures (pure OHLCV), buying a 2-3 day reversion after a meaningful weekend drawdown (Sunday close ≤ 3% below the Friday reference), on the thesis that weekend CEX liquidity drainage produces exaggerated sell-offs that revert when liquidity returns.

Outcome Summary

Over 6.4 years it took 44 weekend-drawdown entries (~7/year, all long, none dropped) with no edge: profit factor 0.881, Sharpe -0.33, Sortino -0.41, total return -11.6%, expectancy -$257.7/trade, and a 33.2% max drawdown (CI to 55%); its only positive year was 2021 (+33.1%), carried by two bull-mania outlier days, with five of seven years flat or negative and rolling Sharpe at -3.5 by 2026.
Strategy report

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