Crypto Triangular Arbitrage: How the 3-Way Loop Works

Crypto triangular arbitrage
Algorithmic Trading•5. listopadu 2025•18 min čtení

Picture a quiet Tuesday. Three prices on the same exchange, Bitcoin in USDT, Ether in USDT and Ether in Bitcoin, have drifted a fraction of a percent out of line with each other. (USDT is a stablecoin, a token built to stay at one US dollar.) If you could act instantly, you would buy Bitcoin with your USDT, swap the Bitcoin for Ether, sell the Ether back into USDT, and finish with slightly more USDT than you started with. You never had to guess where the market was going.

That is crypto triangular arbitrage. Arbitrage means buying and selling the same thing at two different prices at almost the same moment and keeping the difference, and the triangular kind does it with three trades instead of two. It is one of the few strategies that does not depend on the market going up or down. It is also one of the hardest to make money with, because the loop that looks free on a spreadsheet pays three sets of fees and has to beat every other trading program watching the same prices.

The short version

  • Triangular arbitrage is three trades in a row on one exchange that end in the coin you started with.
  • It pays only when the three prices disagree by more than the three trading fees.
  • The gaps are small and last seconds, so in practice a program finds them (a scanner) and a program trades them (a bot). You need to be able to code, or to work with someone who can.
  • It belongs on your own exchange account. We are HyroTrader, a firm that gives traders large simulated accounts after a paid test, and our rules do not allow it there. We give the reason further down.

What is crypto triangular arbitrage?

Crypto triangular arbitrage is a loop of three trades on one exchange that ends in the coin you started with, and it pays only when the three prices involved disagree with each other. You start with one asset, trade it for a second, trade that for a third, and trade the third back into the first. When the three prices agree, you end up with slightly less than you started with, because every trade costs a fee. When they disagree by more than those fees, the loop hands back more of the starting asset than you put in, and that surplus is the arbitrage.

The word triangular is literal: three assets, three markets between them, one closed triangle. If you have only ever bought and sold coins for dollars, the one new idea is that coins are also priced in each other. The ETH/BTC market, for example, trades Ether directly against Bitcoin. Each of the three trades in the loop is called a leg.

How the three-leg loop works

A typical loop on a single exchange uses BTC, ETH and USDT:

  1. Start with BTC and sell it for ETH on the ETH/BTC market.
  2. Sell the ETH for USDT on the ETH/USDT market.
  3. Buy BTC back with the USDT on the BTC/USDT market.

Each of those markets has an order book, the live list of everyone's buy and sell offers for that pair, and the loop simply takes the best available offer in each book, one after the other. If the bitcoin you sold by way of ETH brings in more USDT than it costs to buy a bitcoin back, the loop ends with more BTC than it started with. The gap has to be larger than the total cost of the three trades, or the loop is a loss that only looked like an opportunity.

Triangular versus two-point arbitrage

Two-point arbitrage is the one most people picture: buy bitcoin on one exchange and sell it on another where it trades higher. It uses a price gap for one pair across two exchanges, which means moving coins between them or keeping balances on both.

Triangular arbitrage stays on one exchange. It uses a mismatch between three pairs in one place, so there are no transfers, no withdrawal fees and no waiting for the blockchain to confirm anything inside the loop. You compare BTC priced in USDT, ETH priced in USDT, and ETH priced in BTC, and when those three prices stop agreeing with each other, a triangle opens.

Why "risk-free" is the wrong word

On paper the loop carries almost no market risk, because you end it holding the asset you started with and never meant to hold anything else in between. The profit comes from a pricing inconsistency rather than from where the market goes next, which is why people call it "risk-free".

In practice the risk has moved rather than vanished. The gaps are rare and short-lived, because market makers (the firms that continuously post buy and sell prices) and other trading programs adjust their quotes all day, so the window is measured in seconds and sometimes less.

Inside that window three things go wrong. Prices change between your first trade and your third, so even a small delay, which traders call latency, turns a paper profit into a loss. Fees eat the whole margin. Or the order book does not hold enough offers to fill one of your trades in full, which breaks the loop and leaves you holding a coin you did not want.

