Strategies
ETH-vs-BTC Relative Options Fear Premium: Dollar-Neutral ETH/BTC Pair on Bybit Linear Perps, Timed by (ETH DVOL - ETH RV14) minus (BTC DVOL - BTC RV14) z-Score, Fixed 14-Day Clock (BYBIT 1-DAY, long-short, market-neutral, flat most of the time)
Outcome: Analyzing
EthBtcRelativeFearPremiumPairBybit
The strategy works as the hypothesis describes. The ledger has 94 closed legs, which make 47 dollar-neutral pairs: each ETH leg is opened the same day as an opposite BTC leg of equal size (0.45 of equity per leg).…
Hypothesis
Under-represented buckets this fills: BYBIT venue (3.1% vs 5% target), long-short (24% vs 45%+), pairs and market-neutral. It uses the options-information channel that lesson L232 says to express through linear instruments, the route behind the only promoted DVOL runs. Ideas I measured first and rejected in this session: (1) the Bybit-native spot/linear volume-share accumulation transfer, at 523 events with -0.05% gross per 5 days, where the share filter worsened the trend-only control; (2) Bybit daily perp-minus-spot basis extremes, which gave non-monotone noise; (3) the frozen daily down-shock absorption rule on 16 Bybit spot alts, -1.3% at 3 days and losing in 2022. Not a duplicate of the pipeline's BtcCoinMDvolVrpRegimeLong (single-coin, long-only) or of the ETH timers (directional): this is the cross-sectional difference of two VRPs, traded as a dollar-neutral spread.
Implementation
Dollar-neutral ETH/BTC pair on Bybit linear perps (1-DAY). Each daily close computes rel = (DVOL_ETH - RV_ETH) - (DVOL_BTC - RV_BTC), with RV = rv_lookback-day annualised close-to-close vol in DVOL units, and z-scores it over z_window days. z >= +entry_z: long ETH / short BTC; z <= -entry_z: short ETH / long BTC. Equal-dollar legs of 45% of equity each, held hold_days daily bars, non-overlapping. The pair is closed early if the combined unrealised loss reaches spread_stop_pct of per-leg notional or the hedge breaks (legs_balanced). signal_mode='always_short_eth' is the matched no-signal control. Execution substitution: market orders at the decision bar's close, which on a 24/7 venue is the next bar's open (next_bar_open_fill use_equivalent).
Iteration 2, IMPLEMENTATION FIX. The zero-trade result came from a data-injection bug, not from the entry threshold. _dvol() called self.supp_as_of(key) with a variable. The platform injects a named series (DVOL_ETH/DVOL_BTC) only when the code reads it by its literal name (supp_as_of("DVOL_ETH")). Both series were therefore empty, z was never computed, and no pair was opened. Note also that should_enter() always returns None by design, because both legs are submitted from calculate_signal. The fix reads both series with literal supp_as_of("DVOL_ETH") / supp_as_of("DVOL_BTC") calls, and I checked that the platform's detector now finds both: about 48.8k hourly points each, 2021-03 to now. Trading rules, parameters, config and sizing are unchanged. The risk route is (b): a time exit plus a pair-level loss exit, with gross 90% of equity at leverage 2.
Backtest Review
- Sharpe
- 0.45
- Total return
- 48.52%
- Max drawdown
- 18.69%
- Trades
- 128
- Win rate
- 51.6%
- Profit factor
- 1.19
The strategy works as the hypothesis describes. The ledger has 94 closed legs, which make 47 dollar-neutral pairs: each ETH leg is opened the same day as an opposite BTC leg of equal size (0.45 of equity per leg). There are 26 short-ETH pairs and 21 long-ETH pairs, so both directions trade. Most pairs exit on the 14-day clock and none overlap.
The trade rate matches the pre-study: 47 pairs over about 3.4 years of development data (entries begin 2022-04 after warm-up), about 14 a year, against the Research Lead's 71 events over about 5 years.
Per-trade economics comfortably clear costs. The average leg return is 1.02% of notional against the Bybit linear floor of about 0.15%, roughly 7 times the floor. Profit factor is 1.31, win rate 0.52, and total return +50% net of fees and funding.
The worst drawdown is 18.7%, inside the pre-registered 20%. The result does not depend on one pair: removing the largest pair (2025-04-30, +$18.1k) still leaves about +$30k across 46 pairs. No phantom spread: both legs are liquid majors on matched daily closes, and the input audit is clean.
The risk-adjusted edge is modest and noisy. Sharpe is 0.56 (confidence interval -0.48 to 1.59) and the longest drawdown lasted 777 days. 2023 lost 5.96%, and the profit sits mostly in 2024 and 2025.
The control run the hypothesis asked for (signal_mode='always_short_eth') is not part of this review, so the extra return from the signal beyond the ETH/BTC drift has not yet been shown on identical costs. The short-ETH side does lead (26 of 47 pairs).
Buy-and-hold does not apply as a benchmark here (the pair is market-neutral and benchmark_meaningful is false), so I judge it on its absolute metrics.
The sample is small for 4 tunable parameters: about 14 pairs a year means few, long walk-forward windows.
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BYBIT-1-DAY-LAST-EXTERNAL, Bars processed: 1643 Diagnostics: should_enter() returned a side 0 times over 1643 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest and paper results are hypothetical. Trading involves risk of loss.