Trading concepts

Triangular Arbitrage: The Formula and a Worked Example

The condition under which a dollar, euro and yen loop pays, a hypothetical example worked to the cent in both directions, and how spreads, costs and a fraction of a yen of delay erase the gain.

· Founder of PatternsWizard
Checked 7 min read
USDEURJPYBuy euros atthe EUR/USD askSell the euros at the EUR/JPY bidBuy dollars atthe USD/JPY askLoop AGain only if EUR/JPY bid > EUR/USD ask × USD/JPY askLoop B: the reverse way, other side of each quote
On this page
  1. The triangular arbitrage formula
  2. A worked example, with hypothetical quotes
  3. What spreads and delay do to the profit
  4. How often real gaps appear, and for how long
  5. How to calculate triangular arbitrage yourself
  6. Frequently asked questions

Triangular arbitrage is a set of three currency trades that starts and ends in the same currency and locks in a profit when the three exchange rates do not agree with each other. With euros, dollars and yen, the EUR/JPY rate should match EUR/USD times USD/JPY. When the quoted EUR/JPY is far enough from that implied cross rate to cover the spreads, a trader can go around the triangle, dollars to euros to yen and back to dollars, and end with more dollars than at the start. This page gives the condition, works through a hypothetical example with every quote and every amount, and shows how spreads and a few moments of delay change the result.

The triangular arbitrage formula

Write each rate as the dealer quotes it: a bid, the price at which you sell the first currency of the pair, and an ask, the price at which you buy it. Starting with dollars, there are two ways around the triangle:

  • Loop A, USD to EUR to JPY to USD: buy euros at the EUR/USD ask, sell the euros for yen at the EUR/JPY bid, buy dollars with the yen at the USD/JPY ask. Dollars at the end = dollars at the start × EUR/JPY bid ÷ (EUR/USD ask × USD/JPY ask).
  • Loop B, USD to JPY to EUR to USD: sell dollars for yen at the USD/JPY bid, buy euros with the yen at the EUR/JPY ask, sell the euros at the EUR/USD bid. Dollars at the end = dollars at the start × EUR/USD bid × USD/JPY bid ÷ EUR/JPY ask.

Loop A makes money only if the EUR/JPY bid is above EUR/USD ask × USD/JPY ask. Loop B makes money only if the EUR/JPY ask is below EUR/USD bid × USD/JPY bid. At most one of the two can work at a time, and when the quoted cross sits between the two products, neither does: the spreads absorb the gap.

Loop A of a triangular arbitrage, and the side of each quote

USDEURJPYBuy euros atthe EUR/USD askSell the euros at the EUR/JPY bidBuy dollars atthe USD/JPY askLoop AGain only if EUR/JPY bid > EUR/USD ask × USD/JPY askLoop B: the reverse way, other side of each quote

A worked example, with hypothetical quotes

The quotes below are invented for the example, with EUR/JPY set deliberately too high. They are not market data.

PairBidAsk
EUR/USD1.085001.08510
USD/JPY150.000150.015
EUR/JPY162.940162.960

The cross rate implied by the first two pairs is 1.08500 × 150.000 = 162.750 on the bid side and 1.08510 × 150.015 = 162.781 on the ask side. The quoted EUR/JPY bid, 162.940, is above 162.781, so loop A works. Starting with 1,000,000 dollars:

StepTradeAmount after the trade
1Buy euros: 1,000,000 ÷ 1.08510921,574.05 EUR
2Sell the euros for yen: 921,574.05 × 162.940150,161,275 JPY
3Buy dollars with the yen: 150,161,275 ÷ 150.0151,000,975.07 USD

The loop returns 975.07 dollars on 1,000,000, or 0.0975%, before any commission. Going the other way, loop B, with the same quotes ends at 998,711.34 dollars, a loss of 1,288.66: the direction matters, and only the formula tells you which one to take.

What spreads and delay do to the profit

The example already pays the spreads, since every trade uses the bid or the ask. The gap that makes money is the distance between the quoted EUR/JPY bid and the break-even, 162.781: 0.159 yen per euro. Two things eat it:

  • Movement between the trades. In the example, if EUR/JPY falls 0.15 yen, to 162.790 bid, between step 1 and step 2, loop A still returns 53.59 dollars instead of 975.07. A fall of 0.16 yen or more turns it into a loss: at 0.16 yen, the loop loses 7.84 dollars; at 0.20 yen, 253.57. The three trades have to be done almost at once, and in practice one of them may fill at a worse price or not at all, leaving an open position in one currency.
  • Costs not in the quotes. Commissions, financing and the price impact of a large order all come out of the 0.0975%. On a 1,000,000 dollar loop, a commission of 50 dollars per trade would take 150 of the 975.