That is why making triangular arbitrage pay month after month is mostly the business of professional trading desks and experienced traders with automation, fast infrastructure and strict risk controls. The strategy is neutral to the market. It is not neutral to execution.

A worked example with BTC, ETH and USDT

Assume one exchange shows these three prices at the same instant:

  • 1 BTC = 30,000 USDT
  • 1 ETH = 2,000 USDT
  • 1 BTC = 16 ETH

The first two prices tell you what the third should be: 30,000 divided by 2,000 is 15, so one bitcoin should buy 15 ETH. The ETH/BTC market is offering 16. (An exchange screen quotes this pair the other way round, as 0.0625 BTC per ETH, which is the same price.) That disagreement is the opportunity, and the loop collects it by selling bitcoin where it is expensive (in ETH) and buying it back where it is cheap (in USDT).

Step

Trade

You now hold

Start


1.0000 BTC

1

Sell 1 BTC for ETH at 16 ETH per BTC

16.0000 ETH

2

Sell 16 ETH for USDT at 2,000 USDT each

32,000 USDT

3

Buy BTC with 32,000 USDT at 30,000 USDT each

1.0667 BTC

The loop returns about 0.0667 BTC more than it started with, worth about 2,000 USDT at these prices, before fees.

The quick check: multiply the three rates

Traders test a triangle by multiplying the three exchange rates around the loop: 16 ETH per BTC, times 2,000 USDT per ETH, times 1 BTC per 30,000 USDT. The result is 32,000 divided by 30,000, or 1.0667.

Anything above 1 means one unit of the starting asset comes back as more than one unit, so a gap exists before costs. Exactly 1 means the prices agree. Below 1 means the loop loses in that direction, and the same three trades run the other way round may win, which is why a scanner checks both directions. It runs this multiplication for every triangle it watches, every time a price changes.

The same loop with realistic numbers

The example above uses a gap of nearly 7 percent so the arithmetic is easy to follow. A gap that wide would not last a blink on a busy pair. The gaps that actually appear are small, often a few tenths of a percent or less, and at that size fees decide everything.

Here is the same loop entered from the USDT corner: 10,000 USDT into BTC, the BTC into ETH, the ETH back into USDT. Assume a gap of 0.35 percent and a fee of 0.1 percent per trade.

Item

Amount

Gain from the 0.35% gap, before costs

about 35 USDT

Fees on three trades at 0.1% each

about 30 USDT

Left over, if every trade fills at the price you saw

about 5 USDT

Five dollars on ten thousand, and only if all three trades fill exactly at the prices on the screen. If just one of them fills 0.05 percent worse, the profit is gone. This is why the arithmetic has to be done after fees, by a machine, before any order goes out.

The 0.1 percent is an assumption for the example. Exchanges publish fee schedules that fall as your trading volume rises, which is one more reason the strategy favours professional desks over individuals.

Why the gaps appear, and why they close within seconds

Crypto markets price the major coins efficiently most of the time, and a gap like the one in the example would close instantly if every order book updated at once. They do not. The books on one exchange refresh at slightly different moments, so when a large sell order hits BTC/USDT before ETH/BTC has caught up, a temporary triangle opens until the prices line up again.

Quiet markets open gaps as well, and theirs last longer. The busiest markets, such as BTC/USDT, stay tightly priced. A quieter one, such as a small coin priced in BTC, can drift away from the rate the busy markets imply, sometimes for long enough that a scanner catches it. Volatility widens the timing gaps further, because when one price jumps the related pairs need a moment to follow. Now and then a mistyped order or a misconfigured bot posts a price far from the market that gets partly filled before anyone notices.

The same speed that lets programs find these gaps is what closes them. Trading desks and bots watch the same triangles around the clock, seven days a week, and once a gap appears their orders race to take it, which pushes the prices back into line within seconds. A spreadsheet that shows a 0.5 percent gap is describing the moment before that race, never the price you will actually get.

How often a gap survives fees depends on the exchange, the pairs and your speed, and no honest figure fits everyone. The only way to know is to log what your own scanner finds after costs.

Triangular arbitrage scanners: what a good one does

