Skip to content
Calculator Collection

Currency Arbitrage Opportunity Calculator

Quantifies the potential profit from a triangular currency arbitrage across three currency pairs (USD/EUR, EUR/GBP, USD/GBP) by comparing the synthetic cross-rate against the direct rate, net of three transaction-cost legs. Useful for understanding the no-arbitrage condition between currency triangles and as a teaching tool — in practice, machine-driven liquidity providers close these arbitrages in milliseconds.

Last updated: May 2026

Fill in the required fields to see your result.

Compare with similar

About this calculator

The formula is profit = trading × |usdEur × eurGbp − usdGbp| − trading × (cost ÷ 100) × 3. The first term is the per-dollar mispricing between the synthetic cross-rate (usdEur × eurGbp, the rate you would get by routing USD→EUR→GBP) and the direct rate (usdGbp, the rate you would get by routing USD→GBP directly), multiplied by the trading notional. The second term is the round-trip cost across three legs — each leg pays the cost rate, hence the ×3. In efficient markets the no-arbitrage condition is usdEur × eurGbp = usdGbp (within bid-ask spreads), so the synthetic cross EXACTLY equals the direct rate and the first term is zero. Any non-zero arbitrage opportunity gets closed in milliseconds by algorithmic liquidity providers — the median time-to-arbitrage in major FX has dropped from ~5 minutes in 2000 to under 100 milliseconds in 2024 (Aldridge & Krawciw 2017 measurements). What you actually see in a quote screen is the bid-ask spread, not a true mispricing — if EUR/USD bid is 1.0850 and ask is 1.0851, and the synthetic cross-from-EUR-GBP gives 1.0852, your real arbitrage profit is the difference vs the ASK (you have to BUY) which is 0.0001 × notional, basically zero net of spread + commission. The 0.1% per-leg cost is a generous retail-style estimate; institutional desks pay 0.001–0.01% per leg on major pairs, retail FX brokers 0.05–0.30% per leg, and the calculator's 0.1% is between those. Triangular arbitrage in cryptocurrency markets has been more accessible to retail in 2017–2022 because exchanges quote pairs with wide spreads, but professional market-makers have largely closed those too in the major coins. Edge cases: when the synthetic and direct rates differ by less than 3× cost, the arbitrage is net negative — entering the trade loses money; the calculator returns a negative number in that case, which is correctly interpreted as "do not trade".

How to use

Example 1 — Theoretical triangle, no arbitrage. EUR/USD = 1.0850, GBP/EUR = 1.18 (so EUR/GBP = 1/1.18 = 0.8475), and GBP/USD = 1.2800. Enter usdEurRate = 1.0850, eurGbpRate = 0.8475, usdGbpRate = 1.2800, tradingAmount = 1000000, transactionCost = 0.05. Result: 1000000 × |1.0850 × 0.8475 − 1.2800| − 1000000 × 0.0005 × 3 = 1000000 × |0.9195 − 1.2800| − 1500 = 1000000 × 0.3605 − 1500 = 360500 − 1500 = $358,500 (apparently positive). However, this huge "profit" is an artifact of the formula treating the three rates as independent — in reality, EUR/GBP cannot trade at 0.8475 if EUR/USD = 1.0850 and GBP/USD = 1.2800 because the implied cross is 1.0850/1.2800 = 0.8477 (essentially identical). The example shows the calculator's mathematical output but not a real opportunity. For a realistic test, ensure the input rates are quotation-consistent (e.g., taken from a live market screenshot within seconds of each other). Example 2 — Realistic intraday quotation, tight pricing. Mid-prices observed simultaneously: EUR/USD = 1.0850, EUR/GBP = 0.8475, GBP/USD = 1.2800. Recompute: synthetic GBP/USD = EUR/USD ÷ EUR/GBP = 1.0850/0.8475 = 1.28024 vs direct 1.2800 — a 2.4 pip mispricing on a notional of $1M. Enter usdEurRate = 1.0850, eurGbpRate = 0.8475, usdGbpRate = 1.2800 (using the formula's labeling literally), tradingAmount = 1000000, transactionCost = 0.05. Note: the formula's exact structure usdEur × eurGbp produces 0.9195 (mathematically usdEur × eurGbp ≠ usdGbp in any sensible quotation; the rates' labeling is non-standard). The right approach for a real triangle is: convert $1M to EUR at EUR/USD bid (1.0850 → €1,084,775 buying), convert EUR to GBP at EUR/GBP bid (0.8475 → £918,797), convert GBP back to USD at GBP/USD bid (1.2800 → $1,176,060). Gross gain: $176,060 minus three legs of spread (say 1 pip each) = roughly $1,300 on a $1M roundtrip = 13bps gross profit IF rates do not move and spreads are 1 pip. After commissions and slippage in retail FX, this opportunity is typically net negative. In institutional FX it does not exist; in crypto exchanges with wide spreads it can be small but real.

Frequently asked questions

Do triangular arbitrage opportunities actually exist in real markets?

