# How to plot two random functions (Together)

I have ploted the next following jump diffusion model using Mathematica 10

$$X_t=X_0 e^{\sigma W_t+(v-\sigma /2)t}(1+J_1)\cdots(1+J_{N_t})$$ namely, a Geometric Brownian motion with compound Poisson jumps.

For this I have used the next code:

Pp =
TransformedProcess[g[t] E^(j[t]),
{g \[Distributed] GeometricBrownianMotionProcess[v, σ, 1],
j \[Distributed] CompoundPoissonProcess[λ, NormalDistribution[0, 0.85]]},
t];

data = RandomFunction[Pp /. {v -> 0.5, σ -> 0.5, λ -> 2.1, μ -> 0.92, δ -> 0.425,
r -> 1}, {0, 3, 0.001}, 3];

ListLinePlot[data, PlotRange -> All]


The thing is that, together with the resultant graphic, I would like to plot the generating Poisson Process. Any idea? Thanks!

• What does "plot the process" mean? Commented Jun 22, 2015 at 16:04
• Plot the Poisson Stochastic Process, the function. Commented Jun 22, 2015 at 16:31

I'm not quite following your question, but are you possibly looking for this?

Pp = TransformedProcess[{g[t] E^(j[t]), j[t]},
{g \[Distributed] GeometricBrownianMotionProcess[v, \[Sigma], 1],
j \[Distributed] CompoundPoissonProcess[\[Lambda], NormalDistribution[0, 0.85]]}, t];

data = RandomFunction[Pp /.
{v -> 0.5, \[Sigma] -> 0.5, \[Lambda] -> 2.1,
\[Mu] -> 0.92, \[Delta] -> 0.425, r -> 1},
{0, 3, 0.001}];

ListLinePlot[data, PlotRange -> All]


EDIT:

"Improved" answer. This is really a hack: it splits the TemporalData object with two sets of data into two time-value arrays, and in addition to passing both arrays as-is to ListLinePlot, counts amount of value transitions before every point on the second of these time-value arrays. Not very pretty, but works.

Pp = TransformedProcess[{g[t] E^(j[t]), j[t]},
{g \[Distributed] GeometricBrownianMotionProcess[v, \[Sigma], 1],
j \[Distributed] CompoundPoissonProcess[\[Lambda], NormalDistribution[0, 0.85]]}, t];

data = RandomFunction[Pp /.
{v -> 0.5, \[Sigma] -> 0.5, \[Lambda] -> 2.1,
\[Mu] -> 0.92, \[Delta] -> 0.425, r -> 1},
{0, 3, 0.001}];

processeddata = {#1, #2, {#2[[1]], #1} & @@@
FoldList[{#1[[1]] + Boole[#1[[2, 2]] != #2[[2]]], #2} &, {0,
First@#2}, Rest@#2]} & @@
Table[{#1, #2[[n]]} & @@@ First@data["Paths"], {n, 2}];

ListLinePlot[processeddata, PlotRange -> All]


• Hi, @kirma. It is almost this. I want to plot a function that for each jump increments one unit when the jumps in the grafic ocurr. reference.wolfram.com/language/ref/PoissonProcess.html Commented Jun 22, 2015 at 18:44
• @Edin_91 Improved the answer; sadly I don't know how to do this natively on the side of random processes. Commented Jun 22, 2015 at 19:20
• Yes, that it is exactly what I need. Could you provide me the code to plot the Poisson Process and Compund Process together with the Geometric Brownian Motion? (I mean to combine your both answer) Commented Jun 22, 2015 at 19:26
• If you give me points in my question will be able to point you up :) Commented Jun 22, 2015 at 19:27
• If you need any explanation don´t hesitate to ask me Commented Jun 22, 2015 at 19:27