Will Beatty

Notes on software, mathematics, and markets.

A practical note on geometric Brownian motion

From continuously compounded returns to the closed-form price process, with the assumptions kept in view.

A common first model for an asset price is geometric Brownian motion. It is useful not because markets obey it perfectly, but because every assumption is visible and the resulting process is tractable.

Begin with returns, not prices

Let StS_t denote the asset price at time tt. The model describes its proportional change:

dStSt=μdt+σdWt\frac{dS_t}{S_t} = \mu\,dt + \sigma\,dW_t

Here, μ\mu is the drift, σ\sigma is volatility, and WtW_t is a standard Brownian motion. The noise scales with the current price, which keeps the modeled price positive.

The important distinction is that μ\mu is the expected instantaneous return—not the expected continuously compounded growth rate. Itô's lemma supplies the correction.

Move into log space

Apply Itô's lemma to f(St)=logStf(S_t) = \log S_t:

dlogSt=(μσ22)dt+σdWtd\log S_t = \left(\mu - \frac{\sigma^2}{2}\right)dt + \sigma\,dW_t

The term σ2/2\sigma^2/2 is the volatility drag. Integrating from 00 to TT gives

log(STS0)=(μσ22)T+σWT.\log\left(\frac{S_T}{S_0}\right) = \left(\mu - \frac{\sigma^2}{2}\right)T + \sigma W_T.

Since WTN(0,T)W_T \sim \mathcal{N}(0,T), log returns are normally distributed under the model. Exponentiating produces the closed-form process:

ST=S0exp[(μσ22)T+σWT].S_T = S_0 \exp\left[ \left(\mu - \frac{\sigma^2}{2}\right)T + \sigma W_T \right].

A quick expectation check

The moment-generating function of a normal random variable tells us that E[eσWT]=eσ2T/2\mathbb{E}[e^{\sigma W_T}] = e^{\sigma^2T/2}. That term precisely cancels the Itô correction:

E[ST]=S0eμT\boxed{\mathbb{E}[S_T] = S_0 e^{\mu T}}

This is a useful implementation check. If a simulation with many paths does not approach S0eμTS_0e^{\mu T}, inspect the time scaling of the random shocks and confirm that each increment uses Δt\sqrt{\Delta t}.

One simulated path

The closed form above is exact for continuous time. In code we step through discrete intervals. The figure below draws a single seeded path and lets you replay it—useful for checking that the path stays positive and that the terminal value is in a plausible range for the chosen μ\mu and σ\sigma.

Simulated GBM path
t = 0.000 · Sₜ = 100.0S₀=100, μ=0.08, σ=0.2, T=1
One path with daily steps over one year. Play to reveal the path; scrub to inspect intermediate prices.

What the model leaves out

Real returns exhibit jumps, volatility clustering, skew, and heavy tails. Geometric Brownian motion includes none of them. Its value is as a baseline: it gives us a coherent language for separating drift from diffusion, a closed-form answer to test code against, and a clear list of assumptions to relax next.