One-Factor Interest Rate Models: Vasicek, CIR, and Friends
With Chapter 30, we enter Part Three of the book: fixed-income modeling and derivatives. Up to now, interest rates have been either constant or known functions of time. That is fine for short-dated equity options. But for longer-dated contracts, and especially for bonds and interest rate derivatives, we need to treat the interest rate itself as random. This changes everything.
Wilmott introduces Part Three with a warning: the mathematics is mostly the same as what we have seen, but the fixed-income world is technically more complicated. The main reason? The variable we model (the short-term interest rate) is not itself a traded asset. This creates problems that do not exist in the equity world.
Why Interest Rates Are Different
When we modeled stock prices, we had a key observation: the actual level of the price does not matter, only the returns. A stock at 50 and a stock at 500 behave the same way percentage-wise. This is why lognormal random walks are natural for stocks.
Interest rates are completely different. A 5% rate and a 500% rate are wildly different things. The level absolutely matters. So a simple lognormal model for interest rates would be a bad choice, because it could predict rates growing exponentially. We need models that are more thoughtful about the dynamics.
The rate we model is the spot rate, the interest rate for the shortest possible deposit. In practice, this is often approximated by the one-month rate. From this single rate, the model will generate prices for bonds of all maturities. One random variable drives the entire yield curve. That is why this is called one-factor modeling.
The General Setup
The spot rate r follows a stochastic differential equation:
dr = u(r,t) dt + w(r,t) dX
The functions u and w determine the drift and volatility of the spot rate. Different choices for these functions give different named models. We will get to those soon.
Deriving the Bond Pricing Equation
Here is where things diverge from the equity world. With stock options, we hedge the option with the underlying stock. But with bonds, the underlying is the interest rate, and you cannot trade “the interest rate” directly. The only way to hedge is to use one bond to hedge another bond of a different maturity.
Set up a portfolio with two bonds of different maturities T1 and T2. Hold one unit of the first and some amount (negative delta) of the second. Apply Ito’s lemma to both, choose delta to eliminate the random dr term, and set the return equal to the risk-free rate.
You end up with an expression that has T1 terms on one side and T2 terms on the other. Since these are equal for any choice of T1 and T2, both sides must equal some function a(r,t) that depends on neither maturity. This function is related to what we call the market price of risk, lambda(r,t).
The bond pricing equation is:
dV/dt + (1/2) w^2 d^2V/dr^2 + (u - lambda*w) dV/dr - rV = 0
This looks like a Black-Scholes equation, but with two important differences. First, the “drift” term uses the risk-neutral drift u - lambda*w, not the real drift u. Second, the discount rate is the spot rate r, which is itself random.
The Market Price of Risk
The function lambda appears because we are modeling something that is not traded. In the equity world, we can perfectly hedge an option with the underlying stock, and the market price of risk disappears from the final equation. But in the interest rate world, we can only imperfectly hedge, and lambda sticks around.
What does lambda mean? If you hold an unhedged bond, your return in a small timestep has two parts: a deterministic drift and a random component. The deterministic part is the risk-free rate plus lambda times the volatility exposure. Lambda is the extra return per unit of risk. It is the compensation the market demands for bearing interest rate risk.
Wilmott has a great line about lambda: he thinks of it as “a great big carpet under which we can brush all kinds of nasty, inconvenient things.” You cannot easily observe lambda from data. You can back it out from the yield curve, but that is circular reasoning if you are trying to derive the yield curve from your model.
For pricing bonds and interest rate derivatives, we use the risk-neutral spot rate, which has drift u - lambda*w. For computing real-world probabilities (like “what is the chance that rates will be above 8% in five years?”), we use the real drift u.
Tractable Models: The Affine Family
Some choices of u and w make the math easy. The “affine” family uses:
- Risk-neutral drift: eta + alpha*r + beta
- Volatility squared proportional to: gamma + alpha*r
with various restrictions on the parameters. This family has two nice properties. First, rates can be bounded below by a positive number (if you choose parameters correctly), so they stay positive. Second, the drift is mean-reverting, so rates tend to return toward some long-run average rather than wandering off to infinity.
The beautiful result is that for this family, zero-coupon bond prices have the form:
Z(r,t;T) = exp(A(t,T) - B(t,T) * r)
where A and B are deterministic functions that satisfy ordinary differential equations. You do not need to solve the full PDE numerically. Just integrate two ODEs.
The Named Models
Vasicek
The Vasicek model is the simplest mean-reverting model:
dr = (eta - gamma*r) dt + c dX
The spot rate is pulled toward the level eta/gamma with speed gamma. The volatility c is constant. This gives explicit formulas for bond prices and many derivatives. Three types of yield curves are possible: upward sloping, downward sloping, and humped (though the humped shape requires unusual parameters).
The big problem: rates can go negative. The volatility is constant regardless of the level of r, so the normal distribution allows r to become negative with non-trivial probability. For reasonable parameter choices the probability is small, but it is there.
The steady-state distribution of the spot rate is Normal with mean eta/gamma and some variance. Wilmott plots this and deliberately chooses parameters that show an alarming probability of negative rates. His point: with parameters that make the yield curve look realistic, the probability of negative rates is not negligible.
Cox, Ingersoll and Ross (CIR)
The CIR model fixes the negative rate problem:
dr = (eta - gammar) dt + csqrt(r) dX
The volatility is proportional to the square root of r. When r approaches zero, the volatility also approaches zero, preventing r from going negative. If eta > c^2/2, the rate stays strictly positive.
There are still explicit formulas for bond prices, though they involve non-central chi-squared distributions for some derivatives. The zero-coupon bond formula has the same exponential-affine form as Vasicek, just with different functions A and B.
The steady-state distribution is no longer Normal. It is skewed, with a hard lower bound at zero. This is more realistic than Vasicek.
Wilmott shows simulations of both Vasicek and CIR using the same random numbers. The paths look similar in the middle range but diverge near zero: Vasicek can go negative while CIR bounces off zero.
Ho and Lee
The Ho and Lee model is special because it was the first “no-arbitrage” or “yield curve fitting” model:
dr = eta(t) dt + c dX
There is no mean reversion (gamma = 0). The drift eta is a function of time, and you choose it so that the model’s theoretical bond prices exactly match today’s market bond prices. This is calibration or yield curve fitting, which is the topic of the next chapter.
The formula for eta(t) involves second derivatives of the market discount function. It is analytically tractable but has the drawback that there is no mean reversion, so rates can wander far from current levels.
Hull and White
Hull and White extend both Vasicek and CIR to include time-dependent parameters. This allows you to fit the yield curve (and even a volatility term structure) while keeping mean reversion. It is one of the most popular models in practice.
Forwards and Futures with Stochastic Rates
Wilmott revisits the forward-futures relationship from earlier in the book, but now with stochastic interest rates. When rates are constant, forward prices and futures prices are the same. When rates are random, they differ.
The futures price satisfies a different PDE from the forward price. The difference depends on the volatility of the spot rate, the volatility of the underlying asset, and the correlation between them. This difference is called the convexity adjustment.
Key results: if the correlation between rates and the asset is zero, the asset volatility does not matter. If the interest rate volatility is zero, forwards and futures are the same (as expected). In general, futures prices are higher than forward prices (assuming reasonable correlation structure).
Key Takeaways
One-factor interest rate models are the foundation for all fixed-income derivatives pricing. The core ideas are familiar from the equity world, but two new complications arise. First, we are modeling something that is not traded, which introduces the market price of risk. Second, interest rate behavior is fundamentally different from stock price behavior, so we need models with mean reversion and (ideally) no negative rates.
Vasicek is clean but allows negative rates. CIR fixes that but is slightly harder analytically. Ho and Lee introduced yield curve fitting. Hull and White combined the best features.
The uncomfortable truth that Wilmott hints at: all of these models are wrong. One factor cannot realistically drive an entire yield curve. The models that are analytically tractable are chosen partly for mathematical convenience, not because they match reality. We will see the limitations more clearly in the next chapter on yield curve fitting.
Previous post: Reading Real Term Sheets: Equity and FX Derivatives