Lesson 6.5: Fixing r - Stochastic Interest Rates (Vasicek & CIR)

Welcome to Lesson 6.5, the final lesson of our 'Advanced Models' module. We have successfully 'fixed' two of the three major bugs in the original Black-Scholes model:

  1. We fixed constant volatility (σ\sigma) with the Heston Model (Lesson 6.3).
  2. We fixed continuous paths with the Merton Jump-Diffusion Model (Lesson 6.4).

But both of those models still have one fundamental flaw: they assume the risk-free interest rate (r) is a constant, known number (e.g., 5% forever).

Part 1: The "Fix" (The "Thermostat" Analogy)

What kind of SDE should the interest rate (rtr_t) follow?

  • Can it be GBM (like a stock)? No. A stock can (in theory) grow to infinity. Interest rates can't. If rtr_t went to 50%, the economy would collapse. Rates tend to be "pulled back" to some long-term average.

This "pull-back" effect is called Mean Reversion. This is the exact same concept we used for volatility in the Heston model.

The "Dog on a Leash" Analogy:

  • θ\theta (theta): A stake in the ground. This is the "long-term average rate" (e.g., 3%).
  • rtr_t: A dog on a leash, wandering randomly. This is the "current short rate."
  • κ\kappa (kappa): The "stiffness of the leash." This is the "speed of mean reversion."

When the dog (rtr_t) wanders too far from the stake (θ\theta), the leash (κ\kappa) pulls it back. The SDE for this process is called an Ornstein-Uhlenbeck process.

Part 2: Model 1 - The Vasicek Model (1977)

The first and simplest SDE for interest rates was the Vasicek Model. It is an Ornstein-Uhlenbeck process.

The Vasicek Model SDE

drt=κ(θrt)dt+σdWtdr_t = \kappa (\theta - r_t) dt + \sigma dW_t

