🎯 Trading Strategies

Pairs Trading: BTC and ETH Spread Reversion Strategy — A Practical Deep Dive

Pairs trading profits from spread deviations between two correlated assets reverting to normal. Covers BTC/ETH spread calculation, cointegration testing, open/close parameters, hedge ratios, and real-world risk management.

Published: 2026-07-12 · Demonjoy — Crypto Survival Academy

The Principle of Pairs Trading

Pairs Trading is a specialized form of statistical arbitrage. Unlike single-asset mean reversion, pairs trading focuses on the spread between two correlated assets — when the spread deviates from its historical norm, go long the undervalued one, short the overvalued one, and profit when the spread reverts.

BTC and ETH’s Natural Pairing Relationship

BTC and ETH are the crypto market’s best pair-trading combo:

  1. Highly correlated: BTC-ETH daily return correlation typically 0.7-0.9
  2. Stable spread: ETH/BTC ratio has clear mean-reversion characteristics historically
  3. Deep liquidity: Both are top-tier coins with ample market depth
  4. Rich data: Sufficient historical data for statistical analysis

Defining the Spread

In pairs trading, “spread” isn’t simply the price difference — it’s a standardized spread using logarithmic or ratio normalization:

Raw spread = ETH price / BTC price  (i.e., ETH/BTC ratio)
Log spread = ln(ETH price / BTC price)

Why use log spread:

  • Log spread approximates a normal distribution more closely
  • Log spread’s mean-reversion properties are more stable
  • Easier to compute Z-Scores and statistical tests

Key Parameter Settings

1. Cointegration Test — The Prerequisite for Pairing

Pairs trading requires cointegration between the two assets. Cointegration means although each asset’s price is a random walk individually, their spread is stable.

from statsmodels.tsa.stattools import coint

def check_cointegration(btc_prices, eth_prices):
    score, pvalue, _ = coint(btc_prices, eth_prices)
    # p-value < 0.05 → cointegration exists → pairs trading viable
    return pvalue < 0.05, pvalue

If p-value >0.05, BTC-ETH spread is unstable and pairs trading doesn’t apply. In practice, BTC and ETH are cointegrated most of the time, but during extreme markets (BTC crashes while ETH stays flat), cointegration may temporarily break.

2. Hedge Ratio

Pairs trading isn’t simply 1:1 buy/sell — the hedge ratio is determined by cointegration coefficients:

from statsmodels.regression.linear_model import OLS

def calc_hedge_ratio(btc_prices, eth_prices):
    model = OLS(eth_prices, btc_prices).fit()
    return model.params[0]  # hedge coefficient β

E.g., if β=0.05, every 1 BTC long requires 0.05 ETH short to build a neutralized spread portfolio.

Practical simplification:

  • If spread = ETH/BTC ratio, then long 1 ETH while short 1 BTC × ETH/BTC mean
  • Or equivalently, trade directly on the ETH/BTC pair

3. Spread Z-Score Thresholds

Like statistical arbitrage, pairs trading uses Z-Score to judge deviation:

Spread Z-Score = (Current spread - Spread mean) / Spread standard deviation
ParameterRecommended ValueNotes
Entry threshold±2.0Open when spread deviates 2 standard deviations
Take-profit threshold±0.5Close when spread returns within 0.5 std dev
Stop-loss threshold±3.5Stop out if spread deviates to 3.5 std dev
Spread mean window20-30 daysRolling calculation
Std dev window20-30 daysSame as mean window

4. Position Ratio

Pairs trading is dual-sided — determine both sides’ position ratios:

BTC position = Total capital × Pair position ratio
ETH position = BTC position × Hedge ratio β

E.g., total capital 10,000 USDT, pair position ratio 10%, β=0.05:

  • BTC short: 1,000 USDT
  • ETH long: 1,000 × 0.05 = 50 USDT

In practice, many traders simplify by directly trading on the ETH/BTC pair — spread changes translate directly to profit.

Step-by-Step Execution

Step 1: Verify Pair Feasibility

Weekly cointegration test, confirming BTC-ETH spread stability:

import ccxt
import numpy as np

exchange = ccxt.gateio()

btc_ohlcv = exchange.fetch_ohlcv('BTC/USDT', '1d', limit=30)
eth_ohlcv = exchange.fetch_ohlcv('ETH/USDT', '1d', limit=30)

btc_close = np.array([x[4] for x in btc_ohlcv])
eth_close = np.array([x[4] for x in eth_ohlcv])

is_coint, pvalue = check_cointegration(btc_close, eth_close)

if not is_coint:
    print("Cointegration broken — pause pairs trading")

Step 2: Calculate Real-Time Spread and Z-Score

