Valuation of Interest Rate Derivatives › Swaptions

Michael BrenndoerferDecember 8, 202511 min read
Quantitative FinanceAll chapters
Part 7 of 15Interest Rate Models and Derivatives
Chapter 40Valuation of Interest Rate Derivatives › Swaptions
Reading section 4 of 13 · Swaptions · 11 minSection 4 of 13 · 11 min

Book contents

Section 4 of 13 · 11 min read

Valuation of Interest Rate Derivatives › SwaptionsOne section · Sections in this chapter4 / 13 ↓
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 swaption is an option to enter into an interest rate swap. While caps and floors provide protection against rate movements, swaptions give you a single decision point: at option expiry, you may enter a swap at pre-agreed terms or walk away. This structure is particularly useful when the decision about interest rate exposure needs to be made at a specific future date.

Swaptions come in two varieties:

  • Payer swaption: The right to enter a payer swap (pay fixed, receive floating)
  • Receiver swaption: The right to enter a receiver swap (receive fixed, pay floating)

A payer swaption becomes valuable when rates rise: you can lock in paying a below-market fixed rate while receiving market floating rates. Conversely, a receiver swaption becomes valuable when rates fall: you can lock in receiving an above-market fixed rate.

Swaptions are typically quoted by their option maturity and the tenor of the underlying swap. A "2y5y payer swaption" gives you the right, in 2 years, to enter a 5-year payer swap at a predetermined fixed rate. The first number indicates how long you must wait before making the exercise decision, while the second indicates the duration of the swap that begins upon exercise.

Swaption Payoff Structure

To understand swaption payoffs, consider what happens at the option's expiration date. You must decide whether to exercise, which means entering the underlying swap at the pre-agreed strike rate. This decision depends on comparing the strike rate to the prevailing market swap rate.

At expiration, you will exercise if the prevailing swap rate exceeds the strike rate. The swap you enter will have positive value because you'll pay below-market fixed rates while receiving market floating rates. The payoff equals the present value of the swap you receive. If the market swap rate is below the strike, exercise would mean paying an above-market rate, so you let the option expire worthless.

For a payer swaption with strike KK expiring at time TT, if the swap rate at expiration is STS_T:

Payer Swaption Payoff=AT⋅max⁡(ST−K,0)\text{Payer Swaption Payoff} = A_T \cdot \max(S_T - K, 0)

where:

  • ATA_T: annuity factor at time TT
  • STS_T: swap rate at time TT
  • KK: strike rate

The structure of this payoff resembles a call option on the swap rate, with the annuity factor serving as a conversion mechanism between rates and dollars.

ATA_T is the annuity factor, representing the present value at time TT of receiving a unit rate payment (100%) on each swap payment date (note that PVBP is typically this value scaled by 0.0001):

AT=∑i=1nτi⋅P(T,Ti)A_T = \sum_{i=1}^{n} \tau_i \cdot P(T, T_i)

where:

  • nn: number of payment periods in the swap
  • τi\tau_i: day count fraction for the ii-th period
  • P(T,Ti)P(T, T_i): discount factor from time TT to payment date TiT_i

The annuity factor converts rate differences into dollar values, accounting for the timing and discounting of all swap payments. To understand why this conversion is necessary, recall that a swap rate difference of 1% does not immediately translate to 1% of notional in value. Instead, that 1% rate differential must be applied to each payment period, adjusted by the day count fraction, and then discounted back to the exercise date. The annuity factor captures all of these adjustments in a single number.

Out[10]:
Visualization
Line chart of payer swaption payoff in millions of dollars versus swap rate at expiry, showing zero payoff below the 4.5% strike and linearly increasing payoff above it.
Payer swaption payoff at expiration. The payer swaption pays when the swap rate exceeds the 4.5% strike, which reflects the value of entering a below-market fixed-rate payer swap.
Line chart of receiver swaption payoff in millions of dollars versus swap rate at expiry, showing linearly decreasing payoff below the 4.5% strike and zero payoff above it.
Receiver swaption payoff at expiration. The receiver swaption pays when the swap rate falls below the 4.5% strike, which reflects the value of locking in an above-market fixed rate.

Black's Model for Swaptions

Having established the payoff structure, we now turn to valuation. We price swaptions by treating the forward swap rate as the underlying asset and applying Black's formula.

