In my latest book, I have a chapter titled “A Closer Look at the Square-root and 3/2-Model”. One of the things I do in that chapter is give the joint transition density for the Heston ’93 model (which is associated to the Square-root model) and for the 3/2-model. These two models are popular stochastic volatility models (abbreviated ‘SV’).
A reader over at the Wilmott forums asked the natural question: what is the corresponding joint transition density when one adds price jumps to the Heston model? The resulting class of models is often abbreviated ‘SVJ’, standing for ‘stochastic volatility + jumps’.
As it turns out, the modifying the book formula for price jumps is quite easy. Showing that is the subject of this post and the next one. In this first one, I’ll just give the result. In the second one, I’ll give the derivation.
First, let’s review the results given in the book without the jumps.
The Joint Transition Density for the Heston Model
The Heston model is the SV system:
Actually, we are considering two slightly different models at once: the “risk-neutral” version and the “real-world” version. In the risk-neutral model, , where is an interest rate and is a dividend yield. Under the risk-neutral model, is a martingale. Under the real-world model, is simply a constant parameter that one estimates. With those two possibilities for , the joint transition density is given by
Equation (2) is equation (7.40) in the book. It looks messy, but essentially it’s just a single (numerical) integration involving elementary functions and the modified Bessel function: . It’s quite straight-forward to implement in Mathematica, with the caveat that one should re-work the answer slightly to use only terms, which helps prevent unexpected branch-cut crossings. The code, which uses that re-work, in given in the book in Sec. 7.12 Appendix.
In addition to ‘b’, note that the other parameters will generally be different under the two versions of the model: real-world or risk-neutral. The exception is , which must be the same, as well as the entire process , which also must be the same.
Once you have the joint density, you can compute various interesting things. For example, with the risk-neutral version you could compute the value of a call option on a stock with a single discrete dividend prior to expiration, now accounting for stochastic volatility effects. Or, you could compute the value of a compound option. If you’re still reading this, you probably can think of your own applications. With the real-world version, a time series of underlying security prices and a good proxy for the instantaneous volatility, you can make parameter estimates, using Maximum Likelihood Estimation.
The Joint Transition Density for the SVJ class of Models
For our purposes, we will define the ‘SVJ class of models’ to mean the Heston model modified to include independent, Poisson-driven, price jumps. Specifically, the modified SDE system becomes:
The new notations include , a Poisson process which counts the number of jumps that have occurred. Letting be the corresponding Poisson intensity, we have in SDE language, where is the time t expectation, conditional on the state of the system . (Again, with all the parameters, there is a ‘real-world’ value and a `risk-neutral’ value, but we are suppressing that in a notational abuse)
In addition, given that there is a jump at time t, the jump size (actually the change in ) is denoted by . This is a random variate with support on . It is drawn independently from some jump density (real-world) or (risk-neutral). In a brief notation for this draw: , and similarly for the risk-neutral case.
Our discussion allows or to be rather general. What are the restrictions? First, the density is subject to the condition that the integral in equation (4) below is well-defined.
Second , a requirement from “no-arbitrage” considerations is that the two densities have the same support. For example, if there is a positive probability density that the stock market can crash (i.e., jump downward) by, let’s say, -20%, then there must also be a positive risk-neutral probability for the same event. However, the magnitudes can be, and usually are, quite different. Indeed, because investors are risk-averse, the risk-neutral probability of a broad-market crash is typically much higher than a plausible real-world probability estimate. In older literature, these risk-neutral probabilities are more aptly named ‘util-probs’, for ‘utility-adjusted probabilities’. See the mentioned book (Ch. 16, “Fear of Jumps”) for more on that utility connection.
Let’s note a special case. Namely, when both jump-size densities are normal densities, the resulting model is the Bates ’96 model, which blends the Heston model and Merton’s jump-diffusion model.
Another important point is that the constant ‘b’ in (3) has now changed under both interpretations: real-world or risk-neutral. That is, b is still a constant, but it’s numerical value is now generally going to be different from what it was under the pure Heston model. Under the real-world interpretation of the process, suppose you fix a parameterized density . Then, you go and estimate all the parameters by Maximum Likelihood Estimation. The estimate for b will change (even on the same observations) because the model has changed.
Under the risk-neutral interpretation of the process, we still need to enforce that is a martingale. Taking the time-t expectation of the first line of (3) yields the martingale condition:
Note that I have introduced the Fourier transform of the (risk-neutral) jump-size density: . In a similar notation, denotes the transform of the real-world density.
Finally, using these notations, what is the modification of (2) that incorporates jumps? It turns out to be quite simple: just insert a relatively simple factor into the integrand:
In the risk-neutral case, you keep in (5). Then the additional term in accounts for the modification of given in equation (4).
For the special case of the Bates model, we can write the jump term in (3) as
where is a draw from an independent standard normal distribution. Thus the (log) jump-sizes are normally distributed with mean and variance . In that case (5) uses
Note that the values of will general differ between the real-world and risk-neutral cases, although my notation does not explicitly indicate this.
As it turns out, the modification here to add price jumps to the risk-neutral model is exactly the same as the modification discussed in J. Gatheral’s book “The Volatility Surface” (pg. 66) for the characteristic function that prices vanilla options. This is not too surprising — but deserves to be shown carefully: see the next post for that.