 Finance - Maple Programming Help

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

Finance

 PathGenerator
 create new path generator for a stochastic process

 Calling Sequence PathGenerator(process, timegrid) PathGenerator(process, timeinterval, timesteps)

Parameters

 process - stochastic process; process for the path to be generated timegrid - list, Vector, or time grid; time grid timeinterval - range; length of simulation interval timesteps - positive integer; number of time steps

Description

 • The PathGenerator command creates a new path generator for the specified stochastic process. This command returns a module that can be used to simulate the underlying stochastic process as if it were a Maple procedure. Assume, for example, that the module returned by the PathGenerator command is assigned to the name $T$. Then for any positive integer $n$, $T\left(n\right)$ will return $n$ replications of the sample path of the underlying process.
 • In the one-dimensional case, the value returned by $T$ is a matrix of size $m×n$, where $m$ is the requested number of replications of the sample path (see the replications option) and $n$ is the number of points in the time grid (the number of time steps plus one). Each row of this matrix is a single realization of the sample path of the stochastic process of interest. In the multi-dimensional case, the value returned by $T$ is a matrix of size $m×d×n$, where $m$ and $n$ are the same as in the one-dimensional case, and $d$ is the dimension of the stochastic process to be simulated, which is either given explicitly or deduced from the dimension of the underlying stochastic process.
 • The module returned by the PathGenerator command can be passed to other commands such as Finance[SamplePath] or Finance[SampleValues] to simulate the underlying stochastic process.
 • The PathGenerator(process, timegrid) calling sequence creates a path generator for process based on the specified time grid.
 • The PathGenerator(process, timeinterval, timesteps) calling sequence constructs a path generator for process based on a uniform time grid on the interval timeinterval using the specified number of time steps. The parameter timeinterval must be of type range $\mathrm{t0}..\mathrm{t1}$, where $\mathrm{t0}$ and $\mathrm{t1}$ are non-negative real constants such that $\mathrm{t0}<\mathrm{t1}$. Note that if $0<\mathrm{t0}$, the value at $\mathrm{t0}$ will be simulated using a single step of the default discretization method and hence can suffer from a significant discretization bias. Increasing the number of time steps will refine the grid between $\mathrm{t0}$ and $\mathrm{t1}$, but will have no effect on the value at $\mathrm{t0}$. To reduce the bias, use a time interval of the form $0..\mathrm{t1}$.

Examples

 > with(Finance):
 > W1 := WienerProcess():
 > P1 := PathGenerator(W1, 0..3):
 > P1(5);
 $\left[\begin{array}{cc}{0.}& {-0.830244583256831}\\ {0.}& {1.35822868989733}\\ {0.}& {-0.866868176114839}\\ {0.}& {-0.850525106055196}\\ {0.}& {0.411930790747278}\end{array}\right]$ (1)
 > P2 := PathGenerator(W1, 0..3, 10);
 ${\mathrm{P2}}{:=}{\mathbf{module}}\left({}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{option}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{implementation}}{=}{"External/0x7fdfeb080850"}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{export}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{process}}{,}{\mathrm{timegrid}}{,}{\mathrm{ModuleApply}}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end module}}$ (2)
 > P2(5);
  (3)

Here is a path generator based on a non-homogeneous grid.

 > G := <0, 0.3, 0.5, 0.7, 1.0, seq(1.+i/10, i = 1..10)>;
  (4)
 > P3 := PathGenerator(W1, G);
 ${\mathrm{P3}}{:=}{\mathbf{module}}\left({}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{option}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{implementation}}{=}{"External/0x7fdfeab73428"}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{export}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{process}}{,}{\mathrm{timegrid}}{,}{\mathrm{ModuleApply}}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end module}}$ (5)
 > PathPlot(P3(20), thickness = 2, axes = BOXED); This is simulating a multi-dimensional process.

 > W2 := WienerProcess(<<1.0, 0.5>|<0.5, 1.0>>);
 ${\mathrm{W2}}{≔}{\mathrm{_W0}}$ (6)
 > P4 := PathGenerator(W2, 0..3, 3);
 ${\mathrm{P4}}{:=}{\mathbf{module}}\left({}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{option}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{implementation}}{=}{"External/0x7fdfebdff9a0"}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{export}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{process}}{,}{\mathrm{timegrid}}{,}{\mathrm{ModuleApply}}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end module}}$ (7)
 > P4(5);
  (8)

This is creating a path generator for a Vector of one-dimensional processes.

 > W3 := PoissonProcess(.5):
 > P5 := PathGenerator([W1, W3], 0..3, 20);
 ${\mathrm{P5}}{:=}{\mathbf{module}}\left({}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{option}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{implementation}}{=}{"External/0x7fdfebe95d58"}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{export}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{process}}{,}{\mathrm{timegrid}}{,}{\mathrm{ModuleApply}}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end module}}$ (9)
 > P5(1);
  (10)

Compatibility

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