SSJ  3.3.1 Stochastic Simulation in Java
Package umontreal.ssj.stochprocess

Stochastic Processes. More...

## Classes

class  BrownianMotion
This class represents a Brownian motion process $$\{X(t) : t \geq0 \}$$, sampled at times $$0 = t_0 < t_1 < \cdots< t_d$$. More...

class  BrownianMotionBridge
Represents a Brownian motion process $$\{X(t) : t \geq0 \}$$ sampled using the bridge sampling technique (see for example [69] ). More...

class  BrownianMotionPCA
A Brownian motion process $$\{X(t) : t \geq0 \}$$ sampled using the principal component decomposition (PCA) [69], [95], [153] . More...

class  BrownianMotionPCAEqualSteps
Same as BrownianMotionPCA, but uses a trick to speed up the calculation when the time steps are equidistant. More...

class  CIRProcess
This class represents a CIR (Cox, Ingersoll, Ross) process [36]  $$\{X(t) : t \geq0 \}$$, sampled at times $$0 = t_0 < t_1 < \cdots< t_d$$. More...

class  CIRProcessEuler
This class represents a CIR process as in CIRProcess, but the process is generated using the simple Euler scheme. More...

class  GammaProcess
This class represents a gamma process [171]  (page 82) $$\{ S(t) = G(t; \mu, \nu) : t \geq0 \}$$ with mean parameter $$\mu$$ and variance parameter $$\nu$$. More...

class  GammaProcessBridge
This class represents a gamma process $$\{ S(t) = G(t; \mu, \nu) : t \geq0 \}$$ with mean parameter $$\mu$$ and variance parameter $$\nu$$, sampled using the gamma bridge method (see for example [208], [11] ). More...

class  GammaProcessPCA
Represents a gamma process sampled using the principal component analysis (PCA). More...

class  GammaProcessPCABridge
Same as GammaProcessPCA, but the generated uniforms correspond to a bridge transformation of the BrownianMotionPCA instead of a sequential transformation. More...

class  GammaProcessPCASymmetricalBridge
Same as GammaProcessPCABridge, but uses the fast inversion method for the symmetrical beta distribution, proposed by L’Ecuyer and Simard [134] , to accelerate the generation of the beta random variables. More...

class  GammaProcessSymmetricalBridge
This class differs from GammaProcessBridge only in that it requires the number of interval of the path to be a power of 2 and of equal size. More...

class  GeometricBrownianMotion
Represents a geometric Brownian motion (GBM) process $$\{S(t), t\ge0\}$$, which evolves according to the stochastic differential equation. More...

class  GeometricLevyProcess
Abstract class used as a parent class for the exponentiation of a Lévy process $$X(t)$$:

$S(t) = S(0) \exp\left(X(t) + (r - \omega_{RN}) t\right).$

The interest rate is denoted $$r$$ and is referred to as muGeom in the class below. More...

class  GeometricNormalInverseGaussianProcess
The geometric normal inverse gaussian (GNIG) process is the exponentiation of a NormalInverseGaussianProcess :

$S(t) = S_0 \exp\left[ (r-\omega_{RN})t + \mbox{NIG}(t;\alpha,\beta,\mu,\delta) \right],$

where $$r$$ is the interest rate. More...

class  GeometricVarianceGammaProcess
This class represents a geometric variance gamma process $$S(t)$$ (see [171]  (page 86)). More...

class  InverseGaussianProcess
The inverse Gaussian process is a non-decreasing process where the increments are additive and are given by the inverse gaussian distribution, umontreal.ssj.probdist.InverseGaussianDist. More...

class  InverseGaussianProcessBridge
Samples the path by bridge sampling: first finding the process value at the final time and then the middle time, etc. More...

class  InverseGaussianProcessMSH
Uses a faster generating method (MSH) [180]  than the simple inversion of the distribution function used by InverseGaussianProcess. More...

class  InverseGaussianProcessPCA
Approximates a principal component analysis (PCA) decomposition of the InverseGaussianProcess. More...

class  MultivariateBrownianMotion
This class represents a multivariate Brownian motion process $$\{\mathbf{X}(t) = (X_1(t),…, X_c(t)), t \geq0 \}$$, sampled at times $$0 = t_0 < t_1 < \cdots< t_d$$. More...

