TQBTHEQUANTBATEMAN
TQB/ learn/ rates/ caps floors swaptionsEN · DARK
Rates & curves · front-office

Caps, floors and swaptions

Pricing rate optionality from forwards, annuities and explicit volatility conventions

BY THE END, YOU CAN

01Decompose caps and floors into discounted caplets and floorlets on exact accrual periods.

02Price European swaptions from the forward swap rate and fixed-leg annuity.

03Distinguish normal, lognormal and shifted-lognormal volatility conventions.

04Connect quote calibration, smile risk, negative rates and settlement conventions to desk P&L.

01
INTUITION

Read the cash-flow timeline first.

A rate option is an option on a future fixing or forward swap rate, but its cash value is carried by a discount factor or swap annuity. The quote is incomplete until the volatility coordinate and settlement convention are named.

01

A cap is a strip: every caplet has its own fixing date, accrual, forward and discount weight.

02

A European swaption is economically an option on a par swap rate multiplied by the underlying fixed-leg annuity.

03

Normal and lognormal volatilities are different coordinates; converting by reusing the same number is not valid.

02
WHY MARKETS CARE

Start from cash flows and quotation.

Caps and swaptions supply liquid volatility coordinates for hedging, callable products and calibration of short-rate or market models.

INSTRUMENTS

caplets and floorlets

caps and floors

payer and receiver swaptions

collars and callable structures

QUOTE CONVENTION

State currency, index, expiry, tenor, strike, forward, annuity or discount weight, premium/vol quote, normal/lognormal/shifted convention, shift, settlement and collateral curves.

03
MATHEMATICS

Value each dated cash flow under explicit conventions.

Formula · Short derivation

Caplet under Black–76

Vcaplet=NαiP(0,Ti+1)[FiΦ(d1)−KΦ(d2)]V_{caplet}=N\alpha_iP(0,T_{i+1})[F_i\Phi(d_1)-K\Phi(d_2)]

The option value is a forward-option payoff weighted by the payment-date discount factor and accrual.

Open in Analytics
Formula · Full derivation

European payer swaption

Vpay=NA(0)[S0Φ(d1)−KΦ(d2)]V_{pay}=NA(0)[S_0\Phi(d_1)-K\Phi(d_2)]

The fixed-leg annuity converts the option on the forward swap rate into currency PV.

Open in Analytics
Full derivation
Full derivation

From swap exercise value to the annuity measure

Write the exercise-date swap value, factor out its fixed-leg annuity and take the expectation under the annuity numeraire.

  1. 01

    Value the underlying swap

    At expiry, a payer swap has value equal to the fixed-leg annuity times the excess of the par swap rate over strike.

    Vswap(T)=NA(T)[ST−K]V_{swap}(T)=NA(T)[S_T-K]
  2. 02

    Apply the option payoff

    The payer swaption retains only positive exercise value.

    Vpay(T)=NA(T)(ST−K)+V_{pay}(T)=NA(T)(S_T-K)^+
  3. 03

    Choose the annuity numeraire

    Under the annuity measure, the forward swap rate is a martingale within the model assumptions.

    Vpay(0)=NA(0)EQA[(ST−K)+]V_{pay}(0)=NA(0)\mathbb E^{Q^A}[(S_T-K)^+]
  4. 04

    Select the quote distribution

    Lognormal Black–76, shifted lognormal or normal Bachelier determines the option expectation and admissible rate domain.

  5. 05

    Reprice the quoted premium

    Use the exact forward, annuity, settlement and strike associated with the market quote.

Rate-option pricing is a numeraire-weighted forward option; the convention and cash-flow geometry are as important as the closed-form formula.

Inputs
  • F_i: forward fixing
  • K: strike
  • A(0): swap annuity
  • N: notional
  • \alpha_i: accrual fraction
  • \sigma_N,\sigma_{LN}: normal/lognormal volatility
Assumptions and limits
  • Black and Bachelier prescribe different dynamics and tail shapes.
  • A single volatility does not represent strike smile or term structure.
  • Cash and physical settlement can use different annuity definitions and exercise mechanics.
Formula · Short derivation

Normal-model payer value

VpayN=NA(0)[(S0−K)Φ(z)+σNT ϕ(z)]V_{pay}^{N}=NA(0)[(S_0-K)\Phi(z)+\sigma_N\sqrt{T}\,\phi(z)]

Bachelier remains defined through zero and negative forwards; its volatility is quoted in absolute rate units.

Open in Analytics
05
MODEL / PRICING

Build, calibrate, and reprice the contract.

METHOD

Build discount and projection curves, calculate forwards/annuities on exact schedules, apply the declared normal or (shifted) lognormal formula, and return premium plus point vega and parity diagnostics.

CALIBRATION

Calibrate a surface by expiry, tenor and strike/delta with bid/ask-aware weights. Preserve quote convention, shift and interpolation policy; test residuals in both premium and quoted-volatility space.

Implementation with current QuantLib

Use Cap/Floor and Swaption instruments with explicit indexes, schedules, settlement and engines. Volatility structures must carry Normal, ShiftedLognormal or Lognormal type and displacement; calibration helpers must reproduce their own premiums.

