Skip to content

View translation

BtcFourHourKeltnerMeanReversionSymmetric

Hypotheses

BTC 4H Keltner Channel Mean Reversion (Symmetric)

Hypotheses

A simple, symmetric mean-reversion strategy on BTCUSDT perpetual futures using 4-hour bars and Keltner Channels (EMA midline +/- ATR multiple). The hypothesis: BTC 4H bars spend roughly 60-70% of calendar time in horizontal/range regimes punctuated by short trending bursts. During range regimes, price excursions beyond an EMA +/- 2*ATR envelope are statistically followed by reversion toward the midline within 1-3 bars. The strategy enters long when close pierces the lower channel and short when close pierces the upper channel, exits on a touch of the midline or the opposite channel, and uses an ATR-based hard stop to cap losses on the ~30% of the time when the range breaks (trending regime). Deliberately kept extremely simple (4 parameters total) to avoid the verification timeouts and overfitting issues seen in recent pipeline failures. Single instrument, single timeframe, no supplementary data, no multi-instrument coordination.

Hypotheses

Implements the hypothesis exactly and kept deliberately simple (4 tunable knobs) to avoid the overfitting/timeout issues cited. The signal is the close's distance from the EMA midline in channel-width units ((close-mid)/(atr_mult·ATR)), which is genuinely continuous and varies every bar — so it passes the Layer-2 frozen-signal check — and the entry decision is a clean threshold at ±1 (price outside the channel), giving symmetric long/short mean-reversion. Exits combine the mean-reversion target (return to the midline) with an ATR-scaled hard stop that self-adjusts across volatility and caps losses during the ~30% trending regime; the entry ATR/price are captured once per position for a stable stop reference. Helper methods are all instance methods (no @staticmethod called via self), avoiding the Layer-2 proxy callable-rebinding TypeError — verified by running the actual proxy across all six scenarios (no exceptions, 470–476 unique non-frozen signals). Risk-based sizing off the ATR stop gives controlled per-trade risk; leverage is 1.0 so sizing references no margin leverage (no inert-leverage gate), while the USD-M MARGIN venue still permits the short leg.

Hypotheses

Dead premise, not a code or sparsity problem. Symmetric Keltner-channel mean-reversion (fade EMA +/- 2*ATR back to the midline) has NO edge on BTC 4H: the strategy traded correctly as specified (425 fades, 180L/245S, ATR stop + midline target) yet lost money in EVERY year (2020 -18.7 ... 2026 -1.4), profit_factor 0.655, Sharpe -1.53, total_return -51.3%, expectancy negative. It shows the textbook inverted mean-reversion payoff: win_rate 0.569 but avg_win $370 << avg_loss $746 -- it captures many small reversions and gets run over on the ~30% trending time (skew -1.49, tail_ratio 0.60), exactly the failure mode the hypothesis flagged, and the ATR hard stop does not contain it. The Sharpe CI is entirely negative (-2.38 to -0.68) with probabilistic_sharpe 0.0002, so the true Sharpe is near-certainly negative, and both legs lose (long_win 0.61 / short_win 0.54, net-negative). The 4 tunable parameters (ema_period, atr_period, atr_mult, stop_atr_mult) cannot convert a mechanism that loses in every year and both directions; optimization would fit noise. Not iterate (trades match the hypothesis -- nothing to fix in code; the premise is the flaw). FAILURE PATTERN: symmetric channel/oscillator mean-reversion fades on crypto majors (Keltner here, like the DOGE Keltner and ETH RSI(2) siblings) produce a high win rate with avg_win << avg_loss and a sub-1 profit factor -- excursions continue rather than revert often enough that the fade is net-negative across every regime, and an ATR stop converts the tail losses into a steady bleed rather than an edge.

Implementation

Symmetric Keltner-channel mean-reversion on BTCUSDT.BINANCE 4H (pure OHLCV, single instrument). The channel is EMA(20) ± 2×ATR(10); a close piercing the lower band enters LONG and a close piercing the upper band enters SHORT (fade back to the mean). Exits when price reverts to the EMA midline or an ATR hard stop (3×ATR from entry) triggers when the range breaks into a trend. Risk-based sizing (1% of equity to the ATR stop, capped at 1x equity notional). Four core parameters; leverage 1.0.

