In view of this question I asked some time ago, I tried to calibrate a Vasicek model to some cap volatilities, given as follows. I consider the maturities (in years) $$ 0.5,1,2,3,4,5,7,10,15,20 $$ and the corresponding ATM market cap volatilities with $\tau_i = 0.25$ year fraction according to the Book by Brigo and Mercurio. For example the first tenor is just $\{0.25,0.5\}$, the second is $\{0.25,0.5,0.75,1\}$, etc. The volatilities are given by $$ 0.114,0.114,0.145,0.156,0.16,0.16,0.159,0.153,0.153,0.153 $$ Since the Vasicek model has the form $dr(t) = k(\theta - r(t))dt + \sigma dW(t), r(0) = r_0$, using python I found the model parameters which minimise the relativ error between the model and the market. I get (rounded to 4 digits): $$ \{k,\theta,\sigma,r_0\} = \{0.8266, 0.0109, 0.0080, 0.0752\} $$ First question: Do these parameters seem realistic?

Corresponding to the cap volatilities, I additionally have data for the EURIBOR Rates $$ 0.03143, 0.03377, 0.03667, 0.03792, 0.03877, 0.03948, 0.04064, 0.04210, 0.04380, 0.04469 $$ for the given maturities from above. Should these rates correspond to the function $L(0,T) = \frac1T\left(\frac1{P(0,T)} - 1\right)$ for the given maturities where $P(0,T)$ is the zero bond induced by my Vasicek model? E.g. the market EURIBOR rate 0.03143 corresponds to $L(0,0.5)$ from my model? If so, when I plot this, I get, enter image description here

where 'green' corresponds to the model and 'brown' to the market data. So, this seems way off.

Is there something wrong with my implementation (because the fit of the cap volatilities seems reasonably good) or is this something that the Vasicek model can not do simultaneously (i.e. having a good fit for cap volatilities and the EURIBOR rates)?

Thanks in advance!

  • $\begingroup$ I doubt that a short rate model with constant parameters can be fitted to today's term structure and to more than jus a few caplet volatilities. It is well-known that to fit today's term structure exactly one takes a time-dependent $\theta\,.$ The question about caplet volatilities is just a matter of counting the degrees of freedom. You have two left: $k$ and $\sigma$. $\endgroup$
    – Kurt G.
    Jan 20, 2023 at 9:48
  • $\begingroup$ Thanks a lot, so if I understand correctly, it seems reasonable that my fitted model performs good on caplets volatilities (that's what I fitted) and bad on the current term structure because my simple Vasicek model only allows for 4 degrees of freedom, namely the parameters $k, \theta, \sigma$ and $r_0$ which is not enough to describe both volatility and term structure? $\endgroup$ Jan 20, 2023 at 10:13
  • $\begingroup$ You should separate $\theta$ from the rest. To fit an interest rate term structure which is a curve you need to make that time dependent. Then go to the volatility circus. How many caplets you can fit depends on the remaining degrees of freedom that $k$ and $\sigma$ give you. I think $r_0$ is used up in the interest rate term structure fitting already. $\endgroup$
    – Kurt G.
    Jan 20, 2023 at 13:02
  • $\begingroup$ I agree with Kurt G but would go one step further. The forward rates produced by the Vasicek model should not depend on $\sigma$, so first fit $r_0$, $\theta$ and $k$ to the EURIBOR rates. It won't be exact but you should be able to get something reasonable. Finally, you have only $\sigma$ to work with to fit the cap vols but either you have to put up with some significant misfitting or pick the one vol tenor that you really care about and fit to that. Kurt: Do you want to convert your comment into an answer so that this can be closed? $\endgroup$ Jan 21, 2023 at 4:16
  • $\begingroup$ Thank you both for clarifying and explaining. Kurt: Yes, if you convert your answer into a comment, I can accept it. $\endgroup$ Jan 21, 2023 at 16:13


Your Answer

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

Browse other questions tagged or ask your own question.