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.
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:
- Highly correlated: BTC-ETH daily return correlation typically 0.7-0.9
- Stable spread: ETH/BTC ratio has clear mean-reversion characteristics historically
- Deep liquidity: Both are top-tier coins with ample market depth
- 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
| Parameter | Recommended Value | Notes |
|---|---|---|
| Entry threshold | ±2.0 | Open when spread deviates 2 standard deviations |
| Take-profit threshold | ±0.5 | Close when spread returns within 0.5 std dev |
| Stop-loss threshold | ±3.5 | Stop out if spread deviates to 3.5 std dev |
| Spread mean window | 20-30 days | Rolling calculation |
| Std dev window | 20-30 days | Same 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
| Scenario | Pairs Trading Suitability | Notes |
|---|---|---|
| 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
- Multi-pair parallel: Monitor BTC-ETH, BTC-SOL, ETH-LINK simultaneously
- Dynamic hedge ratio: Update β weekly rather than using a fixed value
- Adaptive thresholds: Adjust Z-Score thresholds based on recent spread volatility
- Fundamental filter: Exclude trades during major fundamental shifts
- Kalman filtering: Replace simple mean with Kalman filter — more responsive spread tracking
Pairs Trading vs Single-Asset Mean Reversion
| Comparison | Pairs Trading | Single-Asset Mean Reversion |
|---|---|---|
| Market neutrality | Neutral (don’t bet direction) | Not neutral (bet direction) |
| Risk type | Spread risk | Price direction risk |
| Complexity | High (requires cointegration) | Low (only Z-Score) |
| Suitable assets | Cointegrated pairs | Single assets with mean reversion |
| Profit source | Spread reversion | Price 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
Related Articles
Dollar-Cost Averaging (DCA) in Crypto: Why It Works and How to Start
Learn how dollar-cost averaging (DCA) reduces risk in volatile crypto markets. Discover practical schedules, when to adjust your DCA, and crypto-specific tips for consistent investing.
Trading StrategyGrid Trading Strategy for Crypto: Automated Profits in Any Market
Learn how grid trading generates automated profits in sideways and ranging crypto markets. Discover parameter setup, profit calculations, risk management, and how to use Gate.io's grid bot to trade without constant monitoring.
Trading StrategyCrypto Scalping Strategy: Fast Trades, Small Profits, Big Consistency
Master crypto scalping — the art of fast trades capturing small, consistent profits. Learn the scalping mindset, optimal timeframes, entry/exit rules, risk management per trade, and the essential tools for high-frequency short-term crypto trading.
Trading StrategyStop Loss in Crypto Trading: 5 Methods That Actually Work
Discover 5 proven stop loss methods for crypto trading — percentage, technical, trailing, time-based, and volatility-adjusted. Learn when to use each, when NOT to use stops, and how emotional discipline protects your capital.
Start Trading Safely on Gate.io
Low fees, 2000+ coins, and beginner-friendly tools. Join millions of traders worldwide.
Register on Gate.io →