brownianMotion method

List<double> brownianMotion(
  1. int steps, {
  2. double start = 100,
  3. double mu = 0.0001,
  4. double sigma = 0.02,
  5. double dt = 1,
})

Generates Brownian motion (geometric random walk).

Implementation

List<double> brownianMotion(
  int steps, {
  double start = 100,
  double mu = 0.0001,
  double sigma = 0.02,
  double dt = 1,
}) {
  final values = <double>[start];
  for (int i = 1; i < steps; i++) {
    final drift = (mu - 0.5 * sigma * sigma) * dt;
    final diffusion = sigma * math.sqrt(dt) * normal(0, 1);
    values.add(values.last * math.exp(drift + diffusion));
  }
  return values;
}