Finance - Maple Programming Help

Home : Support : Online Help : Mathematics : Finance : Stochastic Processes : Finance/MertonJumpDiffusion

Finance

 MertonJumpDiffusion
 create new jump diffusion process

 Calling Sequence MertonJumpDiffusion(X, lambda, a, b) MertonJumpDiffusion(${S}_{0}$, sigma, r, d, lambda, a, b, t, S)

Parameters

 X - Black-Scholes process lambda - intensity of the lognormal Poisson process a - scale parameter of the lognormal Poisson process b - shape parameter of the lognormal Poisson process ${S}_{0}$ - non-negative constant; initial value sigma - non-negative constant, procedure, or local volatility structure; volatility r - non-negative constant, procedure, or yield term structure; risk-free rate d - non-negative constant, procedure, or yield term structure; dividend yield t - name; time variable S - name; state variable

Description

 • The MertonJumpDiffusion command creates a new jump diffusion process that is governed by the stochastic differential equation (SDE)

$\frac{\mathrm{dS}\left(t\right)}{S\left(\mathrm{t-}\right)}=\mathrm{\mu }\left(t\right)\mathrm{dt}+\mathrm{\sigma }\left(t\right)\mathrm{dW}\left(t\right)+\mathrm{dJ}\left(t\right)$

 where
 – $\mathrm{\mu }\left(t\right)$ is the drift parameter
 – $\mathrm{\sigma }\left(t\right)$ is the volatility parameter
 – $W\left(t\right)$ is the standard Wiener process
 and
 – $J\left(t\right)$ is a compound Poisson process of the form

$J\left(t\right)={\sum }_{j=1}^{N\left(t\right)}\left({Y}_{j}-1\right)$

 such that $\mathrm{log}\left({Y}_{i}\right)$ is independent and lognormally distributed with mean $a$ and standard deviation $b$.
 • Both the drift parameter mu and the volatility parameter sigma can be either constant or time-dependent. In the second case they can be specified either as an algebraic expression containing one indeterminate, or as a procedure that accepts one parameter (the time) and returns the corresponding value of the drift (volatility).
 • Similar to the drift and the volatility parameters, the intensity parameter lambda can be either constant or time-dependent. In the second case it can be specified either as an algebraic expression containing one indeterminate or as a procedure that accepts one parameter (the time).
 • Both the scale parameter a and the shape parameter b of the underlying lognormal Poisson process must be real constants.

Examples

 > with(Finance):

First consider two examples of jump diffusion with low volatility to observe the effect of jumps.

 > S0 := 100;
 ${\mathrm{S0}}{≔}{100}$ (1)
 > r := 0.05;
 ${r}{≔}{0.05}$ (2)
 > d := 0.01;
 ${d}{≔}{0.01}$ (3)
 > sigma[1] := 0.01;
 ${{\mathrm{\sigma }}}_{{1}}{≔}{0.01}$ (4)
 > a := 0.0;
 ${a}{≔}{0.}$ (5)
 > b := 0.5;
 ${b}{≔}{0.5}$ (6)
 > lambda[1] := 2.0;
 ${{\mathrm{\lambda }}}_{{1}}{≔}{2.0}$ (7)
 > lambda[2] := 0.2;
 ${{\mathrm{\lambda }}}_{{2}}{≔}{0.2}$ (8)
 > X[1] := MertonJumpDiffusion(S0, sigma[1], r, d, lambda[1], a, b):
 > PathPlot(X[1](t), t = 0..1, timesteps = 100, replications = 5, color = red..blue, thickness = 3, axes = BOXED, gridlines = true);
 > X[2] := MertonJumpDiffusion(S0, sigma[1], r, d, lambda[2], a, b):
 > PathPlot(X[2](t), t = 0..1, timesteps = 100, replications = 5, color = red..blue, thickness = 3, axes = BOXED, gridlines = true);

Now consider similar processes but with relatively high volatility.

 > sigma[2] := 0.5;
 ${{\mathrm{\sigma }}}_{{2}}{≔}{0.5}$ (9)
 > X[3] := MertonJumpDiffusion(S0, sigma[2], r, d, lambda[2], a, b):
 > PathPlot(X[3](t), t = 0..1, timesteps = 100, replications = 5, color = red..blue, thickness = 3, axes = BOXED, gridlines = true);
 > Y := BlackScholesProcess(S0, sigma[2], r, d):
 > X[4] := MertonJumpDiffusion(Y, lambda[1], 0, b):
 > PathPlot(X[4](t), t = 0..1, timesteps = 100, replications = 5, color = red..blue, thickness = 3, axes = BOXED, gridlines = true);
 > ExpectedValue(max(X[4](1)-90, 0), timesteps = 100, replications = 10^5);
 $\left[{\mathrm{value}}{=}{65.32590075}{,}{\mathrm{standarderror}}{=}{0.5535149183}\right]$ (10)
 > S[1] := SampleValues(Y(1), timesteps = 100, replications = 10^5);
  (11)
 > S[2] := SampleValues(X[4](1), timesteps = 100, replications = 10^5);
  (12)
 > P1 := Statistics[FrequencyPlot](S[1], range = 0..300, thickness = 3, color = red, bincount = 50):
 > P2 := Statistics[FrequencyPlot](S[2], range = 0..300, thickness = 3, color = blue, bincount = 50):
 > plots[display](P1, P2, axes = BOXED, gridlines = true):

Here is another way to define the same jump diffusion process.

 > J := PoissonProcess(lambda[2], Normal(a, b));
 ${J}{≔}{\mathrm{_P}}$ (13)
 > Z := t -> Y(t)*exp(J(t));
 ${Z}{≔}{t}{↦}{Y}{}\left({t}\right){\cdot }{{ⅇ}}^{{J}{}\left({t}\right)}$ (14)
 > ExpectedValue(max(Z(1)-90, 0), timesteps = 100, replications = 10^5);
 $\left[{\mathrm{value}}{=}{30.41454912}{,}{\mathrm{standarderror}}{=}{0.1764124093}\right]$ (15)

References

 Glasserman, P., Monte Carlo Methods in Financial Engineering. New York: Springer-Verlag, 2004.
 Hull, J., Options, Futures, and Other Derivatives, 5th. edition. Upper Saddle River, New Jersey: Prentice Hall, 2003.
 Merton, R.C., On the pricing when underlying stock returns are discontinuous, Journal of Financial Economics, (3) 1976, pp. 125-144.

Compatibility

 • The Finance[MertonJumpDiffusion] command was introduced in Maple 15.