The LIBOR Market Model (BGM)
The LIBOR Market Model (LMM), also called the Brace–Gatarek–Musiela model, models tradable forward rates directly so that each rate is lognormal under its own forward measure. Its natural fit to caplet Black quotes is powerful, but multi-rate drift and covariance calibration make production implementation substantially harder than a one-factor short-rate model.
Forward-rate setup
For tenor dates T0 < T1 < ... < TN, define the simply compounded forward rate
L_i(t) = (P(t,T_i) / P(t,T_{i+1}) - 1) / delta_i
Under the T_{i+1}-forward measure, the displaced or undisplaced lognormal LMM is
dL_i(t) = L_i(t) * lambda_i(t) . dW_i^(i+1)(t)
dW_i dW_j = rho_ij dt
The zero drift is not a cosmetic property: the numeraire is the bond maturing at T_{i+1}. Under a common terminal or spot measure, every forward obtains a drift involving later rates. Simulating the “driftless” equation under the wrong measure is an arbitrage error.
| Choice | What it controls | Typical evidence |
|---|---|---|
volatility loading lambda_i | caplet variance by expiry | cap/floor surface |
correlation rho_ij | co-movement of forwards | swaptions and history |
| displacement | behavior near zero | normal/lognormal convention |
| measure | drift and numeraire | product payoff date |
The original name is historical. Post-LIBOR markets use SOFR or other risk-free forward rates, but the framework still applies to discretely compounded forward tenors. Build consistent discounting and forwarding curves before starting; interest-rate swaps explains why those curves need not be identical.
The terminal-measure drift
Under the terminal measure associated with P(t,TN), an undisplaced forward follows
mu_i(t) = -sum(j=i+1..N-1,
delta_j * L_j(t) / (1 + delta_j*L_j(t))
* lambda_i(t) . lambda_j(t))
dL_i = L_i * (mu_i dt + lambda_i . dW)
That coupling means a full-path simulation is needed even for a single forward. Predictor-corrector drift schemes are common because frozen drift is fast but can bias long-dated Bermudan values. Factorize the correlation matrix carefully; an estimated matrix that is not positive semidefinite must be repaired before Cholesky decomposition.
import numpy as np
def terminal_drift(L, delta, loadings):
n = len(L)
mu = np.zeros(n)
for i in range(n):
for j in range(i + 1, n):
frac = delta[j] * L[j] / (1 + delta[j] * L[j])
mu[i] -= frac * np.dot(loadings[i], loadings[j])
return mu
def correlated_shock(corr, rng):
return np.linalg.cholesky(corr) @ rng.standard_normal(corr.shape[0])
Calibrating volatility and correlation
Caplets identify the integrated variance of their corresponding forward:
Black caplet variance = integral_0^T ||lambda_i(u)||^2 du
They do not identify correlation. European swaptions expose weighted combinations of forward variances and correlations, so calibration usually targets both cap/floor and swaption prices. A low-rank parametrization reduces unstable degrees of freedom:
lambda_i(t) = level_i(t) * [1, exp(-beta*(T_i-t)), ...]
rho_ij approximately exp(-eta * |T_i - T_j|)
Fit prices using vega-scaled residuals, bid-ask weights, and smoothness penalties across expiry and tenor. An exact fit to sparse, stale wing quotes can create an implausible covariance surface and unstable hedge Greeks. Calibrate to the market convention—normal or shifted Black—by matching prices, not volatility numbers.
Swaptions and approximation
A payer swaption payoff is A(T) * max(S(T)-K, 0), where A is the swap annuity and S is the forward swap rate. The swap rate is a ratio of weighted bond prices, not lognormal in an LMM. Rebonato's approximation maps its variance to weighted forward covariances:
sigma_swap^2 * T approximately
sum_i sum_j w_i w_j * integral(lambda_i . lambda_j dt)
It is useful for calibration and risk, but it is an approximation. Validate against Monte Carlo for long expiries, deep strikes, and structures where annuity stochasticity matters. For the market's smile parametrization, see SABR volatility.
Risk and model limits
LMM has a dimensionality advantage for product alignment and a dimensionality cost for risk. A ten-year quarterly model carries roughly forty forward rates. Bucketed curve delta, caplet vega, correlation sensitivity, and smile risk can all be material. Use common random numbers for bump-and-revalue Monte Carlo and check that finite-difference estimates converge before optimizing a hedge.
The lognormal specification cannot handle negative forwards without a displacement; an arbitrary displacement changes dynamics and must be included in calibration and reporting. More fundamentally, a deterministic-vol LMM does not produce the observed smile without adding stochastic volatility, local volatility, or a smile-consistent mapping. It is a market model, not a guarantee of realistic tail behavior.
Key takeaways
- Each forward is driftless only under its own forward measure.
- Terminal-measure simulation requires the coupled no-arbitrage drift.
- Caps constrain individual forward variances; swaptions are needed for correlation.
- Low-rank, smooth covariance specifications are more robust than unconstrained fits.
- Validate swaption approximations and Monte Carlo Greeks in the traded region.
