Triangular arbitrage is profiting from a mispricing between three trading pairs inside a single exchange. You walk a loop of three trades - for example BTC → ETH → USDT → BTC - and if the cross-rates between the pairs aren't perfectly aligned, you end the loop holding slightly more BTC than you started with. The key difference from cross-exchange arbitrage: the coin never leaves the exchange. No network transfer, no gas, no waiting for confirmations, and - most importantly - no deposit/withdrawal (D/W) risk. The whole loop executes in one venue's order books in a fraction of a second. Below: what triangular arbitrage is, the math of closing the triangle with a worked example, why the windows are tiny and fast, leg-by-leg execution risk, and realistic expectations.

What triangular arbitrage is

Classic cross-exchange arbitrage connects two exchanges: buy cheaper on one, transfer, sell dearer on the other. Triangular arbitrage is arbitrage inside one exchange between three pairs that form a closed loop.

ONE EXCHANGE · no transfer · no D/W USDT BTC ETH leg 1 · buy BTC/USDT leg 2 · buy ETH/BTC leg 3 · sell ETH/USDT start 1.0000 end +1.39% net
The loop closes inside one exchange: USDT → BTC → ETH → back to USDT, no transfer, no D/W.

For the loop to close, you need three pairs linked through shared assets:

  • BTC/USDT - pair 1
  • ETH/BTC - pair 2
  • ETH/USDT - pair 3

From these you assemble the route: USDT → BTC → ETH → back to USDT. You start in a stablecoin, pass through two intermediate coins, and return to the same stablecoin. If each step is slightly better than the "theoretical" rate, you come out with more USDT.

Why does a mismatch arise at all? Each of the three pairs is its own order book, with its own market makers, its own order flow, and its own refresh speed. The ETH/BTC price forms independently of ETH/USDT and BTC/USDT. Most of the time the exchange keeps them aligned (bots watch this), but in moments of sharp movement one pair updates milliseconds after the others - and a tiny gap opens between the actual cross-rate and the one the other two pairs imply.

The math of closing the triangle

It all comes down to one inequality. Take the three pairs and label their rates. The direct ETH/BTC rate should equal the synthetic one assembled through USDT:

start 1.0000 BTC = 0% break-even +0.30% gross edge +1.695% 3 x taker - 0.30% net +1.39% return % →
Gross edge minus the three-leg taker drag: +1.695% − 0.30% ≈ +1.39% net, clearing the break-even line.
synthetic ETH/BTC = (ETH/USDT) / (BTC/USDT)

As long as the direct ETH/BTC rate equals the synthetic one, there's no arbitrage - the market is aligned. The window opens when they diverge:

direct ETH/BTC  ≠  (ETH/USDT) / (BTC/USDT)

If the direct rate of ETH in BTC is below the synthetic one, ETH is "cheap" relative to what the dollar pairs imply. So it pays to buy ETH with BTC directly, and return to BTC via USDT. That's our loop.

Example: 1 BTC → ETH → USDT → more than 1 BTC

Take a hypothetical moment of mismatch on one exchange. The quotes (deliberately slightly "spread apart"):

  • ETH/BTC = 0.0500 (1 BTC buys 20 ETH)
  • ETH/USDT = 3000 (1 ETH = 3000 USDT)
  • BTC/USDT = 59,000 (1 BTC = 59,000 USDT)

Synthetic ETH/BTC = 3000 / 59,000 = 0.05085. The direct rate 0.0500 is below the synthetic - so ETH is underpriced in BTC, and the loop should turn a profit. Let's check on 1 BTC, first without fees:

Start: 1.0000 BTC

Leg 1  buy ETH with BTC (ETH/BTC = 0.0500):
  1 BTC / 0.0500 = 20.000 ETH

Leg 2  sell ETH for USDT (ETH/USDT = 3000):
  20 ETH × 3000 = 60,000 USDT

Leg 3  buy BTC back with USDT (BTC/USDT = 59,000):
  60,000 / 59,000 = 1.01695 BTC
──────────────────────────────────────────
Result, no fees: 1.01695 BTC  (+1.695%)

The +1.695% gap is the triangle's gross edge - the profit ceiling. Now the sobering part: each of the three legs pays a taker fee, because arbitrage takes liquidity from the book immediately (with limit orders you risk not filling in time). At a 0.1% taker per leg:

One-leg multiplier after taker: ×0.999
Three legs:  0.999³ ≈ 0.997  → total drag ≈ 0.30%

Result, with fees: 1.01695 × 0.997 ≈ 1.01390 BTC
──────────────────────────────────────────
Net ≈ +1.39%  — the triangle closes at a profit

Here the loop is still profitable, because the gap (1.695%) comfortably cleared the fee drag (0.30%). But notice how much the three legs ate: nearly a third of a percent on fees alone. In a realistic market the gaps on liquid triplets like BTC/ETH/USDT are measured in hundredths of a percent - and then that same 0.30% turns a "visible profit" into a net loss.

The triangle's golden rule: three legs is a triple fee. When targeting, don't compute the gross gap - compute gross − 3 × taker. At a 0.1% taker the break-even threshold is already ~0.30%, and any gap thinner than that is a loss, however "positive" it looks raw.

Why the windows are tiny and fast

Triangular arbitrage is the most "scrubbed" niche of all arbitrage types, for two reasons.

1. It's all inside one exchange. There's no network latency, no D/W risk, no cross-venue desync - exactly the frictions that keep windows open for minutes in cross-exchange arbitrage are gone. And once the barrier to entry is near zero, any bot with API access instantly competes for the gap.

