CQF Comprehensive Cheatsheet - Fixed Income

Interest Rates: Bonds, Yield Curves, Swaps, Options & Term Structure Models

BOND FUNDAMENTALS

Basic Bond Terminology

Face Value/Par (\(F\)): Principal amount (typically $100 or $1000)

Coupon Rate (\(c\)): Annual interest rate on face value

Coupon Payment: \(C = c \times F\) (often paid semi-annually)

Maturity (\(T\)): Time until principal repayment

Yield to Maturity (YTM) (\(y\)): IRR of bond cash flows

Bond Pricing

Discrete compounding (annual):

$$P = \sum_{i=1}^n \frac{C}{(1+y)^{t_i}} + \frac{F}{(1+y)^T}$$

Semi-annual compounding (US convention):

$$P = \sum_{i=1}^{2n} \frac{C/2}{(1+y/2)^i} + \frac{F}{(1+y/2)^{2n}}$$

Continuous compounding:

$$P = \sum_{i=1}^n C e^{-y t_i} + F e^{-yT}$$
Example: 5-year bond, 6% coupon (annual), face $100, YTM = 5%
\(P = \frac{6}{1.05} + \frac{6}{1.05^2} + \frac{6}{1.05^3} + \frac{6}{1.05^4} + \frac{106}{1.05^5}\)
\(= 5.71 + 5.44 + 5.18 + 4.94 + 83.06 = \boxed{\$104.33}\)
Bond trades at premium (coupon > YTM)

Bond Price-Yield Relationship

  • \(y < c\): Bond at premium (\(P > F\))
  • \(y = c\): Bond at par (\(P = F\))
  • \(y > c\): Bond at discount (\(P < F\))

Convexity: Price-yield relationship is convex (good for bondholders)

Zero-Coupon Bonds

Price:

$$P(t,T) = e^{-r(t,T)(T-t)}$$

or discrete:

$$P(t,T) = \frac{F}{(1+y)^{T-t}}$$

Spot rate \(r(t,T)\): Zero-coupon yield for maturity \(T\)

Example: 10-year zero, face $100, \(y = 4\%\)
\(P = \frac{100}{1.04^{10}} = \boxed{\$67.56}\)

Accrued Interest

Clean Price: Quoted price (without accrued)

Dirty Price (Full Price):

$$\text{Dirty Price} = \text{Clean Price} + \text{Accrued Interest}$$

Accrued Interest:

$$AI = C \times \frac{\text{Days since last coupon}}{\text{Days in coupon period}}$$
Day Count Conventions:
  • Actual/Actual: US Treasuries
  • 30/360: US Corporate bonds
  • Actual/360: Money markets
  • Actual/365: UK Gilts

YIELD CURVE CONSTRUCTION

Spot Rates and Forward Rates

Spot Rate \(r(0,T)\): Zero-coupon rate from now (0) to time \(T\)

Forward Rate \(f(t,T_1,T_2)\): Rate for period \([T_1, T_2]\) locked in at \(t\)

Relationship (discrete):

$$(1+r_2)^{T_2} = (1+r_1)^{T_1}(1+f)^{T_2-T_1}$$

Solving for forward:

$$f(0,T_1,T_2) = \frac{(1+r_2)^{T_2}}{(1+r_1)^{T_1}}^{\frac{1}{T_2-T_1}} - 1$$

Continuous compounding:

$$f(0,T_1,T_2) = \frac{r_2 T_2 - r_1 T_1}{T_2 - T_1}$$

Instantaneous forward rate:

$$f(t,T) = -\frac{\partial \ln P(t,T)}{\partial T} = r(t,T) + (T-t)\frac{\partial r(t,T)}{\partial T}$$
Example: 1Y spot = 3%, 2Y spot = 4%
1Y forward 1Y ahead:
\(f = \frac{1.04^2}{1.03^1} - 1 = \frac{1.0816}{1.03} - 1 = 0.0501\) or 5.01%

