Currency Forwards: FX Markets & Interest Rate Parity Guide

Michael BrenndoerferNovember 14, 202549 min read

Learn FX market structure, currency forward pricing via covered interest rate parity, and hedging strategies. Master cross rates and forward valuation.

Reading Level

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.

Foreign Exchange Markets and Currency Forwards

The foreign exchange market, commonly known as forex or FX, is the largest and most liquid financial market in the world. With daily trading volumes exceeding $7.5 trillion, the FX market dwarfs equity markets by orders of magnitude. This enormous scale exists because virtually every international transaction, whether importing goods, investing abroad, or sending remittances, requires exchanging one currency for another.

Unlike the stock exchanges we examined in Chapter 1 of this part, the FX market operates as a decentralized over-the-counter (OTC) network spanning the globe. There is no single exchange or central location. Instead, trading occurs continuously through an interconnected web of banks, dealers, corporations, and electronic platforms. This structure creates a market that never sleeps: when London closes, New York is in full swing; when New York winds down, Tokyo opens.

Currency forwards extend the forward contracts we studied in earlier chapters to the FX domain. Building on the pricing frameworks from Part II, Chapters 5 and 7, we'll see how interest rate differentials between countries determine forward exchange rates through a fundamental relationship called interest rate parity. This relationship forms the backbone of global currency hedging strategies.

FX Market Structure

The foreign exchange market operates fundamentally differently from organized exchanges. Understanding its structure helps explain why FX markets exhibit unique characteristics in liquidity, pricing, and access.

The Over-the-Counter Network

The FX market is a decentralized dealer market. Major banks act as market makers, quoting bid and ask prices at which they will buy and sell currencies. These banks trade with each other in the interbank market, the core of the FX ecosystem, and with their customers: corporations, asset managers, hedge funds, and smaller banks.

The key participants in the FX market include:

  • Commercial banks: The largest players, acting as dealers and market makers. Banks like JPMorgan, Citi, UBS, and Deutsche Bank dominate interbank trading.
  • Central banks: Intervene to influence their domestic currency's value or manage reserves. Central bank activity can move markets significantly.
  • Corporations: Engage in FX to pay for imports, convert foreign revenues, or hedge future exposures from international operations.
  • Asset managers and hedge funds: Trade currencies as an asset class or hedge foreign investments. Carry trades and momentum strategies are common.
  • Retail traders: Individual speculators accessing the market through brokers, typically a small fraction of total volume.

24-Hour Trading Cycle

Because major financial centers span different time zones, the FX market operates continuously from Sunday evening (when Sydney opens) through Friday evening (when New York closes), with trading following the sun around the globe.

Out[2]:
Visualization
Timeline of FX market trading sessions across major financial centers. The market operates continuously as trading passes from Sydney to New York, with peak liquidity occurring during the London-New York overlap (orange band).
Timeline of FX market trading sessions across major financial centers. The market operates continuously as trading passes from Sydney to New York, with peak liquidity occurring during the London-New York overlap (orange band).

The overlapping sessions are particularly important. The London-New York overlap (roughly 12:00-16:00 UTC) sees the highest trading volumes, as the two largest financial centers operate simultaneously. During these periods, liquidity is deepest and bid-ask spreads are typically tightest.

Spot vs. Forward Markets

The FX market divides into two primary segments based on settlement timing:

  • Spot market: Transactions settle "on the spot," meaning within two business days (T+2) for most currency pairs. The spot market accounts for roughly 30% of FX turnover.
  • Forward market: Transactions settle at a predetermined future date, from one week to several years ahead. Forwards, FX swaps, and currency swap together dominate FX turnover.
FX Swap vs. Currency Swap

An FX swap combines a spot transaction with a forward transaction: buy a currency spot and simultaneously sell it forward (or vice versa). A currency swap, by contrast, involves exchanging principal and interest payments in different currencies over the life of the swap. We'll explore interest rate swaps in detail in Chapters 11 and 12.

Exchange Rate Quotes and Conventions

Understanding how exchange rates are quoted is essential before analyzing pricing relationships. FX quotes follow specific conventions that can be confusing but become intuitive with practice.

Currency Pairs and Base/Quote Convention

An exchange rate always involves two currencies: the base currency and the quote currency. An exchange rate shows how many units of the quote currency are needed to buy one unit of the base currency. This framing helps clarify the notation.

For a currency pair written as BASE/QUOTE, an exchange rate of XX means:

1 BASE=X QUOTE1 \text{ BASE} = X \text{ QUOTE}

where:

  • BASE\text{BASE}: base currency unit
  • QUOTE\text{QUOTE}: quote currency unit
  • XX: exchange rate (units of quote currency per unit of base currency)

For example, if EUR/USD = 1.0850, then one euro costs $1.0850 US dollars. The euro is the base currency, the dollar is the quote currency. You can think of the base currency as the "thing being priced" and the quote currency as the "unit of measurement." Just as a stock might cost $150, a euro costs $1.0850.

Currency Pair Notation

Currency pairs are written as BASE/QUOTE. The exchange rate tells you how much quote currency is needed to purchase one unit of base currency.

The FX market follows a hierarchy that determines which currency appears as the base. This convention evolved historically and persists today:

  1. EUR is always the base against other currencies (EUR/USD, EUR/GBP, EUR/JPY)
  2. GBP is base against all except EUR (GBP/USD, GBP/CHF)
  3. AUD and NZD follow, then USD
  4. USD is typically base against most other currencies (USD/JPY, USD/CHF, USD/CAD)

Direct vs. Indirect Quotes

From the perspective of a specific country, exchange rates can be quoted in two ways. This distinction is important because the same exchange rate information is expressed differently depending on the home currency.

  • Direct quote (price quotation): Units of domestic currency per one unit of foreign currency
  • Indirect quote (volume quotation): Units of foreign currency per one unit of domestic currency

If you are a US-based investor:

  • EUR/USD = 1.0850 is a direct quote (dollars per euro)
  • USD/JPY = 150.25 is an indirect quote (yen per dollar, inverted to get dollars per yen)
In[3]:
Code
## Converting between direct and indirect quotes
eur_usd = 1.0850  # Direct quote for US investor: $/€
usd_eur = 1 / eur_usd  # Indirect quote: €/$