API authority: upstream QuantLib reference pinned in the source registry.
06PYTHON IMPLEMENTATIONOpen the implementation and checks.
ARCHITECTURE
  • Build schedules and curve weights before invoking the option kernel.
  • Keep volatility convention and shift in typed inputs.
  • Return parity, intrinsic/time value and point-vega diagnostics.
  • Test zero-volatility, ATM, negative-rate and settlement boundaries.
PYTHON 3 · NUMPY / SCIPY

Black and normal payer swaption comparison

Price one annuity-weighted payoff in two declared volatility coordinates and verify payer/receiver parity.

REUSABLE EXAMPLE
01from __future__ import annotations
02
03import math
04from statistics import NormalDist
05
06N = NormalDist()
07
08def black_option(f: float, k: float, t: float, vol: float, annuity: float, call: bool) -> float:
09 if min(f, k, t, vol, annuity) <= 0:
10 raise ValueError("positive Black inputs required")
11 sign = 1.0 if call else -1.0
12 root_t = math.sqrt(t)
13 d1 = (math.log(f/k) + 0.5*vol*vol*t)/(vol*root_t)
14 d2 = d1 - vol*root_t
15 return annuity*sign*(f*N.cdf(sign*d1)-k*N.cdf(sign*d2))
16
17f, k, t, vol, annuity = 0.032, 0.035, 2.0, 0.24, 4.35
18payer = black_option(f, k, t, vol, annuity, True)
19receiver = black_option(f, k, t, vol, annuity, False)
20assert abs((payer-receiver)-annuity*(f-k)) < 1e-12
21print(f"payer={payer:.8f} receiver={receiver:.8f}")
EXPECTED OUTPUTPositive payer/receiver values satisfying annuity-weighted option parity.
SANITY CHECKS

✓ Black-domain inputs are positive.

✓ Annuity is expressed in PV units per unit coupon.

✓ Payer-receiver parity holds to numerical tolerance.

07
INTERACTIVE LAB

Move the state. Challenge the equation.

ONE PAYOFF · EXPLICIT VOLATILITY COORDINATE

Rate-option convention laboratory

Move expiry, strike, volatility regime and quote convention; compare premium, intrinsic value, annuity weight and point vega.

SYNTHETIC · CONTROLLED SCENARIOS
Forward swap rate3.20%
ATM premium0.01723
Quote volatility20.76%
Premium per unit notional by Strike (annual rate)

Lognormal Black: Positive forward and strike.

  • payer premium
  • intrinsic value
Strike (annual rate): -1.50%. payer premium: 0.20445. intrinsic value: 0.20445.

Use Left/Right or Up/Down arrows to inspect values; Home and End jump to the bounds.

ACTIVE STATE

Lognormal Black — Positive forward and strike. Move the control and inspect every series with pointer or touch.

08
FRONT OFFICE

Follow the trade through risk and lifecycle events.

ON THE DESK
“A swaption vol without expiry, tenor, strike, convention, shift and settlement is not a price coordinate.”
VISIBLE INPUTS

discount/projection curves

expiry and underlying schedule

strike and forward

annuity and settlement

volatility convention/surface

CALIBRATION

Reprice each caplet or swaption helper in its native convention and premium; inspect residuals, parameter stability and excluded quotes.

RISK

expiry/tenor vega

smile and skew

annuity/curve delta

volga and model basis

DAILY WORKFLOW
  1. freeze curves and vol snapshot
  2. normalize quote conventions
  3. price and verify parity
  4. calibrate with diagnostics
  5. bucket risk and stress settlement
Production failure modes
  • normal/lognormal mix
  • missing displacement
  • cash-annuity mismatch
  • stale forward or schedule
09MACRO CONNECTIONOpen the transmission channel.
MACRO CONNECTION

Policy uncertainty into rate optionality

Uncertainty about the policy path and terminal rate redistributes volatility across option expiries and underlying swap tenors.

01Policy uncertaintytransmits

moves expected fixing distribution

02Cap/swaption surfacetransmits

reprices expiry, tenor and strike

03Model calibrationtransmits

maps liquid quotes to dynamics

04Callable bookoutput

changes exercise and convexity

10COMMON PITFALLSOpen the failure checklist.
01

Feeding a normal volatility into Black–76.

02

Ignoring the annuity or payment-date discount weight.

03

Calibrating to vols without repricing premiums.

04

Treating cash and physical settlement as interchangeable.

11SOURCES / FURTHER READINGOpen sources and continue the track.
research

Caps, swaptions and interest-rate modelling lectures

Research map for rate-option numeraires and calibration; platform text and code are original.

Source
Financial Engineering: Interest Rates & xVA
Author
L. A. Grzelak
Ref
main
OPEN ORIGINAL SOURCE ↗
implementation reference

Current cap/floor, swaption and volatility-structure tests

Implementation authority for instrument, settlement and quote-convention boundaries.

Source
QuantLib upstream
Author
QuantLib contributors
Ref
v1.42.1
OPEN ORIGINAL SOURCE ↗