Let's translate this. The change in the interest rate (drtdr_t) is the sum of two parts:

  • κ(θrt)dt\kappa (\theta - r_t) dt (The "Drift" / "The Pull"):
    • θ\theta is the long-term mean (the "stake," e.g., 3%).
    • rtr_t is the current rate.
    • (θrt)(\theta - r_t) is the "error." If rtr_t is 5% (it's "too high"), this term is negative, and the drift pulls the rate down.
    • κ\kappa is the speed of that pull.
  • σdWt\sigma dW_t (The "Diffusion" / "The Jiggle"):
    • σ\sigma is a constant volatility (e.g., 0.5%).
    • dWtdW_t is the random engine.

The "So What?" (Pros vs. Cons):

  • Pro: It's simple. Because σ\sigma is constant, this is a Gaussian Process (like our original "Failed Model #2" for stocks). This makes it mathematically easy to solve, and we can get a clean, simple formula for bond prices.
  • Con (The Big Bug): It has the exact same bug as "Failed Model #2." The jiggle (σ\sigma) is constant. If the rate is rt=0.1%r_t = 0.1\% and it gets a big random shock (a "3-sigma event" of, say, -0.6%), the new rate becomes 0.1% - 0.6% = -0.5%.

This is a huge problem. Negative interest rates are (mostly) unrealistic and can break many financial models.

Part 3: Model 2 - The CIR Model (The "Better" Fix)

How do we "fix" the negative rate bug? We need to use the exact same trick we used in the Heston model: make the "jiggle" proportional to the rate itself.

This is the Cox-Ingersoll-Ross (CIR) Model (1985).

The CIR Model SDE

drt=κ(θrt)dt+σrtdWtdr_t = \kappa (\theta - r_t) dt + \sigma \sqrt{r_t} dW_t

This is a tiny change, but it has a massive impact.

  • The Drift: κ(θrt)dt\kappa (\theta - r_t) dt
    • This is identical to the Vasicek model. It's still a "thermostat" pulling the rate back to its long-term average θ\theta.
  • The Diffusion: σrtdWt\sigma \sqrt{r_t} dW_t
    • This is the "magic" fix. The "jiggle engine" σdWt\sigma dW_t is multiplied by rt\sqrt{r_t}.
    • The "Aha!" Moment: As the interest rate rtr_t gets closer and closer to 0, the term rt\sqrt{r_t} also gets closer to 0.
    • This means the random "jiggle" itself runs out of fuel as it approaches the zero boundary. The volatility of the rate shrinks as the rate shrinks. This creates a "natural barrier" that (if κ\kappa and θ\theta are high enough) makes it impossible for the rate to become negative.

The "So What?" (Pros vs. Cons):

  • Pro: It fixes the negative rate problem. It's a much more realistic and stable model.
  • Con: It's harder. It's a "square-root process" (non-Gaussian), so the "pure math" formulas for pricing bonds are much more complex. (But for Monte Carlo, it's just as easy! You just code this new SDE).

Part 4: The "Real" Payoff (How to Price a Bond)

Now that we have a random SDE for our interest rate rtr_t, how do we actually price a zero-coupon bond?

A zero-coupon bond (ZCB) is a contract that pays you \$1 at a future time $T$. Its price today is $P(t, T)$.

We must use Risk-Neutral Valuation (Lesson 6.1). The price today is the "expected payoff" discounted back.

But what's the discount factor? It's not er(Tt)e^{-r(T-t)} anymore, because $r$ is constantly jiggling between $t$ and $T$. The total discount is the "sum" (or integral) of all the random rates along the path:

Total Discount Factor=etTrsds\text{Total Discount Factor} = e^{-\int_t^T r_s ds}

This is a random variable! The total discount factor is not known today.

Therefore, the bond's price today must be the expected value (the average) of all possible discount factors that could happen, calculated in the risk-neutral world (Q\mathbb{Q}).

The "Holy Grail" of Fixed Income

This is the fundamental formula for all bond pricing:

P(t,T)=EQ[etTrsdsFt]P(t, T) = \mathbb{E}^{\mathbb{Q}} \left[ e^{-\int_t^T r_s ds} \mid \mathcal{F}_t \right]

Deconstructing this "Scary" Formula

This formula is terrifying for a beginner. Let's translate it piece by piece.

  • tTrsds\int_t^T r_s ds: This is the "Total Accumulated Interest" along one specific random path that the interest rate $r_s$ takes from now ($t$) until the bond matures ($T$). Since the path is random, this total interest is a random number.
  • etTrsdse^{-\int_t^T r_s ds}: This is the "Total Discount Factor" for that one specific path. This is also a random number.
  • EQ[]\mathbb{E}^{\mathbb{Q}} \left[ \dots \right]: This is the "Expected Value" (the average). This is where Monte Carlo (Lesson 6.2) comes in. We run thousands of possible $r_s$ paths:
    • Path 1 (Rates spike): Total Discount Factor is $0.85$ (worth 85 cents)
    • Path 2 (Rates stay low): Total Discount Factor is $0.95$ (worth 95 cents)
    • Path 3 (Rates crash): Total Discount Factor is $0.99$ (worth 99 cents)
    • ...
  • P(t,T)P(t, T) (The Price): The bond's price today is the average of all those random discount factors. This is why bond pricing is so computationally intensive. This is what "Fixed Income Quants" do all day.
Congratulations! (The End of the Main Course)

    You have officially completed the core curriculum of Stochastic Calculus for Quant Finance.

    We started with a single, "broken" idea (the bell curve) and ended by modeling the three most important, complex, and random things in finance.

    Let's review the "bugs" in the original Black-Scholes model and how we FIXED them:

    1. The Bug: σ\sigma (volatility) is constant.
      The Fix (Lesson 6.3): Stochastic Volatility (Heston Model). We gave σt\sigma_t its own mean-reverting SDE. This fixed the "volatility smile."
    2. The Bug: The stock path StS_t is continuous (no jumps).
      The Fix (Lesson 6.4): Jump-Diffusion (Merton Model). We added a second random engine (a Poisson Process, dNtdN_t) to our SDE to model "crashes." This fixed "fat tails."
    3. The Bug: $r$ (interest rate) is constant.
      The Fix (Lesson 6.5): Stochastic Interest Rates (Vasicek/CIR). We gave rtr_t its own mean-reverting SDE. This allowed us to price bonds.

    You now have a complete, professional-level "toolkit" for modeling any random process. You've seen that SDEs are just "building blocks" that allow quants to build models that get closer and closer to reality.