usd_jpy = 150.25  # Indirect quote for US investor: ¥/$
jpy_usd = 1 / usd_jpy  # Direct quote: $/¥
Out[4]:
Console
EUR/USD = 1.0850 ($1.0850 per €1)
USD/EUR = 0.9217 (€0.9217 per $1)
USD/JPY = 150.25 (¥150.25 per $1)
JPY/USD = 0.006656 ($0.006656 per ¥1)

These calculations illustrate how the direct quote is the reciprocal of the indirect quote. For the USD/JPY pair, 150.25 yen per dollar equates to approximately $0.0067 per yen. This reciprocal relationship means knowing one quote immediately gives you the other.

Bid-Ask Spreads

Like all traded instruments, currency pairs have bid and ask prices. The bid is the price at which dealers will buy the base currency (you sell), and the ask is the price at which dealers will sell (you buy). This distinction matters because you always transact at the less favorable price for your side of the trade.

For EUR/USD quoted as 1.0848/1.0852:

  • Bid = 1.0848: Dealer buys euros, you receive $1.0848 per euro
  • Ask = 1.0852: Dealer sells euros, you pay $1.0852 per euro

The spread (0.0004 or 4 "pips") represents the dealer's profit margin and varies by currency pair liquidity, volatility, and market conditions. Highly liquid pairs like EUR/USD have narrow spreads, while exotic currency pairs can have spreads that are many times larger.

Pip (Percentage in Point)

A pip is the smallest standard price movement in an FX quote. For most pairs, it's 0.0001 (fourth decimal place). For JPY pairs, it's 0.01 (second decimal place) due to the yen's lower value per unit.

In[5]:
Code
## Calculate bid-ask spread in pips
def calculate_spread_pips(bid, ask, is_jpy_pair=False):
    """Calculate bid-ask spread in pips."""
    pip_size = 0.01 if is_jpy_pair else 0.0001
    spread = ask - bid
    spread_pips = spread / pip_size
    return spread_pips


## Example spreads for major pairs
eur_usd_bid, eur_usd_ask = 1.0848, 1.0852
usd_jpy_bid, usd_jpy_ask = 150.23, 150.28
gbp_usd_bid, gbp_usd_ask = 1.2645, 1.2650

## Calculate spreads
spread_eur_usd = calculate_spread_pips(eur_usd_bid, eur_usd_ask)
spread_usd_jpy = calculate_spread_pips(
    usd_jpy_bid, usd_jpy_ask, is_jpy_pair=True
)
spread_gbp_usd = calculate_spread_pips(gbp_usd_bid, gbp_usd_ask)
Out[6]:
Console
Currency Pair     Bid      Ask      Spread (pips)
--------------------------------------------------
EUR/USD          1.0848   1.0852   4.0
USD/JPY          150.23   150.28    5.0
GBP/USD          1.2645   1.2650   5.0

Major pairs like EUR/USD typically trade with 1-4 pip spreads during liquid hours. Emerging market currencies can have spreads of 50-100 pips or more.

Cross Rates

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 serves as 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:

EUR/JPY=EUR/USD×USD/JPY\text{EUR/JPY} = \text{EUR/USD} \times \text{USD/JPY}

where:

  • EUR/JPY\text{EUR/JPY}: cross rate (Yen per Euro)
  • EUR/USD\text{EUR/USD}: exchange rate of USD per EUR
  • USD/JPY\text{USD/JPY}: 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:

JPYEUR=USDEUR×JPYUSD\frac{\text{JPY}}{\text{EUR}} = \frac{\text{USD}}{\text{EUR}} \times \frac{\text{JPY}}{\text{USD}}

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:

GBP/EUR=GBP/USDEUR/USD\text{GBP/EUR} = \frac{\text{GBP/USD}}{\text{EUR/USD}}
  • GBP/EUR\text{GBP/EUR}: implied cross rate (Euros per Pound)
  • GBP/USD\text{GBP/USD}: exchange rate of USD per GBP
  • EUR/USD\text{EUR/USD}: 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:

GBP/USDEUR/USD=USD per GBPUSD per EUR=USDGBP×EURUSD=EURGBP=EUR per GBP\begin{aligned} \frac{\text{GBP/USD}}{\text{EUR/USD}} &= \frac{\text{USD per GBP}}{\text{USD per EUR}} \\ &= \frac{\text{USD}}{\text{GBP}} \times \frac{\text{EUR}}{\text{USD}} \\ &= \frac{\text{EUR}}{\text{GBP}} \\ &= \text{EUR per GBP} \end{aligned}

Since the pair GBP/EUR is defined as Euros per Pound, the derived units match perfectly.

In[7]:
Code
## 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_eur
Out[8]:
Console
Cross 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

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:

  1. Starting with USD
  2. Converting to EUR at the spot rate
  3. Converting EUR to JPY at the (mispriced) EUR/JPY rate
  4. Converting JPY back to USD
  5. 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.

In[9]:
Code
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
)
Out[10]:
Console
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.

Interest Rate Parity

Interest rate parity (IRP) is the fundamental relationship connecting spot exchange rates, forward exchange rates, and interest rates across countries. It explains why currencies with higher interest rates tend to trade at forward discounts. Understanding this relationship is essential because it reveals why forward rates are not forecasts of future spot rates but rather mathematical consequences of interest rate differentials.

The No-Arbitrage Argument

A simple thought experiment explains interest rate parity. Consider a situation where you have $1 to invest for a period TT (in years). You have two strategies available, each starting with the same capital and ending at the same future date. For markets to be in equilibrium, both strategies must produce identical returns, otherwise arbitrage would be possible.

Strategy A: Invest domestically

  • Invest in a US dollar deposit earning rdr_d (domestic rate)
  • After period TT: 1×(1+rd×T)1 \times (1 + r_d \times T) dollars

This is the straightforward approach. You keep your money in dollars and earn the US interest rate.

Strategy B: Invest abroad

  • Convert dollars to euros at spot rate SS (USD per EUR, so you get 1/S1/S euros)
  • Invest in a euro deposit earning rfr_f (foreign rate)
  • Lock in a forward contract to convert back to dollars at forward rate FF
  • After period TT: (1/S)×(1+rf×T)×F(1/S) \times (1 + r_f \times T) \times F dollars

