Triangular Arbitrage Calculator
Solve the three-leg arbitrage identity Profit = ( R_AB · R_BC · R_CA − 1 ) × 100 for any of its four variables — the cycle profit, and each of the three leg rates — with step-by-step math, a live three-pair cycle schematic, fee and slippage drag analysis, compounding-over-cycles projection, and a notional-based dollar P&L breakdown.
Each leg of a triangular cycle pays its own fee, so the total cost is roughly 3 × (fee + slippage). On a 0.10% taker fee and 0.02% slippage, that is 0.36% per cycle. A gross profit below 0.36% is not a trade — it is a donation. The net profit figure applies the compounded fee and slippage drag to the gross cycle product: net = gross × (1 − fee − slip)³ − 1. Real taker fees on tier-1 exchanges run 0.02% to 0.10%; maker rebates can turn the fee into a small credit, which is why market-making triangular bots can profit on 0.05% opportunities that a taker cannot touch.
This projection assumes the same net profit rate applies to every cycle and that the capital is fully recycled each time. In practice, opportunities are not continuous — you find a mispricing, execute, and wait for the next one. Real triangular arbitrage strategies typically run 20 to 200 cycles per day on liquid pairs, with capital rotated between opportunities. The projection here answers a different question: if this rate held for every cycle, what would the annual P&L look like? It is a ceiling, not a forecast.
Reinvesting profits compounds the return geometrically: final = principal × (1 + net/100)N. At a net 0.6591% per cycle, 1,000 cycles multiply the capital by about 7.1×. The compounding assumption is generous — in reality, larger capital sizes reduce the available opportunity set, because the same mispricing can absorb less of your order. A strategy that earns 0.66% per cycle on $10,000 cannot earn 0.66% per cycle on $10,000,000 — the market moves before you finish executing. Use this projection to understand the shape of compounding, not as a target.
To achieve a target net profit, the gross cycle product must be large enough to overcome three legs of fee and slippage: gross = (1 + target) ÷ (1 − fee − slip)³ − 1. The equal-gain-per-leg figure shows what each leg would have to contribute if the opportunity were spread evenly around the cycle — the cube root of the gross product. In practice, opportunities are rarely balanced: one leg carries most of the dislocation, and the other two are at or near fair value.
Triangular arbitrage lives or dies on execution speed and depth. A $10,000 order against a $50,000 top-of-book is 20% of visible liquidity — feasible, but it will move the price and eat into the profit. The rule of thumb is to keep each leg under 5% of top-of-book depth to minimise impact, which caps the practical size of a single cycle at around 5% of the smallest leg's depth. On centralised exchanges with co-located matching engines, all three legs can execute in a few milliseconds. On-chain, the three swaps happen in a single atomic transaction, and competition is a gas auction — the winning bot pays the highest priority fee.
Arbitrage is a fair-value identity, not a forecast
On a perfectly efficient market, the product of the three rates around a closed cycle would be exactly 1.0. Buy 1 BTC worth of ETH, sell that ETH for USDT, sell that USDT back for BTC, and you would end up with exactly 1 BTC — no more, no less. That is the no-arbitrage condition, and it is the mathematical statement that all three pairwise markets agree on the same relative values. The entire point of the cycle is that this identity is violated in practice: prices on three separate order books move independently, latency differs, and the product drifts above or below 1.0. The arbitrage exists because the identity is temporarily broken, and it closes when a bot trades it back to 1.0.
Speed is the entire edge, and it is measured in milliseconds
On liquid centralised exchanges, a visible triangular dislocation of 0.10% typically lives for 200 milliseconds to a few seconds before competition closes it. Professional arb desks co-locate their servers in the same data centre as the matching engine, use FIX or WebSocket feeds with sub-millisecond latency, and pre-sign all three transactions so that only the final gas payment is variable. A retail trader clicking through a UI cannot compete with this — the opportunity is gone before the order form finishes loading. On-chain triangular arbitrage is worse: the three swaps execute in a single atomic transaction, and bots bid against each other with priority fees, so the winning bid frequently consumes the entire profit.
Fees are the floor below which no arb exists
A three-leg cycle pays a fee on each leg, so the minimum gross profit required for the cycle to be profitable is roughly 3 × fee per leg. On a 0.10% taker tier, that is 0.30% — any gross profit below 0.30% is a net loss. This is why the same opportunity can be profitable for a market maker paying 0.02% (net cost 0.06%) but unprofitable for a taker paying 0.10%. It also explains why triangular arbitrage is dominated by exchanges with maker rebates, VIP tiers, or native token fee discounts. On DEXs, the pool fee replaces the exchange fee, and it is typically 0.05% to 0.30% per swap, which sets a much higher floor for on-chain arb.
A large apparent profit is a red flag, not a gift
If this calculator shows a gross cycle profit of 3% or 5%, the most likely explanations are: a stale quote (one of the three prices has not been updated), a directional error (one of the rates was entered upside down — USDT/BTC at 64,000 instead of BTC/USDT at 0.0000156), a liquidity mirage (the price exists on a dead order book with no depth), or a token with a transfer tax that makes the round trip lossy. Real, executable triangular arbitrage profits on liquid venues are in the range of 0.01% to 0.20% before fees, and they are already being consumed by bots. A number above 1% should be verified three times before it is traded — the market is rarely that wrong for long, and when it is, something else is usually wrong too.
How to Use This Calculator
The triangular arbitrage relation links four quantities: the cycle profit and the three leg rates. Pick which one you want the tool to solve, then fill in the other three.
1. Choose what to solve for
Pick the cycle profit, RAB, RBC, or RCA from the toggle. The calculator rearranges π = (RAB · RBC · RCA − 1) × 100 automatically for whichever variable you choose and greys out that field.
2. Get the direction right
Each leg rate is the number of next currency units you receive per one current currency unit. For BTC → ETH → USDT → BTC, RAB is ETH per BTC (around 18), RBC is USDT per ETH (around 3,500), and RCA is BTC per USDT (around 0.0000156). Getting the direction wrong is the most common source of a fake 64,000% profit.
3. Use executable rates, not mid prices
The rates that matter are the ones you can actually trade at after fees and crossing the spread. If you plan to use market orders, use the taker rates. If you will post limit orders on all three legs, use the maker rates and add the risk that one leg does not fill.
4. Subtract fees and slippage
Enter the per-leg fee and slippage in the fee helper. The net profit line is what actually lands in your account: gross × (1 − fee − slip)³ − 1. A gross profit of 0.4% against 0.36% of costs leaves only 0.04% net — and that 0.04% can be wiped out by any small delay or partial fill.
5. Size against order book depth
Enter the top-of-book depth on the thinnest leg and the calculator shows what fraction of visible liquidity your order represents. As a rule, keep each leg under 5% of top-of-book to avoid material market impact. Larger orders need to be split or routed through multiple venues, which introduces its own execution risk.
6. Switch to Advanced for depth
Advanced mode adds a compounded-growth chart over cycles, sensitivity on ±1% input changes, and companion metrics including the net profit per cycle, the fee-drag ratio, the break-even gross profit, and the required per-leg gain to hit a target net.
What This Tool Offers
Built around the triangular arbitrage identity π = (RAB · RBC · RCA − 1) × 100, the calculation that tests whether a closed three-market cycle is profitable.
Four-way solving
Solve for the cycle profit or any of the three leg rates. The calculator rearranges the formula for whichever variable you choose — useful for working backwards from an observed profit to identify which leg is dislocated.
Fee & slippage drag
Per-leg fee and slippage inputs, with a visual breakdown of what each of the three legs costs and the net profit after all three trades. Break-even analysis included.
Compounding projection
Compounds the net per-cycle rate over any number of cycles and shows the implied capital multiple — a ceiling on what the strategy could earn if the rate held continuously.
Target reverse solve
Enter a target net profit and see the gross cycle product required, and the equal-gain-per-leg figure that would produce it if the dislocation were spread evenly around the cycle.
Liquidity feasibility
Compare notional size against top-of-book depth to see what fraction of visible liquidity your order represents, and whether the trade is executable without moving the market.
Reference tables
A live cycle converter, a lookup grid across leg rates, a break-even table by fee tier, and typical executable profit ranges by venue type.
Reference Tables & Conversions
A live cycle converter, a lookup grid across leg-rate combinations, and typical executable profit ranges by venue type.
Leg rates · cycle product · profit converter
Cycle Profit Lookup — Leg Rate Combinations
Each cell shows the gross cycle profit for a given RCA at each combination of RAB and RBC.
| RAB · RBC | RCA 0.980 | RCA 0.995 | RCA 1.000 | RCA 1.005 | RCA 1.010 | RCA 1.020 |
|---|
Fee Tiers & Break-Even Gross Profit
The minimum gross cycle profit required for a net-positive triangular cycle, at each fee and slippage tier.
| Fee tier | Per-leg cost | Cycle cost (3 legs) | Break-even gross | Typical venue | Notes |
|---|---|---|---|---|---|
| Maker rebate | −0.01% | −0.03% | −0.03% | Top-tier exchange VIP, market-maker programs | The venue pays you to provide liquidity — negative cost |
| VIP maker | 0.010% | 0.030% | 0.030% | Exchange VIP tier with native token holdings | Requires large 30-day volume or locked token balance |
| Standard maker | 0.020% | 0.060% | 0.060% | Default maker rate on tier-1 exchanges | Profit on opportunities 0.06% and above |
| VIP taker | 0.050% | 0.150% | 0.150% | High-volume taker tier | Needs 0.15% dislocation to break even |
| Standard taker | 0.100% | 0.300% | 0.300% | Default retail rate on tier-1 exchanges | The classic threshold — most visible arbs are gone by now |
| Mid-tier exchange taker | 0.200% | 0.600% | 0.600% | Smaller centralised exchanges | Wider spreads and thin books; rarely profitable to arb |
| AMM pool fee (0.05%) | 0.050% | 0.150% | 0.150% | Stablecoin pools, correlated-asset pools | Low-fee AMM pools; slippage dominates the real cost |
| AMM pool fee (0.30%) | 0.300% | 0.900% | 0.900% | Standard Uniswap v2-style pools | The pool fee is embedded in the execution price |
| AMM pool fee (1.00%) | 1.000% | 3.000% | 3.000% | Exotic or long-tail pools | Effectively impossible to arb profitably |
Typical Executable Profit by Venue
What an experienced arbitrageur actually captures, net of fees and slippage, on each venue type.
| Venue | Gross dislocation observed | Net profit after costs | Opportunity frequency | Notes |
|---|---|---|---|---|
| Tier-1 CEX, BTC/ETH/USDT | 0.01% – 0.10% | Negative — fees dominate | Continuous but unprofitable for takers | Only maker rebate accounts can profit here |
| Tier-1 CEX, altcoin crosses | 0.05% – 0.30% | 0.02% – 0.15% | Dozens per day per pair | The main hunting ground for retail taker arb |
| Tier-1 CEX, new listings | 0.30% – 3.00% | 0.10% – 2.00% | Minutes after listing | Very high latency competition; retail usually last in line |
| Mid-tier CEX, majors | 0.10% – 0.50% | 0.05% – 0.30% | Several per hour per pair | Wider spreads but thinner books — size limited |
| AMM stablecoin triangle | 0.02% – 0.10% | Negative to +0.05% | Continuous on 0.01% fee pools | Gas cost dominates on mainnet; viable on L2 |
| AMM volatile triangle (0.30% fee) | 0.10% – 0.60% | Usually negative | Frequent during volatility | Fee-plus-slippage rarely overcome by dislocation |
| Cross-DEX (Uniswap vs Sushi) | 0.20% – 1.50% | 0.05% – 0.80% | Several per day per pair | The classic two-leg arb; MEV bots dominate |
| CEX vs DEX | 0.50% – 3.00% | 0.20% – 1.50% | Several per day | Requires bridging, which introduces settlement risk |
| Perpetual vs spot | 0.05% – 0.50% | 0.03% – 0.30% | Several per hour | Basis trade, not triangular — funding cost matters |
| New chain, new DEX | 1.00% – 20.00% | 0.50% – 10.00% | Days after launch | Often the highest profit window before bots arrive |
Variable Reference
| Symbol | Meaning | Typical range | Units |
|---|---|---|---|
| π | Cycle profit | −2 – +5 | % per cycle |
| RAB | Leg A → B rate | 0.5 – 100,000 | B per A |
| RBC | Leg B → C rate | 0.5 – 100,000 | C per B |
| RCA | Leg C → A rate | 0.5 – 100,000 | A per C |
| Product | RAB · RBC · RCA | 0.98 – 1.05 | × |
| Fee | Per-leg transaction cost | −0.01 – 1.00 | % per leg |
| Slip | Per-leg market impact | 0.00 – 0.50 | % per leg |
| Notional | Capital deployed per cycle | 10 – 10⁷ | USD |
What Does π = (RAB · RBC · RCA − 1) × 100 Measure?
Triangular arbitrage measures whether three pairwise exchange rates are internally consistent with one another. Start with one unit of currency A, convert it to B, convert B to C, convert C back to A. On an efficient market, you end up with exactly the unit of A you started with — the product of the three rates is 1.0. If the product exceeds 1.0, you end up with more A than you started with, which is a profit. If it is below 1.0, you end up with less. The whole strategy is the pursuit of the first case, which exists precisely because the three separate order books do not update in lockstep.
Triangular Arbitrage Formula
The defining relationship is:
Rearranged to solve for each leg rate given a target profit:
RBC = ( 1 + π ÷ 100 ) ÷ ( RAB · RCA )
RCA = ( 1 + π ÷ 100 ) ÷ ( RAB · RBC )
To convert a quoted price into a rate, invert the quote if necessary. A price of USDT/BTC = 64,000 means 64,000 USDT per 1 BTC, so RBTC→USDT = 64,000. A price of BTC/USDT = 0.0000156 means 0.0000156 BTC per 1 USDT, so RUSDT→BTC = 0.0000156.
Net profit after fees and slippage on each leg uses the compounded drag:
Where fee and slip are expressed as decimals. The break-even gross profit is therefore:
And compounding over N cycles multiplies the capital by:
Final capital = principal × ( 1 + πnet ÷ 100 )N
Triangular Arbitrage Variables
| Symbol | Meaning | Notes |
|---|---|---|
| π | Cycle profit | Gross return per complete A → B → C → A cycle |
| RAB | Leg A → B rate | Units of B received per one unit of A |
| RBC | Leg B → C rate | Units of C received per one unit of B |
| RCA | Leg C → A rate | Units of A received per one unit of C — closes the loop |
| Product | RAB · RBC · RCA | Equal to 1 + π ÷ 100; above 1 is profitable |
| Fee | Per-leg transaction cost | Three legs pay three fees |
| Slip | Per-leg market impact | Scales with order size relative to depth |
How Each Variable Affects the Cycle Profit
The cycle profit is multiplicative, not additive, in the three leg rates. A 1% gain on each of three legs does not produce a 3% profit; it produces approximately 3.03% (1.01³ = 1.030301). The compounding is modest at small rates but becomes material at large ones — a 10% gain on each leg produces 33.1%, not 30%. This is why the natural way to think about triangular arbitrage is in terms of the product, not the sum: the product is what you actually end up with after the round trip, and the product is what has to exceed 1.0 for the trade to be profitable.
Fees and slippage work in the opposite direction and compound the same way. Each leg pays its own cost, so the drag is (1 − fee − slip) cubed. At a 0.10% taker fee and 0.05% slippage per leg, the compounded drag is about 0.45% — meaning the gross cycle product has to exceed 1.0045 before the trade breaks even. That is the real bar, and it is higher than most retail traders realise. On a 0.30% AMM pool fee, the compounded drag on three swaps is roughly 0.90%, which makes on-chain triangular arbitrage on standard fee pools mathematically near-impossible without significant dislocation.
Order size affects slippage non-linearly. On a constant-product AMM the impact is roughly size ÷ reserve, so doubling the order doubles the impact. On a centralised order book the impact depends on depth distribution — a shallow top-of-book with thick second and third levels costs less to cross than a uniformly thin book. The practical rule is to keep each leg under 5% of top-of-book depth, which caps the size of a single cycle at around 5% of the smallest leg's visible liquidity. Beyond that, the slippage you pay to execute begins to consume more than the dislocation you captured.
Latency is the invisible variable that decides whether a marginal opportunity is real. On a centralised exchange, the cycle has to be priced, decided, and executed across three separate order books, and each leg introduces round-trip latency to the matching engine. On a co-located server that is 200 microseconds; from a home connection to a remote exchange it is 100 to 300 milliseconds. In that window, the dislocation may close or reverse. On-chain, the three swaps execute in a single atomic transaction, so there is no intermediate latency — but the transaction itself competes with other arb bots in the mempool, and the winner is the one who bids the highest priority fee, which frequently eats the entire profit. The practical result is that genuine triangular arbitrage in 2024 is a low-latency, high-infrastructure game, and the opportunities that survive to be visible to a retail trader are usually the ones that are too small or too risky to be worth bot attention.
Triangular Arbitrage Calculation Examples
Product = 1.005 × 1.005 × 1.0001 = 1.010200
π = ( 1.010200 − 1 ) × 100 = +1.0200% gross
RAB = 1.0102 ÷ ( 1.005 × 1.0001 ) = 1.0102 ÷ 1.0051005 = 1.005072
RBC = 1.0102 ÷ ( 1.005 × 1.0001 ) = 1.005072
RCA = 1.0102 ÷ ( 1.005 × 1.005 ) = 1.0102 ÷ 1.010025 = 1.000173
Compounded drag = ( 1 − 0.001 − 0.0002 )³ = 0.9964
Net = 1.0102 × 0.9964 − 1 = +0.6591%
Break-even gross = ( 1 ÷ 0.9964 − 1 ) × 100 = 0.3613%
Any gross profit below 0.3613% is a net loss
Multiple = 1.006591¹⁰⁰⁰ = 712×
Final capital = $10,000 × 712 = $7,120,000
Profit per cycle = $65.91 · daily = $3,295.50
Monthly = $98,865 · Annual = $1,202,858
Frequently Asked Questions
Triangular arbitrage is the practice of exploiting price inconsistencies between three related markets that form a closed cycle. If BTC/ETH, ETH/USDT, and USDT/BTC are all trading, the product of the three implied exchange rates should equal exactly 1.0 — that is the no-arbitrage condition. In practice, the three pairs are quoted on three separate order books that update at slightly different times, so the product drifts above or below 1.0 for brief windows. When it drifts above 1.0, buying around the cycle is profitable, and the arbitrageur who gets there first captures the dislocation. The opportunity exists because information and order flow do not arrive at all three books simultaneously, and it closes when the arb trade itself pushes the three prices back into alignment.
Because the markets are highly competitive and heavily arbitraged. Any time a dislocation of more than a few basis points appears on a liquid pair, hundreds of bots see it simultaneously, and the fastest one captures it within milliseconds. The remaining opportunities are either extremely small (0.01% to 0.05%) or extremely brief (sub-second), or they exist on venues with enough friction — withdrawal delays, KYC, capital controls — that the arbitrageur needs to hold inventory at each venue, which introduces settlement risk and capital cost. On-chain, the equivalent competition is a gas auction: hundreds of bots submit the same atomic arbitrage transaction, and the one that pays the highest priority fee wins, which frequently consumes the entire profit. So the "small profit" is not a limitation of the math — it is the equilibrium outcome of a very crowded race.
Each of the three legs pays its own fee, so the total cost is roughly three times the per-leg fee. On a 0.10% taker rate, that is 0.30% per cycle — meaning the gross profit has to exceed 0.30% before the trade is even close to break-even, and closer to 0.36% once slippage is included. On a market-maker account paying 0.01% maker fee, the total cost drops to 0.03%, which makes a much larger set of opportunities viable. This is the single most important variable for retail arbitrageurs: moving from taker to maker fee tier is often the difference between a losing strategy and a marginal one, and getting a maker rebate turns it into a genuinely profitable one.
Getting the rate direction wrong. A price quoted as USDT/BTC = 64,000 means 64,000 USDT per BTC, so if you are converting from BTC to USDT, the rate is 64,000. But if you are converting from USDT to BTC — which is the closing leg of a BTC → ETH → USDT → BTC cycle — the rate is 1/64,000 ≈ 0.0000156, not 64,000. Using the wrong direction produces a cycle product of 64,000 × something × something, which is astronomically above 1.0 and generates an obviously fake profit in the thousands of percent. If you see a profit above 5%, check your rate directions before doing anything else. In 99 out of 100 cases, the "opportunity" is a directional error.
Rarely on liquid pairs, occasionally on illiquid ones, and frequently on new listings and new chains. On BTC/ETH/USDT, the opportunity is gone in milliseconds and is dominated by co-located professional desks. On altcoin crosses, the dislocation is larger and lasts longer, but the books are thinner — you can often capture 0.05% to 0.15% net on a $5,000 order if you are fast, and you will not be able to scale much beyond that without moving the market. On new listings and new chains, the dislocation can be 1% to 10% for a window of minutes to hours before bots arrive, and this is where retail traders have historically made the most money. The honest answer is that triangular arbitrage is a low-latency infrastructure game at the professional level, but a well-researched retail trader can still find edges in the long tail.
Leg risk is the biggest one: on a centralised exchange, the three legs execute sequentially, not atomically, so if the first leg fills and the second leg's price moves before you get there, you are left holding an unhedged position that you did not want. This is called "legging out" and it is why professional arb desks use FIX protocols, pre-signed orders, and co-located servers to minimise the window. On-chain, the three swaps are atomic — either all three execute or none — so leg risk is zero, but you pay gas for the whole transaction, and if you lose the priority-fee auction, the entire transaction reverts and you burn the gas for nothing. Both venues also carry the usual risks: withdrawal delays, KYC freezes, exchange downtime, and the possibility that one of the three markets is temporarily halted.
In most jurisdictions, yes — triangular arbitrage is simply trading, and there is no rule against buying and selling on public markets to capture a price discrepancy. That said, three important caveats. First, profits are taxable as ordinary income or capital gains depending on the jurisdiction and holding period. Second, on-chain arbitrage is often classified as MEV (maximal extractable value), and while it is not illegal, it is ethically contested and some jurisdictions may regulate it under emerging market-abuse frameworks. Third, if you are using non-public information, front-running customer orders, or exploiting a bug in a smart contract, you have crossed the line into fraud or manipulation. But ordinary triangular arbitrage — seeing a price discrepancy on public order books and trading it — is legal activity that exchanges and regulators have long accepted.
Variables
| Symbol | Quantity | Unit |
|---|---|---|
| Profit | Triangular arbitrage profit | % |
| Rate_AB | Exchange rate from currency A to B | |
| Rate_BC | Exchange rate from currency B to C | |
| Rate_CA | Exchange rate from currency C back to A |
What it means
Triangular arbitrage involves trading three currencies (or tokens) in a cycle to exploit mispricing between exchange rates. This formula calculates the percentage profit. It is used by high‑frequency traders and arbitrage bots. Understanding this helps traders understand complex market inefficiencies. It is a more advanced form of arbitrage and is common in crypto markets. The profit margin is often small and requires automation.
Worked example
Triangular Arbitrage Profit – Two Detailed Examples
Real‑World| Parameter | Value |
|---|---|
| Rate A→B | 0.05 |
| Rate B→C | 20.1 |
| Rate C→A | 0.997 |
| Parameter | Value |
|---|---|
| Rate A→B | 3.2 |
| Rate B→C | 0.31 |
| Rate C→A | 1.005 |
Common mistakes
- Triangular arbitrage: Exploiting price differences across three currency pairs.
- Rate_AB: The exchange rate from A to B (price of B in terms of A).
- Rate_BC: The exchange rate from B to C.
- Rate_CA: The exchange rate from C back to A.
- Profit %: If the product >1, arbitrage opportunity exists.
Applications
Triangular arbitrage profit calculates the percentage profit from trading a sequence of three currency pairs back to the original. This is a more complex arbitrage used in forex and crypto markets. Traders use it to exploit temporary price discrepancies. By calculating the profit percentage, they can decide whether to execute the trade. This strategy requires fast execution and low fees. Understanding triangular arbitrage is important for advanced traders and market makers.
- Identifying triangular arbitrage opportunities in crypto markets
- Evaluating the profitability of multi‑trade sequences
- Developing automated trading bots for arbitrage
- Understanding market correlations and price discrepancies
- Educational understanding of arbitrage strategies
Related calculators · Trading & Investment
Recently updated formulas
Suggest an improvement
Found a mistake? Have a better example? Let us know.
You may send up to 3 suggestions per 24 hours.