1
$\begingroup$

I have implemented the Libor Market Model in Matlab. When I generate a number of paths, I notice that some of them explode. Does anybody have an idea what could cause this?

I already tried solving the problem by decreasing the timestep (up to dt=0.001) in order to reduce the error and also by simulating with the log-Euler scheme instead of the 'normal' Euler. In both cases it did not resolve the problem, since some of the Libor rates paths are still diverging.

Specifics:

I simulate the forward Libor rates under the spot measure, whose dynamics are given by: $$dL_n\left(t\right)=\sigma_n\left(t\right)L_n\left(t\right)\sum_{j=q\left(t\right)}^n \frac{\tau_j \rho_{j,n} \sigma_j\left(t\right)L_j\left(t\right)}{1+\tau_j L_j\left(t\right)}dt + \sigma_n\left(t\right)L_n\left(t\right)dW\left(t\right)$$ where $$L_n\left(t\right):=L\left(t;T_n,T_{n+1}\right),$$ $$\tau_n = T_{n+1}-T_n,$$ $$\sigma_n\left(t\right) = k_n \left[\left(a+b\left(T_n-t\right)\right)e^{-c\left(T_n-t\right)}+d\right],$$ index function $q\left(t\right)$ is defined by $$T_{q\left(t\right)-1}\leq t < T_{q\left(t\right)},$$ $W$ is a Brownian Motion under the spot measure.

$\endgroup$
7
  • $\begingroup$ what do you mean explode? as this is essentially lognormal, it can become significantly large on some paths, however, by average it should be reasonable. $\endgroup$
    – Gordon
    Commented Jun 9, 2016 at 13:40
  • $\begingroup$ With exploding rates I mean that when I simulate paths up to (for example) 15 years, the Libor rates take values up to 10*e+29. $\endgroup$
    – Tinkerbell
    Commented Jun 10, 2016 at 8:59
  • $\begingroup$ That is large, but very strange. You may post the your data and code here so that people can have a look. $\endgroup$
    – Gordon
    Commented Jun 10, 2016 at 15:11
  • $\begingroup$ @Gordon I detected that the problem lies in the instantaneous volatilities: they are far too high. They can reach unrealistic levels such as 270%. This is caused by the calibrated values of $a,b,c,d$ and $k_n$. My calibration routine goes as follows: I take the simple correlation parametrization with $\beta=0.05$. (1) I calibrate the parameters $a,b,c,d$ of the volatility parametrization to co-terminal market swaption volatilities 1Y15Y,..,15Y1Y while keeping $k_n=1$. (2) After this, I determine the $k_n$ such that each market co-terminal swaption volatility is fitted exactly. $\endgroup$
    – Tinkerbell
    Commented Jun 12, 2016 at 10:10
  • $\begingroup$ The instantaneous volatilities becomes too large because of the values of $a,b,c,d$ determined in step (1). While keeping $k_n=1$, those calibrated values of $a,b,c,d$ give a poor fit to the volatilities of the co-terminal swaptions. Then in step (2) because of this poor fit, the values of $k_n$ can get large (up to 3.5), while they have to be around 1. The result is unrealistically high instantaneous volatilities. I believe that the problem arises when I try to calibrate 4 parameters $a,b,c,d$ to 15 swaption volatilities, not giving a good fit. Hence, the model is underspecified. $\endgroup$
    – Tinkerbell
    Commented Jun 12, 2016 at 10:23

4 Answers 4

5
$\begingroup$

this is a well-known problem. One solution is to make volatility zero when rates exceed a certain high level.

It's less problematic than it looks because any cash-flows generated will be divided by a rolling money market account which has huge value and so the deflated cash-flows are very small.

$\endgroup$
1
  • $\begingroup$ Is this better than just capping the vol at some (also arbitrary) large value? $\endgroup$
    – will
    Commented Sep 2, 2017 at 10:10
1
$\begingroup$

The explosion of the forward rates in the log-normal LMM simulated in the spot measure seems to be related to the explosion of the Eurodollar futures prices in this model which was studied in this paper

http://www.tandfonline.com/doi/abs/10.1080/1350486X.2017.1297727

The Eurodollar futures prices are given by the expectation of the Libor in the spot measure, so an explosion in the former quantity is a signal that the Libor distribution becomes heavy tailed. Sampling from such a heavy tailed distribution will produce a path with extremely large Libor values. The plot in Figure 4.1 shows a lower bound on the ED futures convexity adjustment, which is seen to explode at a certain volatility. This is an exact analytical bound which does not involve any simulation.

A similar explosion of the MC paths happens also in stochastic volatility models such as the log-normal SABR model, simulated by Euler time discretization. The simplest setting where this phenomenon appears is the bank account compounding interest in discrete time, assuming that the interest rate follows a geometric Brownian motion. An introduction to this phenomenon is given in Section 2 of the above paper.

$\endgroup$
1
$\begingroup$

The rates will explode in the current low rates environment my friend where empirically they are at a too low level to use a log-normal model if you want to preserve your log-normality please use a shifted log normal distribution instead to a convenient rate cut off of around 2%. This happens mainly on EUR market. Hope this help

$\endgroup$
0
$\begingroup$

I face the same problem. I was trying to simulate (not calibrate the model) using the basic simulation scheme that you outlined (the log Euler scheme). I used a flat forward libor rate of 3.5% and a flat vol (time homogenous) 30%. When I simulate out to 15+ years, I start getting rates like you witnessed for some paths. Did you get any clarity on this issue. Do people not use this discretization scheme (I saw some articles talking about simulating deflated bond prices, as they are a martingale under this measure and then backing out Libors from those simulated bond prices). That doesn't answer this explosion issue. I guess the corresponding numeraires will be very small canceling out the effect (when people value assets through pathwise discounting). Is that the reason why we don't see anyone commenting on this issue?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.