Loop A on 1,000,000 dollars if EUR/JPY falls before the second trade

No move: 162.940+$975.07Falls 0.05 yen: 162.890+$667.91Falls 0.10 yen: 162.840+$360.75Falls 0.15 yen: 162.790+$53.59Falls 0.16 yen: 162.780−$7.84Falls 0.20 yen: 162.740−$253.57
Hypothetical example, computed from the assumptions in the text.Invented quotes of the example above: EUR/USD ask 1.08510, USD/JPY ask 150.015, EUR/JPY bid as shown. Before commissions.

The same arithmetic applies to any three assets that trade against each other, including crypto pairs on one exchange, where trading fees are charged on each of the three legs.

How often real gaps appear, and for how long

Daniel Fenn, Sam Howison, Mark McDonald, Stacy Williams and Neil Johnson measured triangular arbitrage on executable prices, the prices at which a trade could actually be done, instead of indicative quotes. From October 2 to October 27, 2005, they counted 11,367 potential opportunities in the euro, dollar and yen triangle (the figure in the paper’s text; its Table 2 gives 17,314 at a zero threshold) and 10,018 in the euro, dollar and Swiss franc triangle. Their test is the one on this page: the product of the three rates, each on the side you trade, has to be above 1.

How long triangular arbitrage opportunities lasted in 2005

Lasted 1 second or less60%Lasted 5 seconds or less95%
Values as published by the source below. Source: Fenn, Howison, McDonald, Williams and Johnson, The Mirage of Triangular Arbitrage in the Spot Foreign Exchange Market, International Journal of Theoretical and Applied Finance, 2009.Share of the opportunities found from October 2 to October 27, 2005, for both the yen and the Swiss franc triangles, on executable prices.

The number of opportunities fell from 2003 to 2005, which the authors link to the wider use of electronic trading platforms and trading algorithms. Their trading simulations conclude that a trader “would need to beat other market participants to an unfeasibly large proportion of arbitrage prices to profit from triangular arbitrage over a prolonged period of time.” The paper gives no figures after 2005; what it shows is that, already then, most gaps were gone within a second and almost all within five.

How to calculate triangular arbitrage yourself

  1. Take the bid and the ask of the three pairs at the same moment.
  2. Compute the two products: EUR/USD ask × USD/JPY ask and EUR/USD bid × USD/JPY bid.
  3. If the EUR/JPY bid is above the first product, loop A gains; if the EUR/JPY ask is below the second, loop B gains; otherwise there is nothing to take.
  4. Multiply the gap by the size of the loop and subtract every cost per leg, as in the example above. The trading math guide covers the percentages, and the lot size guide turns amounts into lots.

The same steps work for any currency triangle; replace the pairs and keep track of which currency is bought on each leg. The forex market guide explains how pairs are quoted, and the bid and ask guide explains the spread. More strategies are in trading concepts.

Frequently asked questions

What is triangular arbitrage?

A loop of three currency trades, for example dollars to euros to yen and back to dollars, that earns a profit when the quoted cross rate (EUR/JPY) differs from the rate implied by the other two pairs (EUR/USD × USD/JPY) by more than the spreads.

What is the formula for triangular arbitrage?

For the loop USD to EUR to JPY to USD: dollars at the end = dollars at the start × EUR/JPY bid ÷ (EUR/USD ask × USD/JPY ask). The loop gains only when the EUR/JPY bid is above EUR/USD ask × USD/JPY ask.

Is triangular arbitrage risk free?

Only if the three trades fill at the quoted prices at the same moment. If one price moves first, the profit shrinks or turns into a loss: in our hypothetical example, a fall of 0.16 yen in EUR/JPY between two legs removed the whole gain.

Can you do triangular arbitrage with crypto?

The arithmetic is the same with three crypto pairs on one exchange, for example BTC/USDT, ETH/BTC and ETH/USDT. Trading fees are charged on each leg, so the gap has to exceed three fees plus the spreads.

Sources

  1. Daniel J. Fenn, Sam D. Howison, Mark McDonald, Stacy Williams and Neil F. Johnson, The Mirage of Triangular Arbitrage in the Spot Foreign Exchange Market, International Journal of Theoretical and Applied Finance, Vol. 12, Issue 8, 2009
, Founder of PatternsWizard

Passionate about finance, quantitative trading and data analysis. Amaury built the PatternsWizard test bench, which detects each pattern on full price history and measures what happened next against random entries.

PatternsWizard tests chart and candlestick patterns on full market history, against random entries. How we test patterns.

179 patterns testedRandom-walk self-test passed

All trading concepts articles