CFA Level I Exam · Exchange Rate Calculations
Cross Rates and Triangular Arbitrage for CFA Level I
Updated 7 October 2026 · Fact-checked
A cross rate is an exchange rate between two currencies derived from each one's rate against a third. Arrange the quotes so the common currency cancels, then multiply or divide. For bid-ask cross rates, divide the bid by the opposite side of the divisor. If a quoted cross rate falls outside the implied bid-ask range, triangular arbitrage exists.
Understand Cross Rates and Triangular Arbitrage
Most currency pairs are quoted against a few major currencies such as USD or EUR. If you need a rate between two other currencies, you work it out from the two quotes you have. That result is the cross rate.
The CFA convention is price/base. A quote of USD/EUR = 1.10 means 1 EUR costs 1.10 USD. The currency after the slash is the base currency (the one being priced). The currency before the slash is the price currency. To get a cross rate, write the quotes so the common currency sits on opposite sides and cancels, like fractions: (USD/EUR) ÷ (USD/GBP) = GBP/EUR.
Dealers quote two prices. The bid is what the dealer pays for the base currency. The ask is what the dealer charges for it. The ask is always higher than the bid. A cross rate built from bid-ask quotes also has a bid and an ask, and the spread usually becomes wider. The rule is simple: for the bid, use the combination that gives the lowest value. For the ask, use the combination that gives the highest.
Triangular arbitrage appears when the cross rate quoted in the market does not match the cross rate implied by the other two quotes. You then trade around a triangle of three currencies and end with more of your starting currency than you began with, with no risk. You check this by comparing the quoted cross rate with the implied bid-ask range. If the quoted bid is above the implied ask, or the quoted ask is below the implied bid, an arbitrage exists.
Key formulas to remember
- Cross rate (midpoint, common currency cancels)
- B/C = (A/C) ÷ (A/B) or B/C = (B/A) × (A/C)
- Quotes are price/base. The common currency A must cancel. Check that the units of your answer are B per 1 C.
- Bid-ask cross rate: same price currency (divide)
- bid of B/C = bid(A/C) ÷ ask(A/B); ask of B/C = ask(A/C) ÷ bid(A/B)
- Lowest numerator over highest denominator gives the bid. Highest numerator over lowest denominator gives the ask.
- Bid-ask cross rate: common currency is base in one quote and price in the other (multiply)
- bid of B/C = bid(B/A) × bid(A/C); ask of B/C = ask(B/A) × ask(A/C)
- A is the base currency in B/A (after the slash) and the price currency in A/C (before the slash), so A cancels and the product is B/C. Bid with bid and ask with ask. If A is not in this position in both quotes, invert one quote first (and swap its bid and ask).
- Triangular arbitrage test
- Arbitrage if quoted cross bid > implied cross ask, or quoted cross ask < implied cross bid
- If the quoted cross rate lies inside the implied bid-ask range, there is no arbitrage.
- Inverting a quote
- A/B bid = 1 ÷ (B/A ask); A/B ask = 1 ÷ (B/A bid)
- Inverting a bid-ask quote swaps the sides. The inverse of the ask becomes the new bid.
How to solve Cross Rates and Triangular Arbitrage questions
Use this method for any cross rate or triangular arbitrage question. Take your time with the setup, because most errors happen there.
- 1Write each quote as price/base and say it in words, for example: USD/EUR = 1.0800 means 1 EUR = 1.0800 USD.
- 2Decide which currency pair you need and which currency is common to both quotes.
- 3Arrange the quotes so the common currency cancels. Invert a quote if needed, and swap bid and ask when you invert.
- 4Compute the bid and the ask separately: lowest possible value for the bid, highest possible value for the ask. Keep 4 to 6 decimals.
- 5For arbitrage, compare the quoted cross rate with your implied bid-ask range. Find where one currency is cheap in the market and expensive in the implied rates.
- 6Trace the trade around the triangle, starting with a fixed amount. At each leg, you buy the base currency at the dealer's ask and sell the base currency at the dealer's bid.
- 7Compare the ending amount with the starting amount in the same currency. The difference is the arbitrage profit. Sense-check that the answer is small relative to the start.
Quickest way: Units-cancel shortcut with a sense check
When to use it: Use it when options are close together and you have about 90 seconds. It also catches inverted answers.
- Write the answer in the form X/Y, such as EUR/GBP. This tells you what units you must end up with.
- Make the units cancel: put the needed price currency on top and the needed base currency below.
- On your calculator, store the denominator: for example 1.0854 then 1/x, then multiply by the numerator. On a BA II Plus, key 1.2700 ÷ 1.0854 =. On an HP 12C, key 1.2700 ENTER 1.0854 ÷.
- Check the size. If GBP is worth more than EUR, EUR/GBP must be greater than 1. If your answer is below 1, you inverted it.
- For arbitrage, estimate the profit as the gap between quoted and implied rates, divided by the rate. A gap of 0.5% on USD 1,000,000 is about USD 5,000.
Common mistakes in Cross Rates and Triangular Arbitrage
Using the wrong side (bid or ask) when building the cross rate
Students divide bid by bid because it feels natural.
Fix: For a divide-type cross, pair the bid of the numerator with the ask of the divisor to get the lowest value, and the ask of the numerator with the bid of the divisor for the highest. Then check that bid is below ask.
Inverting the answer (getting GBP/EUR instead of EUR/GBP)
The price/base convention is ignored and the quotes are not written out in words.
Fix: Say each quote aloud, such as '1 GBP costs 1.27 USD'. Make the answer's price currency match what the question asks. Use a size check on the result.
Forgetting to swap bid and ask when inverting a quote
Students take 1 ÷ bid and call it the new bid.
Fix: The new bid is 1 ÷ the old ask. The new ask is 1 ÷ the old bid.
Saying there is arbitrage because the quoted cross rate differs from the implied midpoint
Midpoints ignore transaction costs captured in the spread.
Fix: Compare against the implied bid-ask range. Only a quoted rate outside that range gives arbitrage.
Trading in the wrong direction around the triangle
Students start with the wrong currency or buy the expensive currency first.
Fix: Find the currency that is cheap in one market and dear in another. Buy it where it is cheap, sell it where it is dear, then convert back to your starting currency.
Rounding too early
Short decimals feel neater.
Fix: Keep at least 4 decimals in rates and carry full calculator precision between legs. Round only the final amount.
Worked examples
Example 1
A dealer quotes USD/EUR = 1.0850–1.0854 (price of 1 EUR in USD) and USD/GBP = 1.2700–1.2706 (price of 1 GBP in USD). What is the ask price of the EUR/GBP cross rate (EUR per 1 GBP)? A. 0.8539 B. 1.1706 C. 1.1711
Show the solution
- We need EUR per GBP. Write it as (USD/GBP) ÷ (USD/EUR) so that USD cancels.
- The ask is the highest possible value: the highest numerator over the lowest denominator.
- Highest numerator: ask of USD/GBP = 1.2706. Lowest denominator: bid of USD/EUR = 1.0850.
- Ask = 1.2706 ÷ 1.0850 = 1.1711 (to four decimals).
- Check: the bid is 1.2700 ÷ 1.0854 = 1.1701, so the range is 1.1701–1.1711. The ask is above the bid, as it must be.
- Option A (0.8539) is the inverse, 1.0850 ÷ 1.2706. Option B (1.1706) is 1.2706 ÷ 1.0854, which pairs the ask of the numerator with the ask of the divisor. That value sits inside the range but is neither the bid nor the ask.
Answer: C. The EUR/GBP ask is 1.1711 (the full cross rate is 1.1701–1.1711).
Example 2
Dealer 1 quotes USD/EUR = 1.0800–1.0802 and USD/GBP = 1.2600–1.2603 (USD per 1 unit). Dealer 2 quotes EUR/GBP = 1.1600–1.1604 (EUR per 1 GBP). Starting with USD 1,000,000 and ignoring other costs, what is the profit from triangular arbitrage? A. USD 0 (no arbitrage exists) B. USD 5,214 C. USD 12,540
Show the solution
- Find the implied EUR/GBP range from Dealer 1. Bid = 1.2600 ÷ 1.0802 = 1.16645, which is 1.1665 to four decimals. Ask = 1.2603 ÷ 1.0800 = 1.16694, which is 1.1669 to four decimals.
- Dealer 2's quoted ask for GBP is 1.1604 EUR, which is below the implied bid of about 1.1665. So GBP is cheap in EUR terms at Dealer 2 and dear in USD terms at Dealer 1. Arbitrage exists.
- Leg 1: buy EUR with USD at the ask of USD/EUR, 1.0802. USD 1,000,000 ÷ 1.0802 = EUR 925,754.49.
- Leg 2: buy GBP with EUR at the ask of EUR/GBP, 1.1604. EUR 925,754.49 ÷ 1.1604 = GBP 797,789.12 (carrying full calculator precision).
- Leg 3: sell GBP for USD at the bid of USD/GBP, 1.2600. GBP 797,789.12 × 1.2600 = USD 1,005,214.29.
- Profit = USD 1,005,214.29 − USD 1,000,000 = USD 5,214.29, which is about USD 5,214.
- Option A is wrong because the quoted cross rate is outside the implied range. Option C (12,540) would need an ending amount of USD 1,012,540. The three legs do not produce that amount.
Answer: B. The profit is about USD 5,214 per USD 1,000,000 traded.
Exam tips
- Write the units of the answer first (for example EUR/GBP) and build the formula so everything else cancels. This avoids inverted answers.
- With bid-ask cross rates, always check that your bid is lower than your ask. If not, you used the wrong sides.
- One wrong option is often the inverse of the correct answer and another is a midpoint-style value. Eliminate the inverse by checking whether the currency should be worth more or less than 1.
- For arbitrage questions, test the implied range first. If the quoted rate sits inside it, the answer is no arbitrage, and you can skip the profit calculation.
- Keep full calculator precision between legs. The answer options are often close, so early rounding can push you to the wrong choice.
Practice questions from Exchange Rate Calculations
- A dealer quotes USD/CAD at 1.3640/1.3646 (CAD per 1 USD). The bid-ask spread expressed in pips (one pip = 0.0001) is:
- A dealer quotes GBP/USD at 1.2500–1.2506 (bid–ask). A client who wants to buy USD using GBP at this dealer will most likely transact at a ra…
- A dealer quotes USD/EUR at 1.2000 and GBP/EUR at 0.8500 (price of 1 EUR in GBP). An interbank quote for USD/GBP (price of 1 GBP in USD) is 1…
- The GBP/CHF rate (CHF per 1 GBP) moves from 1.1500 to 1.1155. Which statement about the change in the Swiss franc relative to the pound is m…
- If a dealer's quoted cross rate differs from the rate implied by two other exchange rates, which outcome is most likely as arbitrageurs act …
Cross Rates and Triangular Arbitrage in other exams
The same ground in other exams, if you are preparing for more than one or want another angle on it.
Cross Rates and Triangular Arbitrage: frequently asked questions
How do I calculate a cross rate in CFA Level I?
Write both quotes as price/base and arrange them so the common currency cancels. Then multiply or divide. Check that your answer has the units the question asks for and the right size.
How do I find a cross rate with bid-ask spreads?
Compute the bid and ask separately. When you divide, bid = bid of numerator ÷ ask of divisor, and ask = ask of numerator ÷ bid of divisor. When you multiply, use bid × bid and ask × ask.
How do I know if triangular arbitrage exists?
Build the implied cross bid-ask range from the two other quotes. If the quoted cross bid is above the implied ask, or the quoted cross ask is below the implied bid, arbitrage exists. If the quoted rate is inside the range, it does not.
How do I find the triangular arbitrage profit?
Start with a fixed amount of one currency. Trade through the three currencies, buying at the ask and selling at the bid for each leg, and end in the starting currency. Profit is the ending amount minus the starting amount.