The Variance Gamma Process
The Variance Gamma Process
f[θ_,σ_,x_,y_]:=σxSqrt[y]+θy
Manipulate[BlockRandom[SeedRandom[r];Module[{n=1000,dt,l1,l2},dt=N[1/n];l1=RandomReal[NormalDistribution[0,1],{n}];l2=k*RandomReal[GammaDistribution[dt/k,1],{n}];ListPlot[Accumulate[MapThread[f[θ,σ,##]&,{l1,l2}]],DataRange{0,1},PlotRange{{0,1},{-b,b}},ImageSize{400,250},ImagePadding25]]],{{θ,0.5,"drift"},0,1,0.001},{{σ,0.1,"volatility"},0,1,0.001},{{k,0.5,"gamma variance"},0.001,1,0.001},{{b,1,"range of values"},0.1,4,0.001},{{r,0,""},Button["new path",r=RandomInteger[2^64-1]]&},SaveDefinitionsTrue,AutorunSequencing{1,2,3,4}]
-308
10
This Demonstration shows the path of a variance gamma process, a pure jump process of finite variation, but with infinitely many jumps. This process has been used in option pricing in place of Brownian motion, generally producing answers that agree better with empirical evidence. The process is constructed by means of "Brownian subordination", that is, by evaluating Brownian motion with drift at random times given by a gamma process. There are three basic controls: the volatility and drift of the Brownian motion and the variance of the gamma process. These parameters allow you to control the skewness and kurtosis of the return distribution in addition to mean and variance, as is the case with models based on Brownian motion.
The last control, "range of values", makes it possible to zoom into the process to see the jumps when they are too small to be visible in the default view or when parts of the trajectory lie outside the displayed area.