Cross-Exchange Arbitrage
Why retail traders can't actually win
One of the first things people notice in crypto:the same BTC trades at different prices on Binance and Coinbase. A gap of a few seconds can mean $50~$200 of price difference. The instinctive reaction — just buy low and sell high, risk-free, right?
Almost every retail trader who tries it loses money. This post breaks down why, and which "arbitrage" plays retail can still run.
1. Two flavors of cross-exchange arbitrage
1.1 Pure spread arbitrage (cash arbitrage)
Exchange A: BTC = $60,000. Exchange B: BTC = $60,150. The textbook play: buy on A, sell on B, pocket $150.
But you can't execute both legs instantly — either buy on A and withdraw to B before selling (slow), or pre-fund positions on both sides and fire simultaneously (capital tied up).
1.2 Triangular arbitrage
On the same exchange, three trading pairs are mispriced relative to each other.
# Triangular arbitrage example
BTC/USDT = 60,000
ETH/USDT = 3,000
ETH/BTC = 0.04999 # but 3000/60000 = 0.05, should be 0.05
→ Implied arbitrage:
Sell 1 BTC for 60,000 USDT
60,000 USDT for 20 ETH
20 ETH × 0.04999 BTC/ETH back to 0.9998 BTC
→ Looks like a loss, but in reality: if ETH/BTC quotes 0.05005,
20 × 0.05005 = 1.001 BTC → gain 0.001 BTC (risk-free)2. Why retail almost never wins at pure spread arbitrage
2.1 Withdrawal latency (the biggest killer)
BTC on-chain transfer: 1–6 hours (depending on exchange confirmation count). ETH withdrawal: 10–30 minutes (depending on gas). USDT-TRC20: 1–10 minutes.
Spreads only exist for seconds to minutes. By the time your BTC moves from A to B, the gap is long gone — and may have flipped, meaning your B sell price is now lower than your A buy price.
2.2 Bots are hundreds of times faster than you
Professional arb shops run:
- Cross-exchange colocation (servers physically inside the exchange data center)
- VIP fee tiers (fees approaching zero)
- Direct WebSocket feeds + high-frequency polling
- Pre-funded inventory on every exchange to avoid withdrawal latency
The instant you spot a $100 spread, they've already collapsed it back to $5. When your order fills, the counterparty pockets $5, not $100.
2.3 Hidden costs eat the profit
Run the numbers:
Your costs:
Exchange A taker fee: 0.05%
Withdrawal fee (BTC): $5~$15
Exchange B taker fee: 0.05%
Slippage (thin order book): 0.1%
──────
Total cost ≈ 0.2~0.3% + $5~$15 fixed
To profit, the spread must exceed cost:
$60,000 × 0.3% = $180 + $15 = $195
In reality, 99% of the time the spread < $195.
The moments a $200+ gap appears = bots already ate it.3. The most famous cross-exchange spread in history: Mt.Gox vs Kraken 2014
In February 2014, after Mt.Gox froze user withdrawals, BTC inside the exchange traded at up to a 1100% discount to the outside market. Kraken BTC = $560; Mt.Gox internal price = $100.
Looked like an epic arbitrage opportunity. Reality:nobody could withdraw from Mt.Gox. The spread was real, the arbitrage was not — because the prerequisite (movable assets) didn't hold.
4. The most recent crypto example: FTX collapse
On the eve of FTX's November 2022 implosion, FTT traded at a 30%+ discount on FTX vs other exchanges. But FTX withdrawals were already suspended — anyone who tried to arb it bought FTT on FTX and got stuck there forever.
5. The "quasi-arbitrage" plays retail can still run
Pure spread arbitrage is essentially out of reach for retail, but the following are relatively viable:
5.1 Funding rate arbitrage (delta neutral)
Long spot + short perpetual, earn funding. See the Funding Rate Arbitrage Complete Guide for details. This works because everything happens inside one exchange — no cross-exchange withdrawal problem.
5.2 Cross-exchange funding rate spread
Exchange A BTC perp funding +0.05% / 8h; Exchange B BTC perp funding +0.01% / 8h.
Play: short BTC perp on A (collect funding), long BTC perp on B (pay the lower funding), net +0.04% / 8h ≈ 43% APR (as long as the spread persists).
This is more viable than pure spread arbitrage — you don't need to transfer assets, just enough position capacity on both sides.
5.3 Triangular arbitrage (HFT bot territory)
Triangular arbitrage executes inside a single exchange, but the speed requirement is brutal. A retail-tier ccxt script can occasionally catch one, but competing with pro market makers is purely a speed race.
5.4 New listing window arbitrage
When a new token lists simultaneously on Binance / OKX / Bybit, prices diverge wildly across exchanges in the first few minutes. Withdrawals may not be open yet, so it becomes natural arbitrage between users — but the window is tiny (5–10 minutes) and you need pre-funded positions on both sides.
6. CEX vs DEX arbitrage
DEXs (Uniswap / Hyperliquid) often quote different prices than CEXs. But the DEX side has its own bottlenecks:
- Gas fees: $5–$50 per trade on Ethereum mainnet
- MEV bots: your transaction gets front-run or sandwiched
- Slippage: AMM pool depth too shallow
CEX-DEX arbitrage today is almost entirely captured by professional MEV searchers. For retail, an order-book DEX like Hyperliquid is more realistic than an AMM DEX.
7. Running "quasi-arbitrage" strategies on TVSBot
TVSBot supports one-click multi-account (one Alert auto-routes to multiple bound API keys) — the same TradingView Alert can fire into different accounts on different exchanges. This makes cross-exchange funding rate arbitrageactually practical:
# TradingView Pine signal
when funding(A) - funding(B) > 0.04%:
Alert payload: { "strategy": "fr-arb-AB", "action": "buy" }
# TVSBot backend routes by strategy:
# strategy fr-arb-AB-short → API key A → short BTC perp
# strategy fr-arb-AB-long → API key B → long BTC perp
# Both legs fill simultaneously, net exposure ≈ 0, collect funding spreadGet started
Want to run cross-exchange funding rate arbitrage? TVSBot's 'one-click multi-account' — one Alert, both sides fire at once, no naked legs from latency.
Start free trial8. Three key takeaways
- Retail can't really do pure spread arbitrage — three walls: withdrawal latency + bot speed + hidden costs
- Visible spread ≠ arbitrage. Mt.Gox's 1100% gap, FTX's 30% gap — both stemmed from "assets can't move," and the spread was just appearance
- Cross-exchange funding rate spreads are one of the few quasi-arbitrage plays retail can run — no asset transfer required, just capacity on both sides