Under Black's model, the swap rate is assumed to follow a lognormal distribution under the annuity measure. This measure represents market risk-neutral expectations using the annuity stream as the unit of account. Under this measure, the forward swap rate is a martingale, meaning its expected future value equals its current value. This gives pricing formulas analogous to those for caps:

Black's Model for Swaptions

The price of a payer swaption with strike KK, option expiry TT, and notional NN is:

Payer Swaption=N⋅A0⋅[S0⋅N(d1)−K⋅N(d2)]\text{Payer Swaption} = N \cdot A_0 \cdot [S_0 \cdot N(d_1) - K \cdot N(d_2)]

where:

  • NN: notional principal
  • N(⋅)N(\cdot): cumulative standard normal distribution function
  • A0A_0: current annuity factor
  • S0S_0: current forward swap rate
  • KK: strike rate
  • TT: time to option expiration
  • σ\sigma: swaption volatility
  • d1=ln⁡(S0/K)+12σ2TσTd_1 = \frac{\ln(S_0/K) + \frac{1}{2}\sigma^2 T}{\sigma \sqrt{T}}: measures how many standard deviations the forward swap rate is above the strike, adjusted for time and volatility
  • d2=d1−σTd_2 = d_1 - \sigma \sqrt{T}: a risk-adjusted measure accounting for volatility over the option's life
  • S0N(d1)S_0 N(d_1): expected value of the swap rate, conditional on exercise
  • KN(d2)K N(d_2): strike rate weighted by the probability of exercise

For a receiver swaption:

Receiver Swaption=N⋅A0⋅[K⋅N(−d2)−S0⋅N(−d1)]\text{Receiver Swaption} = N \cdot A_0 \cdot [K \cdot N(-d_2) - S_0 \cdot N(-d_1)]

where:

  • NN: notional principal
  • A0A_0: current annuity factor
  • KK: strike rate
  • S0S_0: current forward swap rate
  • σ\sigma: swaption volatility
  • N(−d1),N(−d2)N(-d_1), N(-d_2): cumulative normal distribution values for the receiver swaption payoff

The swaption formula is intentionally similar to the caplet formula. In both cases, we have an option on an interest rate, discounted appropriately and multiplied by a factor that converts rates to dollars. For caplets, that factor combines the notional, day count fraction, and discount factor. For swaptions, it combines the notional and annuity factor. The annuity factor plays the role of discounting because the swaption payoff is effectively denominated in units of the annuity stream.

The volatility parameter σ\sigma in the swaption formula represents the implied volatility of the forward swap rate over the option's life. Unlike caplet volatilities, which vary by fixing date, swaption volatilities vary by both option expiry and underlying swap tenor. A 1-year option into a 5-year swap may have different volatility than a 2-year option into a 10-year swap, which reflects the market's assessment of uncertainty for different rate instruments.

In[11]:
Code
def black_swaption_price(
    forward_swap_rate,
    strike,
    volatility,
    option_expiry,
    annuity_factor,
    notional=1.0,
    is_payer=True,
):
    """
    Price a European swaption using Black's model.

    Parameters:
    - forward_swap_rate: Current forward swap rate
    - strike: Strike rate for the swap
    - volatility: Implied volatility for the swaption
    - option_expiry: Time to option expiration (years)
    - annuity_factor: Present value of 1bp on the underlying swap
    - notional: Notional principal
    - is_payer: True for payer swaption, False for receiver
    """
    d1 = (
        np.log(forward_swap_rate / strike) + 0.5 * volatility**2 * option_expiry
    ) / (volatility * np.sqrt(option_expiry))
    d2 = d1 - volatility * np.sqrt(option_expiry)

    if is_payer:
        price = (
            notional
            * annuity_factor
            * (forward_swap_rate * norm.cdf(d1) - strike * norm.cdf(d2))
        )
    else:
        price = (
            notional
            * annuity_factor
            * (strike * norm.cdf(-d2) - forward_swap_rate * norm.cdf(-d1))
        )
    return price


def calculate_annuity_factor(
    payment_dates, discount_factors, day_count_fractions
):
    """Calculate the annuity factor for a swap."""
    return sum(
        dcf * df for dcf, df in zip(day_count_fractions, discount_factors)
    )

