Triangular Arbitrage in Crypto: Complete 2025 Guide
This practical guide explains crypto triangular arbitrage—how to detect mispricings inside a single exchange or across multiple venues using three currency pairs, calculate true profitability after fees, and execute with robust risk controls and optional automation.
Open Multiple Venues for Better Triangles
To find and execute more cycles, keep balances on 2–3 liquid venues. Good starting options:
Tip: Pre-fund in stablecoins and the core assets you’ll cycle (e.g., USDT, BTC, ETH). Keep a small buffer for fees.
What Is Triangular Arbitrage?
Triangular arbitrage captures inconsistencies between three currency pairs that involve the same assets. You start in a base currency (often USDT), convert through two other markets, and return to the base. If the product of exchange rates is misaligned after fees, you end the cycle with more base currency than you started—locking in a market-neutral profit.
Understanding the Triangle (BTC / ETH / USDT)
Triangle structure
- Market A: BTC/USDT (price of BTC in USDT)
- Market B: ETH/USDT
- Market C: BTC/ETH (price of BTC in ETH)
Two possible directions: forward (USDT→BTC→ETH→USDT) and reverse (USDT→ETH→BTC→USDT).
Why mispricings appear
- Uneven liquidity across pairs
- Latency between order books and index prices
- Different fee tiers, maker rebates, and rounding
- Inventory imbalances and sudden demand shifts
The Triangular Arbitrage Formula
Let:
PBTC/USDT =ask you pay to buy BTC with USDTPBTC/ETH =bid you receive to sell BTC for ETH (or ask to buy, depending on leg)PETH/USDT =bid you receive to sell ETH for USDTfi= fee factor per leg (e.g., taker 0.06% → multiply by 0.9994; maker rebate > 1)
Forward cycle (USDT → BTC → ETH → USDT):
CycleFactor = (1 / P_BTCUSDT) * P_BTCETH * P_ETHUSDT * (f1 * f2 * f3)
Profit if CycleFactor > 1 by your margin-of-safety
Reverse cycle (USDT → ETH → BTC → USDT):
CycleFactor = (1 / P_ETHUSDT) * (1 / P_BTCETH) * P_BTCUSDT * (f1 * f2 * f3)
Trade only if CycleFactor > 1 + costs + slippage buffer
Worked Examples
Example 1 — Forward (USDT→BTC→ETH→USDT)
| Leg | Action | Price used | Result |
|---|---|---|---|
| 1 | Buy BTC with USDT | BTC/USDT ask = 60,000 | 1 USDT → 1/60,000 BTC |
| 2 | Sell BTC for ETH | BTC/ETH bid = 30 | → (1/60,000)*30 ETH = 0.0005 ETH |
| 3 | Sell ETH for USDT | ETH/USDT bid = 3,010 | → 0.0005*3,010 = 1.505 USDT |
Ignoring fees, CycleFactor ≈ 1.505 (profitable). After 0.06% taker on each leg (factor ≈ 0.9982), net ≈ 1.502. Still above 1; now compare with slippage estimates.
Example 2 — Reverse (USDT→ETH→BTC→USDT)
Swap input prices—if the product returns < 1 after fees, skip. Always compute with executable prices (best bid/ask and available size), not mid prices.
Step-by-Step Setup
- Create accounts on at least two liquid venues to increase opportunities: BYBIT, BITGET, MEXC.
- Security & API keys: Hardware 2FA, withdrawal allowlist, API keys with no withdrawal rights and IP whitelisting.
- Fund balances: Hold USDT (or your base) plus small BTC/ETH buffers to reduce leg risk. Choose fast/cheap networks for deposits.
- Build a triangle watchlist: BTC/ETH/USDT is the classic; also explore SOL/BTC/USDT, ETH/ARB/USDT, etc.
- Decide order types: Post-only makers where possible; IOC/FOK for taker legs that must fill immediately.
Execution Tactics (What Actually Works)
- Use executable quotes: Compute with ask on buys and bid on sells, plus available depth for your size.
- One-click / atomic submission: Fire all three orders nearly simultaneously; link them with client order IDs for tracking.
- Maker–taker mix: Posting one leg as maker can flip an otherwise marginal cycle to profitable via rebates.
- Position caps: Limit notional per cycle and total exposure in each asset to avoid inventory drift.
- Kill-switch: If any leg fails or fills partially, cancel the rest and flatten immediately.
All-In Costs & Slippage
| Cost component | Notes |
|---|---|
| Trading fees | Taker vs. maker; tiered by volume. Use fee factors in your formula. |
| Spread & slippage | Estimate using book depth at your size; add a safety buffer (e.g., 2–5 bps). |
| Rounding & min size | Tick size and min notional may clip fills; round conservatively. |
| Latency | Quotes go stale. Prefer WebSocket depth + timeouts < 200ms. |
Rule of thumb: Only trade when CycleFactor ≥ 1 + total costs + margin-of-safety. For small accounts, aim for > 10–20 bps net before size.
Risks & How to Control Them
Execution risk
One leg misses and leaves you directional. Use IOC/FOK, small clip sizes, and immediate hedges.
Liquidity risk
Thin alts show bigger theoretical edges but slip badly. Start with deep pairs.
Counterparty risk
Diversify and avoid overfunding any venue. Withdraw excess periodically.
Operational risk
Bad rounding, symbol mix-ups, or API errors can be costly. Add unit tests and paper-trade first.
Regulatory & tax
Keep detailed logs. This guide is educational only, not financial, legal, or tax advice.
Ready to scan and execute?
Set up accounts and build your triangle scanner across BYBIT, BITGET, and MEXC.
API/Bot Workflow (High-Level)
- Data ingest: Subscribe to order book top-of-book and Level-2 depth for your pairs.
- Signal engine: Continuously compute CycleFactor for forward & reverse, per symbol and size tier.
- Risk filters: Fee tier, min notional, depth sufficiency, and staleness thresholds.
- Execution: Submit three legs atomically (or near-atomically). Prefer maker on the deepest leg; IOC on sensitive legs.
- Monitoring: Track fill quality, rejects, cancels, P&L by pair, and venue health.
- Inventory control: Rebalance assets periodically to your target weights.
- Logging & reports: Persist quotes, orders, trades, and exceptions for auditing and taxes.
FAQ
Is triangular arbitrage still profitable in 2025?
Yes, but edges are thin and sporadic. Execution quality, low fees, and smart sizing matter more than ever.
Do I need a bot?
Automation helps a lot. Manual cycles can work on slower pairs, but bots catch more consistent opportunities with less latency.
What capital should I start with?
A few hundred to a few thousand USD is enough to validate your pipeline. Scale gradually as you measure slippage and reject rates.
Which triangles are best?
Bigger books (BTC/ETH/USDT) are safer; some alt triangles show larger gross edges but higher slippage and min-size issues.
What fees should I include?
Trading fees (maker/taker), spread, slippage, rounding losses, and any withdrawal or conversion costs if you rebalance funds.
Can I do this across exchanges?
Yes. Keep balances on multiple venues like BYBIT, BITGET, and MEXC to access more pricing variations.
