🎯 Trading Strategies

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.

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

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:

  1. Step 1: Sell 1 BTC → receive 60,000 USDT (via BTC/USDT pair)
  2. Step 2: Buy ETH with 60,000 USDT → receive 20 ETH (via ETH/USDT pair)
  3. 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:

TrianglePair 1Pair 2Pair 3
BTC-ETH-USDTBTC/USDTETH/USDTBTC/ETH
BTC-SOL-USDTBTC/USDTSOL/USDTBTC/SOL
ETH-LINK-USDTETH/USDTLINK/USDTETH/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:

  1. First trade: convert in the determined direction on first pair
  2. Second trade: convert resulting asset on second pair
  3. 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:

FieldDescription
Execution timePrecise to milliseconds
Three quotesBid/ask for each pair
Actual fillsExecution prices of three orders
Expected profitTheoretical profit based on quotes
Actual profitTrue profit after fees and slippage
LatencyTime 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

ScenarioSuitabilityDescription
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 executionNearly impossible to capture manually
API automation★★★★★Must use programmatic execution
New coin listing period★★★★★Pricing deviations large, opportunities dense

Advanced Techniques

  1. Multi-triangle parallel monitoring: Monitor 5-10 triangles simultaneously for higher opportunity capture
  2. Depth-weighted calculation: Check order book depth beyond last price, ensuring sufficient fill amount
  3. GT fee offset: Holding GT tokens on Gate.io reduces fees to 0.05%, significantly boosting arbitrage profit space
  4. Latency optimization: Deploy API servers near exchange data centers for lower network latency
  5. Dynamic threshold: Widen threshold during high volatility (1%), tighten during low volatility (0.5%)

Common Misconceptions

  1. Triangular arbitrage is risk-free → Actually, slippage, latency, and fees are all risks
  2. Manual triangular arbitrage is feasible → Window is only seconds; must be automated
  3. Larger spreads = better → Large spreads usually accompany low liquidity, difficult to fill
  4. 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

Start Trading Safely on Gate.io

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

Register on Gate.io →