Secret terminal

Crypto Triangular Arbitrage: How It Works

Nikita
Nikita
CEO Secret Terminal
14 min
Crypto Triangular Arbitrage: How It Works

Triangular arbitrage looks like free money. Three trades inside a single exchange, no moving coins onto the blockchain, no risk of price running away while a transfer sits in the mempool. Buy, swap, come back to the starting asset, end up in profit.

On paper, that's exactly how it works.

In practice there's one number that closes the topic for manual trading. Research by Muck, Schmidl and Wolf in Finance Research Letters measured how executable these setups are on high-frequency data: you have to complete the loop in no more than 146 milliseconds, otherwise slippage eats the entire profit. Ping from a server in Europe to the exchange there was 80 ms; after moving to Tokyo it dropped to 4 ms.

A human spends 300-800 ms on one deliberate click. Three clicks with a check of the numbers in the order book takes 3-5 seconds. That's 20-30 times wider than the window you need.

Below we'll walk through the mechanics step by step, run the numbers on a loop, subtract fees and see what's left.

What Triangular Arbitrage Is

Triangular arbitrage is a strategy where a trader swaps three assets one after another inside a single venue and returns to the starting coin with a larger amount than they began with. The profit comes from a mismatch between the rates of three trading pairs.

The difference from the classic scheme is that the money never leaves. No transfer between exchanges, no withdrawal fee, no waiting for six confirmations on the Bitcoin network. Arbitrage inside an exchange runs on one matching server in a fraction of a second. We covered the overall picture of arbitrage types in the piece "Crypto Arbitrage: Types, Mechanics and How to Start".

The Loop: A, B, C, A

The triangle is built from three pairs linked by shared assets. Not just any three will do, you need a closed chain.

LegPairActionFromTo
1ETH/BTCBuy ETH with BTCBTCETH
2ETH/USDTSell ETH for USDTETHUSDT
3BTC/USDTBuy BTC with USDTUSDTBTC

Started with BTC, finished with BTC. The loop is closed.

Direction of travel doesn't matter. If the clockwise loop loses money, it's often profitable counter-clockwise: you're working with the inverse rates.

What has to line up:

  • all three pairs trade on the same venue and in the same market type (spot with spot, futures with futures)
  • each pair shares an asset with exactly two others
  • all three have liquidity for the size you need, not just a displayed quote

On Binance you can build several thousand such triangles with BTC, ETH, BNB and stablecoins at the base. The problem isn't the number of loops. Almost all of them come out at zero or negative.

Where the Profit Comes From

An exchange doesn't quote cross rates automatically. The ETH/BTC pair lives its own life: its own order book, its own market makers, its own update speed.

The logic is simple. ETH costs 3,400 USDT, BTC costs 68,000 USDT, so the fair ETH/BTC rate is 0.05. That's the implied cross rate. But the ETH/BTC order book has its own price, formed by real orders: 0.04985 or 0.05012. That gap is the arbitrage spread.

Why it appears:

Uneven liquidity across pairs. BTC/USDT and ETH/USDT are the flagships, with turnover in the billions. ETH/BTC trades more quietly, and the cross pair reacts with a lag to a large print on the flagships.

Data update speed. The matching engine processes pairs independently. During an activity spike, the queue on one pair runs tens of milliseconds longer.

A density level getting taken out. A density level in the order book is a cluster of large limit orders at one price. Someone sweeps it on ETH/USDT with a market order, price there jumps 0.15%, and ETH/BTC is still sitting where it was. The window has opened. Synchronization breaks down hardest on news, liquidation cascades and listings.

Which leads to a conclusion the guides rarely spell out. Triangular arbitrage doesn't create profit out of thin air. You're being paid to repair a desync in the exchange's quotes, and you're competing for that payment with a hundred bots.

If the order book is still just a wall of numbers to you, watch the free lesson on limit orders and entry points. It's part of the full course "Trading from Scratch | Free Crypto Trading and Scalping Course" on our YouTube channel.

The Formula: rate1 x rate2 x rate3 vs 1

Checking a triangle comes down to multiplying three conversion coefficients.

K = k1 × k2 × k3

Each k is the multiplier applied to your balance when moving from one asset to the next. For our example:

k1 = 1 / 0.04985 = 20.0602 (BTC → ETH)

k2 = 3,400 (ETH → USDT)

k3 = 1 / 68,000 = 0.00001471 (USDT → BTC)

K = 20.0602 × 3,400 × 0.00001471 = 1.003009

Reading the result:

  • K > 1, the loop is profitable before fees
  • K = 1, parity, nothing to do
  • K < 1, the loop loses money, but the reverse direction gives 1/K

Beginners trip over that last point. Say K came out at 0.997 and the loop looks dead. But going the other way round (BTC → USDT → ETH → BTC) gives 1 / 0.997 = 1.003009. The same spread from the other side. That's why a scanner always checks both directions.

A detail almost every calculator skips. You take the rate not from last price but from the order book, and from the correct side: buying, you take the ask; selling, you take the bid. Otherwise the loop shows a plus where the real orders give a minus.