This alternative path requires more steps but, crucially, involves no exchange rate risk because the forward contract locks in the conversion rate for the return journey.

For no arbitrage, both strategies must yield the same return. If they didn't, investors would pile into the superior strategy, driving rates until equality was restored. By equating the returns and solving for FF, we derive the fundamental pricing relationship:

1+rd×T=1S×(1+rf×T)×F(equate returns)F=S×1+rd×T1+rf×T(solve for F)\begin{aligned} 1 + r_d \times T &= \frac{1}{S} \times (1 + r_f \times T) \times F && \text{(equate returns)} \\ F &= S \times \frac{1 + r_d \times T}{1 + r_f \times T} && \text{(solve for F)} \end{aligned}
  • FF: forward exchange rate
  • SS: spot exchange rate (domestic per foreign)
  • rdr_d: domestic interest rate
  • rfr_f: foreign interest rate
  • TT: time to maturity in years

This is the covered interest rate parity (CIP) condition. The word "covered" refers to the fact that exchange rate risk is eliminated (covered) by the forward contract.

Covered Interest Rate Parity

Covered interest rate parity states that the forward exchange rate must equal the spot rate adjusted for the interest rate differential between two currencies. When the forward is locked in, exchange rate risk is "covered," hence the name.

Forward Premium and Discount

The relationship between spot and forward rates is expressed as:

F=S×1+rd×T1+rf×TF = S \times \frac{1 + r_d \times T}{1 + r_f \times T}

where:

  • FF: forward exchange rate
  • SS: spot exchange rate
  • rdr_d: domestic interest rate
  • rfr_f: foreign interest rate
  • TT: time to maturity in years

This formula has important implications for understanding currency markets. When rd>rfr_d > r_f, the forward rate F>SF > S, meaning the foreign currency trades at a forward premium (it will be worth more in terms of domestic currency in the forward market than spot). Intuitively, this makes sense: if you can earn more interest in the domestic currency, the market compensates by making the foreign currency relatively more valuable in forward transactions.

Conversely, when rd<rfr_d < r_f, the forward rate F<SF < S, meaning the foreign currency trades at a forward discount. The higher foreign interest rate is offset by expected currency depreciation embedded in the forward rate.

The forward premium or discount can be annualized to express it as a comparable rate:

Forward Premium (annualized)=FSS×360D\text{Forward Premium (annualized)} = \frac{F - S}{S} \times \frac{360}{D}

where:

  • FF: forward exchange rate
  • SS: spot exchange rate
  • DD: number of days to forward settlement
  • FSS\frac{F - S}{S}: the percentage return (yield) locked in by the forward contract
  • 360D\frac{360}{D}: scaling factor to convert the period return to an annualized rate

The annualization allows comparison across different tenor forwards and against interest rate differentials.

In[11]:
Code
def forward_rate_cip(spot, r_domestic, r_foreign, T_years):
    """
    Calculate forward exchange rate using covered interest rate parity.

    Parameters:
    -----------
    spot : float
        Spot exchange rate (domestic per foreign)
    r_domestic : float
        Domestic interest rate (annualized, simple)
    r_foreign : float
        Foreign interest rate (annualized, simple)
    T_years : float
        Time to forward settlement in years

    Returns:
    --------
    forward : float
        Forward exchange rate
    """
    forward = spot * (1 + r_domestic * T_years) / (1 + r_foreign * T_years)
    return forward


def forward_premium_annualized(spot, forward, T_days):
    """Calculate annualized forward premium/discount."""
    return (forward - spot) / spot * (360 / T_days)


## Define market parameters
spot_eurusd = 1.0850
r_usd = 0.0525
r_eur = 0.0400

## Calculate 3-month forward (90 days)
T_3m = 0.25
forward_3m = forward_rate_cip(spot_eurusd, r_usd, r_eur, T_3m)
premium_3m = forward_premium_annualized(spot_eurusd, forward_3m, 90)

## Calculate 1-year forward (360 days)
T_1y = 1.0
forward_1y = forward_rate_cip(spot_eurusd, r_usd, r_eur, T_1y)
premium_1y = forward_premium_annualized(spot_eurusd, forward_1y, 360)

## Convert to percentages for display
r_usd_pct = r_usd * 100
r_eur_pct = r_eur * 100
premium_3m_pct = premium_3m * 100
premium_1y_pct = premium_1y * 100
Out[12]:
Console
EUR/USD Forward Rate Calculation
=============================================
Spot rate:           1.0850 USD/EUR
US interest rate:    5.25%
EUR interest rate:   4.00%

3-month forward:     1.0884 USD/EUR
  Premium (annual):  1.24%

1-year forward:      1.0980 USD/EUR
  Premium (annual):  1.20%

Since US rates exceed eurozone rates, the euro trades at a forward premium; it costs more dollars to buy euros forward than spot. This makes intuitive sense: if you can earn more investing in dollars, the forward rate compensates by making the euro relatively more expensive in the future. The market is essentially saying that earning the higher US rate is exactly offset by paying more for euros when the forward matures.

Out[13]:
Visualization
Forward exchange rates for EUR/USD across maturities. The upward sloping curve indicates a forward premium, driven by the positive interest rate differential between the US and the Eurozone.
Forward exchange rates for EUR/USD across maturities. The upward sloping curve indicates a forward premium, driven by the positive interest rate differential between the US and the Eurozone.
Forward points for EUR/USD across maturities. The points increase linearly with time, representing the cumulative cost of carry embedded in the forward contracts.
Forward points for EUR/USD across maturities. The points increase linearly with time, representing the cumulative cost of carry embedded in the forward contracts.

Forward Points

In practice, forward rates are often quoted as "forward points," the difference between the forward rate and spot rate, multiplied by 10,000 (for most pairs) or 100 (for JPY pairs). This convention exists because forward points change more frequently than spot rates and allow dealers to quote forward adjustments without constantly updating full prices.

In[14]:
Code
## Forward points calculation
spot = spot_eurusd
## forward_3m is available from previous block