2. Bots watch triangles continuously. On every major exchange dozens of market makers keep ETH/BTC aligned with ETH/USDT and BTC/USDT in real time. The moment the synthetic rate diverges from the direct one, orders level the books in milliseconds. The window lives not seconds but fractions of a second - and it's closed by whoever sits physically closest to the exchange engine (co-location, direct matching-engine access).

Add the 3 × taker fee drag on top, and it becomes clear why clean triangular windows on liquid triplets are nearly nonexistent by hand. They exist, but they're taken by HFT bots before a human can even read the quotes.

Execution risk

Even when the gap is real and clears fees, the profit isn't guaranteed - leg-by-leg execution risk eats it. The loop is three sequential trades, and there's a time gap between them:

1. Slippage on each leg. The gap is visible at the top of the book, but at real size each of the three trades chews through its own level. Three legs, three slippages, and they add up. On a thin middle pair (often ETH/BTC - less liquid than the dollar pairs) the slippage of one leg can zero out the entire gap.

2. Partial fills. A taker order may not fill in full - there wasn't enough liquidity for your size. Then you're stuck mid-loop: you've already bought ETH, but only managed to sell half. The unclosed leg turns a "risk-free" arbitrage into a directional ETH position.

3. One leg moves while the third executes. This is the main enemy. While legs 1 and 2 go through, the price on the third pair has time to move - and by the time it executes the gap has already collapsed. You entered the loop at +0.4% and closed at −0.1%, because BTC/USDT drifted in the 200 milliseconds you spent on the first two trades. The slower the execution, the higher the chance the triangle "falls apart" on the last leg.

It's exactly this combination - tiny gap plus three points of execution risk - that makes triangular arbitrage punish slowness far harder than cross-exchange arbitrage.

Why it needs speed and a bot more than other types

In cross-exchange Spot–Spot the window lives seconds, sometimes minutes - a human has a chance to react by hand. In triangular the window lives fractions of a second, and you must close three trades in a row, with every millisecond between them raising the odds the gap vanishes. Doing this by hand is physically impossible: while you click the second leg, the third has already moved.

So triangular arbitrage is an almost exclusively algorithmic niche. You need:

  • Direct API access with minimal latency, ideally co-location next to the exchange engine.
  • Atomic or near-atomic submission of the three orders - so all three legs go out essentially at once, not one after another with a delay.
  • An exact gross − 3 × taker calculation before entering, adjusted for the book depth of each leg, not a single price.

Without this the triangle is reliably unprofitable: fees and slippage are guaranteed, the gap is not. It's the opposite of new-listing arbitrage, where windows are wider and slower (see arbitrage routes on window types).

Realistic expectations

Triangular arbitrage sounds elegant - "a risk-free loop inside one exchange, no D/W" - but in practice it's the thinnest-margin and most fee-sensitive strategy of the whole arbitrage spectrum.

  • The gaps are microscopic. On liquid triplets (BTC/ETH/USDT and the like) the mismatch rarely exceeds hundredths of a percent, and it lasts milliseconds. A net profit after 3 × taker is the exception, not the norm.
  • Fees decide everything. At a standard 0.1% taker the break-even threshold is ~0.30%. In reality this works at a profit mostly for those with reduced or zero fees (maker rebates, VIP tiers, native exchange tokens for a discount). At a default 0.1% × 3, clean windows are almost absent.
  • It's an HFT game. The lion's share of gaps is taken by co-located bots in fractions of a second. A retail operator without the infrastructure competes at a built-in disadvantage.
  • Where gaps are wider - on less liquid triplets and exotic pairs - slippage and the risk of a partial fill on the middle leg immediately rise, so the "wide gap" gets eaten by execution risk.

The realistic takeaway: triangular arbitrage is an infrastructure-heavy, low-margin, high-frequency strategy. Two things matter most for it: minimal execution latency and minimal fees. Without both, the positive expectancy doesn't add up.

FAQ - triangular arbitrage in crypto

What is triangular arbitrage in simple terms?

It's a loop of three trades inside one exchange through three linked pairs - for example BTC → ETH → USDT → back to BTC. If the pairs' cross-rates are slightly out of sync, you come out holding more of the starting asset than you began with. The coin never leaves the exchange, so there's no network transfer.

How is triangular arbitrage different from cross-exchange?

Cross-exchange connects two venues and requires moving the coin over a network (with closed-deposit/withdrawal risk and network latency). Triangular is inside one exchange, three pairs, no transfer and no D/W risk. But the windows are an order of magnitude thinner and faster, and almost entirely taken by HFT bots.

How much can you realistically make on triangular arbitrage?

On liquid triplets, clean gaps after 3 × taker are hundredths of a percent and rarer. Positive expectancy mostly comes together with reduced/zero fees and low execution latency. Without HFT infrastructure it's more often a loss than a profit.

Why do the three fees matter so much?

Because the loop is three taker trades, and the fee is paid on each. At a 0.1% taker the total drag ≈ 0.30% (0.999³). That's the threshold: any gross gap thinner than ~0.30% goes negative, however "positive" it looks before the deduction.

Can you trade triangular arbitrage by hand?

Practically no. The window lives fractions of a second, and you must close three orders in a row - while you click the second leg, the third has already moved. It's an algorithmic niche: a minimal-latency API and near-atomic submission of three orders.

This is not investment advice. Triangular arbitrage is a low-margin, high-frequency strategy with real loss risk: the visible gap collapses in milliseconds, and three fees plus slippage on each leg easily turn a "positive" loop negative. Without low latency and reduced fees, the positive expectancy doesn't add up.


Related: the overall Crypto arbitrage guide - a map of every type. How to read and build a route - arbitrage routes. The everyday baseline flow - Spot–Spot. Live spreads across 20+ exchanges, net of fees and D/W - in the web dashboard.