EM Processes#

The aleatory.processes module also provides functionality for continuous-time stochastic processes which cannot be expressed in analytical form. These processes are simulated via the Euler-Maruyama method.

class aleatory.processes.OUProcess(theta=1.0, sigma=0.5, initial=1.0, T=1.0, rng=None)[source]#

Ornstein–Uhlenbeck Process

An Ornstein–Uhlenbeck process $$X = \{X : t \geq 0\}$$ is characterised by the following Stochastic Differential Equation

$dX_t = -\theta X_t dt + \sigma X_t dW_t, \ \ \ \ \forall t\in (0,T],$

with initial condition $$X_0 = x_0$$, where

• $$\theta$$ is the speed of reversion

• $$\sigma>0$$ is the instantaneous volatility

• $$W_t$$ is a standard Brownian Motion.

Each $$X_t$$ follows a normal distribution.

Parameters:
• theta (float) – the parameter $$\theta$$ in the above SDE

• sigma (float) – the parameter $$\sigma>0$$ in the above SDE

• initial (float) – the initial condition $$x_0$$ in the above SDE

• T (float) – the right hand endpoint of the time interval $$[0,T]$$ for the process

• rng (numpy.random.Generator) – a custom random number generator

property T#

End time of the process.

draw(n, N, marginal=True, envelope=False, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Visualisation shows - times versus process values as lines - the expectation of the process across time - histogram showing the empirical marginal distribution $$X_T$$ - probability density function of the marginal distribution $$X_T$$ - envelope of confidence intervals

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

• marginal – bool, default: True

• envelope – bool, default: False

Returns:

plot(n, N, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Simple plot of times versus process values as lines and/or markers.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

simulate(n, N)#

Simulate paths/trajectories from the instanced stochastic process.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

list with N paths (each one is a np.array of size n)

class aleatory.processes.Vasicek(theta=1.0, mu=3.0, sigma=0.5, initial=1.0, T=1.0, rng=None)[source]#

Vasicek Process

A Vasicek process $$X = \{X : t \geq 0\}$$ is characterised by the following Stochastic Differential Equation

$dX_t = \theta(\mu - X_t) dt + \sigma X_t dW_t, \ \ \ \ \forall t\in (0,T],$

with initial condition $$X_0 = x_0$$, where

• $$\theta$$ is the speed of reversion

• $$\mu$$ is the long term mean value.

• $$\sigma>0$$ is the instantaneous volatility

• $$W_t$$ is a standard Brownian Motion.

Each $$X_t$$ follows a normal distribution.

Parameters:
• theta (float) – the parameter $$\theta$$ in the above SDE

• mu (float) – the parameter $$\mu$$ in the above SDE

• sigma (float) – the parameter $$\sigma>0$$ in the above SDE

• initial (float) – the initial condition $$x_0$$ in the above SDE

• T (float) – the right hand endpoint of the time interval $$[0,T]$$ for the process

• rng (numpy.random.Generator) – a custom random number generator

property T#

End time of the process.

draw(n, N, marginal=True, envelope=False, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Visualisation shows - times versus process values as lines - the expectation of the process across time - histogram showing the empirical marginal distribution $$X_T$$ - probability density function of the marginal distribution $$X_T$$ - envelope of confidence intervals

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

• marginal – bool, default: True

• envelope – bool, default: False

Returns:

plot(n, N, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Simple plot of times versus process values as lines and/or markers.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

simulate(n, N)#

Simulate paths/trajectories from the instanced stochastic process.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

list with N paths (each one is a np.array of size n)

class aleatory.processes.CIRProcess(theta=1.0, mu=2.0, sigma=0.5, initial=5.0, T=1.0, rng=None)[source]#

Cox–Ingersoll–Ross Process

A Cox–Ingersoll–Ross process $$X = \{X : t \geq 0\}$$ is characterised by the following Stochastic Differential Equation

$dX_t = \theta(\mu - X_t) dt + \sigma \sqrt{X_t} dW_t, \ \ \ \ \forall t\in (0,T],$

with initial condition $$X_0 = x_0$$, where

• $$\theta$$ is the rate of mean reversion

• $$\mu$$ is the long term mean value.

• $$\sigma>0$$ is the instantaneous volatility

• $$W_t$$ is a standard Brownian Motion.

Each $$X_t$$ follows a non-central chi-square distribution.

Parameters:
• theta (float) – the parameter $$\theta$$ in the above SDE

• mu (float) – the parameter $$\mu$$ in the above SDE

• sigma (float) – the parameter $$\sigma>0$$ in the above SDE

• initial (float) – the initial condition $$x_0$$ in the above SDE

• T (float) – the right hand endpoint of the time interval $$[0,T]$$ for the process

• rng (numpy.random.Generator) – a custom random number generator

property T#

End time of the process.

draw(n, N, marginal=True, envelope=False, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Visualisation shows - times versus process values as lines - the expectation of the process across time - histogram showing the empirical marginal distribution $$X_T$$ - probability density function of the marginal distribution $$X_T$$ - envelope of confidence intervals

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

• marginal – bool, default: True

• envelope – bool, default: False

Returns:

plot(n, N, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Simple plot of times versus process values as lines and/or markers.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

simulate(n, N)#

Simulate paths/trajectories from the instanced stochastic process.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

list with N paths (each one is a np.array of size n)

class aleatory.processes.CEVProcess(gamma=1.5, mu=0.5, sigma=0.1, initial=1.0, T=1.0, rng=None)[source]#

CEV or constant elasticity of variance process

A CEV process $$X = \{X : t \geq 0\}$$ is characterised by the following Stochastic Differential Equation

$dX_t = \mu X_t dt + \sigma X_t^{\gamma} dW_t, \ \ \ \ \forall t\in (0,T],$

with initial condition $$X_0 = x_0$$, where

• $$\mu$$ is the drift

• $$\sigma>0$$ is the scale of the volatility

• $$\gamma\geq 0$$ is the elasticity term

• $$W_t$$ is a standard Brownian Motion.

Parameters:
• mu (float) – the parameter $$\mu$$ in the above SDE

• sigma (float) – the parameter $$\sigma>0$$ in the above SDE

• gamma (float) – the parameter $$\gamma$$ in the above SDE

• initial (float) – the initial condition $$x_0$$ in the above SDE

• T (float) – the right hand endpoint of the time interval $$[0,T]$$ for the process

• rng (numpy.random.Generator) – a custom random number generator

property T#

End time of the process.

draw(n, N, marginal=True, envelope=False, **fig_kw)[source]#

Simulates and plots paths/trajectories from the instanced stochastic process. Visualisation shows - times versus process values as lines - the expectation of the process across time - histogram showing the empirical marginal distribution $$X_T$$ - probability density function of the marginal distribution $$X_T$$ - envelope of confidence intervals

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

• marginal – bool, default: True

• envelope – bool, default: False

Returns:

plot(n, N, **fig_kw)#

Simulates and plots paths/trajectories from the instanced stochastic process. Simple plot of times versus process values as lines and/or markers.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

simulate(n, N)#

Simulate paths/trajectories from the instanced stochastic process.

Parameters:
• n – number of steps in each path

• N – number of paths to simulate

Returns:

list with N paths (each one is a np.array of size n)