Arithmetic Brownian Motion

Table of Contents

1. Summary

Arithmetic Brownian Motion (ABM) — Louis Bachelier's original 1900 model of stock price movement, predating Geometric Brownian Motion by 73 years — models a price that moves additively: the absolute change per tick, not the percentage change, is normally distributed. ores::analytics::quant::service::arithmetic_gaussian_mixture_model_process implements it as the direct counterpart to gaussian_mixture_model_process, generalised the same way to a K-component Gaussian mixture rather than a single Normal shock.

2. Layperson's mental model

Same idea as a bank balance you top up or draw down by a random amount each day — never a random percentage, always a random flat amount, regardless of how big the balance already is. A withdrawal of 50 is exactly as likely whether the balance is 100 or 100,000. This is the whole difference from Geometric Brownian Motion's "random percentage" framing — and it's also why, unlike GBM, this process has no floor: enough unlucky flat withdrawals in a row and the balance genuinely goes negative.

// Simplified for clarity: the real code guards sd == 0 (a degenerate
// mixture component) separately, since std::normal_distribution asserts
// on a zero stddev.
const double increment = std::normal_distribution<double>(mean, sd)(rng_);
price_ += increment;      // a random flat amount, added

3. Detail

3.1. The SDE and its discretisation

ABM follows:

\begin{equation} dS = \mu\, dt + \sigma\, dW \end{equation}

Unlike GBM, neither the drift nor the diffusion scales with the current level \(S\) — a wiggle of a given size is exactly as likely whether \(S\) is currently 10 or 10,000. This SDE is already exact (no Ito correction is needed, since \(S\) itself, not \(\log S\), is the variable of interest), so the per-tick update arithmetic_gaussian_mixture_model_process implements is a direct discretisation:

\begin{equation} S_{t+1} = S_t + \text{increment}, \quad \text{increment} \sim N(\mu\, dt,\, \sigma^2 dt) \end{equation}

generalised the same way as gaussian_mixture_model_process to a K-component Gaussian mixture for the increment, rather than a single Normal draw.

3.2. The trade-off: can go negative

Because the increment is unbounded in both directions with no state-dependence, an ABM path can, given enough time or a large enough downward shock, go negative — a property that makes it a poor model for a traded asset price (which cannot be negative in the ordinary case) but an entirely reasonable one for a quantity that genuinely can go negative, or where the modelling context does not require strict positivity — which is exactly why this codebase offers both processes rather than only GBM: the choice between them is a modelling decision about the quantity being generated, not a strictly-better-or-worse ranking of the two processes.

3.3. Where it is selectable

An FX spot generation config reaches this process by setting process_type to "arithmetic". The column's check constraint admits that string, and process_factory::make_process in ores.analytics.quant builds arithmetic_gaussian_mixture_model_process for it from the config's gmm_component means, standard deviations and weights. The mixture shape is the same one the geometric engine uses, applied to absolute increments.

No interest rate curve reaches it. The yield_curve_process_type catalogue carries no arithmetic row and the curve mapping layer's expected parameter set lists none, so the additive model is an FX and equity price choice only.

The process still refuses a starting price of zero or less, even though the path it produces can cross zero later. Both mixture processes guard the initial value identically, and that guard sits in validate_process_parameters, which the factory and the Qt client share.

4. See also

4.1. Further reading

  • Bachelier, L. (1900). "Théorie de la spéculation." Annales Scientifiques de l'École Normale Supérieure, 3(17), 21-86. The original application of Brownian motion to option pricing, using the additive model this document describes — five years before Einstein's physics paper on Brownian motion, and predating a rigorous mathematical construction of the process itself by over two decades.
  • Sullivan, E. J., & Weithers, T. M. (1991). "Louis Bachelier: The Father of Modern Option Pricing Theory." The Journal of Economic Education, 22(2), 165-171. Historical context on why Bachelier's largely unrecognised 1900 thesis anticipated much of modern quantitative finance by decades.
  • Wikipedia: Brownian motion model of financial markets.

Emacs 29.3 (Org mode 9.6.15)