Let's price a 1-year option into a 5-year swap:

In[12]:
Code
# 1y5y swaption parameters
option_expiry = 1.0  # 1 year option
swap_tenor = 5.0  # 5 year underlying swap
notional = 10_000_000  # $10 million
strike = 0.045  # 4.5% strike
swaption_vol = 0.25  # 25% swaption volatility
flat_rate = 0.04  # 4% flat yield curve

# Calculate forward swap rate (equals spot rate in flat curve)
forward_swap_rate = flat_rate

# Calculate annuity factor for the underlying swap
# Swap starts at year 1, payments at years 1.5, 2, 2.5, ..., 6 (semi-annual)
swap_payment_dates = np.arange(1.5, 6.5, 0.5)
swap_discount_factors = np.exp(-flat_rate * swap_payment_dates)
swap_day_count_fractions = np.full(len(swap_payment_dates), 0.5)

annuity_factor = calculate_annuity_factor(
    swap_payment_dates, swap_discount_factors, swap_day_count_fractions
)

# Price the swaptions
payer_swaption_price = black_swaption_price(
    forward_swap_rate=forward_swap_rate,
    strike=strike,
    volatility=swaption_vol,
    option_expiry=option_expiry,
    annuity_factor=annuity_factor,
    notional=notional,
    is_payer=True,
)

receiver_swaption_price = black_swaption_price(
    forward_swap_rate=forward_swap_rate,
    strike=strike,
    volatility=swaption_vol,
    option_expiry=option_expiry,
    annuity_factor=annuity_factor,
    notional=notional,
    is_payer=False,
)
Out[13]:
Console
1y5y Swaption Valuation
==================================================
Option Expiry:       1.0 year
Underlying Swap:     5.0 years
Strike Rate:         4.50%
Forward Swap Rate:   4.00%
Swaption Volatility: 25.00%
Notional:            $10,000,000
Annuity Factor:      4.310644

Payer Swaption Price:    $94,205.32
Receiver Swaption Price: $309,737.53

Parity Check:
Payer - Receiver:        $-215,532.21
Forward Swap Value:      $-215,532.21

Notice that the payer swaption is out of the money (forward rate 4% < strike 4.5%), so it's worth less than the receiver swaption. The difference equals the value of a forward-starting payer swap at the strike rate, verifying put-call parity for swaptions:

Payer Swaption−Receiver Swaption=Forward Payer Swap\text{Payer Swaption} - \text{Receiver Swaption} = \text{Forward Payer Swap}

where:

  • Forward Payer Swap\text{Forward Payer Swap}: present value of the underlying forward swap

This parity relationship mirrors cap-floor parity and serves the same purposes: it provides consistency checks for pricing and creates arbitrage bounds that keep markets aligned.

Settlement Types

Swaptions can settle in two ways:

  • Physical settlement: You enter the actual swap upon exercise
  • Cash settlement: You receive a cash payment equal to the swap's value

Cash-settled swaptions require agreement on how to value the swap at exercise. A common convention uses an ISDA-standard discounting method based on mid-market swap rates. The choice of settlement type can matter during market stress, when differences between cash settlement formulas and actual swap values may emerge.

Bermudan and American Swaptions

While European swaptions (exercisable only at expiry) are most liquid, Bermudan swaptions allow exercise on multiple specified dates, typically coinciding with swap payment dates. A Bermudan swaption exercisable into a 10-year swap might allow exercise at years 1, 2, 3, or 4, with the underlying swap maturing at year 11 regardless of exercise date.

The Bermudan feature adds significant complexity to valuation. At each potential exercise date, you must compare the immediate exercise value to the value of waiting and potentially exercising later. This comparison requires knowing the continuation value, which depends on what might happen in all future scenarios. The problem becomes path-dependent: the optimal exercise decision today depends on the entire history of rate movements that led to the current state.

Bermudan swaptions cannot be priced with Black's model because early exercise introduces path-dependency. They require more sophisticated techniques such as:

  • Lattice methods: Building interest rate trees as discussed in Chapter 14, with backward induction to determine optimal exercise
  • Monte Carlo with regression: Using least-squares Monte Carlo (Longstaff-Schwartz) to approximate the continuation value

We'll see calibration techniques for these models in the upcoming Chapter 21 on calibration and parameter estimation.