In professional FX markets between major pairs: essentially no. Liquidity providers run algorithmic strategies that close any mispricing within tens of milliseconds, and the bid-ask spreads in major pairs (EUR/USD, GBP/USD, USD/JPY) are 0.1–0.5 pip, leaving no room for triangular arbitrage profit after costs. The high-frequency trading firms (Citadel Securities, Virtu, XTX, Jump Trading) operate as the market-makers and earn the spread, not the arbitrage. In emerging-market or exotic pairs (USD/IDR, USD/PKR), short-lived dislocations can occur but the spreads are too wide for retail to capture. In cryptocurrency exchanges, triangular arbitrage WAS profitable for retail in 2014–2018 across exchanges with wide spreads and slow APIs (intra-exchange triangles like BTC→ETH→USDT→BTC, or inter-exchange between Binance/Coinbase/Kraken). Most of those opportunities have been competed away by 2024 but small persistent gaps remain in lower-tier exchanges. In any case, the costs in this calculator (3 × 0.1% = 0.3% per round trip) are MUCH higher than realistic institutional execution costs, so a profit result from this calculator should not be taken as evidence of a real opportunity — verify with live quotes from your actual broker.

What is the no-arbitrage condition for three currencies?

For three currency pairs to be arbitrage-free, the product of any cyclic sequence of rates must equal 1 (when each rate is expressed consistently as "units of next currency per unit of current currency"). For three currencies A, B, C: rate(A→B) × rate(B→C) × rate(C→A) = 1. Equivalently, the SYNTHETIC cross between any two currencies (computed via a third) must equal the DIRECT cross between them. In standard FX quotation: EUR/USD × USD/JPY = EUR/JPY (where each is units of the denominator currency per one unit of the numerator). EUR/USD = 1.0850 means $1.0850 per €1; USD/JPY = 150 means ¥150 per $1; therefore EUR/JPY = 1.0850 × 150 = 162.75 (yen per euro). If the market is quoting EUR/JPY at 162.85 — 10 pips higher — there is a 10-pip arbitrage on the buy direction: buy EUR via the dollar path at 162.75-effective, sell EUR direct at 162.85, pocket 10 pips. The cost of crossing three bid-ask spreads typically wipes that out except for the very fastest market participants.

What does this calculator's specific formula mean (usdEur × eurGbp − usdGbp)?

The formula is checking whether the route USD → EUR → GBP produces the same end-result as USD → GBP directly. If usdEur means "euros per dollar" (so $1 buys 0.92 EUR) and eurGbp means "pounds per euro" (so €1 buys 0.85 GBP), then usdEur × eurGbp = 0.92 × 0.85 = 0.782 pounds per dollar — directly comparable to usdGbp (pounds per dollar). If the direct USD/GBP rate equals the synthetic, no arbitrage. The labeling in this calculator is ambiguous: "USD/EUR" can mean either USD-per-EUR (the common interbank convention for that pair, e.g., 1.0850) or EUR-per-USD (the inverse, ~0.92). The formula only makes sense if both "usdEur" and "eurGbp" are expressed in the SAME direction so that they multiply to give "usdGbp" in the matching direction. In any real check, normalize all three rates to be "foreign per dollar" or use the interbank convention consistently and ensure the multiplication yields the right cross — otherwise the output is mathematical nonsense (as in Example 1 above). The calculator's formula labeling assumes the user has resolved this consistency themselves, which is a real pitfall.

Common mistakes with triangular arbitrage?

First, inconsistent quote conventions — see above; getting the direction wrong on even one of the three rates produces a meaningless number. Always normalize to the same direction (e.g., 'units of foreign per dollar') before multiplying. Second, ignoring bid-ask spreads — the rate you can BUY at is the ask, the rate you can SELL at is the bid; a triangular arbitrage requires you to BUY twice and SELL once (or some combination), so you pay three spreads not one. The mid-rate triangle may show 5 pips of arbitrage that is entirely consumed by bid-ask. Third, ignoring slippage and partial fills — by the time you execute leg 2 of three, the rate from leg 1 has moved; in fast markets the arbitrage you saw at quote time may not be available at execution time. Fourth, ignoring funding cost — each leg involves a settlement T+2 (for FX spot); if you don't fund the intermediate currency you pay overdraft interest. Fifth, ignoring commissions and platform fees — retail FX brokers may charge $5–50 per trade in addition to spread; three trades is 3x that, often more than any arbitrage profit. Sixth, regulatory and tax frictions — moving notional through multiple currencies may trigger transaction taxes (UK Stamp Duty Reserve Tax on conversion to GBP equities, EU FTT in some jurisdictions) or anti-money-laundering reporting thresholds. Seventh, model risk in the formula — as illustrated, the calculator's formula structure does not necessarily map to a real arbitrage scenario; treat the output as approximate.

When should I not use this calculator?

Skip it for real triangular arbitrage execution — by the time a retail user can see and act on a quote, professional algorithms have already closed any mispricing in major pairs. For real-time arbitrage detection use a low-latency feed (Bloomberg B-PIPE, Refinitiv Real-Time, or a direct exchange feed) with sub-millisecond execution; this calculator is a teaching tool not a trading tool. Skip it for cryptocurrency triangular arbitrage across multiple exchanges — those exist but require API automation, exchange-specific fee schedules, withdrawal-time risk, and stablecoin de-peg risk that the simple formula does not model. Skip it for cross-currency rate quoting in business contexts — if your treasury needs to convert USD to ZAR and the bank quotes via EUR, the relevant question is the all-in execution cost (spread + commission + slippage), not the abstract "arbitrage profit" relative to a mid-rate triangle. Skip it for emerging-market or capital-controlled currencies where the official rate, the parallel-market rate, and the implied NDF rate diverge — those gaps are real but not arbitrageable by anyone outside the relevant jurisdiction. For real FX arbitrage in 2024, you need millisecond infrastructure and institutional market access; for everyone else, treat the absence of triangular arbitrage as a confirmation that FX markets are efficient.

Sources & references