## Forward points (typically quoted in pips × 10)
forward_points = (forward_3m - spot) * 10000
check_val = spot + forward_points / 10000
Out[15]:
Console
Spot:           1.0850
3M Forward:     1.0884
Forward points: 33.6
Forward = Spot + Points/10000 = 1.0850 + 33.6/10000 = 1.0884

The calculated value of {python} f'{forward_points:+.1f}' points means the 3-month forward rate is approximately {python} f'{forward_points:.0f}' pips (or points) above the spot rate. Positive forward points indicate a forward premium on the base currency, while negative points indicate a forward discount.

Out[16]:
Visualization
Relationship between interest rate differentials and forward premiums. The linear correlation demonstrates interest rate parity: as the domestic interest rate exceeds the foreign rate (positive differential), the foreign currency trades at a forward premium to offset the lower foreign yield.
Relationship between interest rate differentials and forward premiums. The linear correlation demonstrates interest rate parity: as the domestic interest rate exceeds the foreign rate (positive differential), the foreign currency trades at a forward premium to offset the lower foreign yield.

Covered Interest Arbitrage

When CIP is violated, arbitrage opportunities arise. The arbitrage mechanism ensures CIP holds in well-functioning markets. Understanding how to construct and execute this arbitrage reveals why the interest rate parity relationship is so robust.

Suppose the forward rate is "too high" relative to CIP (i.e., the euro is overpriced in the forward market). You can exploit this mispricing through the following sequence of transactions:

  1. Borrow dollars at rUSDr_{USD}
  2. Convert to euros at spot rate SS
  3. Invest euros at rEURr_{EUR}
  4. Sell euros forward at the (overpriced) rate FF
  5. At maturity: receive euros, convert to dollars, repay dollar loan
  6. Pocket the risk-free profit

This arbitrage is "covered" because the forward contract eliminates exchange rate risk. You know exactly how many dollars you will receive when you convert your euro proceeds at maturity.

In[17]:
Code
def covered_interest_arbitrage(
    spot, forward_market, r_domestic, r_foreign, T_years, notional=1_000_000
):
    """
    Calculate arbitrage profit when forward rate deviates from CIP.

    Returns profit (if positive) or indicates no arbitrage (if negative).
    """
    # Fair forward rate from CIP
    forward_fair = spot * (1 + r_domestic * T_years) / (1 + r_foreign * T_years)

    # If market forward > fair forward, foreign currency overpriced in forward
    # Strategy: Borrow domestic, invest foreign, sell foreign forward
    if forward_market > forward_fair:
        # Borrow domestic currency
        domestic_borrowed = notional
        # Convert to foreign at spot
        foreign_received = domestic_borrowed / spot
        # Invest foreign
        foreign_at_maturity = foreign_received * (1 + r_foreign * T_years)
        # Sell forward at market rate
        domestic_at_maturity = foreign_at_maturity * forward_market
        # Repay domestic loan
        domestic_owed = domestic_borrowed * (1 + r_domestic * T_years)
        profit = domestic_at_maturity - domestic_owed
        strategy = "Borrow USD, invest EUR, sell EUR forward"
    else:
        # Opposite: borrow foreign, invest domestic, buy foreign forward
        foreign_borrowed = notional / spot
        domestic_invested = notional
        domestic_at_maturity = domestic_invested * (1 + r_domestic * T_years)
        foreign_owed = foreign_borrowed * (1 + r_foreign * T_years)
        foreign_to_buy = domestic_at_maturity / forward_market
        profit = (
            foreign_to_buy - foreign_owed
        ) * spot  # Convert profit to domestic terms
        strategy = "Borrow EUR, invest USD, buy EUR forward"

    return forward_fair, profit, strategy


## Parameters for arbitrage check
spot = 1.0850
r_usd = 0.0525
r_eur = 0.0400
T_years = 0.25  # 3 months

## Case 1: Consistent rates
fair_1 = spot * (1 + r_usd * T_years) / (1 + r_eur * T_years)
forward_correct = fair_1
fair_1_calc, profit_1, strategy_1 = covered_interest_arbitrage(
    spot, forward_correct, r_usd, r_eur, T_years
)

## Case 2: Mispriced forward (50 pips too high)
forward_overpriced = fair_1 + 0.0050
fair_2, profit_2, strategy_2 = covered_interest_arbitrage(
    spot, forward_overpriced, r_usd, r_eur, T_years
)
Out[18]:
Console
Case 1: CIP holds (no arbitrage)
  Fair forward:    1.0884
  Market forward:  1.0884
  Profit on $1M:   $0.00

Case 2: Forward overpriced by 50 pips
  Fair forward:    1.0884
  Market forward:  1.0934
  Strategy:        Borrow USD, invest EUR, sell EUR forward
  Profit on $1M:   $4,654.38

The positive profit in Case 2 confirms that when the market forward rate is higher than the theoretical CIP rate, a risk-free arbitrage is possible by borrowing domestic currency and investing in the foreign currency. The arbitrage activity itself pushes rates back toward equilibrium: borrowing pressure raises domestic rates, selling euros forward pushes the forward rate down, until no profit remains.

