EthBtcRatioAdaptiveAnchorMeanReversionPairLS
Hypotheses
ETH/BTC Ratio Spread Mean-Reversion Around an Adaptive Rolling Anchor, Dollar-Neutral Long-Short (ETHUSDT.BINANCE + BTCUSDT.BINANCE USD-M, Daily Bars, z-Score Band, 3-Parameter)
Hypotheses
A MARKET-NEUTRAL (dollar-neutral), TWO-INSTRUMENT relative-value SPREAD strategy on the ETH/BTC ratio expressed with the two most liquid Binance USD-M perpetuals (ETHUSDT.BINANCE long/short vs BTCUSDT.BINANCE the opposite leg, sized to equal-and-opposite USD notional so the book carries near-zero net crypto-beta). This is deliberately NOT a momentum, trend, breakout, funding, liquidation, order-flow, VWAP-reversion, or cross-sectional-rank strategy — all empirically dead here (L68-L92). The mechanism is MEAN-REVERSION of a HIGHLY-COINTEGRATED PAIR around a SLOW ADAPTIVE ANCHOR: ETH and BTC are >0.8 correlated, so log(ETH/BTC) is a near-stationary spread on week horizons even though the ratio itself trends for years. The critical design choice that separates this from the dead 'fixed-mean' pairs and from ETH/BTC relative-STRENGTH momentum (L68): the reversion target is a ROLLING mean (e.g. 30 daily bars), so the anchor RIDES the multi-year regime (2021 ETH outperformance, 2022-2024 decline) and we only trade deviations AROUND the current drift, never against the drift itself. We fade transient dislocations of the spread and let the adaptive anchor absorb persistent regime shifts. Rebalance/evaluate on DAILY bars; typical hold is several days to ~2 weeks. Deep multi-year Binance USD-M history on both legs means NO data wall (the recurring options/HL death mode) and a decisive out-of-sample sample.
Hypotheses
Iteration 2 addresses the reported backtest-gate failure (Sharpe +0.17 incoherent with total_return -41.53%). That incoherence is variance drag: the mean daily return of the book was marginally positive while the COMPOUNDED curve fell, because a 1.4x-gross two-leg book (leverage 2.0 x 0.35/leg) runs ~40% annualized vol on a near-zero-mean series, and vol^2/2 dominates. Two changes: (1) gross exposure cut to 1.0x equity (leverage 1.0, 0.5 per leg), which cuts the drag ~2x faster than it cuts the mean; (2) the exit is now direction-aware full reversion to the adaptive anchor instead of a symmetric |z| <= 0.4 band -- the old rule kept a position that had OVERSHOT past the anchor into the opposite dislocation until the time stop, handing back the reversion it had already earned. Entry raised to |z| >= 2.2 on a 60-bar anchor so only deep dislocations are faded (fewer round trips = less two-leg fee drag), time stop 40 bars so the reversion has room. HONEST CAVEAT (see recommendation): I re-derived the mechanism on the full 2020-01..2026-09 daily ETH/BTC history outside the engine and it is GROSS-negative, not merely fee-negative -- with ZERO costs only 3.6% of a 366-cell (anchor_window 20-90) x (entry_z 1.5-2.5) x (exit band 0-0.6) x (max hold 10-60) grid has positive mean per trade, and every positive cell loses in the 2023-2026 half. The conditional forward move is the wrong sign for the premise: corr(z, next-5-day change in log(ETH/BTC)) = +0.056, and conditional on z > 2 the spread rises a further +0.72% over 5 days (z < -2: -0.14%) -- the ratio CONTINUES, it does not revert, around a rolling anchor on daily bars.
Hypotheses
Negative expectancy / premise falsified on a decisive 100-trade, 6.7-year sample: avg_trade_return_pct -0.668% (below ZERO, not merely below the fee floor), profit_factor 0.887 (<1), total_return -38.55%, expectancy -$368/trade, Sharpe -0.054. Commissions are only 1.38% of gross, so this is a gross-negative signal, not fee-drag — no parameter tuning can lift an edge that is below zero before costs. The mechanism is the wrong sign for the hypothesis: the ETH/BTC log-ratio CONTINUES around a daily rolling anchor rather than reverting (conditional on z>2 the spread moves +0.72% further over 5d), which is exactly why the strategy loses in every vol tercile and in 5 of 7 years, with positive cells confined to 2020-2022. QA's edge concern is borne out on full history. Daily-bar mean-reversion of a cointegrated-but-trending pair around an adaptive anchor is not a real edge here; abandon rather than spend 2 hours curve-fitting noise.
Implementation
Dollar-neutral ETH/BTC relative-value pair on Binance USD-M perpetuals (daily bars). The decision variable is the z-score of log(ETHUSDT/BTCUSDT) against a SLOW ADAPTIVE ANCHOR (rolling mean of the log ratio over anchor_window daily bars), so the reversion target rides the multi-year ETH/BTC regime instead of fighting it. z <= -entry_z (ETH cheap) opens LONG ETH + SHORT BTC; z >= +entry_z (ETH rich) opens SHORT ETH + LONG BTC. The pair is closed on DIRECTION-AWARE full reversion (direction * z >= -exit_z, so an overshoot past the anchor also closes), after max_holding_bars daily bars, or on an adverse log-spread excursion of stop_spread_move. Both legs carry the SAME USD notional: the ETH leg is sized to equity * per_leg_notional_frac * leverage and the BTC hedge is submitted from the ETH fill event using the ACTUAL filled notional, so the book is dollar-matched. Gross exposure is 1.0x equity (2 x 0.5 at leverage 1.0), down from 1.4x.
Verification Results
Harmless here because calculate_signal independently guards warmup (`if len(samples) < self.anchor_window: return 0.0`) and returns a neutral 0.0 signal until the anchor window is filled. Rename or remove the override if it is not meant to feed the framework.
Verification Results
min_bars_required(self) shadows a base-template framework method; the base relies on its own warmup implementation, so this override may not gate warmup as intended.
Verification Results
Strong doubt about the edge itself (advisory, not a code fault). (1) The developer's own out-of-engine sweep on full 2020-2026 daily ETH/BTC history reports the mechanism is GROSS-negative before any fee: only 3.6% of a 366-cell parameter grid has positive mean-per-trade at zero cost, and every positive cell earns in 2020-2022 and loses in 2023-2026. The conditional forward move is the wrong SIGN for the premise: corr(z, next-5d change in log(ETH/BTC)) = +0.056, and conditional on z>2 the spread rises a further +0.72% over 5d (z<-2: -0.14%) — i.e. the ratio CONTINUES around a daily rolling anchor rather than reverting. (2) The Layer-3 sandbox is consistent with this: avg_trade_return_pct -0.668%, profit_factor 0.887, total_return -38.5% over 100 trades, and it loses in the normal AND stressed vol terciles (only the calm tercile is marginally positive Sharpe +0.11). This is a two-leg book (~0.10% round-trip x2), so a below-zero gross per-trade edge cannot be tuned above costs. The analyst should weigh whether daily-bar mean-reversion of a cointegrated-but-trending pair is a real, optimizable edge before spending optimization compute; the developer recommends abandon on these grounds. None of this blocks — the implementation is correct and the run should proceed to a real backtest where performance is decided.
Backtest Review
Implementation is correct: dollar-neutral two-leg book, 100 trades (50 long-spread / 50 short-spread) over a decisive 2020-2026 daily sample, no data wall, benchmark correctly flagged non-meaningful for a market-neutral book.
Backtest Review
Adaptive rolling anchor design is a genuine attempt to avoid the fixed-mean pairs trap.
Backtest Review
Gross-negative expectancy on a reliable sample: avg_trade_return_pct -0.668% (BELOW ZERO, far under the ~0.20% round-trip cost of a two-leg book), profit_factor 0.887 (<1), total_return -38.55%, expectancy -$368/trade.
Backtest Review
Sharpe -0.054, Sortino -0.063, CAGR -7.23%, max_drawdown 45.3%; losing in 5 of 7 calendar years and in ALL three vol terciles (calm -0.22, normal -0.01, stressed +0.01 Sharpe).
Backtest Review
Commission is only 1.38% of gross — this is NOT fee-fragility, it is an absent (wrong-sign) edge. The premise is falsified: the spread CONTINUES around a daily rolling anchor rather than reverting (QA's out-of-engine sweep: corr(z, next-5d move)=+0.056, conditional on z>2 the spread rises +0.72% more).
Backtest Review
Positive cells earned only in 2020-2022 and lost 2023-2026 — no stable, optimizable region.
Analysis
Backtest gate:
- metrics unreliable: Incoherent: Sharpe 0.17 disagrees in sign with total_return -41.53% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.
Outcome Summary
EthBtcRatioAdaptiveAnchorMeanReversi-a8ae27bc2d
Outcome Summary
The strategy tried to harvest mean-reversion in the ETH/BTC ratio by trading a dollar-neutral ETHUSDT/BTCUSDT pair around a slow rolling anchor, aiming to fade transient dislocations while letting the anchor absorb multi-year regime drift. On a clean 6.7-year, 100-trade Binance sample it lost 38.55% with a negative per-trade return (-0.668%), sub-1 profit factor (0.887), negative Sharpe (-0.054) and a 45% max drawdown, losing in all three volatility terciles and in 5 of 7 years. The backtest-review analyst abandoned it before optimization, noting the loss was a wrong-sign edge rather than fee drag — the log-ratio continues around the daily anchor instead of reverting. It was abandoned after 2 iterations without ever reaching the optimization, analyst, or risk-review stages.
Outcome Summary
A cointegrated-but-trending pair like ETH/BTC does not mean-revert around a daily adaptive anchor — the spread actually continues (conditional on z>2 it moved +0.72% further over 5 days), so this reversion premise is the wrong sign and cannot be rescued by parameter tuning.
Outcome Summary
At the pre-optimization backtest-review gate the analyst returned an 'abandon' verdict: the edge was gross-negative before costs (commissions only 1.38% of gross), failing every criterion, so no optimization stage was run.
Outcome Summary
A dollar-neutral ETH/BTC long-short pair strategy that faded z-score dislocations of the log(ETH/BTC) spread around a slow rolling (adaptive) anchor, on daily Binance USD-M perpetual bars, betting the cointegrated pair would mean-revert toward its current drift.
Outcome Summary
Over a decisive 100-trade, 6.7-year sample (2020-2026) it lost money: total return -38.55%, avg_trade_return_pct -0.668% (below zero), profit factor 0.887, Sharpe -0.054, CAGR -7.23%, and max drawdown 45.3%, with only a 45% win rate.
Backtest and paper results are hypothetical. Trading involves risk of loss.