def calc_spread_zscore(btc_price, eth_price, spread_history, window=30):
    current_spread = np.log(eth_price / btc_price)
    
    recent_spreads = spread_history[-window:]
    mean_spread = np.mean(recent_spreads)
    std_spread = np.std(recent_spreads)
    
    z_score = (current_spread - mean_spread) / std_spread if std_spread > 0 else 0
    return z_score

Step 3: Entry Execution

When Z-Score hits ±2.0:

Z-Score = −2.0 (ETH/BTC low):

  • Buy ETH (undervalued side)
  • Sell BTC (overvalued side)
  • Or go long on ETH/BTC pair

Z-Score = +2.0 (ETH/BTC high):

  • Sell ETH (overvalued side)
  • Buy BTC (undervalued side)
  • Or go short on ETH/BTC pair

Step 4: Close Execution

When Z-Score returns to ±0.5 or less, close both sides.

On the ETH/BTC pair:

  • Z=−2: Long ETH/BTC; Z returns to 0.5 → close for profit
  • Z=+2: Short ETH/BTC; Z returns to −0.5 → close for profit

Step 5: Stop-Loss Execution

If Z-Score continues deviating instead of reverting:

  • Z from −2 to −3.5 → Stop-loss close
  • Z from +2 to +3.5 → Stop-loss close

Stop-losses are the most critical risk management element in pairs trading — must be executed without hesitation.

Risk Management Deep Dive

1. Cointegration Break Risk

The biggest risk: the spread relationship between two assets fundamentally changes.

Typical scenarios:

  • ETH completes a major upgrade (e.g., PoW → PoS), fundamentally restructuring its relationship with BTC
  • BTC crashes but ETH doesn’t follow — spread jumps one-time
  • A new competitor chain changes ETH’s market positioning

Countermeasures:

  • Weekly cointegration test — pause immediately on break
  • Set stop-losses — don’t trust “the spread will always revert”
  • Monitor fundamental changes — anticipate cointegration-breaking events

2. Dual-Side Execution Risk

Pairs trading requires simultaneous two-direction operations. Either side failing leaves single-side exposure risk.

Countermeasures:

  • Use the same exchange (Gate.io) to reduce cross-exchange risk
  • Prefer trading directly on ETH/BTC pair (one trade)
  • If dual-side required, complete both within 3 seconds

3. Margin Risk (Futures Pairs)

If using futures shorts for pairing, margin management is crucial:

  • Futures leverage ≤3x
  • Maintain margin ratio ≥50%
  • Set auto-deleveraging trigger
  • Check margin balance daily

4. Capital Efficiency Risk

Pairs trading ties up capital on both sides:

  • Dual holding uses 2x capital
  • Hedge ratio may make the ETH-side position tiny
  • Consider using futures to improve efficiency (but adds margin risk)

Recommendation: For beginners, trade directly on the ETH/BTC spot pair — one trade expresses the spread view.

Scenario Suitability

ScenarioPairs Trading SuitabilityNotes
BTC-ETH sideways⭐⭐⭐⭐⭐Spread oscillates, profit密集
BTC-ETH trend divergence⭐⭐Spread moves one direction, reversion unreliable
New coin early listing⭐⭐⭐Correlation with BTC not yet established
High-volatility oscillation⭐⭐⭐⭐Large spread swings, wide profit
Low-volatility sideways⭐⭐Small spread, fees eat profit
Stablecoin pairs⭐⭐⭐⭐⭐USDT/USDC spread reverts reliably

Advanced Tips

  1. Multi-pair parallel: Monitor BTC-ETH, BTC-SOL, ETH-LINK simultaneously
  2. Dynamic hedge ratio: Update β weekly rather than using a fixed value
  3. Adaptive thresholds: Adjust Z-Score thresholds based on recent spread volatility
  4. Fundamental filter: Exclude trades during major fundamental shifts
  5. Kalman filtering: Replace simple mean with Kalman filter — more responsive spread tracking

Pairs Trading vs Single-Asset Mean Reversion

ComparisonPairs TradingSingle-Asset Mean Reversion
Market neutralityNeutral (don’t bet direction)Not neutral (bet direction)
Risk typeSpread riskPrice direction risk
ComplexityHigh (requires cointegration)Low (only Z-Score)
Suitable assetsCointegrated pairsSingle assets with mean reversion
Profit sourceSpread reversionPrice reversion to mean

Summary

Pairs trading is the most ” elegant” form of statistical arbitrage — it doesn’t bet market direction, only spread reversion. BTC and ETH are crypto’s best pair-trading combo: stable cointegration, ample liquidity. But cointegration break is the biggest risk — once the spread relationship structurally changes, stop-loss immediately and exit. For beginners wanting to practice pairs trading, operate directly on the ETH/BTC pair to avoid dual-side execution complexity.

See Demon Trading for more practical methods

Start Trading Safely on Gate.io

Low fees, 2000+ coins, and beginner-friendly tools. Join millions of traders worldwide.

Register on Gate.io →