I am trying to improve my understanding of jump processes.

As a first step, I want to simulate sample paths for the process $$dX(t) = dw(t) + dJ(t)$$ where $dw(t)$ is a Brownian motion and $dJ(t)$ is a compound Poisson process with intensity $\lambda = 5$ and $\mathcal{D} = \mathcal{N}(0,1)$. Can anyone verify that the reasoning of my Mathematica code is sound?

T = 10;
n = 1000;
dt = T/n;
lambda = 5;
dw = RandomVariate[NormalDistribution[0, Sqrt[dt]], n];
dJ = Table[
   If[RandomVariate[BernoulliDistribution[lambda dt]] == 0, 0, 
RandomVariate[NormalDistribution[]]], {i, 1, n}];
dX = dw + dJ;
BrownianJumpPath = Accumulate[Prepend[dX, 0]];
ListLinePlot[BrownianJumpPath, Frame -> True]

What you do is:

  • You simulate a Brownian path - with the correct standard deviation.
  • Then you simulate the Compound Poisson process. In each time step you sample a jump or no jump and the jump size if there was one. In each time step you draw from a Bernoulli distribution - which is to my knowledge just an approximation.

For the compound Poisson process I would follow the Algorithm 6.2 in the book by Tankov and Cont. The steps are:

  • simulate $N$ with intensity $\lambda T$ ... the number of jumps during the interval from $[0,T]$.
  • Simulate $N$ uniformly distributed uniforms (independent of $N$) uniformly distributed on $[0,T]$- the jump times.
  • Then simulate the jump sizes at each jump time and add them up at the jump time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.