VolumeClimaxExhaustionReversalLSBasket4H
Hypotheses
Binance USD-M Volume-Climax Exhaustion Reversal (Majors + High-Beta, 4H, Capitulation/Blow-off Fade, Fast-Stop, Long-Short)
Hypotheses
A long-short mean-reversion strategy that fades the price OVERSHOOT created by panic/forced flow, detected via VOLUME CLIMAX on 4-hour bars across ~6 liquid Binance USD-M perps (BTC, ETH, SOL, BNB, XRP, DOGE). It is the same mechanically-sound 'forced-flow exhaustion reversal' the analyst flagged as worth revisiting (the abandoned liquidation-cascade idea) — but it signals the exhaustion with raw OHLCV VOLUME (a fully-backtestable proxy for the liquidation cascade) instead of the liquidations feed, which has no historical coverage. When a single asset prints a high-volume capitulation DOWN bar (volume spike + large negative return = panic/forced selling that overshoots fair value), the strategy buys the snapback; on a high-volume blow-off UP bar, it shorts. This is explicitly NOT the refuted basis/ratio mean-reversion (which fades a tight or non-stationary SPREAD and is fee-dominated/drift-dominant) — it fades a large directional PRICE overshoot, and the volume-climax gate is the 'specific microstructure twist' the factory mandate requires for MR to survive crypto noise. It is also the opposite sign to the existing volume-SURGE-continuation longs (which buy breakouts on volume; this fades the climax). It runs only on Binance USD-M OHLCV — the one reliably-backtestable surface — avoiding every infrastructure block hit this session (liquidations live-WS-only, Deribit/COIN-M/Hyperliquid/funding data paths). Long-short improves the 87%-long skew; the large-move requirement is the fee-domination defense; few parameters resist overfitting.
Hypotheses
Iteration 2 fix for the Layer-2 synthetic failure (`TypeError: super(type, obj): obj must be an instance or subtype of type`). The Layer-2 `_StrategyProxy` binds overridden methods to a plain `_Wrapper` that is not an instance of the strategy class, so the zero-arg `super().on_extra_bar(bar)` raised TypeError on the first extra bar of every scenario. The base `on_extra_bar` is a documented no-op and the proxy (like the real engine's `on_bar`) already buffers the extra bar into `self._extra_bars` before invoking the override, so that `super()` call was redundant. The single minimal change removes the `super().on_extra_bar(bar)` line in `on_extra_bar`; the volume-climax fade signal, risk-parity sizing, ATR bracket exits, gross cap, and per-asset timestamp-guarded basket sweep are all unchanged, preserving the already-passing Layer-1 static checks.
Hypotheses
The volume-climax mean-reversion FADE has a structurally negative edge, confirmed over 6+ years: Sharpe -1.77 (CI entirely negative), profit factor 0.66, negative per-trade expectancy, and a loss in every single full year (2020 through 2025), ending -69.6% with a 71.8% drawdown. This is not a trade-count, sparsity, or broken-signal problem — the strategy fires 844 times and correctly implements the hypothesis; it simply loses because crypto volume-climax bars CONTINUE (forced-flow momentum) rather than revert. Optimization searches within the mechanism and cannot flip a uniformly negative edge positive; the only 'fix' (inverting the sign) would recreate the already-existing volume-surge continuation strategy the hypothesis itself cites as the profitable direction. The fade premise is the flaw, so this is abandon rather than a developer iterate.
Implementation
Long-short mean-reversion that fades panic/forced-flow price overshoots detected via volume climax on 4H bars across 6 liquid Binance USD-M perps (BTC, ETH, SOL, BNB, XRP, DOGE). A high-volume capitulation down bar (volume > vol_mult × avg AND move > move_atr_mult × ATR negative) triggers a long snapback; a high-volume blow-off up bar triggers a short. Each position is bracketed with a tight ATR fast-stop, an ATR snapback take-profit, and a max-hold backstop. Risk-parity sizing per book with a per-position notional cap and a 1.0x portfolio gross cap (no leverage). Pure OHLCV, fully backtestable.
Verification Results
Verification failed (Layer 2 — synthetic scenarios):
Parameters used: ['assets', 'vol_mult', 'bar_hours', 'risk_frac', 'atr_period', 'vol_window', 'tp_atr_mult', 'min_notional', 'max_hold_bars', 'move_atr_mult', 'qty_precision', 'stop_atr_mult', 'gross_cap_frac', 'max_position_frac', 'default_qty_precision']
Check that __init__ sets all attributes from self.parameters.get().
- steady_uptrend: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
- steady_downtrend: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
- flat_ranging: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
- volatility_spike: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
- zero_volume: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
- price_gap: TypeError: super(type, obj): obj must be an instance or subtype of type (bar timestamp: 1735689600000)
Backtest Review
Strategy is mechanically functional: 844 trades, 16% exposure, signal triggers cleanly across the full history — not a sparsity or frozen-signal problem
Backtest Review
Clean construction (risk-parity, gross cap, long-short balanced ~395 long / 449 short)
Backtest Review
Structurally negative edge: Sharpe -1.77 with the entire 95% CI negative (-2.86 to -0.62), profit factor 0.66, Sortino -1.83, negative expectancy per trade
Backtest Review
Loses money in EVERY full year (2020 -17.9%, 2021 -16.7%, 2022 -21.1%, 2023 -20.2%, 2024 -8.0%, 2025 -8.5%) — a consistent inverse edge, not regime-specific noise
Backtest Review
Total return -69.6%, max drawdown 71.8% — near-total capital loss over the test window
Backtest Review
The fade premise is refuted: high-volume climax bars in crypto continue (forced-flow momentum) rather than revert, which is why the cited volume-SURGE-continuation sibling is the profitable sign of this exact signal
Outcome Summary
This strategy tried to harvest the forced-flow exhaustion reversal that the liquidation-cascade idea could not backtest, substituting a raw-OHLCV volume climax as a fully-historical proxy and fading large directional overshoots long-short across six majors. Mechanically it worked perfectly — 844 well-balanced trades firing across the entire history — but it bled capital relentlessly, posting a Sharpe of -1.77 with a wholly-negative confidence interval, a profit factor of 0.66, and a loss in every single full year, ending down 69.6% with a 71.8% drawdown. The backtest reviewer abandoned it before optimization, concluding the fade direction itself is wrong: volume-climax bars continue rather than revert, so the only 'fix' would simply recreate the already-profitable volume-surge continuation strategy the hypothesis cited. After two iterations it was closed out as a structurally inverted edge, not a tunable one.
Outcome Summary
High-volume climax bars in crypto are a continuation signal, not a reversion one — fading them inverts the profitable volume-surge-continuation edge, so the mean-reversion sign of this exact signal is structurally a loser.
Outcome Summary
It was abandoned at the pre-optimization backtest-review gate (optimization never ran) because the fade premise is refuted: crypto volume-climax bars continue on forced-flow momentum rather than revert, producing a consistent inverse edge that optimization within the mechanism cannot flip positive.
Outcome Summary
Fade the price overshoot from panic/forced flow by using a 4H volume climax as a backtestable proxy for liquidation cascades — buying high-volume capitulation down-bars and shorting high-volume blow-off up-bars across ~6 liquid Binance USD-M perps (BTC, ETH, SOL, BNB, XRP, DOGE) with ATR brackets and risk-parity sizing.
Outcome Summary
The signal fired cleanly — 844 trades (395 long / 449 short) at 16% exposure — but the edge was structurally negative: Sharpe -1.77 with the entire 95% CI below zero (-2.86 to -0.62), profit factor 0.66, Sortino -1.83, negative per-trade expectancy, total return -69.6%, and a 71.8% max drawdown. It lost money in every full year from 2020 through 2025.
Backtest and paper results are hypothetical. Trading involves risk of loss.