### Uncovered Interest Parity While covered interest parity uses forward contracts to eliminate exchange rate risk, **uncovered interest parity (UIP)** makes a prediction about future spot rates based on economic theory rather than arbitrage: $$ E[S_T] = S \times \frac{1 + r_d \times T}{1 + r_f \times T} $$ where: - $E[S_T]$: expected future spot rate - $S$: current spot exchange rate - $r_d$: domestic interest rate - $r_f$: foreign interest rate - $T$: time to maturity in years UIP states that the expected future spot rate equals the current forward rate. In other words, high-yielding currencies are expected to depreciate against low-yielding currencies, exactly offsetting the interest rate advantage. The intuition is that if a currency offered both higher interest rates and appreciation, capital would flood in until one or both advantages disappeared. Unlike CIP (which is a no-arbitrage condition and holds tightly), UIP is an equilibrium hypothesis that doesn't hold well empirically. The "forward premium puzzle" refers to the finding that high-yield currencies tend to appreciate rather than depreciate, contrary to UIP. This anomaly underlies the popular "carry trade" strategy, where investors borrow low-yielding currencies to invest in high-yielding ones, profiting from both the interest differential and (often) favorable currency movements. ## Currency Forwards for Hedging Currency forwards are powerful tools for managing foreign exchange exposure. You must understand how to construct and value these hedges. ### Types of FX Exposure Organizations face several types of currency risk: - transaction exposure: Risk from known future foreign currency cash flows (e.g., a US importer paying €1 million to a German supplier in 60 days) - translation exposure: Risk from converting foreign subsidiary financial statements to the parent's reporting currency - economic exposure: Long-term competitive risk from exchange rate changes affecting future revenues and costs Currency forwards directly hedge transaction exposure and can partially address economic exposure. ### Forward Contract Mechanics A currency forward obligates two parties to exchange currencies at a predetermined rate on a future date. Building on our discussion of forwards in Chapter 5 of this part, the key terms include: - Notional amount: The quantity of currency to be exchanged - Forward rate: The agreed exchange rate - Settlement date: When the exchange occurs - Settlement method: Physical delivery or cash settlement ### Hedging Example: US Investor with Euro Assets Consider a US pension fund that owns €50 million in European equities. You are bullish on European stocks but want to eliminate currency risk: you want returns driven by stock performance, not EUR/USD fluctuations.
In[19]:
Code
import numpy as np

## Portfolio parameters
euro_notional = 50_000_000  # €50 million
spot_rate = spot_eurusd  # USD per EUR
forward_rate = forward_3m  # 3-month forward (from CIP earlier)

## Current USD value
usd_value_now = euro_notional * spot_rate

## Scenario analysis: EUR/USD moves from 1.00 to 1.18
spot_rates_future = np.linspace(1.00, 1.18, 50)

## Unhedged portfolio value at horizon
usd_value_unhedged = euro_notional * spot_rates_future

## Hedged portfolio: forward locks in the exchange rate
## Short EUR forward at 1.0883 for €50M
## At maturity: receive \$54,415,000, deliver €50M
usd_value_hedged = (
    euro_notional * forward_rate * np.ones_like(spot_rates_future)
)

## Convert to millions for plotting
usd_value_unhedged_m = usd_value_unhedged / 1e6
usd_value_hedged_m = usd_value_hedged / 1e6
usd_value_now_m = usd_value_now / 1e6
Out[20]:
Visualization
Line chart comparing hedged and unhedged portfolio values across future exchange rates.
Comparison of hedged and unhedged portfolio values across future spot rates. The unhedged strategy (solid blue line) carries linear exchange rate risk, while the hedged strategy (dashed green line) locks in a fixed value regardless of spot market movements.

The hedge locks in the forward rate, eliminating both downside and upside currency exposure. The unhedged portfolio benefits if EUR strengthens but suffers if EUR weakens.

Calculating Hedge P&L

At the forward's maturity, the hedge generates a profit or loss that offsets currency movements in the underlying portfolio. The profit and loss calculation is straightforward: compare what you locked in to what you would have received at the prevailing spot:

P&Lhedge=N×(FST)\text{P\&L}_{\text{hedge}} = N \times (F - S_T)

where:

  • NN: notional amount of foreign currency
  • FF: locked-in forward rate
  • STS_T: spot exchange rate at maturity
  • (FST)(F - S_T): gain or loss per unit of currency (for a short forward position)

For a short forward position (selling foreign currency forward), the interpretation is intuitive: you agreed to sell at rate FF, but the market rate at maturity is STS_T. If F>STF > S_T, you sold at a higher rate than you could have gotten in the spot market, generating a profit. If F<STF < S_T, you sold at a lower rate than the spot market, creating a loss. This gain or loss exactly offsets the currency impact on your underlying foreign asset.

In[21]:
Code
def hedge_pnl(euro_notional, forward_rate, spot_at_maturity):
    """
    Calculate P&L from a short EUR forward (hedging long EUR exposure).

    Short forward means: agreed to sell EUR at forward rate.
    At maturity: receive forward rate, deliver EUR at spot.
    """
    # If spot < forward: profit (sold EUR high, buy back low)
    # If spot > forward: loss (sold EUR low, would have gotten more at spot)
    pnl = (forward_rate - spot_at_maturity) * euro_notional
    return pnl


euro_notional = 50_000_000
forward_rate = forward_3m
initial_spot = spot_eurusd

## Define scenarios relative to current spot
scenarios = [
    ("EUR weakens", 1.05),
    ("EUR unchanged", initial_spot),
    ("EUR strengthens", 1.12),
]

## Calculate P&L for each scenario
pnl_results = []
for name, future_spot in scenarios:
    hedge_pl = hedge_pnl(euro_notional, forward_rate, future_spot)
    portfolio_value = euro_notional * future_spot
    hedged_value = portfolio_value + hedge_pl

    # Create descriptive label with value
    label = f"{name} ({future_spot:.4f})"
    # Store values in millions
    pnl_results.append(
        (label, portfolio_value / 1e6, hedge_pl / 1e6, hedged_value / 1e6)
    )
Out[22]:
Console
Hedge P&L Analysis (€50M Short Forward)
============================================================
Forward rate locked in: 1.0884

EUR weakens (1.0500)
  Portfolio value:  $52.50M
  Hedge P&L:        $+1.92M
  Total hedged:     $54.42M

EUR unchanged (1.0850)
  Portfolio value:  $54.25M
  Hedge P&L:        $+0.17M
  Total hedged:     $54.42M

EUR strengthens (1.1200)
  Portfolio value:  $56.00M
  Hedge P&L:        $-1.58M
  Total hedged:     $54.42M

Notice that regardless of where EUR/USD ends up, the total hedged position is always approximately €50M × {python} f'{forward_rate:.4f}' = ${{python} f'{(euro_notional * forward_rate / 1e6):.2f}'}M. The hedge P&L exactly offsets currency gains or losses. When the euro weakens, the portfolio loses value but the hedge generates a profit. When the euro strengthens, the portfolio gains value but the hedge generates a loss. The net result is always the locked-in forward rate.