And size. The best ask at 0.04985 might be sitting on 0.3 ETH. You come in for 20, and the remaining 19.7 fills deeper in the book at worse prices.

Accounting for Fees

This is where the elegant math meets reality and usually loses.

Binance spot fees are 0.1% for both maker and taker, dropping to 0.075% when paid in BNB. Bybit's base rate is also 0.1%. On OKX the taker pays 0.1%, the maker 0.08%.

Three legs at 0.1% taker:

0.999 × 0.999 × 0.999 = 0.997003

Losses of 0.2997%. Applied to our loop:

1.003009 × 0.997003 = 1.000003

Net result: +0.0003%, or 0.20 USDT on a whole bitcoin. Twenty cents for three trades and the risk of getting stuck with unsold ether on the second leg.

The same loop at 0.075% per leg gives +0.0755%, or 51 USDT per bitcoin. The difference between twenty cents and fifty dollars came from a single checkbox in the account settings. There's a detailed breakdown of fee tiers in the article "Crypto Exchange Fees: A Full Comparison".

Fee tierFee per legLoss per loopBreak-even spread
Binance VIP0, taker0.1%0.2997%0.3006%
Binance VIP0 + BNB0.075%0.2248%0.2253%
Bybit spot, base0.1%0.2997%0.3006%
OKX, maker on all legs0.08%0.2398%0.2404%
Top VIP level0.02%0.06%0.06%

A 1% spread on a chain of three liquid pairs is fantasy. On the majors, gaps live in the 0.02-0.15% range and close within milliseconds.

I ran a scanner on the BTC/ETH/USDT and BTC/BNB/USDT chains for a week. Anything above 0.25% showed up a handful of times, and all of it landed in the seconds after big liquidations. Meaning the moments when the order book is empty and your order fills nowhere near where you saw it.

Why Triangular Arbitrage Doesn't Work by Hand

Three reasons, and each one is enough on its own.

Speed: Spreads Close Within Seconds

Milliseconds, more precisely. Seconds is already a generous estimate.

A human's time budget: 200-500 ms to spot the gap, 1-2 seconds to switch to the pair and type in the size, then the same again for the second and third leg. That's 4-7 seconds in the perfect scenario, with everything open in adjacent windows. The window you need, as a reminder, is 146 ms.

In those five seconds BTC/USDT on Binance will print several hundred trades, and the cross rate will be back at parity. In the worse case the first leg fills and the second goes off at a price worse than calculated, and instead of arbitrage you end up with a directional position in ETH.

Fees Eat the Profit

Let me repeat the ratio, because that's the verdict right there. The entry threshold on spread at base fees is 0.30%. The typical spread on liquid triangles is 0.02-0.15%.

A gap of two to fifteen times. Not in your favor.

The temptation is obvious: trade with limit orders and pay less. On Binance that won't help, maker and taker cost the same there. On OKX the rate is lower, but a limit order doesn't guarantee a fill: while it sits in the book, the spread closes.

Plus slippage. On less liquid crosses the order book is empty by the second or third line, and a few thousand dollars of size chews straight through it.

You Need a Bot, and a Bot Costs Money

An intra-exchange arbitrage bot scans hundreds of pairs in real time and fires off three orders in the time it takes a human to reach for the mouse. Except that this kind of automation doesn't cost what an ordinary grid robot costs, the sort we wrote about in "Trading Bots for Crypto: Are They Worth Using".

Infrastructure next to the matching engine. Even a 20 ms edge decides whether the trade goes to you or to a competitor. A VPS in New York for trading on a Singapore exchange is a guaranteed loss on latency alone. Renting an instance in the right zone: $40 to $300 a month.

Code that keeps up. An "asyncio + REST" setup loses to "WebSocket streams + precomputed routes" by an order of magnitude, and scanning five hundred pairs over REST will hit a rate limit ban within minutes. You need order book subscriptions and a local replica of the book.

Emergency exit logic. What do you do when the second leg fills at 40%? Without unwinding, sooner or later the bot builds a position you'll have to unload manually at a loss worth a month of work.

An off-the-shelf intra-exchange arbitrage bot on subscription runs $50-500 a month. To cover that at a 0.05% margin per loop you need $100,000-1,000,000 of monthly turnover, and that's only to break even.

Triangular vs Cross-Exchange Arbitrage

The two approaches often get mixed up, though they work differently.

CriterionTriangular (intra-exchange)Cross-exchange
Where it happensOne exchange, three pairsTwo or more venues
What movesOnly balance entriesActual coins across the blockchain
Cycle timeMillisecondsFrom 2 minutes to an hour
Price change riskPractically zeroHigh, price moves during the transfer
Withdrawal feeNone1-4%, eats the spread entirely
Typical spread0.02-0.3%0.5-3%
Feasible by handNoYes, with a two-deposit setup
Who you compete withColocated HFT botsBots, but the window is wider

The table makes one point. The triangle wins on risk and loses on spread size; cross-exchange is the reverse.

