The Wiener process

The transition density of the diffusion process is :

$$P(x|x') = \exp\left[-\frac12\frac{(x-x')^2}{D(t-t')}\right] $$

Recall that this process was first constructed by Bachelier in the context of market price fluctuations and then rederived by Einstein (1905) as a model for Brownian motion. In the stochastic process literature this process is known as the Wiener process.

The defining features of this process are that it is

  • Markov
  • Gaussian
  • has independent increments

These properties make it very simple to generate sample paths. Increments can be chosen independently from a Gaussian distribution and then added together, cumulatively, to generate the path.

The code below generates sample paths of the diffusion process, sampled with time increments $\Delta t = 1$ and diffusion coefficient $D = 1$. The increments, then, are standard normal variates.


In [3]:
import numpy as np
import scipy as sp
import scipy.signal as sig
import matplotlib.pyplot as plt

In [28]:
N = 128    # number of paths
Nt = 1024  # T = Nt * dt is the duration of each path

for i in range(N):
    dx = np.random.randn(Nt)   # independent increments
    x = np.cumsum(dx)          # cumulative sum
    t = np.arange(Nt)          # times 
    plt.plot(t, x)