Arte SheetsLearn. Try. Understand.

Financial

Covered Interest Rate Parity (CIRP): FX forward rate & forward points formula

Compute an illustrative FX forward parity benchmark using simple annual rates, a common day basis and a stated quote convention.

Never flip quote vs. base interest rates when pricing FX hedges!

For a currency pair quoted as Quote per 1 unit of Base (such as EUR/USD = 1.1000 USD per 1 EUR), Covered Interest Rate Parity requires the Quote-currency interest factor in the NUMERATOR and the Base-currency interest factor in the DENOMINATOR: F = Spot * (1 + r_quote * Days / DayCount) / (1 + r_base * Days / DayCount)!

When USD 180-day rates sit at 5.0% and EUR rates at 3.0% (ACT/360), 180-day EUR/USD forward is 1.1000 * (1 + 0.05 * 180/360) / (1 + 0.03 * 180/360) = 1.1000 * 1.025 / 1.015 = 1.1108—trading at +108.4 forward pips ((F - S) * 10,000) because the higher-yielding quote currency (USD) trades at a forward discount!

This is a frictionless parity benchmark, not an executable quote or a future spot prediction. Market forwards may include a cross-currency basis, bid/ask spreads, funding and balance-sheet effects. The example uses the same ACT/360 basis for both currency rates; actual conventions may differ and need separate year fractions. Rates are assumed simple for the stated tenor.

FX Forward Metric (EUR/USD Spot = 1.1000, 180d ACT/360)FormulaIllustrative model result
USD Quote Factor (5.0% * 180/360)1 + 0.0251.0250
EUR Base Factor (3.0% * 180/360)1 + 0.0151.0150
Outright 180d Forward Rate (F)1.1000 * 1.025 / 1.0151.1108 USD/EUR
Forward Swap Points (Pips)(F - 1.1000) * 10,000+108.4 pips (Forward premium)

Outright FX forward rate (ACT/360 money-market convention)

A2=Spot (1.1000), B2=QuoteRate r_USD (0.05), C2=BaseRate r_EUR (0.03), D2=Days (180), E2=Basis (360).

=IF(OR(COUNT(A2:E2)<>5,A2<=0,D2<0,E2<=0),"Invalid inputs",IF(OR(1+B2*D2/E2<=0,1+C2*D2/E2<=0),"Invalid interest factor",ROUND(A2 * (1 + B2 * (D2 / E2)) / (1 + C2 * (D2 / E2)), 4)))

FX forward points in standard pips ((Forward - Spot) * 10,000)

Positive pips indicate base-currency forward premium; negative pips indicate forward discount.

The factor 10,000 is specific to a 0.0001 pip in this example. Other currency pairs and quote conventions use different pip sizes. Points use the unrounded forward, then round only the displayed result.

=IF(OR(COUNT(A2:E2)<>5,A2<=0,D2<0,E2<=0),"Invalid inputs",IF(OR(1+B2*D2/E2<=0,1+C2*D2/E2<=0),"Invalid interest factor",LET(fwd, A2 * (1 + B2 * (D2 / E2)) / (1 + C2 * (D2 / E2)), ROUND((fwd - A2) * 10000, 1))))

Try the example

Use the original values or change them to test your understanding.

Further reading