A triangular arbitrage scanner is a program that reads prices across many pairs at once, works out every possible triangle, and flags the ones where the loop would return more than it costs. Doing this by hand is not realistic. By the time you have read three order books the gap is gone, so the finding has to be automated, and in practice the trading is too.

A scanner's output is a list of triangles with the arithmetic already done. Two illustrative rows show what most of that list looks like:

Triangle

Gap before fees

Fees (3 trades)

Net

Largest size the books can fill

USDT to BTC to ETH to USDT

+0.35%

-0.30%

+0.05%

4,200 USDT

USDT to BTC to SOL to USDT

+0.22%

-0.30%

-0.08%

1,900 USDT

The second row is the common case: a gap that exists on paper and disappears once fees are counted. The last column matters as much as the net figure. The first row is the triangle from the example above, caught at a moment when its order books are thin. It is profitable, but it can only absorb 4,200 USDT, and 0.05 percent of that is about two dollars.

Whether you use someone else's scanner or write your own, ask four things of it:

  • Results that subtract fees by default, so you never see a gross number alone.
  • Sizing that fits the offers actually sitting in each order book, which traders call depth.
  • A minimum net gap that you set yourself.
  • A fast, stable connection to the exchange's price data.

Public dashboards that display live triangular gaps are useful for learning what the market looks like and nearly useless as a signal, because a gap that thousands of people can see is a gap that bots have already taken. If you take this seriously, expect to build your own scanner, usually a small script that listens to the live price stream of one exchange for a short list of pairs. The newer AI-assisted scanners marketed to retail traders work on the same arithmetic, and our guide to AI crypto arbitrage tools and strategies looks at what they add and what they do not.

Triangular arbitrage bots: executing the three legs

Finding a loop is half the job. A triangular arbitrage bot does the other half by placing the three trades automatically, faster than a person can click. A sound one works through four steps every time:

  1. It checks the opportunity again against its own rules, because the scanner's price may already be out of date by the time the signal arrives.
  2. It sends the three orders in sequence and fires each one the instant the previous trade confirms.
  3. It adjusts when a trade fills only in part. The next legs shrink to match, so a half-filled second leg does not leave the third one too large.
  4. It stops itself and closes whatever it holds when prices have moved or the delay has grown beyond the limits you set.

The choice of order type is part of the design. A market order fills immediately at whatever price is available, while a limit order fills only at your price or better and may not fill at all. Some bots use a limit order on one leg to protect the price and market orders on the others for speed.

Speed decides most races, so serious operators keep their code lean and run it on servers close to the exchange. Ready-made platforms with arbitrage modules are a starting point, and you should expect to outgrow them. If you connect third-party software to your exchange account, you do it with API keys, the credentials that let a program trade on your behalf, so restrict their permissions, switch off withdrawals and check who built the software. Key permissions, rate limits and the rest of the setup are explained step by step in our crypto API trading guide.

The costs that eat the profit

Fees come first, because they are certain. If you pay 0.1 percent on each trade, three legs cost about 0.3 percent for the round trip, so a triangle that shows 0.25 percent on paper is a guaranteed loss. Build the fee rate you actually pay into the scanner and judge every loop on what is left after it.

Slippage is the second certainty. The best price in an order book is only available for a limited amount, and a larger order works its way through worse and worse offers, which on a quiet pair erases the whole gap. Size every loop to what the book can absorb at your target prices. A setup that works with 10,000 dollars can collapse with 1,000,000 dollars, because your own orders move the market. How that works in detail is in our explainer on what slippage is in crypto.

Timing risk is the one that leaves you holding something. Complete the first two trades, watch the price shift before the third, and you are stuck with a coin at a bad rate. Many exchanges offer order instructions that cancel whatever cannot fill at once, and a bot can unwind automatically when the loop breaks. Both limit the damage. Neither removes it.

The frictions the arithmetic never shows

Competition is the friction that hurts most. Faster desks take the gap before you arrive, or you trade into a gap that closed a moment ago, and several bots hitting the same triangle at once can briefly turn it into a loss for all of them. Expect an arms race, and expect to keep tuning.

