Strategies
ETH/BTC Ratio Mean Reversion + Funding Filter
Outcome: Abandoned
EthBtcRatioMeanReversionFundingFilterLS
Outcome Summary
This was the funding-filter companion to an already-abandoned ETH/BTC z-score pairs strategy, meant to lift Sharpe and cut drawdown by skipping crowded directional entries. The iter-2 fix correctly wired leverage into sizing, but the result reproduced the sibling's catastrophe: Sharpe -0.91, profit factor 0.81, -91.3% total, a 94% drawdown, and losses in every one of seven years. Two flaws compounded it — the ETH/BTC ratio trends rather than mean-reverts so the reversion signal fades persistent moves, and the funding filter's annualized-bps thresholds were so loose that all 912 trades ran unfiltered, so the claimed edge never materialized while 138% average exposure amplified the bleed into a blow-up. The analyst abandoned it before optimization, concluding the premise (not the filter) is the flaw and that filtering a signal negative in all regimes more selectively still loses.
Hypothesis
Implementation
ETH/BTC ratio z-score mean reversion with a funding-regime entry filter, dollar-neutral long-short on Binance USD-M futures, 4H bars. ratio = ETH/BTC, 20-bar rolling z-score; enter |z|>2 (z>0 short ETH/long BTC, z<0 long ETH/short BTC), exit |z|<0.5, |z|>3.5 stop, or 42-bar (7-day) time stop. Skips entries when the annualized ETH-BTC funding spread or either leg's funding is too extreme, or when the trade would pay funding on both legs; passes the filter when funding data is missing. Each leg sizes notional = equity * 0.5 * leverage / price with leverage=2.0, so both legs deploy 2x their equity fraction. The signal is the continuous z-score every bar.
Verification Results
Verification failed (leverage_set_but_unused): config sets leverage=2.0 but the strategy never references leverage in sizing. Size positions on it — notional = equity * fraction * leverage / price (read self.config.leverage) — or set leverage=1.0. As written the leverage is inert and the backtest is identical to 1x.
Backtest Review
- Sharpe
- -0.91
- Total return
- -91.31%
- Max drawdown
- 93.94%
- Trades
- 912
- Win rate
- 49.8%
- Profit factor
- 0.81
Code runs and trades as designed (912 trades, 0 dropped, balanced long/short legs, BTC leg submitted via multi-instrument helpers); leverage now wired into sizing
Catastrophic, regime-independent loss: Sharpe -0.91 (CI -1.79 to -0.05), profit_factor 0.81, total_return -91.3%, expectancy -$99.5/trade, max_drawdown 93.9%, negative in ALL 7 years
Dead premise: ETH/BTC ratio trends rather than mean-reverts -- identical failure to the already-abandoned ETH/BTC z-score pairs sibling (Sharpe -1.97/-1.23, every year negative)
The funding filter is inert: thresholds (1000 bps spread / 5000 bps leg, annualized) essentially never trigger, so 912 trades run unfiltered -- the claimed 'skip 20-30% of crowded entries' did not happen and the new feature changes nothing
Over-leveraged into the loss: avg_position_pct 138% turns a losing signal into a -91% return / 94% drawdown blowup
Outcome Summary
Large-cap crypto ratio z-score mean-reversion (ETH/BTC) has no edge because the ratio trends rather than reverts — bolting a regime/funding filter onto it does not help when the filter thresholds are set so loose they never trigger AND the underlying signal is negative across all regimes; filtering a losing strategy more selectively still loses, and a variant that leaves the losing core untouched is the same abandoned strategy.
The analyst abandoned it at backtest review as a dead premise plus an inert feature rather than a bug — the ETH/BTC ratio trends rather than mean-reverts, so z-score reversion continuously fades the trend and loses in every regime (reproducing the already-abandoned ETH/BTC z-score sibling), and the funding-filter thresholds were set so loose they never fired, so the 'new variant' left the losing core untouched.
A dollar-neutral ETH/BTC ratio z-score mean-reversion pairs strategy on Binance USD-M 4H futures (pure OHLCV plus funding-rate supplementary data) — fading 2-sigma deviations of the 20-period ETH/BTC ratio z-score (short ETH + long BTC when rich, the reverse when cheap) — with an added funding-rate regime filter meant to skip ~20-30% of crowded directional entries (large funding spread, extreme per-leg funding, or paying funding on both legs).
Over 912 trades (456 long, 456 short, none dropped) it was a catastrophic, regime-independent loser: Sharpe -0.91 (CI -1.79 to -0.05), profit factor 0.81, total return -91.3%, expectancy -$99.5/trade, max drawdown 93.9%, negative in all 7 years; the funding filter was inert (thresholds of 1000 bps spread / 5000 bps per leg almost never trigger, so all 912 trades ran unfiltered) and avg position 138% over-leveraged the losing signal into a blow-up.
Backtest and paper results are hypothetical. Trading involves risk of loss.