Out[23]:
Visualization
Breakdown of a fully hedged portfolio's value components. The hedge P&L (red line) acts as a mirror image to the portfolio value (blue line), resulting in a stable total value (dashed gray line) that eliminates currency-driven variance.
Breakdown of a fully hedged portfolio's value components. The hedge P&L (red line) acts as a mirror image to the portfolio value (blue line), resulting in a stable total value (dashed gray line) that eliminates currency-driven variance.

Rolling Hedges

For ongoing exposures, hedging typically involves rolling forward contracts. At each maturity, the old forward settles and a new one is initiated. Rolling creates "roll yield" that depends on the forward curve:

  • Positive carry: If you're receiving the higher-yielding currency forward, each roll adds value
  • Negative carry: If you're paying the higher-yielding currency forward, each roll costs
In[24]:
Code
## Rolling hedge cost analysis
## US investor hedging EUR exposure over 1 year with quarterly rolls

spot = 1.0850
r_usd = 0.0525
r_eur = 0.0400
roll_periods = 4  # Quarterly
T_per_period = 0.25  # Years
portfolio_notional = 50_000_000

## Cost of rolling forwards (assuming rates stay constant)
## Each period, forward = spot × (1 + r_usd × T) / (1 + r_eur × T)
## The "cost" is that forward > spot when r_usd > r_eur

roll_cost_per_period = (r_usd - r_eur) * T_per_period
annual_roll_cost = roll_cost_per_period * roll_periods
annual_cost_value = portfolio_notional * annual_roll_cost

## Percentages for display
rate_diff_pct = (r_usd - r_eur) * 100
roll_cost_period_pct = roll_cost_per_period * 100
annual_roll_cost_pct = annual_roll_cost * 100
Out[25]:
Console
Rolling Hedge Cost Analysis
========================================
Interest rate differential: 1.25%
Per-quarter roll cost:      0.3125%
Annual roll cost:           1.25%

On €50M portfolio: $625,000/year

This cost represents the price of eliminating currency risk. Whether it's worth paying depends on your risk tolerance and views on EUR/USD.

Optimal Hedge Ratios

A 100% hedge eliminates currency risk but also forgoes potential gains from favorable moves. Some investors use partial hedges based on:

  • Volatility targeting: Hedge enough to achieve a target portfolio volatility
  • Mean-variance optimization: Balance expected return against risk reduction
  • Regime-dependent: Adjust hedge ratio based on market conditions

The volatility of a partially hedged portfolio derives from the variance of the sum of the equity position and the remaining currency exposure. A partially hedged portfolio has two sources of risk: the underlying asset and the unhedged portion of currency exposure. To calculate the portfolio volatility, we first determine the variance of the sum of these components:

σp2=σe2+(1h)2σf2+2ρ(1h)σeσfσp=σe2+(1h)2σf2+2ρ(1h)σeσf\begin{aligned} \sigma_p^2 &= \sigma_e^2 + (1-h)^2 \sigma_f^2 + 2\rho (1-h) \sigma_e \sigma_f \\ \sigma_p &= \sqrt{\sigma_e^2 + (1-h)^2 \sigma_f^2 + 2\rho (1-h) \sigma_e \sigma_f} \end{aligned}

where:

  • σp\sigma_p: portfolio volatility
  • σe\sigma_e: volatility of the underlying asset
  • σf\sigma_f: volatility of the exchange rate
  • hh: hedge ratio (0h10 \le h \le 1)
  • ρ\rho: correlation between asset returns and exchange rate returns
  • (1h)2σf2(1-h)^2 \sigma_f^2: variance contribution from the unhedged portion of currency exposure
  • 2ρ(1h)σeσf2\rho (1-h) \sigma_e \sigma_f: covariance term capturing the diversification effect between asset and currency returns

The covariance term is particularly important because it captures the diversification effect. When equity and currency returns are negatively correlated, the covariance term is negative, reducing total portfolio variance. This means the currency exposure provides a natural hedge against equity risk.

In[26]:
Code
import numpy as np


def portfolio_volatility_with_hedge(
    equity_vol, fx_vol, correlation, hedge_ratio
):
    """
    Calculate portfolio volatility as a function of hedge ratio.

    Parameters:
    -----------
    equity_vol : float
        Volatility of underlying equity position (in local currency)
    fx_vol : float
        Volatility of exchange rate
    correlation : float
        Correlation between equity returns and FX returns
    hedge_ratio : float
        Fraction of FX exposure hedged (0 to 1)

    Returns:
    --------
    portfolio_vol : float
        Annualized volatility of hedged portfolio in domestic currency
    """
    # Unhedged FX exposure = (1 - hedge_ratio) × fx_vol
    unhedged_fx_vol = (1 - hedge_ratio) * fx_vol

    # Portfolio variance (simplified for illustration)
    # σ²_portfolio = σ²_equity + σ²_fx_unhedged + 2ρ × σ_equity × σ_fx_unhedged
    portfolio_var = (
        equity_vol**2
        + unhedged_fx_vol**2
        + 2 * correlation * equity_vol * unhedged_fx_vol
    )

    return np.sqrt(portfolio_var)


## Generate volatility curves for plotting
equity_vol = 0.15
fx_vol = 0.10
hedge_ratios = np.linspace(0, 1, 100)
correlations = [0.5, 0.0, -0.5]

vol_curves = {}
for corr in correlations:
    vols = [
        portfolio_volatility_with_hedge(equity_vol, fx_vol, corr, h)
        for h in hedge_ratios
    ]
    vol_curves[corr] = vols

## Convert to percentages for plotting
hedge_ratios_pct = hedge_ratios * 100
Out[27]:
Visualization
Line chart showing portfolio volatility decreasing as hedge ratio increases for three correlation scenarios.
Impact of hedge ratios on portfolio volatility across different correlation regimes. When assets and currencies are negatively correlated (ρ = -0.5), a partial hedge (or no hedge) minimizes risk better than a full hedge, illustrating the natural diversification benefit of currency exposure.

When equity returns and currency returns are negatively correlated (ρ < 0), the currency provides a natural hedge, and adding a forward hedge can actually increase total volatility at low hedge ratios. This counterintuitive result illustrates why understanding correlations is crucial for hedge design. A blanket policy of fully hedging all currency exposure may not be optimal if currencies naturally offset other portfolio risks.

Mark-to-Market Valuation of Currency Forwards