For the second case there's the two-deposit model: funds sit on two exchanges in advance, and when a spread appears the trader buys on one and sells on the other simultaneously. Transfer-time risk disappears completely, and you don't need infrastructure costing tens of thousands of dollars. Arbitrage inside a single exchange doesn't offer that luxury.

The third option, P2P, plays by different rules: there you earn a premium for convenience, and spreads are measured in whole percent. There's a breakdown with chains and risks in the article "P2P Crypto Arbitrage: How It Works and How to Start".

Five Mistakes That Break the Loop

An unclosed leg. The first trade went through, the second filled partially, the third didn't go through at all. Now there's ether on your balance that shouldn't be there. One incident like that wipes out the profit from fifty successful loops.

Phantom liquidity. The book shows 5 BTC at a level, you send an order for 2, and 0.4 fills. The rest was pulled a millisecond before you got there. Density that gets pulled as price approaches is placed by spoofing algorithms, and in arbitrage you run into them constantly.

Calculating off last price. The rate wasn't taken from the book, and the bid-ask spread wasn't accounted for. The model shows a plus while the deposit quietly melts.

Rounding and lot step. The exchange won't let you sell 20.06024891 ETH, it rounds to the allowed step. The remainder hangs around as dust on your balance. On small size, rounding eats the entire calculated spread.

Technical failures. The API dropped between the second and third leg, a rate limit kicked in, the pair went into a pause. All three scenarios leave you in an unplanned position.

A case where the setup didn't work. The ETH/BTC chain showed 0.34% after a liquidation cascade. The first leg went through as calculated, on the second 60% of the size filled and the rest sat in the queue. While the order was hanging there, ETH dropped 0.5%. A loop with $34 of paper profit closed at minus 90.

To learn how to read density levels and volume before putting money at risk, there's the free lesson on market analysis through the order book and clusters, from the same course.

FAQ

How much can you make on triangular arbitrage?

At base fees of 0.1% per trade, close to nothing. The average net result on liquid chains hovers around zero, and after slippage it goes negative. Earnings start at VIP levels with rates from 0.02% and latency under 10 ms. A retail trader with a laptop gets negative expectancy.

Can you do triangular arbitrage manually?

No. The execution window per academic measurements is up to 146 ms; a human needs at least 3-5 seconds for three trades. In that time the spread closes, and instead of arbitrage you get a directional position. The exception is exotic low-liquidity pairs where gaps live longer. There, slippage will take the difference.

Do you need a large deposit?

Technically 100 USDT is enough, the minimum order on most pairs is lower. Economically, no: at a 0.05% margin per loop, a hundred dollars brings in 5 cents. To cover a $50 VPS you need turnover of $100,000 a month or more. What limits you isn't capital, it's the number of genuinely profitable windows.

Which exchange suits this best?

The one where your fee is low and there are plenty of cross pairs. Binance offers the most triangles, and it's also where the 25% discount for paying fees in BNB applies. OKX offers a 0.08% maker rate, Bybit holds spot at 0.1% on both sides. Look at your actual tier given your volume, not at the advertised rates.

Is triangular arbitrage legal?

Yes, it's ordinary exchange trading across three pairs. Questions come up around request speed: if a bot breaks API limits and creates load, the exchange will restrict access or ban the key. Tax obligations depend on jurisdiction, and each trade in the loop counts as a separate reportable event.

What happens if one of the three trades doesn't fill?

You're left with an open directional position in the intermediate asset, and the arbitrage turns into speculation in a direction you never chose. Bots have unwinding logic written for this: immediate market closure of the unclosed legs, taking a small loss. A manual trader usually freezes hoping price comes back, and loses more.

Bottom Line

Triangular arbitrage is honest math that worked in 2017 and has almost stopped working now. Break-even sits around 0.3% at base fees, the typical spread is several times smaller, and the execution window is an order of magnitude shorter than human reaction time.

There's still a point in understanding it. When you see a cross pair lagging the majors, a correlator is about to show up and pull the price into line. That's tradable information, you just shouldn't be trying to monetize it with three simultaneous orders.

A retail trader is better off investing in how fast they read the market than in a millisecond race against HFT funds. I keep three windows open: the order book shows where the limit size is sitting, the tape shows what's filling right now, clusters show how volume was distributed earlier. Three arguments instead of guessing, and the decision window is measured in seconds, not milliseconds.

[Placeholder: trader's workspace with order book, tape and clusters]

See the Market the Way Professionals See It

Secret Terminal is a trading terminal for scalping and order flow analysis. Connects to Binance, Bybit, OKX, MEXC and WhiteBIT via API keys. One-click order book setup, separate workspaces for trading and analysis, windows for funding rates, density levels and listings. Keys are stored locally on your device.

The terminal is free.

Download Secret Terminal and start trading like a professional

About the author

Nikita
Nikita
CEO Secret Terminal

Has 5 years of trading experience and spent 3 years as a mentor, training over 2,000 students. He is developing Secret Terminal to make professional trading tools accessible to every trader.

Was helpful

Your rating will help us improve the quality of published materials and increase their usefulness.