Bootstrapping the Curve

Method: Extract zero rates from coupon bond prices

Steps:

  1. Start with shortest maturity (use directly if zero)
  2. For coupon bond, use previously solved zeros for earlier cash flows
  3. Solve for the new zero rate
  4. Move to next maturity
Example:
Given:
  • 6M T-bill: Price = $97.50, Face = $100 → \(r_{0.5} = 5.13\%\)
  • 1Y bond: Coupon = 5%, Price = $98.50
Solve for \(r_1\):
\(98.50 = \frac{2.5}{e^{0.0513 \times 0.5}} + \frac{102.5}{e^{r_1 \times 1}}\)
\(98.50 = 2.44 + 102.5e^{-r_1}\)
\(96.06 = 102.5e^{-r_1}\)
\(e^{-r_1} = 0.9372\)
\(r_1 = 0.0648\) or 6.48%

Interpolation Methods

Linear (on zero rates):

$$r(T) = r_1 + \frac{T - T_1}{T_2 - T_1}(r_2 - r_1)$$

Linear (on log discount factors):

$$\ln P(0,T) = \ln P(0,T_1) + \frac{T - T_1}{T_2 - T_1}[\ln P(0,T_2) - \ln P(0,T_1)]$$

Cubic Spline: Smooth curve through points

Nelson-Siegel:

$$r(T) = \beta_0 + \beta_1\frac{1-e^{-T/\tau}}{T/\tau} + \beta_2\left(\frac{1-e^{-T/\tau}}{T/\tau} - e^{-T/\tau}\right)$$
  • \(\beta_0\): Long-term level
  • \(\beta_1\): Short-term component
  • \(\beta_2\): Medium-term component (hump)
  • \(\tau\): Decay parameter

Svensson Extension: Adds second hump term


DURATION AND CONVEXITY

Macaulay Duration

Definition: Weighted average time to receive cash flows

$$D_{Mac} = \frac{1}{P}\sum_{i=1}^n t_i \frac{CF_i}{(1+y)^{t_i}}$$

where \(CF_i\) includes both coupons and principal

Properties:

  • Measured in years
  • Zero-coupon bond: \(D = T\)
  • Lower coupon → higher duration
  • Higher yield → lower duration

Modified Duration

Definition: Price sensitivity to yield changes

$$D_{Mod} = \frac{D_{Mac}}{1+y}$$

Price approximation:

$$\frac{dP}{P} \approx -D_{Mod} \cdot dy$$

or:

$$\Delta P \approx -D_{Mod} \times P \times \Delta y$$
Example: Bond price = $105, \(D_{Mac} = 7.5\) years, \(y = 5\%\)
\(D_{Mod} = \frac{7.5}{1.05} = 7.14\)

If \(y\) increases from 5% to 5.5% (\(\Delta y = 0.005\)):
\(\Delta P \approx -7.14 \times 105 \times 0.005 = -\$3.75\)
New price ≈ $105 - $3.75 = $101.25

Dollar Duration (DV01)

Definition: Dollar change for 1 bp (0.01%) yield change

$$\text{DV01} = -\frac{\partial P}{\partial y} \times 0.0001 = D_{Mod} \times P \times 0.0001$$
Example: \(P = \$10M\), \(D_{Mod} = 7.14\)
\(\text{DV01} = 7.14 \times 10,000,000 \times 0.0001 = \boxed{\$7,140}\)
1 bp increase → lose $7,140

Convexity

Definition: Second-order price sensitivity

$$C = \frac{1}{P}\sum_{i=1}^n t_i(t_i+1)\frac{CF_i}{(1+y)^{t_i+2}}$$

Better price approximation:

$$\frac{\Delta P}{P} \approx -D_{Mod} \cdot \Delta y + \frac{1}{2}C \cdot (\Delta y)^2$$

Why convexity matters:

  • Duration alone underestimates price gain when yields fall
  • Duration alone overestimates price loss when yields rise
  • Convexity is always positive for option-free bonds
  • Higher convexity = better (more upside, less downside)