As we discussed for forwards generally in Chapter 5, currency forwards must be marked to market as exchange rates and interest rates change. The value of an existing forward position depends on how current market rates compare to the contract rate. This valuation is essential for risk management, financial reporting, and understanding the economic exposure of forward positions.

Forward Valuation Formula

For a forward contract to buy foreign currency at rate KK with time τ\tau remaining, the current value to the buyer is:

Vt=N×FtK1+rd×τV_t = N \times \frac{F_t - K}{1 + r_d \times \tau}

where:

  • VtV_t: current value of the forward position in domestic currency
  • NN: notional amount of foreign currency
  • FtF_t: current forward rate for maturity τ\tau
  • KK: contracted forward rate
  • rdr_d: domestic interest rate
  • τ\tau: time remaining to settlement in years

This formula calculates the present value of the difference between the current forward rate and the contracted rate. The term (FtK)(F_t - K) represents the future gain or loss per unit of currency: if the current forward rate exceeds the contracted rate, the position has gained value because you locked in the right to buy at a lower rate than the market now offers. Dividing by (1+rd×τ)(1 + r_d \times \tau) discounts this future amount to the present using the domestic interest rate, because the gain or loss will only be realized at the forward's maturity.

In[28]:
Code
def forward_mtm_value(
    notional, contracted_rate, current_forward, r_domestic, time_remaining
):
    """
    Mark-to-market value of a long forward position.

    Parameters:
    -----------
    notional : float
        Notional amount of foreign currency
    contracted_rate : float
        Original forward rate (domestic per foreign)
    current_forward : float
        Current forward rate for remaining maturity
    r_domestic : float
        Domestic interest rate (annualized)
    time_remaining : float
        Time to settlement in years

    Returns:
    --------
    mtm_value : float
        Current value of forward position in domestic currency
    """
    present_value_factor = 1 / (1 + r_domestic * time_remaining)
    mtm_value = (
        notional * (current_forward - contracted_rate) * present_value_factor
    )
    return mtm_value


## Example: Long EUR/USD forward at 1.0900, 6 months originally, 3 months remaining
notional_eur = 10_000_000  # €10 million
contracted_rate = 1.0900  # Agreed to buy EUR at 1.0900
current_spot = 1.0850
r_usd_current = 0.0520
r_eur_current = 0.0400
time_remaining = 0.25  # 3 months

## Current 3-month forward
current_forward = (
    current_spot
    * (1 + r_usd_current * time_remaining)
    / (1 + r_eur_current * time_remaining)
)

## MTM value
mtm = forward_mtm_value(
    notional_eur,
    contracted_rate,
    current_forward,
    r_usd_current,
    time_remaining,
)
Out[29]:
Console
Forward Contract Mark-to-Market
=============================================
Position:          Long €10M forward
Contracted rate:   1.0900 USD/EUR
Current spot:      1.0850 USD/EUR
Current 3M fwd:    1.0882 USD/EUR
Time remaining:    3 months

MTM Value:         $-17,544.20

Forward is out of the money: contracted to buy EUR at a rate
higher than the current forward rate.

The forward is underwater because we agreed to pay {python} f'{contracted_rate:.4f}' for euros, but the current forward is only {python} f'{current_forward:.4f}'. We're locked into paying more than the market rate. This negative mark-to-market value represents an economic liability that would need to be paid if the position were closed out today.

Out[30]:
Visualization
Mark-to-market (MTM) value sensitivity of a long forward position to spot rate changes. The position gains value as the spot rate rises above the contracted rate of 1.0900 (green region) and loses value when the spot rate falls below (red region), reflecting the changing cost of replacement.
Mark-to-market (MTM) value sensitivity of a long forward position to spot rate changes. The position gains value as the spot rate rises above the contracted rate of 1.0900 (green region) and loses value when the spot rate falls below (red region), reflecting the changing cost of replacement.

Practical Considerations

Implementing currency hedging in practice involves considerations beyond pure pricing theory.

Transaction Costs

Currency forwards traded with banks carry costs embedded in:

  • Bid-ask spreads: Wider for longer tenors and less liquid currency pairs
  • Credit charges: Banks may require collateral or charge for counterparty risk
  • Operational costs: Settlement, documentation, and ongoing monitoring

If you are a corporate treasurer hedging €100 million over one year, these costs might amount to 0.10-0.25% annually for major currency pairs.

Hedge Accounting

Accounting standards (IFRS 9, ASC 815) allow companies to designate forwards as hedges, avoiding P&L volatility from mark-to-market changes. However, hedge accounting requires:

  • Formal documentation at inception
  • Prospective and retrospective effectiveness testing
  • Specific designation of hedged items and risks

Many corporates maintain detailed hedge documentation to qualify for favorable accounting treatment.

CIP Violations: The Cross-Currency Basis

While covered interest parity is a no-arbitrage condition that should hold exactly, persistent deviations called the "cross-currency basis" emerged during the 2008 financial crisis and have continued since. These deviations challenge classical financial theory and have practical implications.

The cross-currency basis represents the spread that must be added to (or subtracted from) the theoretical forward to match market prices:

Fmarket=S×1+rd×T1+(rf+basis)×TF_{market} = S \times \frac{1 + r_d \times T}{1 + (r_f + \text{basis}) \times T}

where:

  • FmarketF_{market}: observed market forward rate
  • SS: spot exchange rate
  • rdr_d: domestic interest rate
  • rfr_f: foreign interest rate
  • basis\text{basis}: cross-currency basis spread
  • TT: time to maturity in years

A negative basis in EUR/USD means dollar funding via FX swaps is more expensive than direct dollar borrowing, a reflection of dollar scarcity and bank balance sheet constraints. When global demand for dollars increases, particularly during periods of financial stress, the basis widens as market participants pay a premium to access dollars through the FX swap market.

In[31]:
Code
## Example: Cross-currency basis calculation
spot = 1.0850
r_usd = 0.0525
r_eur = 0.0400
market_forward_1y = 1.1020  # Observed market forward

## Theoretical forward from CIP
theoretical_forward = spot * (1 + r_usd) / (1 + r_eur)

