I'm trying to include interest rate derivatives in some Value at Risk calculations and am having trouble getting trustworthy values. My current approach is to look at the appropriate risk factor for the interest rate derivative, so for example I look at the 10-year treasury yield time series when handling a US treasury bond, and find the volatility of that yield. I then simulate the evolution of the risk factor 1 day forward in time and revalue the bond, I do this several times to obtain final prices of the bond and then find the value at risk form those final prices, just as I would with an equity derivative. Simple.

So my problems are how do I find the volatility of the yield, and what stochastic process can I use to simulate its evolution? Currently I am taking the differences (not return) in the yield each day, so $(r_2 - r_1), (r_3 - r_2)$ etc. and finding the sample standard deviation of that series to find my volatility. I then simulate the process with a Brownian (not geometric) Motion assuming zero drift. I do this based on short factor models like the Vasicek model seeming to be based on the absolute interest rate changes being normally distributed rather than the relative change. Obviously I make a simplifying assumption in assuming zere drift. Is this methodology correct? From my results I obtain far higher volatility and risk measure than is reasonable.


Your simple approach is perfectly reasonable for (somewhat rough) single-period risk. However, when you compound it (via the random walk/brownian motion) you are not accounting for mean reversion of rates and will get risks that are too high, as you have found. Reasonable stochastic models for rates have mean-reversion terms in them that, at their simplest, might look something like $$ dr_t = \mu(\bar{r} - r_t) dt + \sigma \sqrt{r_t} dZ $$

Presumably you are compounding the yield changes to obtain, say 5-day and 20-day VaR from your 1-day standard deviations. A way to retain your simple approach without introducing much more complexity would be to measure standard deviations corresponding to each VaR period you are interested in. For example, to get $\mathrm{VaR}^{(20)}$, rather than compounding using 1-day $\sigma^{(1)}$, you can instead measure $\sigma^{(20)}$ as

$$ \sigma^{(20)} = \mathrm{Std}\left[\{ r_{t+20} - r_t \}\right] $$

and similarly for 5-day VaR.

There are a few things to pay attention to here:

  • There will be higher relative error in the estimate of $\sigma^{(20)}$ since its sample periods overlap and therefore successive data points are not independent. We say this series is oversampled.
  • If you also must handle yields of other tenors, like 2 years, it is important to account for correlations
  • It is generally considered wiser to employ expected shortfall (also known as conditional value at risk) rather than plain old value at risk, as a risk measure, because VaR is not coherent.
| improve this answer | |
  • $\begingroup$ Hi, thank you. I am doing exactly what you say, using the 1-day volatility estimate and compounding it in my Brownian motion. It makes a lot of sense then that the further in time you simulate the more of an impact ignoring the mean-reversion will have. I am not too fond of the idea of estimating the 20-day $\sigma$ directly, I feel like it will get messy dealing with both equity and IR derivatives since I wouldn't want to handle equities this way. I figured I would just assume a parallel shift if other tenors are included, but I understand what you mean, that would be better clearly. $\endgroup$ – Oscar Jul 6 at 14:38
  • $\begingroup$ If you would instead take the approach of simulating the yield or interest rate including the mean reversion, how would you go about fitting parameters to your mean-reverting process? Is it tractable doing this for say, dozens of yield risk factors used in simulating a portfolio of interest derivatives? $\endgroup$ – Oscar Jul 6 at 14:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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