Term structure is determined by a two-factor affine model (Vasicek). Using the monthly swap market data, we fit the model to match exactly the one-year and ten-year points along the swap curve each month. Once fitted to these points, we then identify how far off the fitted curve the other swap rates are.

Above a quote what I'm working with and trying to get my head around what are my steps and would appreciate any help.

Currently I'm able to do MLE estimation of short (1Y) and long (10Y) points, but I don't understand, how do I calibrate this to fit the initial curve. Without calibration, it is giving me very weird values for other maturities. Main tool I use is R, but really any code or good step-by-step example would help.

  • $\begingroup$ Hi, would you mind to share your codes for step 1? Did you use backward calibration using the zero coupon bond prices? Greatly appreciate if you could help! $\endgroup$ Dec 24, 2018 at 9:12
  • $\begingroup$ Sorry, I have already changed jobs and everything. This might help web.math.ku.dk/~rolf/teaching/mfe04/MathFin.Vasicekestimation.R $\endgroup$
    – Hakki
    Dec 28, 2018 at 10:04

1 Answer 1


This is a relative value application of equilibrium term structure models. There are really two steps in this exercise:

Step 1 is a calibration procedure that gets you the model "parameters" (i.e., the mean reversion parameters, volatilities/correlation parameters, etc.). This is usually done using historical interest rate dat and either MLE or Kalman filtering techniques (see "Kalman Filtering of Generalized Vasicek Term Structure Models").

Once step 1 is done (which BTW is a huge undertaking), you can then apply the model for relative value analysis. Given today's yield curve (as opposed to historical data in step 1), you back out the "factor values" (as opposed to model parameters) so that your model fits a few points on the yield curve. In the example you used, the trader/researcher assume that 2- and 10-year yields are trading fair, and fit the model to match these two points. They then compare the model-implied value for, say, the 5-year point to judge whether or not the 5-year yield is trading rich/cheap.

  • $\begingroup$ Thank you, I have some code for step 1, second step is where I'm stuck. Do you happen to have any good papers where it is explained in more detail? $\endgroup$
    – Hakki
    May 20, 2016 at 6:55
  • $\begingroup$ How do you do step 1 without being able to do step 2? In order to do the calibration, you must already have been able to fit curves to yields/prices. Otherwise, how do you calculate the total errors over the entire sample? $\endgroup$
    – Helin
    May 20, 2016 at 23:21

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.