Example: \(P = \$100\), \(D_{Mod} = 7\), \(C = 60\), \(\Delta y = -1\%\)

Duration only:
\(\Delta P = -7 \times 100 \times (-0.01) = \$7.00\)

With convexity:
\(\Delta P = -7 \times 100 \times (-0.01) + 0.5 \times 60 \times 100 \times 0.01^2\)
\(= 7.00 + 0.30 = \boxed{\$7.30}\)

Convexity adds $0.30 (more gain than duration predicts)

Effective Duration

For bonds with embedded options:

$$D_{Eff} = \frac{P_{-\Delta y} - P_{+\Delta y}}{2 \times P_0 \times \Delta y}$$

where \(P_{-\Delta y}\) and \(P_{+\Delta y}\) are prices when yield shifts by \(\pm \Delta y\)


INTEREST RATE SWAPS

Plain Vanilla IRS

Definition: Exchange fixed rate for floating rate

  • Fixed leg: Pay/receive fixed rate \(R\)
  • Floating leg: Receive/pay LIBOR (or SOFR)
  • Notional: \(N\) (not exchanged)
  • Tenor: Swap maturity (e.g., 5Y, 10Y)

Fixed payer = Short bond + Long FRN

Fixed receiver = Long bond + Short FRN

Swap Rate Derivation

Fair swap rate \(R\): Rate that makes initial swap value = 0

Fixed leg PV:

$$PV_{fixed} = R \times N \times \sum_{i=1}^n \delta_i P(0,T_i)$$

where \(\delta_i\) = accrual period (e.g., 0.5 for semi-annual)

Floating leg PV:

$$PV_{float} = N \times [1 - P(0,T_n)]$$

Key insight: Floating leg worth par at reset dates

Swap rate (sets \(PV_{fixed} = PV_{float}\)):

$$R = \frac{1 - P(0,T_n)}{\sum_{i=1}^n \delta_i P(0,T_i)}$$

The denominator is the annuity factor or PV01

Example: 2-year swap, semi-annual payments
Discount factors: \(P(0,0.5)=0.975, P(0,1)=0.950, P(0,1.5)=0.925, P(0,2)=0.900\)

Annuity = \(0.5(0.975 + 0.950 + 0.925 + 0.900) = 1.875\)
\(R = \frac{1 - 0.900}{1.875} = \frac{0.100}{1.875} = 0.0533\) or 5.33%

Swap Valuation (After Inception)

Value to fixed payer:

$$V_{swap} = N \times \sum_{i=1}^n \delta_i P(0,T_i)[F(0,T_{i-1},T_i) - R]$$

where \(F(0,T_{i-1},T_i)\) = forward rate for period \([T_{i-1}, T_i]\)

Alternatively:

$$V_{swap} = PV_{float} - PV_{fixed}$$

If rates rise → fixed payer gains (paying below market)

If rates fall → fixed receiver gains

Swap DV01

Definition: Change in swap value per 1 bp parallel shift

$$\text{DV01} = N \times 0.0001 \times \sum_{i=1}^n \delta_i P(0,T_i)$$

Approximately: \(\text{DV01} \approx N \times D_{Mod} \times 0.0001\)

Basis Swaps

Definition: Exchange one floating rate for another

Examples:

  • 3M LIBOR vs 6M LIBOR
  • LIBOR vs SOFR (post-2021)
  • EURIBOR vs EONIA

Basis spread: Adjustment to make swap fair


CAPS, FLOORS, AND SWAPTIONS

Interest Rate Caps

Cap: Portfolio of caplets (call options on interest rate)

Caplet Payoff (at \(T_i\)):

$$\text{Payoff} = N \times \delta \times \max(L(T_{i-1}) - K, 0)$$

where \(L(T_{i-1})\) = LIBOR set at \(T_{i-1}\), \(K\) = strike rate

