I am trying to calibrate Vasicek model, i.e. to determine the parameters $\kappa, \mu, \bar{\mu}$ and $\sigma$ where the process dynamics are given through $$ dr_t=\kappa\left( \mu - r_t\right) dt+\sigma d W^{\mathbb{P}}(t), $$ $$ dr_t=\kappa\left( \bar{\mu}- r_t\right) dt+\sigma d W^{\mathbb{Q}}(t), $$

where $W^{\mathbb{P}}$ is a Wiener process under the objective, real-world probability measure $\mathbb{P}$, and $W^{\mathbb{Q}}$ is a Wiener process under the risk-neutral measure $\mathbb{Q}$ (measure equivalent to $\mathbb{P}$).

Using historic proxies for short rates (daily rates starting from 01/01/2012), I first tried to work out the real-world calibration, i.e. to determine parameters $\kappa, \mu$ and $\sigma$, for which I used a pretty straight forward ordinary simple regression approach and I ended up with the following values: $$ \kappa = 3.1527, \\ \mu= 0.003, \\ \sigma= 0.0034.$$

The image shows actual historic data vs. two simulations of my calibrated Vasicek model.

Some simulations vs. actual data

My question is: do these parameters seem reasonable? I'm mostly concerned with how large $\kappa$ is relative to other parameters. Intuitively, it makes me think that it makes my short rate process more volatile and not in a stochastic way, but the deterministic drift is so large compared to the process mean, that it makes it jump a lot (sorry for my obviously very noob language here). And then, looking at it analytically - volatility of a Vasicek process is known and it is equal to $\text{Std}\left( r_t \right)=\sqrt{\frac{\sigma^2}{2 \kappa} \left[1-e^{-2 \kappa t} \right]}$, and so since my $\kappa$ is so large, my (stochastic) volatility is not that big so it is the huge deterministic drift that's making my process so crazy (or am I completely missing the point here?). Also, if what I am saying is right - how come that then our two simulations in many cases display the situation when $r(t)$ is for example larger than $\mu$ but in the next step it is not pushed down towards $\mu$ with 'big' deterministic drift?

All in all, I would really appreciate any insights on this - are these parameters just too crazy and should be discarded. If yes - which other calibration method would you suggest.

Also, once I get pass the real-world calibration - what approaches to the risk-neutral one would you suggest as well. I was thinking to simply find $\bar{\mu}$ as $$ \text{argmin}\sum_{T \in \{3,5,7,10,15\}} \left| P(T)-\bar{P}(T) \right|^2,$$ where $P(T)$ is today's observed market price of a $T$-maturity zero coupon bond, and $\bar{P}(T)$ is the model's implied today's price of a $T$-maturity zero (function of $\bar{\mu}$) coupon bond. Do you maybe think I should include more dates and not just today?

Anyways, apologies for my all over the place question. I am just puzzled with so many question about this thing, and will really appreciate any help, insight, point of view, suggestions on this. Thanks in advance.


1 Answer 1


I have been working on, to generate vasicek model parameters as well. For what it's worth, your k seems large.

However, what I do, is to fit my Vasicek parameters to real-quoted data. So, I have the USD treasury yields for 1y, 2y, 3y, 4y, 5y. I have the caplet volatilities for the same structure. In our set-up, I set k (mean-reversion) to be time-dependent; and arbitrarily set an estimated long-term average yield.

I am able to extract a set of mean-reversion where the yields are very close. The mean-reversion ranges from 0.15 to 0.41 at the 5yr point.

Perhaps you can try to fit to quoted market-data?

Hope this helps

  • $\begingroup$ how did you calculate k? can you elaborate in detail please $\endgroup$
    – question
    Nov 24, 2020 at 6:49

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.