Exchanges add their own obstacles. They cap how many price requests and orders a program may send per second, they slow down during heavy traffic, and a trading halt during extreme volatility can strand you in the middle of a loop with two trades done and one not. Some traders try the same idea across two exchanges, but that adds withdrawal fees and blockchain waiting times, and it is treated as a separate strategy.

Then there is the engineering. A reliable system has to read live prices, calculate every triangle, size orders to the book, handle errors and recover from half-filled trades, and for many independent traders that work is a bigger obstacle than money.

Triangular arbitrage is not illegal in itself, since it is ordinary buying and selling of listed assets. Exchange rules and your local law still apply, and very aggressive activity can trigger an exchange's risk controls or a manual review, so check the exchange's terms before the bot goes live.

Five habits if you decide to run it

  1. Choose the exchange before the strategy. Large exchanges with many pairs, low fees and reliable connections give tighter prices and deeper books, which means less slippage. Smaller ones show more gaps and more half-filled trades.
  2. Treat it as a speed problem. Run the bot on a fast server near the exchange, use the live price stream rather than requesting prices over and over, and keep the code lean.
  3. Start small and record everything. Compare what you expected with what you got after fees and slippage, find the pairs that keep producing false gaps, and increase size only where the results hold and the order book allows it.
  4. Limit what one mistake can cost. Set a maximum loss per loop, spread balances across accounts, restrict API key permissions and withdraw gains on a schedule, so one bug or one leaked key cannot take everything.
  5. Go easy on leverage. Some exchanges let you borrow to trade a position larger than your balance, which is called leverage. Single loops return fractions of a percent, so it is tempting, but it shrinks your margin for error as fast as it grows your result. Keep it low enough that a failed loop is a bad day, never a wiped-out account.

Can you run it on a prop firm's larger account?

Once a loop works on a small account, the obvious next thought is a bigger one. That is what prop firms offer. A prop firm, short for proprietary trading firm, sells a paid test called a challenge. Pass it inside strict loss limits and the firm gives you a much larger account to trade, called a funded account, and pays you most of the profit you make on it.

We are HyroTrader, a prop firm for crypto traders, and on our accounts the answer is no, for two reasons.

The first is practical. Our accounts trade one kind of contract, the USDT perpetual future, which follows a coin's price without you owning the coin. They do not offer spot trading, the direct swapping of one coin for another, and a triangle needs three spot markets. It cannot be built.

The second is a rule that covers every kind of arbitrage, including kinds that could be built. Our accounts are simulated: they follow live market prices, but the trades are never sent to the real market. A simulated account receives its prices as a data stream, and a strategy that profits from tiny delays or mismatches in that stream is profiting from a flaw in the simulation, which says nothing about how well you trade. So our rules allow bots, as long as the strategy is your own, and prohibit arbitrage and strategies built on price delays, with a review, restrictions or disqualification for accounts that cross the line. Rules differ from firm to firm, so read any other firm's rulebook on arbitrage before you pay for its test.

If the accounts are simulated, where do payouts come from? From the firm. A payout is your agreed share of the simulated profit, paid in real money out of our own revenue, which comes from the fees traders pay for the challenge. We pay within 24 hours of a request, in USDT or USDC, both dollar stablecoins. Losses stay on the simulated account, and you never owe us anything.

What a prop account does suit is a trader whose own program takes a view on where the price is going, rather than hunting gaps between prices. A bot you wrote can trade one of our accounts, in sizes up to $200,000. Arbitrage teaches fee accounting, sizing to the order book and automatic stops, and those are the habits that keep any bot inside a daily loss limit.

To see how your own rules-based approach behaves under a daily loss limit, start a free trial: a practice account of up to $200,000, with no card needed.

Who should run this

Decide by where your advantage actually lies. If it is speed and engineering, and you have the infrastructure to compete with professional desks on one exchange, triangular arbitrage can still pay in small amounts, and the place to run it is your own exchange account, where it is allowed.

If your skill is reading the market, carry the habits arbitrage teaches (counting fees, sizing to the order book, stopping automatically) into a bot that trades on that view. That bot is welcome on a funded account. Either way, start small, measure your real results after fees and slippage, and add size only where the order book supports it.