Backtest Review

Implemented correctly and trades as specified: 425 symmetric Keltner fades (180 long / 245 short), ATR stop + midline target, entry_diag clean (425 signaled = 425 submitted, 0 dropped), metrics_reliable=true, ample sample

Backtest Review

No edge: profit_factor 0.655, Sharpe -1.53, Sortino -1.35, total_return -51.3%, expectancy -110.8 (negative)

Backtest Review

Inverted mean-reversion payoff: win_rate 0.569 but avg_win $370 << avg_loss $746 -- small reversions captured, big losses on trend breaks (skew -1.49, tail_ratio 0.60); the ATR stop does not save it

Backtest Review

Negative in ALL 7 years and BOTH legs (long_win 0.61 / short_win 0.54 yet net-negative); Sharpe CI entirely negative (-2.38 to -0.68), probabilistic_sharpe 0.0002; max_drawdown 54%, commission 7.54% of gross

Backtest Review

ample

Backtest Review

0 of 7

Backtest Review

majority

Backtest Review

negative (-110.8)

Outcome Summary

BtcFourHourKeltnerMeanReversionSymmetric was a clean, minimal 4-parameter fade — buy the lower Keltner band, sell the upper, exit at the midline, with an ATR stop intended to survive the ~30% trending time the hypothesis explicitly worried about. The code did precisely that across 425 trades, but the premise failed: a 56.9% win rate masked an inverted payoff (avg_win $370 vs avg_loss $746), yielding profit_factor 0.655, Sharpe −1.53, a −51.3% return, and losses in all 7 years and both legs. The ATR stop didn't save it — it merely metered the trend-break losses into a continuous bleed, and with the Sharpe CI entirely negative (probabilistic_sharpe 0.0002) the edge was near-certainly negative. The analyst abandoned it at backtest review without optimizing: this is the third confirmation in the session that channel/oscillator mean-reversion fades have no edge on crypto majors — excursions continue rather than revert, and a stop converts the tail into steady losses rather than an edge.

Outcome Summary

Symmetric channel/oscillator mean-reversion fades on crypto majors (Keltner here, like the DOGE Keltner and ETH RSI(2) siblings) reliably produce a high win rate with avg_win << avg_loss and sub-1 profit factor — excursions continue rather than revert often enough that the fade is net-negative across every regime, and an ATR stop turns the tail losses into a bleed, so a high win rate is a warning sign, not evidence of edge.

Outcome Summary

The analyst issued an abandon verdict at backtest review on a dead-premise basis: the Sharpe CI was entirely negative (−2.38 to −0.68) with probabilistic_sharpe 0.0002, the inverted win/loss geometry meant the ATR stop converted trend-break tail losses into a steady bleed rather than containing them, and with both directions net-negative in every year the 4 parameters could only fit noise — nothing to fix in code since the premise itself is the flaw.

Outcome Summary

A deliberately simple symmetric Keltner-channel mean-reversion on BTCUSDT.BINANCE 4H bars (4 parameters): fade excursions beyond an EMA ± 2×ATR envelope — long when price pierces the lower channel, short when it pierces the upper — exiting on a touch of the midline or opposite channel, with an ATR-based hard stop meant to cap losses during the ~30% of time the range breaks into a trend.

Outcome Summary

It traded exactly as specified with an ample sample — 425 fades (180 long / 245 short), clean entry diagnostics, metrics_reliable=true — but had no edge: profit_factor 0.655, Sharpe −1.53, Sortino −1.35, total_return −51.3%, expectancy −110.8, max drawdown 54%, commission 7.54% of gross. Despite a 56.9% win rate the payoff was inverted — avg_win $370 vs avg_loss $746 (skew −1.49, tail_ratio 0.60) — and it lost in all 7 years and both legs.
Strategy report

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