Strategies
ETH/BTC Ratio Mean Reversion Long-Short Pairs (BINANCE USD-M Futures, 6H, OHLCV-Only Cross-Sectional)
Outcome: Abandoned
EthBtcRatioPercentileMeanReversionPairsLS6H
Outcome Summary
Hypothesis
Iteration 2 fixes the Layer-3 zero-trades failure. Diagnosis: the strategy overrides on_bar without calling super(), so the FactoryStrategy base routing that dispatches extra-instrument bars to on_extra_bar was bypassed. NautilusTrader delivers ALL subscribed bars to on_bar, so the BTC extra bars fell into the ETH primary branch and were written to _eth_pending; _btc_pending never filled, the timestamp sync never completed, _synced stayed empty, and no pair entry could ever fire. (Layer 2 passed because its _StrategyProxy calls on_extra_bar directly.) Fix: at the top of on_bar, route extra (BTC) bars to on_extra_bar when bar.bar_type is in self._extra_bt_set — exactly the base class's own routing check. All sync/percentile/entry/exit/sizing logic is unchanged; imports are unchanged (no banned imports); Layers 1 and 2 remain green. With BTC bars now populating _btc_pending, the timestamp sync builds the ratio series and the percentile entries fire.
Implementation
Dollar-neutral cross-asset pairs strategy on the ETH/BTC price ratio, both legs on BINANCE USD-M perpetual futures (ETHUSDT primary, BTCUSDT extra), 6H bars, pure OHLCV. Computes the ratio percentiles over a trailing 90-bar window; when the ratio falls to/below its 15th percentile it goes LONG ETH + SHORT equal-notional BTC (betting on upward reversion), and SHORT ETH + LONG BTC when it rises to/above the 85th percentile. Exits when the ratio reverts through the median, on combined side-aware PnL take-profit/stop, or a time stop. Market-neutral, leverage 1.0 (each leg ~20% of equity).
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BINANCE-6-HOUR-LAST-EXTERNAL, Bars processed: 9320 Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest Review
- Sharpe
- -0.60
- Total return
- -35.70%
- Max drawdown
- 44.20%
- Trades
- 1050
- Win rate
- 48.0%
- Profit factor
- 0.92
Routing bug fixed: the pair now trades atomically (1050 trades, 525 long-ratio + 525 short-ratio), dollar-neutral, benchmark_meaningful=false correctly recognizes market-neutral construction
Clean per-leg sizing (avg_position_pct 21%), fills genuine portfolio gaps (pairs, long-short, market-neutral) — but only if it had an edge
Loses money: total_return -35.7%, CAGR -7.2%, Sharpe -0.60 (CI -1.37 to +0.15), Sortino -0.64, expectancy -$36/trade over ~6 years
No edge in the signal: profit_factor 0.92 (<1), avg_win $824 ~ avg_loss $830 with 48% win rate — a symmetric coin flip that loses to fees; PSR 0.057
Losing across regimes: negative in 5 of 7 years (2025 -18%, 2020 -12%, 2022 -10%); max_drawdown 44% with a ~2257-day underwater stretch
Premise refuted: the ETH/BTC ratio trends rather than mean-reverting to its 30-day median on a 6H percentile basis, so fading percentile extremes systematically loses — no profitable parameter region to optimize toward
Outcome Summary
The 'majors are a momentum, not a fade, regime' reality extends to the ETH/BTC ratio itself — it trends across multi-year regimes rather than mean-reverting, so a percentile-fade pairs signal is a symmetric coin flip that loses to fees; the mirror formulation (ratio momentum/breakout, trading with extremes) is the more promising way to fill the pairs/market-neutral gaps.
The backtest-review gate abandoned it before optimization: it failed on Sharpe (-0.60), total return (-35.7%), profit factor (0.92), positive years (2 of 7) and per-trade expectancy (-$36) — a structural absence of edge, since the ETH/BTC ratio trends rather than mean-reverting to its 30-day median, so fading percentile extremes systematically loses to fees with no profitable parameter region to optimize toward.
A dollar-neutral, long-short cross-asset pairs strategy on BINANCE USD-M futures (6H bars, pure OHLCV) that traded ETH/BTC ratio mean-reversion — going long ETH / short BTC when the ratio fell below the 15th percentile of its trailing distribution and short ETH / long BTC above the 85th percentile, exiting on reversion to the median, target, stop, or time — to fill portfolio gaps in pairs, long-short direction, cross-sectional mechanism, and market-neutral beta.
After an iteration-2 routing fix it traded atomically (1,050 trades, 525 long-ratio / 525 short-ratio) with clean per-leg sizing, but lost money: total return -35.7%, CAGR -7.2%, Sharpe -0.60 (CI -1.37 to +0.15), profit factor 0.92, expectancy -$36/trade, with avg win ($824) ≈ avg loss ($830) at a 48% win rate and a 44% max drawdown.
Backtest and paper results are hypothetical. Trading involves risk of loss.