Triangular Arbitrage: Capturing Circular Profits via BTC → ETH → USDT → BTC
Triangular arbitrage exploits pricing discrepancies between three trading pairs on the same exchange, locking in risk-free profit through the circular path BTC → ETH → USDT → BTC. This article covers the principle, parameter settings, practical steps, and risk control.
The Core Principle of Triangular Arbitrage
Triangular Arbitrage is one of the most classic arbitrage strategies in crypto markets. The core logic is simple: when exchange rates between three trading pairs become inconsistent, you can profit by cycling through conversions to end up with more than you started with.
The simplest example: suppose you hold 1 BTC, and on the same exchange you have the following three pairs:
- BTC/USDT quotes 60,000 USDT
- ETH/USDT quotes 3,000 USDT
- BTC/ETH quotes 19.8 ETH (i.e., 1 BTC = 19.8 ETH)
Based on ETH/USDT price, 1 BTC should equal 60,000/3,000 = 20 ETH. But BTC/ETH actually quotes only 19.8 ETH. This means ETH is “undervalued” in the BTC/USDT → ETH/USDT path. You can profit through this cycle:
- Step 1: Sell 1 BTC → receive 60,000 USDT (via BTC/USDT pair)
- Step 2: Buy ETH with 60,000 USDT → receive 20 ETH (via ETH/USDT pair)
- Step 3: Sell 20 ETH for BTC → receive 20/19.8 = 1.0101 BTC (via BTC/ETH pair)
You’ve gone from 1 BTC to 1.0101 BTC, netting 0.0101 BTC — that’s triangular arbitrage.
Mathematical Understanding
Triangular arbitrage exists when the closed-loop product deviates from 1:
Implied rate = BTC_USDT price / (ETH_USDT price × BTC_ETH price)
If implied rate ≠ 1, triangular arbitrage opportunity exists
Profit rate calculation:
Profit rate = |implied rate - 1| - three trade fees
Key Parameter Settings
1. Monitored Coin Triangles
Most common triangle combinations:
| Triangle | Pair 1 | Pair 2 | Pair 3 |
|---|---|---|---|
| BTC-ETH-USDT | BTC/USDT | ETH/USDT | BTC/ETH |
| BTC-SOL-USDT | BTC/USDT | SOL/USDT | BTC/SOL |
| ETH-LINK-USDT | ETH/USDT | LINK/USDT | ETH/LINK |
Recommend prioritizing the major coin triangle (BTC-ETH-USDT) for best liquidity and most frequent price deviations.
2. Profit Threshold
Not all deviations are worth trading. The threshold must account for:
- Fees: three trades, 0.1-0.2% each, totaling 0.3-0.6%
- Slippage: large orders push prices; actual execution may deviate
- Minimum executable profit: recommend ≥ 0.8% (0.2% net after fees)
Specific threshold calculation:
Minimum threshold = 3 × per-trade fee rate + estimated slippage + minimum net rate
Minimum threshold = 0.3% × 3 + 0.15% + 0.2% = 1.25%
On Gate.io and similar platforms, limit order slippage can be controlled within 0.05%, so 0.8% threshold is achievable.
3. Execution Amount
Per-arbitrage amount affects slippage:
- Small amount (< 1,000 USDT): low slippage but small absolute profit
- Medium amount (1,000-10,000 USDT): balanced slippage and profit
- Large amount (> 10,000 USDT): significant slippage, may eat profit
Recommend per-trade amount capped at 5,000 USDT; on major exchanges like Gate.io, this amount has minimal slippage impact on BTC/ETH markets.
4. Check Frequency
- WebSocket real-time push: detect price deviation within 1 second
- REST API polling: recommend 1-3 second intervals
- High volatility periods: accelerate to 0.5 second checks
Practical Operation Steps
Step 1: Build Monitoring System
Use exchange API to monitor three trading pair prices in real time and calculate implied rate deviation:
import requests
import time
import numpy as np
def get_ticker(pair):
url = f"https://api.gateio.ws/api2/1/ticker/{pair}"
resp = requests.get(url, timeout=5).json()
return {
'bid': float(resp['highestBid']),
'ask': float(resp['lowestAsk']),
'last': float(resp['last'])
}
def calc_implied_rate(btc_usdt, eth_usdt, btc_eth):
# Implied BTC/ETH rate = BTC/USDT / ETH/USDT
implied = btc_usdt['last'] / eth_usdt['last']
actual = btc_eth['last']
deviation = (implied - actual) / actual
return deviation
def monitor():
while True:
btc_usdt = get_ticker('btc_usdt')
eth_usdt = get_ticker('eth_usdt')
btc_eth = get_ticker('btc_eth')
dev = calc_implied_rate(btc_usdt, eth_usdt, btc_eth)
if abs(dev) > 0.008: # 0.8% threshold
print(f"[ALERT] Deviation: {dev*100:.3f}%")
# Execute arbitrage logic
time.sleep(1)
Step 2: Determine Arbitrage Direction
When deviation is positive (implied rate > actual rate):
- BTC/ETH is undervalued → buy ETH/BTC path: USDT → ETH → BTC → USDT
When deviation is negative (implied rate < actual rate):
- BTC/ETH is overvalued → sell ETH/BTC path: BTC → ETH → USDT → BTC
Step 3: Rapidly Execute Three Trades
Must execute three trades rapidly in sequence — manual operation is nearly impossible:
- First trade: convert in the determined direction on first pair
- Second trade: convert resulting asset on second pair
- Third trade: complete the circular conversion
Use API batch order functions to ensure all three trades complete within 1-2 seconds. Key: use limit orders to lock prices, avoiding market order slippage.
Step 4: Record and Review
Record after each execution:
| Field | Description |
|---|---|
| Execution time | Precise to milliseconds |
| Three quotes | Bid/ask for each pair |
| Actual fills | Execution prices of three orders |
| Expected profit | Theoretical profit based on quotes |
| Actual profit | True profit after fees and slippage |
| Latency | Time from discovery to completion |
Risk Management Key Points
1. Speed Risk
Triangular arbitrage windows typically last only seconds to tens of seconds. Manual execution is nearly impossible to capture.
- Must use API automated execution
- Network latency controlled within 50ms
- Use WebSocket instead of REST API for real-time prices
- Server deployment recommended in same-region data center as exchange
2. Slippage Risk
Slippage from three trades compounds:
- Estimated slippage: 0.05-0.1% per trade, 0.15-0.3% total
- Response: limit per-trade amount, use limit orders not market orders
- But limit orders may not fill — must balance speed vs certainty
- Recommend IOC (Immediate or Cancel) limit orders
3. Fee Erosion
- Three trade fees compound to approximately 0.3-0.6%
- If exchange supports VIP discount or GT offset, use them
- Gate.io GT token fee offset can drop below 0.1%, greatly expanding arbitrage space
- VIP6 level fees can drop to 0.02%, virtually eliminating fee barrier
4. Liquidity Risk
- Non-major coin triangles have poor liquidity: large spreads but small volume
- Prioritize BTC-ETH-USDT and similar high-liquidity triangles
- Avoid large amounts on small coin triangles
- Check order book depth to ensure 5,000 USDT doesn’t pierce multiple order layers
5. API Failure Risk
- Any one of three trades failing causes unbalanced positions
- Set emergency plan: manual fill or pause subsequent trades
- Monitor account balance changes; stop immediately on anomalies
- Set “safety switch” — auto-pause after 3 consecutive API failures
Suitable Scenario Analysis
| Scenario | Suitability | Description |
|---|---|---|
| High volatility market | ★★★★★ | Price deviations frequent, most opportunities |
| Low volatility market | ★★ | Small deviations, fees may eat profit |
| Major coin triangle | ★★★★★ | Good liquidity, low slippage |
| Small coin triangle | ★★★ | Large deviations but poor liquidity |
| Manual execution | ★ | Nearly impossible to capture manually |
| API automation | ★★★★★ | Must use programmatic execution |
| New coin listing period | ★★★★★ | Pricing deviations large, opportunities dense |
Advanced Techniques
- Multi-triangle parallel monitoring: Monitor 5-10 triangles simultaneously for higher opportunity capture
- Depth-weighted calculation: Check order book depth beyond last price, ensuring sufficient fill amount
- GT fee offset: Holding GT tokens on Gate.io reduces fees to 0.05%, significantly boosting arbitrage profit space
- Latency optimization: Deploy API servers near exchange data centers for lower network latency
- Dynamic threshold: Widen threshold during high volatility (1%), tighten during low volatility (0.5%)
Common Misconceptions
- Triangular arbitrage is risk-free → Actually, slippage, latency, and fees are all risks
- Manual triangular arbitrage is feasible → Window is only seconds; must be automated
- Larger spreads = better → Large spreads usually accompany low liquidity, difficult to fill
- Only do triangular arbitrage on one exchange → Cross-exchange triangular arbitrage also exists, but withdrawal latency is a new challenge
Summary
Triangular arbitrage is the closest thing to “risk-free” in crypto markets, but “close” doesn’t mean “zero risk.” Speed, slippage, and fees are the three enemies. Success depends on automated execution and strict profit threshold filtering. For traders with programming ability, triangular arbitrage can be part of a daily strategy portfolio; for purely manual traders, triangular arbitrage’s practical value is low — better to use strategies suited for manual execution.
For more practical methods, see Demonjoy Trading
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 →