Triangular currency arbitrage made easy (hopefully)

CFASniper

New member
Joined
Jun 18, 2026
Messages
0
Reaction score
0
suppose you are given:
EUR/USD = x
JPY/EUR = y
USD/JPY = z
arrange the three rates in 2 different sequences such that the rates cancel each other out and the LHS = 1, for example
A. (EUR/USD) * (JPY/EUR) * (USD/JPY) = 1
(sell USD to buy EUR, use EUR to buy JPY, use JPY to buy USD back)
B. (JPY/USD) * (EUR/JPY) * (USD/EUR) = 1
(sell USD to buy JPY, use JPY to buy EUR, use to EUR to buy USD back)
In each path A & B, USD is the base you start with and then end up with.
Now, for the path with RHS of the equation : xyz > 1; Arbitrage opportunity exists and the profit to be made starting with $1 = xyz - 1 (path A)
profit with path B = [1/(xyz)] - 1
(note you might have to invert the quotes in path B. This method works with mid quotes as well as with bids and asks. You can start with either all bids or asks but will have to switch to the other each time you need to flip the given quote).
Hope this helps.
 
Dear CFA sniper ,
first of all thanks a lot for posting this post.I was truck up with this.I tried to it with bid-ask spreads and was confused.I request you to kindly post one example and the explanation .
I once again appreciate your voluntary contribution in educating and sharing knowledge.
Thanks in advance
 
Hope this example helps…
USD/CHF:: 0.9350 - 0.9352
JPY/USD :: 91 - 92
JPY/CHF :: 83 - 84
CHF is the base currency in this example.
Suppose you start with CHF to buy USD, then use USD to buy JPY and finally use JPY to buy CHF back. This wil result in
(USD / CHF) * (JPY / USD) * (CHF / JPY)
start with all bids using bid for CHF/JPY = 1 / (ask for JPY/CHF)
0.9350 x 91 x 1/84 = 1.012917 > 1 (Arbitrage opportunity exists)
You can make (1.012917 - 1) * 1000000 = CHF 12917 starting with CHF 1m
Alternatively, if you start with CHF to buy JPY, then use JPY to buy USD and finally use USD to buy CHF back. This wil result in
(JPY / CHF) * (USD / JPY) * (CHF / USD) = 83 * 1/92 * 1/.9352 = 0.9646855 (<1 No arbitrage profit)
 
I found the whole triangle business rather confusing and time-consuming and sat down one day to come up with this approach. Hope people will benefit from this.
 
Dear CFA Sniper
I have one more question. I dont see how you you know when to take bid or ask - and why do you say chf is base currency?
 
Dear yellayella
You will be given the base currency in the exam and will be asked to calculate arb profit starting with a given amount of the base currency.
When you are buying you use bid rates.
e.g. use CHF to buy USD ==> use bid quote for USD/CHF which gives you the amount of USD you can buy from a dealer for 1 CHF
 
Thanks for sharing CFASniper. Once the arbitrage is identified by comparing the quoted exchange rate (i.e. USD/CHF) with the implied cross rate (i.e. USD/Yen x Yen/CHF), what are the right tips to proceed with the right arbitrage operation? I find it very difficult to figure out - shall we start to buy the undervalued currency, or shall we sell the overvalued currency? I have been struggling with the EOL question 15 and 16 of the study session 4 reading 18. It would be great if you could light up a very confused mind!
Thanks
Suny
 
@CFA Sniper …Thanks for making this easy…
But this till confuses me..Schweser page 314
I calculate: USD/AUD*MXN/USD*AUD/MXN
So essentially start with selling AUD and end up buying AUD
= .6000*10.700*1/6.3025=1.018643>1
shouldnt this be a profit of18,643 AUD.
But the answer given is 18,643 MXN
Could you please clarify…
 
simi, the line right before step 1 on page 315 clearly states 1 million pesos as the starting amount.
given this, the steps I would take:
USD/AUD*MXN/USD*AUD/MXN
AUD/MXN * USD/AUD * MXN/USD
in other words, sell MXN to buy AUD then use AUD to buy USD and finally use USD to buy MXN back
1/6.3025 * 0.6 * 10.7 = 1.018643>1
which is a profit of 18,643 MXN starting with 1m MXN
Hope this help.
All the best
 
I learned this “recipe” in grad school. It’s so much better than the friggin triangle.
 
If you take time to grasp the actual concept, it will be easier still.
 
using CFASniper method, I tried Q16 from CFAI, we have
$:SFr=1.5971
$:A$=1.8215
SFr:A$=1.1450
if i select the following, i get the correct answer
(SFr/$)*(A$/SFr)*($/A$) = 1.0039, but if i select the following, there’s no arbitrage
(A$/$)*(SFr/A$)*($/SFr) < 1
so my question is how do we know which exchange rate to use to start with (SFr/$) or (A$/$), with USD as starting point.
 
faraz:
*IF* there is an arbitrage opportunity, one “path” will give you an answer less than 1 and the other will give you an answer greater than 1. If you take the path that gives you less than 1, just go the other way.
If there is no arbitrage opportunity, the answer will be 1.
And thank you, CFAsniper! You really saved my ass on this one. This would have been one of those topics I just wrote off, but now I’m automatic with it. Can’t thank you enough.
 
Thanks, one more question from CFA , this is eg 4, i get 0.003 as the answere where as it is 0.005 euros, thats how i calulated it
($/EUR)*(pound/$)*(EUR/pound) = 1.2000*(1/1.8000)*(1.5050) = 1.0033
but the answer is 0.005 euro?
 
i tried example 4 from CFAI text,
($/EUR)*(pound/$)*(EUR/pound) = 1.2000*(1/1.8000)*(1.5050) = 1.0033
so 1.0033-1=0.0033 is the answer i get, where as the correct answer in example 4 is 0.005?
 
Back
Top