class  MultivariateBrownianMotionBridge
A multivariate Brownian motion process $$\{\mathbf{X}(t) : t \geq0 \}$$ sampled via bridge sampling. More...

class  MultivariateBrownianMotionPCA
A multivariate Brownian motion process $$\{\mathbf{X}(t) : t \geq0 \}$$ sampled entirely using the principal component decomposition (PCA), as explained in [69] , page 92. More...

class  MultivariateBrownianMotionPCABigSigma
A multivariate Brownian motion process $$\{\mathbf{X}(t) : t \geq0 \}$$ sampled entirely using the principal component decomposition (PCA). More...

class  MultivariateGeometricBrownianMotion
This class is a multivariate version of GeometricBrownianMotion. More...

class  MultivariateStochasticProcess
This class is a multivariate version of StochasticProcess where the process evolves in the $$c$$-dimensional real space. More...

class  NormalInverseGaussianProcess
This class represents a normal inverse gaussian process (NIG). More...

class  OrnsteinUhlenbeckProcess
This class represents an Ornstein-Uhlenbeck process $$\{X(t) : t \geq0 \}$$, sampled at times $$0 = t_0 < t_1 < \cdots< t_d$$. More...

class  OrnsteinUhlenbeckProcessEuler
This class represents an Ornstein-Uhlenbeck process as in OrnsteinUhlenbeckProcess, but the process is generated using the simple Euler scheme. More...

class  StochasticProcess
Abstract base class for a stochastic process $$\{X(t) : t \geq 0 \}$$ sampled (or observed) at a finite number of time points, $$0 = t_0 < t_1 < \cdots< t_d$$. More...

class  VarianceGammaProcess
This class represents a variance gamma (VG) process $$\{S(t) = X(t; \theta, \sigma, \nu) : t \geq0\}$$. More...

class  VarianceGammaProcessAlternate
This is a VarianceGammaProcess for which the successive random numbers are used in a different order to generate the sample path. More...

class  VarianceGammaProcessDiff
This class represents a variance gamma (VG) process $$\{S(t) = X(t; \theta, \sigma, \nu) : t \geq0\}$$. More...

class  VarianceGammaProcessDiffPCA
Same as VarianceGammaProcessDiff, but the two inner GammaProcess ’es are of PCA type. More...

class  VarianceGammaProcessDiffPCABridge
Same as VarianceGammaProcessDiff, but the two inner GammaProcess ’es are of the type PCABridge. More...

class  VarianceGammaProcessDiffPCASymmetricalBridge
Same as VarianceGammaProcessDiff, but the two inner GammaProcess ’es are of the PCASymmetricalBridge type. More...

## Detailed Description

Stochastic Processes.

This package provides classes to define stochastic processes $$\{X(t), t\ge0\}$$ in the real space, and to simulate their sample paths at a finite number of observation times $$t_0 \le t_1 \le\cdots\le t_d$$, i.e., skeletons of their sample paths. The generated path skeleton is a vector $$(X(t_0),X(t_1),\dots,X(t_d)) \in \mathbb{R}$$.

The observation times $$t_0, \dots, t_d$$ can be specified (and can be changed) after defining the process, via the method setObservationTimes. In some cases, the observation times can also be specified one by one when generating the value at the next observation time. This may be convenient or even necessary if the observation times are random, for example. The random stream used to generate the sample path can also be set or changed, using setStream, and it can also be passed each time to the method that generates the paths.

The available processes include the Brownian motion (or Gaussian process), Gamma Process, Inverse Gaussian, versions with a random clock (or subordinate process) such as the variance-gamma and normal inverse Gaussian processes,
exponential (or geometric) versions of all of these, and more.
Many of those processes can be simulated in different ways, such as standard sequential generation of the increments (which are independent in the caes of L\'evy processes), or using a bridge sampling strategy as in BrownianMotionBridge, or by using a principal component decomposition as in BrownianMotionPCA. The choice of simulation strategy can have a significant impact on the variance when combined with randomized quasi-Monte Carlo (RQMC).

There are also multivariate versions in which the state is a $$c$$-dimensional vector, $$\mathbb{X}(t) \in \mathbb{R}$$. At each time step, a new state vector is generated.

Remarks
: In the future, it might be useful to have a common interface implemented by StochasticProcess and umontreal.ssj.markovchainrqmc.MarkovChainDouble.