Skip to content
All library documents

Simulating Jump Diffusions with a Time-Varying Poisson Rate

Article Quant Q&A · Author: MrPefister

Summary

The document asks how to simulate a price process combining geometric Brownian motion with compound Poisson jumps whose arrival intensity varies deterministically over time. It presents an SDE, a proposed interval update using Brownian increments and a product of jump multipliers, and R code that samples the number of jumps from the integrated intensity and draws normally distributed jump sizes. The author also asks why jumps are modeled multiplicatively rather than additively.

The post is a troubleshooting question, not a worked solution: it reports that the simulation produces unexpected results but gives no diagnosis, comparison, or validation evidence. The code leaves the jump product undefined when no jumps occur, and the stated jump-size distribution may not be appropriate for positive multiplicative factors. Readers should treat the implementation and formula as material to inspect, not as a verified recipe. The discussion highlights that jump convention, jump distribution, and correct handling of zero arrivals matter when simulating a jump-diffusion.

Key ideas

  • A time-varying Poisson intensity determines jump counts through its integral over each simulation interval.
  • The proposed process combines a geometric Brownian motion step with a product of jump factors.
  • A jump model must specify whether jump sizes are additive price changes or multiplicative returns.
  • The example is an unanswered troubleshooting question and does not establish that its formula or code is correct.

Tags

Full text
# Simulating compound Poisson jump-diffusion process with time-changed jump frequency


# Simulating compound Poisson jump-diffusion process with time-changed jump frequency












I want to simulate a jump-diffusion process with compound Poisson jumps and a deterministic jump frequency function $\lambda(t)$.

The function should follow the following stochastic differential equation:

$$dS_t = \mu S_tdt+\sigma S_tdW_t+dJ$$

While $dJ = z$ with probability $d\lambda_t$ and $dJ = 0$ with probability $1-d\lambda_t$ and $z\sim N(0,1)$

According to Glasermann's book, I can simulate directly from this expression $$S(t_i+1)=S(t_i)e^{(\mu-1/2\sigma^2)(t_{i+1}-t_i)+\sigma[W(t_{i+1})-W(t_i)]}\prod_{N(t_i)+1}^{N(t_{i+1})}J_j$$

However this is giving me weird results, so something must be wrong in either my understanding or my code.

```
S0 = 100
sigma = 0.2
mu=0.05
n = 1000
T=20
dt=1
m=dt*T
alpha=0.5
beta=m/2
KA=50
lambda <- function(t) return(KA/(1+exp(-alpha*(t-beta))))
S <- matrix(NA, nrow = n, ncol = m)
S[,1]=S0

for (i in 1:n){
  for(t in 1:(m-1)){
    nJ=rpois(1,(integrate(lambda,lower= t, upper= t+dt)$value)) # number of jumps in (t+dt-t)
    if(nJ!=0){ 
      M<-vector(mode="double", length = nJ)
      M[]=rnorm(nJ, mean = 0, sd = 1) #vector with jump size for each jump time
    }
    S[i,t+1]=S[i,t]*exp((mu-1/2*sigma^2)*(dt)+sigma*sqrt(dt)*rnorm(1, mean = 0, sd = 1))*prod(M)
  }
}
  plot(S[1,])
```

Also, I don't understand why jumps are multiplicative and not additive. I'd really appreciate your help, as I am obviously not an expert on financial mathematics.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.