Foreign Exchange Markets and Currency Forwards › Cross Rates
Quantitative FinanceAll chapters Foreign Exchange Markets and Currency Forwards › Cross RatesOne section · Sections in this chapter4 / 12 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
A cross rate is an exchange rate between two currencies that doesn't involve USD, calculated from each currency's rate against the dollar. Cross rates are essential when you need to exchange between two non-USD currencies. Because the US dollar is the world's primary reserve and trading currency, most FX transactions involve the dollar on one side. When you need to exchange euros for Japanese yen, however, you need to determine the appropriate cross rate.
Calculating Cross Rates
Given two exchange rates involving USD, you can derive the cross rate between the other two currencies. This calculation ensures that consecutive conversions are equivalent to a direct conversion. In other words, converting euros to dollars and then dollars to yen must yield the same result as a direct euro-to-yen exchange at the proper cross rate.
If you know EUR/USD and USD/JPY, you can find EUR/JPY:
where:
- : cross rate (Yen per Euro)
- : exchange rate of USD per EUR
- : exchange rate of JPY per USD
To understand why this multiplication works, consider the dimensional analysis. We want to find yen per euro, and we can trace through the currency units step by step:
The USD units cancel in the multiplication, leaving yen per euro. Canceling intermediate currency units is the basis for cross rate calculations.
When both rates have USD as the quote currency (e.g., EUR/USD and GBP/USD), the calculation requires division rather than multiplication. To calculate GBP/EUR:
- : implied cross rate (Euros per Pound)
- : exchange rate of USD per GBP
- : exchange rate of USD per EUR
We can verify the units cancel correctly by treating the exchange rates as fractions of units. Dimensional analysis confirms the formula:
Since the pair GBP/EUR is defined as Euros per Pound, the derived units match perfectly.
# Cross rate calculations
eur_usd = 1.0850
usd_jpy = 150.25
gbp_usd = 1.2647
# EUR/JPY: How many yen per euro?
# €1 -> $1.0850 -> ¥(1.0850 × 150.25)
eur_jpy = eur_usd * usd_jpy
# GBP/EUR: How many euros per pound?
# £1 -> $1.2647, €1 -> $1.0850
# So £1 = €(1.2647 / 1.0850)
gbp_eur = gbp_usd / eur_usd
# EUR/GBP: How many pounds per euro?
eur_gbp = 1 / gbp_eurCross Rate Calculations: EUR/USD = 1.0850 USD/JPY = 150.25 GBP/USD = 1.2647 EUR/JPY = EUR/USD × USD/JPY = 1.0850 × 150.25 = 163.02 GBP/EUR = GBP/USD ÷ EUR/USD = 1.2647 ÷ 1.0850 = 1.1656 EUR/GBP = 1 / GBP/EUR = 1 / 1.1656 = 0.8579
The calculated cross rate of 0.8579 EUR/GBP indicates that one Euro purchases roughly 0.86 Pounds, consistent with the direct EUR/USD and GBP/USD rates. This internal consistency is maintained by arbitrageurs who continuously monitor cross rates and exploit any deviations.
Cross Rate Arbitrage
In efficient markets, cross rates derived from USD pairs should equal directly quoted cross rates. If they don't, an arbitrage opportunity exists. This arbitrage keeps FX markets consistent and prevents pricing contradictions.
Triangular arbitrage exploits inconsistencies among three exchange rates. You start with one currency, convert through two others, and return to the original, earning a risk-free profit if the rates are misaligned.
Consider this triangular arbitrage example: if derived EUR/JPY differs from the quoted EUR/JPY, you can profit by executing a series of trades that takes advantage of the mispricing. The strategy works as follows:
- Starting with USD
- Converting to EUR at the spot rate
- Converting EUR to JPY at the (mispriced) EUR/JPY rate
- Converting JPY back to USD
- If you end with more USD than you started, you've captured the arbitrage
This arbitrage requires no capital commitment and no risk, only the ability to execute three trades simultaneously. The profit is locked in at initiation.
def check_triangular_arbitrage(
eur_usd, usd_jpy, eur_jpy_market, amount_usd=1_000_000
):
"""
Check for triangular arbitrage opportunity.
Returns profit if arbitrage exists, 0 otherwise.
"""
# Implied EUR/JPY from USD pairs
eur_jpy_implied = eur_usd * usd_jpy
# Path 1: USD -> EUR -> JPY -> USD
# Buy EUR with USD, then sell EUR for JPY, then sell JPY for USD
euros = amount_usd / eur_usd
yen = euros * eur_jpy_market
usd_final = yen / usd_jpy
profit_path1 = usd_final - amount_usd
# Path 2: USD -> JPY -> EUR -> USD (reverse)
yen = amount_usd * usd_jpy
euros = yen / eur_jpy_market
usd_final = euros * eur_usd
profit_path2 = usd_final - amount_usd
return eur_jpy_implied, max(profit_path1, profit_path2)
# Case 1: No arbitrage (rates are consistent)
eur_usd = 1.0850
usd_jpy = 150.25
eur_jpy_market_consistent = eur_usd * usd_jpy # 163.02
implied_1, profit_1 = check_triangular_arbitrage(
eur_usd, usd_jpy, eur_jpy_market_consistent
)
# Case 2: Mispriced EUR/JPY creates arbitrage
eur_jpy_mispriced = 163.50 # Market quotes higher than implied
implied_2, profit_2 = check_triangular_arbitrage(
eur_usd, usd_jpy, eur_jpy_mispriced
)Case 1: Consistent rates Implied EUR/JPY: 163.02 Market EUR/JPY: 163.02 Arbitrage profit: $0.00 Case 2: Mispriced EUR/JPY (quoted too high) Implied EUR/JPY: 163.02 Market EUR/JPY: 163.50 Arbitrage profit: $2,936.73
In Case 2, the calculated profit of approximately ${{python} f'{profit_2:,.0f}'} confirms that when the market forward rate exceeds the implied rate, a risk-free arbitrage is possible. In practice, electronic trading systems identify and eliminate such arbitrage opportunities within milliseconds, keeping cross rates aligned. The speed of modern algorithmic trading means these opportunities rarely persist long enough for manual traders to exploit them.