Caplet Pricing (Black's formula):

$$\text{Caplet} = N \times \delta \times P(0,T_i) \times [F \cdot N(d_1) - K \cdot N(d_2)]$$ $$d_1 = \frac{\ln(F/K) + \sigma^2 T_{i-1}/2}{\sigma\sqrt{T_{i-1}}}, \quad d_2 = d_1 - \sigma\sqrt{T_{i-1}}$$

where \(F = F(0,T_{i-1},T_i)\) = forward LIBOR, \(\sigma\) = volatility

Cap value:

$$\text{Cap} = \sum_{i=1}^n \text{Caplet}_i$$
Example: Single caplet, \(N = \$1M\), \(\delta = 0.5\), \(K = 5\%\)
\(F = 5.5\%\), \(\sigma = 20\%\), \(T = 1\), \(P(0,1.5) = 0.93\)

\(d_1 = \frac{\ln(0.055/0.05) + 0.02 \times 1}{0.20} = 0.5866\)
\(d_2 = 0.5866 - 0.20 = 0.3866\)
\(N(d_1) = 0.7213, N(d_2) = 0.6505\)

Value = \(1M \times 0.5 \times 0.93 \times [0.055 \times 0.7213 - 0.05 \times 0.6505]\)
= \(465,000 \times [0.0397 - 0.0325] = \boxed{\$3,348}\)

Interest Rate Floors

Floor: Portfolio of floorlets (put options on interest rate)

Floorlet Payoff:

$$\text{Payoff} = N \times \delta \times \max(K - L(T_{i-1}), 0)$$

Pricing: Similar to caplet, using Black's formula for puts

Put-Call Parity for Caps/Floors

$$\text{Cap} - \text{Floor} = \text{Swap}$$

More precisely:

$$\text{Cap}(K) - \text{Floor}(K) = \text{Swap}_{\text{floating}} - \text{Swap}_{\text{fixed at K}}$$

Swaptions

Definition: Option to enter into swap

  • Payer swaption: Right to pay fixed in swap
  • Receiver swaption: Right to receive fixed in swap

Notation: \(m \times n\) swaption = option expires in \(m\) years, swap lasts \(n\) years

Example: 2×5 payer swaption = right in 2Y to enter 5Y swap paying fixed

Swaption Payoff (payer, at expiry \(T_0\)):

$$\text{Payoff} = \max\left(0, N \times \sum_{i=1}^n \delta_i P(T_0, T_i)[R_{swap}(T_0) - K]\right)$$

where \(R_{swap}(T_0)\) = swap rate at option expiry, \(K\) = strike

Black's Formula for Swaptions:

$$V = N \times A(0,T_0,T_n) \times [R_0 N(d_1) - K N(d_2)]$$ $$d_1 = \frac{\ln(R_0/K) + \sigma^2 T_0/2}{\sigma\sqrt{T_0}}, \quad d_2 = d_1 - \sigma\sqrt{T_0}$$

where:

  • \(A(0,T_0,T_n) = \sum_{i=1}^n \delta_i P(0,T_i)\) = annuity factor
  • \(R_0\) = forward swap rate
  • \(\sigma\) = swaption volatility

Payer swaption = Call on swap rate

Receiver swaption = Put on swap rate

Example: 1×2 payer swaption, strike = 5%, forward swap rate = 5.5%
\(\sigma = 25\%\), \(T_0 = 1\), annuity = 1.85, notional = $10M

\(d_1 = \frac{\ln(0.055/0.05) + 0.03125}{0.25} = 0.5116\)
\(d_2 = 0.2616\)

\(V = 10M \times 1.85 \times [0.055 \times 0.6953 - 0.05 \times 0.6032]\)
= $18.5M × 0.0082 = $151,700

SHORT RATE MODELS

Vasicek Model

Short rate dynamics:

$$dr_t = \kappa(\theta - r_t)dt + \sigma dW_t$$
  • \(\kappa\): Mean reversion speed
  • \(\theta\): Long-term mean
  • \(\sigma\): Volatility

Properties:

  • Gaussian (can go negative)
  • Mean-reverting
  • Affine term structure

Bond pricing formula:

$$P(t,T) = A(t,T) e^{-B(t,T)r_t}$$

where:

$$B(t,T) = \frac{1-e^{-\kappa(T-t)}}{\kappa}$$ $$\ln A(t,T) = \left(\theta - \frac{\sigma^2}{2\kappa^2}\right)[B(t,T) - (T-t)] - \frac{\sigma^2 B(t,T)^2}{4\kappa}$$
Example: \(r_0 = 3\%\), \(\kappa = 0.5\), \(\theta = 5\%\), \(\sigma = 1\%\), \(T = 2\)
\(B(0,2) = \frac{1-e^{-1}}{0.5} = 1.2642\)
\(\ln A(0,2) = ...\) (calculation omitted)
\(P(0,2) = A \times e^{-1.2642 \times 0.03} = \boxed{0.9235}\)

Cox-Ingersoll-Ross (CIR) Model

Dynamics:

$$dr_t = \kappa(\theta - r_t)dt + \sigma\sqrt{r_t} dW_t$$

Key difference: Square-root diffusion ensures positive rates

Feller Condition (no boundary at zero):

$$2\kappa\theta \geq \sigma^2$$

Distribution: Non-central chi-squared

Bond pricing: Also affine, but more complex formulas

$$P(t,T) = A(t,T) e^{-B(t,T)r_t}$$

where \(A(t,T)\) and \(B(t,T)\) are known but lengthy expressions

Hull-White Model (Extended Vasicek)

Dynamics:

$$dr_t = [\theta(t) - \kappa r_t]dt + \sigma dW_t$$

Key feature: Time-dependent \(\theta(t)\) allows calibration to initial yield curve

Calibration:

$$\theta(t) = \frac{\partial f(0,t)}{\partial t} + \kappa f(0,t) + \frac{\sigma^2}{2\kappa}(1-e^{-2\kappa t})$$

where \(f(0,t)\) = market instantaneous forward rate

Advantages:

  • Fits any initial term structure
  • Tractable (affine structure)
  • Widely used in practice

Black-Derman-Toy (BDT) Model

Dynamics (lognormal):

$$d\ln r_t = [\theta(t) - \frac{\sigma'(t)}{2}]dt + \sigma(t) dW_t$$

Or equivalently:

$$\frac{dr_t}{r_t} = \theta(t)dt + \sigma(t)dW_t$$

Properties:

  • Lognormal rates (always positive)
  • Time-dependent volatility \(\sigma(t)\)
  • Calibrated to term structure and volatility structure
  • Implemented on binomial/trinomial tree

Calibration: Fit \(\theta(t)\) to yield curve, \(\sigma(t)\) to cap/swaption vols

Model Comparison

Model Rates Distribution Calibration Use Case
Vasicek Can be negative Gaussian Simple Theory, ALM
CIR Positive (Feller) Chi-squared Simple Credit, rates
Hull-White Can be negative Gaussian Yield curve Derivatives pricing
BDT Positive Lognormal Yield + vol Exotic options
HJM Flexible Any Full curve Complex derivatives
LMM Positive Lognormal Caps/swaptions Market standard

HEATH-JARROW-MORTON (HJM) FRAMEWORK

HJM Setup

Key Idea: Model entire forward rate curve, not just short rate

Forward rate dynamics (under \(\mathbb{P}\)):

$$df(t,T) = \alpha(t,T)dt + \sigma(t,T)dW_t$$

where \(f(t,T)\) = instantaneous forward rate for maturity \(T\)

No-Arbitrage Condition (HJM Drift Condition)

Under risk-neutral measure \(\mathbb{Q}\):

$$\alpha(t,T) = \sigma(t,T) \int_t^T \sigma(t,u)du$$

Interpretation: Drift completely determined by volatility structure

Only need to specify \(\sigma(t,T)\); drift is then given by no-arbitrage

Short Rate from Forward Rates

$$r_t = f(t,t)$$

Bond price:

$$P(t,T) = \exp\left(-\int_t^T f(t,u)du\right)$$

Special Cases

Constant volatility \(\sigma(t,T) = \sigma\):

  • Leads to Ho-Lee model

Exponential volatility \(\sigma(t,T) = \sigma e^{-\kappa(T-t)}\):

  • Leads to Hull-White model

Multi-factor HJM:

$$df(t,T) = \alpha(t,T)dt + \sum_{i=1}^n \sigma_i(t,T)dW_t^i$$
HJM Challenges:
  • High-dimensional (infinite-dimensional in theory)
  • Requires numerical methods (Monte Carlo, PDE)
  • Volatility structure must be specified carefully
  • Computationally intensive

LIBOR MARKET MODEL (LMM/BGM)

LMM Framework

Idea: Model observable forward LIBORs directly

Forward LIBOR \(L_k(t)\) for period \([T_k, T_{k+1}]\):

$$L_k(t) = \frac{1}{\delta_k}\left[\frac{P(t,T_k)}{P(t,T_{k+1})} - 1\right]$$

where \(\delta_k = T_{k+1} - T_k\) (typically 3M or 6M)

LMM Dynamics

Under \(T_{k+1}\)-forward measure \(\mathbb{Q}^{k+1}\):

$$\frac{dL_k(t)}{L_k(t)} = \sigma_k(t) dW_t^{k+1}$$

\(L_k(t)\) is a martingale under its "natural" measure \(\mathbb{Q}^{k+1}\)

Under terminal measure \(\mathbb{Q}^N\):

$$\frac{dL_k(t)}{L_k(t)} = -\sum_{j=k+1}^{N-1} \frac{\delta_j \rho_{kj} \sigma_j(t) L_j(t)}{1 + \delta_j L_j(t)} dt + \sigma_k(t) dW_t^N$$

where \(\rho_{kj}\) = correlation between \(L_k\) and \(L_j\)

Caplet Pricing in LMM

Black's formula (exact in LMM):

$$\text{Caplet}_k = N \delta_k P(0,T_{k+1})[L_k(0)N(d_1) - K N(d_2)]$$ $$d_1 = \frac{\ln(L_k(0)/K) + \frac{1}{2}\bar{\sigma}_k^2 T_k}{\bar{\sigma}_k\sqrt{T_k}}$$

where \(\bar{\sigma}_k^2 = \frac{1}{T_k}\int_0^{T_k} \sigma_k^2(t)dt\)

Calibration: Choose \(\sigma_k(t)\) to match market cap volatilities

Swaption Approximations

Problem: Swap rate is not lognormal in LMM

Solutions:

  1. Monte Carlo: Simulate LIBOR paths, calculate payoff
  2. Approximations: "Frozen drift" or other moment-matching

Volatility Structure

Separable form:

$$\sigma_k(t) = \phi_k g(t), \quad t \leq T_k$$
  • \(\phi_k\): Terminal volatility (calibrated to caps)
  • \(g(t)\): Time function (calibrated to swaptions)

Common choices for \(g(t)\):

  • Constant: \(g(t) = 1\)
  • Exponential: \(g(t) = e^{-\kappa(T_k - t)}\)
  • Piecewise constant

Correlation Structure

Common specifications:

Exponential:

$$\rho_{ij} = e^{-\beta|T_i - T_j|}$$

Parametric:

$$\rho_{ij} = \rho_{\infty} + (1-\rho_{\infty})e^{-\beta|i-j|}$$

INTEREST RATE DERIVATIVES STRATEGIES

Curve Steepeners/Flatteners

Steepener: Profit if curve steepens (long end - short end increases)

Strategy: Receive fixed 10Y, pay fixed 2Y

Flattener: Profit if curve flattens

Strategy: Pay fixed 10Y, receive fixed 2Y

Example: 2Y rate = 2%, 10Y rate = 3%, spread = 100 bps
Enter 2Y-10Y steepener (notional adjusted for DV01 neutrality)

If spread → 120 bps, profit
If spread → 80 bps, loss

Butterfly Trades

Setup: Combine three maturities (short, medium, long)

Long butterfly: Profit if middle matures outperforms

Example: Long 5Y, short 2Y and 10Y (DV01-weighted)

Convexity Trade

Long convexity: Buy bonds, profit from large yield moves

Short convexity: Sell options, collect premium, lose if large moves

Basis Trading

LIBOR-OIS spread: Reflects bank credit risk

Trade: If spread widens, banks perceived as riskier

Swap spread: Swap rate - Treasury yield

Trade: Relative value between swaps and government bonds


LIBOR TRANSITION TO SOFR

Background

LIBOR scandal (2012): Banks manipulating submissions

LIBOR cessation: Discontinued after 2021 (USD LIBOR by June 2023)

Replacement rates:

  • SOFR (USD): Secured Overnight Financing Rate
  • SONIA (GBP): Sterling Overnight Index Average
  • €STR (EUR): Euro Short-Term Rate
  • TONAR (JPY): Tokyo Overnight Average Rate

SOFR vs LIBOR

Feature LIBOR SOFR
Type Unsecured Secured (repo)
Tenor Multiple (1M, 3M, 6M, 12M) Overnight only
Credit risk Includes bank credit Risk-free (repo collateral)
Transaction-based No (panel submissions) Yes (~$1T daily volume)
Volatility Lower Higher (overnight rate)

Conversion Issues

Spread Adjustment: SOFR ≈ LIBOR - credit spread

ARRC recommendation: Add credit spread adjustment when converting

Example: 3M LIBOR + spread → SOFR + spread + adjustment

Term SOFR: Constructed from SOFR derivatives (forward-looking)


KEY FORMULAS SUMMARY

Concept Formula
Bond Price \(\sum C e^{-yt_i} + F e^{-yT}\)
Forward Rate (cont.) \(f = \frac{r_2T_2 - r_1T_1}{T_2-T_1}\)
Instantaneous Forward \(f(t,T) = -\frac{\partial \ln P(t,T)}{\partial T}\)
Modified Duration \(D_{Mod} = \frac{D_{Mac}}{1+y}\)
Price Change \(\frac{\Delta P}{P} \approx -D_{Mod}\Delta y + \frac{1}{2}C(\Delta y)^2\)
DV01 \(D_{Mod} \times P \times 0.0001\)
Swap Rate \(R = \frac{1-P(0,T_n)}{\sum \delta_i P(0,T_i)}\)
Caplet (Black) \(N\delta P(0,T)[FN(d_1) - KN(d_2)]\)
Vasicek \(dr = \kappa(\theta-r)dt + \sigma dW\)
CIR \(dr = \kappa(\theta-r)dt + \sigma\sqrt{r}dW\)
HJM Drift \(\alpha(t,T) = \sigma(t,T)\int_t^T\sigma(t,u)du\)
LMM (forward measure) \(\frac{dL_k}{L_k} = \sigma_k dW^{k+1}\)

COMMON MISTAKES & TIPS

Common Mistakes:
  1. Confusing duration types: Macaulay ≠ Modified ≠ Effective
  2. DV01 sign: Price falls when yield rises (negative relationship)
  3. Swap direction: Fixed payer = short bond (loses when rates fall)
  4. Convexity sign: Always positive for option-free bonds
  5. Forward rates vs spot rates: Forward can exceed spot in upward-sloping curve
  6. Day count conventions: Critical for precise calculations
  7. Clean vs dirty price: Must add accrued interest
  8. Swaption terminology: "Payer" means paying fixed
  9. Cap/floor parity: Must be at same strike
  10. LMM measure: Each LIBOR martingale under different forward measure
Quick Interview Tips:
  • Duration intuition: Higher coupon → lower duration (cash sooner)
  • Convexity benefit: Asymmetric - more gain up than loss down
  • Swap fixed payer: Wants rates to rise (paying below market)
  • Why caps like calls: Benefit when rate (underlying) rises above strike
  • Swaption = option on swap: Not option on bond
  • HJM vs LMM: HJM models all forwards, LMM models discrete LIBORs
  • Vasicek negative rates: Can be feature (Europe) or bug
  • CIR always positive: If Feller condition holds
  • Hull-White advantage: Fits initial curve exactly
  • LIBOR → SOFR: SOFR lower (no credit spread), more volatile (overnight)
  • Curve steepener: Receive long, pay short
  • Basis risk: Different floating indices (3M vs 6M LIBOR)

PRACTICAL EXAMPLE: COMPLETE SWAP PRICING

Real-World Interest Rate Swap Pricing:

Market Data:
  • Pricing date: Today
  • Swap: 3-year, semi-annual, USD
  • Notional: $10M
  • Day count: Actual/360
  • Discount curve (zero rates, continuous):
0.5Y: 2.00%1.0Y: 2.20%1.5Y: 2.40%
2.0Y: 2.55%2.5Y: 2.68%3.0Y: 2.80%
Task 1: Calculate discount factors

\(P(0,0.5) = e^{-0.02 \times 0.5} = 0.9900\)
\(P(0,1.0) = e^{-0.022 \times 1.0} = 0.9782\)
\(P(0,1.5) = e^{-0.024 \times 1.5} = 0.9646\)
\(P(0,2.0) = e^{-0.0255 \times 2.0} = 0.9503\)
\(P(0,2.5) = e^{-0.0268 \times 2.5} = 0.9350\)
\(P(0,3.0) = e^{-0.028 \times 3.0} = 0.9192\)

Task 2: Calculate forward rates

For semi-annual period [0.5, 1.0]:
\(F(0,0.5,1.0) = \frac{P(0,0.5) - P(0,1.0)}{0.5 \times P(0,1.0)} = \frac{0.9900 - 0.9782}{0.5 \times 0.9782} = 0.0241\) or 2.41%

Similarly:
\(F(0,1.0,1.5) = 2.62\%\), \(F(0,1.5,2.0) = 2.79\%\)
\(F(0,2.0,2.5) = 2.94\%\), \(F(0,2.5,3.0) = 3.09\%\)

Task 3: Calculate fair swap rate

Annuity factor:
\(A = 0.5 \times (0.9900 + 0.9782 + 0.9646 + 0.9503 + 0.9350 + 0.9192)\)
\(= 0.5 \times 5.7373 = 2.8687\)

Swap rate:
\(R = \frac{1 - P(0,3.0)}{A} = \frac{1 - 0.9192}{2.8687} = \frac{0.0808}{2.8687} = 0.02817\) or 2.817%

Task 4: Value existing swap (contract rate = 2.5%)

Fixed leg PV (receiving fixed at 2.5%):
\(PV_{fixed} = 0.025 \times 10M \times 2.8687 = \$716,175\)

Floating leg PV:
\(PV_{float} = 10M \times (1 - 0.9192) = \$808,000\)

Value to fixed receiver:
\(V = \$716,175 - \$808,000 = -\$91,825\)

Fixed receiver has loss of $91,825 (receiving 2.5% when market is 2.817%)

Task 5: Calculate swap DV01

\(\text{DV01} = 10M \times 0.0001 \times 2.8687 = \boxed{\$2,869}\)

If rates rise 1 bp across curve, fixed payer gains ~$2,869

Task 6: Hedge with 3Y bond

Need bond position with same DV01:
If 3Y bond has \(D_{Mod} = 2.85\), price = $98:
Bond notional = \(\frac{\$2,869}{2.85 \times 98 \times 0.0001} = \boxed{\$10.26M}\)

To hedge fixed receiver position: short $10.26M of 3Y bonds