Lesson 6.4: Fixing "No Jumps" - Jump-Diffusion (The Merton Model)

Welcome to Lesson 6.4. In our last lesson, we 'fixed' the biggest bug in the Black-Scholes model by creating the Heston Model. By making volatility σ a random process, σt, we were able to explain the 'volatility smile.'

However, our Heston model still has a critical flaw. It's built entirely on Brownian Motion (WtW_t), which is continuous. It follows the "no teleporting" rule from Lesson 1.2. This means our model is good at capturing the normal, everyday "jiggle" of the market, but it cannot capture a sudden, discontinuous crash.

Part 1: The "Fix" (Adding a New Random Engine)

Our current SDE (like GBM) has one "random engine":

dSt=()dt+(Jiggle)dWtdS_t = (\dots)dt + (\text{Jiggle})dW_t
  • dWtdW_t (Brownian Motion): This is the "jiggle" engine. It's responsible for the small, continuous, everyday volatility.

To "fix" the model, we need to add a second, independent random engine that is responsible for the "jumps."

dSt=()dt+(Jiggle)dWt+(Jump)dNtdS_t = (\dots)dt + (\text{Jiggle})dW_t + (\text{Jump})dN_t

This new model, created by Robert Merton in 1976, is called a Jump-Diffusion model. It says a stock's price is the sum of two types of randomness:

  1. A continuous "diffusion" (the "jiggle").
  2. A rare, discontinuous "jump" (the "crash").

Part 2: The "How" (The Poisson Process: Our "Jump Engine")

We need a mathematical model for a "jump event." A jump is a "click" that is almost always "OFF" (equal to 0) but occasionally, at a random time, flips "ON" (equal to 1) and triggers a jump.

The perfect model for this is the Poisson Process, which we'll call NtN_t.

The Poisson Process (Nt): The "Geiger Counter"

A Poisson Process is the mathematical model for "rare, random, independent events."

  • The Analogy: Think of a Geiger counter near a piece of uranium. It's mostly silent, but then... "click"... "click"... "click"... The "clicks" are random and independent.
  • The Math (NtN_t): NtN_t is a "step function" that counts the number of "clicks" (jumps) that have happened by time tt.
  • The Key Parameter (λ\lambda): The "intensity" or "arrival rate" of the jumps.
    • λ\lambda (lambda) = 3 means we expect, on average, 3 jumps per year.
  • The Infinitesimal Step (dNtdN_t): For a tiny time step dtdt, our new "jump engine" dNtdN_t can be one of two things:
    1. dNt=0dN_t = 0 (No jump happened). This happens with very high probability, (1λdt)(1 - \lambda dt).
    2. dNt=1dN_t = 1 (A jump "click" happened!). This happens with a very low probability, λdt\lambda dt.

So, dNtdN_t is our new "random switch." Most of the time it's 0, but sometimes it flips to 1 and *triggers* a jump.

Part 3: The Merton Jump-Diffusion Model SDE

Now we can build the full SDE in our "magic" risk-neutral world (Q\mathbb{Q}).

Step 1: The Jump Size (J)

When our "switch" dNtdN_t flips to 1, a jump happens. How big is it? Merton assumed the *percentage* jump size, JJ, is *also* a random variable, drawn from its own bell curve, N(μJ,σJ2)\mathcal{N}(\mu_J, \sigma_J^2).

Step 2: The SDE

The full SDE for the stock price StS_t is:

dSt=(Drift Term)dt+(Jiggle Term)dWtQ+(Jump Term)dS_t = (\text{Drift Term})dt + (\text{Jiggle Term})dW_t^{\mathbb{Q}} + (\text{Jump Term})

Let's plug in the pieces:

dSt=(rλk)Stdt+σStdWtQ+(J1)StdNtdS_t = (r - \lambda k) S_t dt + \sigma S_t dW_t^{\mathbb{Q}} + (J-1) S_t dN_t

Deconstructing the Merton Model

Let's translate this "wall of math":

  • σStdWtQ\sigma S_t dW_t^{\mathbb{Q}} (The "Jiggle"): This is the Diffusion part. It's the normal, everyday, continuous volatility from Black-Scholes.
  • (J1)StdNt(J-1) S_t dN_t (The "Jump"): This is the new part.
    • Most of the time, dNt=0dN_t = 0, so this entire term is 0. (No jump).
    • Occasionally (with probability λdt\lambda dt), dNt=1dN_t = 1. The stock price *instantly* moves from StS_t to St+(J1)St=JStS_t + (J-1)S_t = J \cdot S_t. It "jumps" by a random percentage JJ.
  • (rλk)Stdt(r - \lambda k) S_t dt (The "Drift"): This is the most complex part, but it's just a "correction."
    • In our "magic" world, the stock *must* earn the risk-free rate rr.
    • We are adding jumps (JJ) that happen, on average, λ\lambda times per year. Let's say the average jump size is k=E[J1]k = \mathbb{E}[J-1].
    • We are adding λk\lambda k of "jump drift." To make the total drift equal rr, we must subtract this "jump drift" from the "normal drift."
    • So, the "normal drift" is (rλk)(r - \lambda k). This is the "compensator" that makes the whole model "fair" (i.e., a martingale).

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

  • Pro: This model is much more realistic. It "fixes" the "no jumps" bug and, because it allows for sudden crashes, it can create the "fat tails" and "volatility smile" we see in the real market.
  • Con: It's hard. We now have two sources of randomness (WtW_t and NtN_t). The beautiful, simple Black-Scholes PDE (from Module 4) is broken. It becomes a "Partial Integro-Differential Equation" (PIDE), which is a mathematical nightmare to solve.
  • How we solve it: Monte Carlo! This is what Monte Carlo was built for. It's trivial to add this to our simulation from Lesson 6.2.

Example: Monte Carlo Code for Merton Model

Your simulation code from Lesson 6.2 just gets one "IF" statement:

  1. Calculate the "jiggle" part (the ΔS\Delta S from the dWtdW_t term).
  2. Generate a random number. If it's *less than* λΔt\lambda \Delta t, trigger a "jump."
  3. If a jump is triggered:
    • Generate *another* random number for the jump size JJ.
    • Add the "jump" part to the ΔS\Delta S from step 1.
  4. Add the total ΔS\Delta S to the price and move to the next step.
What's Next? (The 'Hook')

    We have now "fixed" two of the three broken assumptions of Black-Scholes:

    1. Volatility (σ\sigma) is constant \to FIXED (with Heston's stochastic σt\sigma_t)
    2. The path is continuous \to FIXED (with Merton's jump process dNtdN_t)

    But what about the *last* broken assumption?

    dSt=rStdt+dS_t = \mathbf{r} S_t dt + \dots

    We've been assuming the interest rate rr is a constant, known number (e.g., 5%).

    This assumption is fine for pricing *stocks*, but what about pricing *bonds* or *interest rate swaps*? A bond's entire value is *determined* by interest rates. If we assume rr is constant, we're assuming bond prices never change! This is obviously wrong.

    We need to "fix" rr. We need to give rr *its own* SDE.

    This leads to our final lesson: Lesson 6.5: Stochastic Interest Rates (Vasicek & CIR).

Up Next: Lesson 6.5: Stochastic Interest Rates