Calibrating Vasicek Parameters to Cap Volatility and Yield Data
Summary
The document describes fitting a one-factor Vasicek short-rate model to at-the-money cap volatilities across several maturities. It reports the input volatility term structure and the fitted mean-reversion speed, long-run rate, volatility, and starting rate, obtained by minimizing relative pricing error. The author asks whether those parameters are realistic and whether the model can also reproduce market EURIBOR rates.
The comparison raises a curve-construction issue: the supplied EURIBOR rates are contrasted with simple rates derived from Vasicek zero-coupon bond prices, and the resulting curves appear far apart. The document does not provide a resolution, implementation details, or validation beyond saying the cap-volatility fit looks reasonable. It therefore illustrates that fitting option volatility data alone does not establish that a short-rate model matches the market yield curve; calibration targets and rate definitions need to be checked together.
Key ideas
- A Vasicek model can be calibrated by minimizing pricing errors against cap volatility observations.
- A close fit to cap volatilities does not by itself establish realistic parameters.
- The author compares market EURIBOR rates with simple rates implied by model zero-coupon bonds.
- The document leaves open whether the discrepancy comes from implementation, rate definitions, or model limitations.
Tags
Full text
# Are my fitted Vasicek model parameters market consistent or realistic?
# Are my fitted Vasicek model parameters market consistent or realistic?
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,
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!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.