Brownian motion explained: properties, simulation and quadratic variation
Brownian motion, also called a Wiener process, is a continuous random process whose increments are independent and normally distributed, with variance equal to elapsed time. It is the source of noise in many diffusion models used for pricing and risk.
We will build a finite-grid simulation, examine what it does and does not represent, and calculate quadratic variation. All figures use synthetic Gaussian draws. No historical prices are fitted.
The definition of standard Brownian motion
A standard Brownian motion starts at , has continuous paths, and satisfies two increment properties:
- For , .
- Increments over disjoint time intervals are independent.
The variance convention fixes its scale. In particular, , so its standard deviation at time is . A process has variance .
“Continuous paths” means the model has no jumps. It does not mean paths are smooth. Brownian paths are almost surely nowhere differentiable. Drawing straight lines between simulated observations is a display choice; it does not turn those connecting lines into the true continuous path.
Do not confuse independent increments with independent values. and share the increment from 0 to 1, so they are dependent. In fact, for ,
More generally, the covariance is . Independent values at each date would produce a different process with a different path structure.
Why square-root time matters
Take time in years. A one-year Brownian increment has standard deviation 1. A quarter-year increment has standard deviation . If a return model uses annualised volatility per square-root year, the quarter-year random return component has standard deviation .
For a trading-day convention of 252 days per year, its one-day scale is . The calendar convention and the model both matter. Actual market returns need not have independent increments or constant volatility, so the scaling is a consequence of this model rather than an empirical law for every asset and horizon.

The distinction between drift and noise is already visible. A deterministic drift contributes . Brownian noise contributes a random term with typical size . At very short horizons, the latter decays more slowly. This does not mean the noise is always larger on every realised interval; it compares scales across repeated draws.
Units help: if time is in years, has square-root-year units, has inverse-year units, and an annualised volatility coefficient has inverse-square-root-year units when multiplying a proportional return.
How to simulate Brownian motion in Python
On an equally spaced grid, independently draw and set
For an irregular grid, replace with each actual interval length. The starting value belongs in the output, and the cumulative sum must run along the time axis.
The following experiment checks the endpoint variance across independent paths. The output is a random-sample check, not an equality imposed by the code:
import numpy as np
rng = np.random.default_rng(20261015)
paths, steps, horizon = 20_000, 100, 1.0
increments = rng.normal(0.0, np.sqrt(horizon / steps), (paths, steps))
terminal = increments.sum(axis=1)
print(f"mean={terminal.mean():.4f}, variance={terminal.var(ddof=1):.4f}")
# mean=0.0021, variance=1.0044The downloadable package records the executed output and includes the figures at a finer grid. Use separate path and time axes when extending the example: averaging endpoints estimates a distributional moment; averaging one path through time answers a different question.

These increments generate the exact joint Brownian distribution at the chosen dates. There is no Euler approximation error in those grid values. But the simulation does not explicitly generate every point between dates. If a payoff depends on a barrier crossing between observations, checking only the grid can miss it.
Drawing more paths reduces sampling uncertainty about a grid-based calculation. Adding more observation dates changes what you can resolve within each path. These are separate operations.
Brownian motion as a scaled random walk limit
Consider a symmetric random walk with independent steps over one unit of time. Give each step size rather than 1. Its endpoint variance is then
Without the scaling, endpoint variance would grow with . With it, the distribution has a meaningful limit. A functional limit theorem, under its usual assumptions, turns the appropriately interpolated random walks into Brownian motion in distribution as processes. An endpoint central limit theorem by itself establishes only an endpoint statement.
This is useful intuition for the noise scale, but a Gaussian-increment simulation is simpler when Brownian motion itself is the target. A finite binomial walk is still discrete; it is not literally a Brownian path.
Quadratic variation: why squared noise survives
For a partition , define
On an equal grid, each increment has variance . Therefore . A centred Gaussian with variance has squared-value variance . Independence gives
The mean stays at while the variance tends to zero. Hence in mean square, and therefore in probability, on these deterministic grids. For general deterministic partitions, the variance is , bounded above by times the largest interval; the same conclusion follows as the mesh tends to zero.
This is a convergence statement about a sum. It does not say that each realised squared increment equals its interval length. A particular Gaussian increment may be tiny or large. Replacing every finite with would erase genuine variation.

The shaded band in the chart is the ensemble mean plus or minus one ensemble standard deviation, . It is not a confidence interval for an estimated parameter, and it is not a guarantee that this one path stays inside the band.
To compare time grids fairly, the figure aggregates increments from one common fine path. Generating a fresh unrelated path at every grid size would mix path-to-path variation with the effect of partition refinement.
Where ordinary calculus breaks
For a smooth function, a second-order Taylor expansion contains . In ordinary calculus with a smooth input, squared increments vanish when accumulated over an increasingly fine partition. For Brownian input, their sum tends to elapsed time.
That surviving second-order term produces the Itô correction. The notation is a useful mnemonic for this result. It is not an algebraic identity between infinitesimal random variables.
For example, ordinary chain-rule reasoning would suggest . The correct Itô expression is
Taking expectations gives , which matches the known Gaussian variance. Omitting would incorrectly predict a zero expected square.
What Brownian motion does not model by itself
Gaussian independent increments also exclude jumps, volatility clustering and many forms of serial dependence. Brownian motion remains useful as a building block inside richer models, but choosing the driver does not establish that the whole model fits a particular asset.
For several assets, independent Brownian drivers imply zero instantaneous correlation. Correlated drivers require a valid positive-semidefinite covariance structure; copying the same noise into every asset instead gives perfect correlation. A factorisation or explicit factor construction can impose the intended dependence.
A useful checkpoint
Suppose and you use 200 equal intervals. Each increment must have variance and standard deviation . Using standard deviation would make the endpoint variance , one hundred times too small.
The endpoint target is mean zero and variance 2. The quadratic-variation target is also 2, but it is a different random calculation: a sum of squared increments on one path rather than the squared endpoint averaged across paths.
Being able to distinguish those quantities is a stronger simulation check than producing a plausible-looking squiggle.
Continue learning and download the experiments
Sources and further study
Go deeper with lessons, derivations and worked exercises behind this article.