Skip to content
All library documents

Diagnosing Martingale Errors in Libor Market Model Simulations

Article Quant Q&A · Author: Stephen Ge

Summary

This question describes a Monte Carlo implementation of the Libor Market Model (LMM) for simulating forward rates before a swaption’s exercise date. The model uses an initial forward curve, a correlation matrix, and time-dependent volatilities, with correlated Gaussian increments driving the simulated rates. The author checks whether each rate preserves its expected value under the selected measure and reports that the average multiplicative update rises with the forward-rate index.

The reported experiment uses one million paths, annual time steps, and a swaption spanning several annual forward periods. The increasing averages suggest that the simulated drift or numeraire assumptions may not match the martingale condition being tested. However, the document is a request for help rather than a resolved analysis: it does not establish whether the issue comes from a large time step, an incorrect drift sum or indexing convention, or applying a martingale test under the wrong measure. Its numerical observation alone does not identify the cause.

Key ideas

  • The LMM simulation combines correlated random shocks with a drift term determined by the chosen forward-rate measure.
  • A forward rate is a martingale only under its corresponding forward measure, so the measure must match the test.
  • The author observes larger average multiplicative updates for later forward rates in the simulated swaption period.
  • The question leaves open whether discretization, drift implementation, or measure selection explains the discrepancy.

Tags

Full text
# Problem of implementing Monte Carlo simulation of the Libor Market Model


# Problem of implementing Monte Carlo simulation of the Libor Market Model












I am trying to use Monte Carlo method to simulate the dynamics of forward rates based on the Libor Market Model.

The Libor Market Model is calibrated using the zero rate and implied volatility of SWAPTION on the 18th of Dec 2024, such that:

According to Brigo & Mercurio's book "Interest Rate Models Theory and Practice", I calculated the correlation matrix $\rho$ and volatility $\sigma_k(t)$ matrix, such that

the initial forward rates at $t=0$, $F_k(0)$ and $\tau$, such that

Suppose a annually paid SWAPTION starts/execute at year $s$ and mature at year $m$. For each forward rate $F_k(t) = F(t,k,k+1)$, $k = s,\cdots,m-1$, I generate $N = 1000000$ random points for each time step from $t = 0$ to $t=s$ with time step $\Delta t\approx 1$. According to the Brigo & Mercurio's book

\begin{equation} F_k^b(t+\Delta t) = F_k^b(t)e^{\sigma_k(t) \sum_{j=s}^k \frac{\rho_{k,j}\sigma_j(t)\tau_{j,j+1}F_j^b(t)}{1+\tau_{j,j+1}F_j^b(t) } \Delta t - \frac{\sigma^2_k(t)}{2} \Delta t + \sigma_k(t) W_k(t)}, \qquad b = 1,\cdots, 1000000 \end{equation} where $\sigma_k(t)$ represent $(t+1,k)$ entry in the volatility matrix, $W_k(t)$ represents the kth column of random matrix $W(t)\in\Re^{N,m-s}$, such that $W(t)\sim\sqrt{\Delta t}\mathcal{N}(0,\rho)$.

When I get 1 million paths for each $F_k$, I tried to verify the Martingale property of $F_k(t)$, such that the mean of $F_k(T) = F_k(t)$ for any $T>t$, which implies the mean of exponential part in the formula should always approximately equal to 1. Unfortunately, it is not, in fact as k increases, I observed that the mean of exponential part also getting bigger. For example, I let $s=1$ and $m=10$, the mean of exponential part of $F_k$ in the formula gives

1.0028 1.0058 1.0081 1.0113 1.0139 1.0157 1.0180 1.0204 1.0234

Can anyone tell me what is wrong with my model? Is it because my time step $\Delta t$ is too big? Thanks.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.