## Implied basis
## market_fwd = spot × (1 + r_usd) / (1 + r_eur + basis)
## Solving: basis = spot × (1 + r_usd) / market_fwd - 1 - r_eur
implied_basis = spot * (1 + r_usd) / market_forward_1y - 1 - r_eur
basis_bps = implied_basis * 10000
Out[32]:
Console
Theoretical 1Y forward (CIP): 1.0980
Market 1Y forward:            1.1020
Implied cross-currency basis: -37.4 basis points

The negative basis calculated here indicates that the market forward rate is higher than the theoretical rate implied by CIP. This suggests that dollar funding via FX swaps is effectively more expensive than direct borrowing. The cross-currency basis is a critical consideration for international investors and is closely watched by central banks as an indicator of dollar funding stress.

Out[33]:
Visualization
Impact of negative cross-currency basis spreads on the forward rate curve. As the basis widens (more negative), the implied forward rate increases, indicating a higher cost for synthetic dollar funding compared to theoretical covered interest parity.
Impact of negative cross-currency basis spreads on the forward rate curve. As the basis widens (more negative), the implied forward rate increases, indicating a higher cost for synthetic dollar funding compared to theoretical covered interest parity.

Key Parameters

The key parameters for currency forward pricing and valuation are:

  • S: Current spot exchange rate (domestic per foreign). The base variable for all currency derivatives.
  • F: Forward exchange rate. Determined by interest rate parity conditions.
  • r_d: Domestic interest rate. Used in the numerator of the IRP formula.
  • r_f: Foreign interest rate. Used in the denominator of the IRP formula.
  • T: Time to settlement in years. Scales the interest rates.
  • K: Contracted forward rate. The rate agreed upon in the forward contract, used for mark-to-market valuation.
  • N: Notional amount of the contract. The principal amount exchanged.

Limitations and Considerations

Currency forward hedging, while powerful, comes with important limitations that practitioners must understand.

Hedging eliminates both downside and upside. A fully hedged position cannot benefit from favorable currency movements. If you believe you have skill in forecasting currencies, or if you simply want exposure to currency as an asset class, full hedging may not be appropriate. The decision to hedge involves balancing risk reduction against the cost of forgone potential gains and the direct costs of implementing the hedge.

Forward hedging addresses transaction risk but not economic risk. If you are a manufacturer with ongoing foreign currency revenues, you face economic exposure that simple forward contracts cannot fully address. If EUR/USD moves permanently lower, the company's competitive position changes in ways that one-year rolling forwards cannot hedge. Managing economic exposure often requires operational changes, such as relocating production, adjusting pricing, or sourcing inputs differently, rather than purely financial hedges.

Counterparty risk exists in OTC markets. Unlike exchange-traded futures, currency forwards are bilateral OTC contracts. If your counterparty defaults, you may be left unhedged at the worst possible time (when markets have moved against your counterparty). Post-2008 reforms requiring central clearing and margin for many derivatives have reduced but not eliminated this risk.

Rolling hedges can be expensive in certain rate environments. When interest rate differentials are large and persistent, the cumulative cost of rolling forward hedges can significantly erode returns. If you hedge exposure to a high-yielding emerging market currency, you might pay 5-10% annually in roll costs, fundamentally changing the risk-return profile of the investment.

Summary

The foreign exchange market is a vast, decentralized network that operates continuously across global time zones, processing over $7.5 trillion in daily transactions. Key concepts from this chapter include:

  • Currency pair conventions: Exchange rates are quoted as BASE/QUOTE, telling you how many quote currency units buy one base currency unit. Understanding bid-ask spreads and pip calculations is essential for FX trading.

  • Cross rates: When trading between two non-USD currencies, cross rates are calculated from each currency's rate against the dollar, ensuring no triangular arbitrage opportunities exist in efficient markets.

  • Covered interest rate parity (CIP): The forward exchange rate is determined by the spot rate and the interest rate differential between two currencies: F=S×(1+rd)/(1+rf)F = S \times (1 + r_d)/(1 + r_f). This no-arbitrage relationship ensures that investing domestically and investing abroad with a forward hedge yield identical returns.

  • Forward premium and discount: Currencies with lower interest rates trade at forward premiums, while currencies with higher interest rates trade at forward discounts, reflecting the interest rate differential.

  • Currency hedging: Forward contracts allow you to lock in exchange rates for future transactions, eliminating currency risk from international exposures. The hedge P&L offsets gains or losses in the underlying position.

  • Practical considerations: Real-world hedging involves transaction costs, hedge accounting requirements, and cross-currency basis deviations from theoretical CIP. The decision to hedge involves balancing risk reduction against costs and forgone potential gains.

Building on the forward pricing frameworks from earlier chapters, currency forwards represent one of the most widely used derivative instruments globally. In upcoming chapters, we'll explore options, which unlike forwards, allow hedgers to eliminate downside risk while retaining upside potential, and interest rate swaps, which extend these hedging concepts to fixed income markets.

Quiz

Ready to test your understanding? Take this quick quiz to reinforce what you've learned about foreign exchange markets and currency forwards.

Loading component...

Reference

BIBTEXAcademic
@misc{currencyforwardsfxmarketsinterestrateparityguide, author = {Michael Brenndoerfer}, title = {Currency Forwards: FX Markets & Interest Rate Parity Guide}, year = {2025}, url = {https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity}, organization = {mbrenndoerfer.com}, note = {Accessed: 2025-01-01} }
APAAcademic
Michael Brenndoerfer (2025). Currency Forwards: FX Markets & Interest Rate Parity Guide. Retrieved from https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity
MLAAcademic
Michael Brenndoerfer. "Currency Forwards: FX Markets & Interest Rate Parity Guide." 2026. Web. today. <https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity>.
CHICAGOAcademic
Michael Brenndoerfer. "Currency Forwards: FX Markets & Interest Rate Parity Guide." Accessed today. https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity.
HARVARDAcademic
Michael Brenndoerfer (2025) 'Currency Forwards: FX Markets & Interest Rate Parity Guide'. Available at: https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity (Accessed: today).
SimpleBasic
Michael Brenndoerfer (2025). Currency Forwards: FX Markets & Interest Rate Parity Guide. https://mbrenndoerfer.com/writing/forex-currency-forwards-interest-rate-parity