Skip to content

Geometric Brownian Motion: Deriving the Workhorse of Equity Models

A working derivation of GBM, the stock price SDE, and why log-returns being normal is both useful and wrong.

1 of 12 ~14 min

If you have ever priced an option, run a Monte Carlo on equities, or opened a quant interview question, you have met geometric Brownian motion. It is the SDE that makes the Black-Scholes formula drop out so cleanly. It is also the model that everyone loves to hate. We are going to derive it properly, see what the math says, and be honest about where it breaks.

The goal here is not to memorize a formula. The goal is to understand why GBM is what it is, and why so much of quant finance is downstream of one simple observation: the log of a stock price behaves nicely.

The Stock Price Puzzle

Stock prices do not behave nicely. They go up and down, sometimes violently. They have fat tails, volatility clusters, and occasional jumps. If you look at the empirical distribution of daily returns on the S&P 500, it is roughly bell-shaped but with too much mass in the tails to be Gaussian. Anyone who has lived through 1987, 2008, or 2020 knows that “twenty-sigma” days happen more often than they should.

So why model them with a Gaussian-driven SDE? Because the math is tractable. Because for many applications (vanilla option pricing, basic risk management, hedging) the Gaussian approximation is good enough. And because when you derive a closed-form price like Black-Scholes, you get something you can fit to a market quote and use to hedge. The model is not the truth. It is a useful fiction.

Geometric Brownian motion is the most useful fiction we have. Let me show you why.

The Two Assumptions

A stochastic process StS_t is a geometric Brownian motion if it satisfies

dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t

That is the entire model. Two terms: a drift μSt\mu S_t and a diffusion σSt\sigma S_t. Both scale with the current price, which is what makes this geometric rather than arithmetic Brownian motion.

The intuition is straightforward. The drift says the stock grows on average at rate μ\mu. The diffusion says the noise is proportional to the current price. If the stock is at $100, a 1% move is $1. If the stock is at $10, a 1% move is ten cents. Both are “1%”. This scale-invariance is why we model percentage returns, not absolute changes.

The second key insight is that dWtdW_t is the increment of a standard Brownian motion. It is normally distributed with mean zero and variance dtdt. So at any instant, the change in the stock has mean μSt dt\mu S_t \, dt and standard deviation σStdt\sigma S_t \sqrt{dt}. Both are proportional to StS_t, which makes the process multiplicative — the absolute volatility scales with the level.

The SDE Form and What It Means

The equation dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t is shorthand for a stochastic differential equation. To make sense of it rigorously, you have to write the integral form:

St=S0+∫0tμSu du+∫0tσSu dWuS_t = S_0 + \int_0^t \mu S_u \, du + \int_0^t \sigma S_u \, dW_u

The first integral is ordinary calculus. The second is an Itô integral, which is a limit of sums ∑σSti(Wti+1−Wti)\sum \sigma S_{t_i} (W_{t_{i+1}} - W_{t_i}) where the function σS\sigma S is evaluated at the left endpoint of each subinterval. This convention matters. The Itô integral is a martingale (under appropriate conditions), which is why it has nice probabilistic properties.

For our purposes, the informal differential form is enough. We can manipulate dStdS_t using Itô’s lemma, treat dWt2=dtdW_t^2 = dt as a formal rule, and recover the correct answer. This is the physicist’s approach. It works because Itô’s lemma guarantees the result is rigorous if you follow the rules.

Solving the SDE: The Log Trick

To solve dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t, we apply Itô’s lemma to log⁡St\log S_t. Let f(S)=log⁡Sf(S) = \log S, so f′(S)=1/Sf'(S) = 1/S and f′′(S)=−1/S2f''(S) = -1/S^2. Itô’s lemma gives

d(log⁡St)=f′(St) dSt+12f′′(St)(dSt)2d(\log S_t) = f'(S_t) \, dS_t + \frac{1}{2} f''(S_t) (dS_t)^2

The squared differential is

(dSt)2=(μSt dt+σSt dWt)2=σ2St2(dWt)2=σ2St2 dt(dS_t)^2 = (\mu S_t \, dt + \sigma S_t \, dW_t)^2 = \sigma^2 S_t^2 (dW_t)^2 = \sigma^2 S_t^2 \, dt

because dt2=0dt^2 = 0, dt⋅dWt=0dt \cdot dW_t = 0, and dWt2=dtdW_t^2 = dt. Substituting,

d(log⁡St)=1St(μSt dt+σSt dWt)+12(−1St2)(σ2St2 dt)d(\log S_t) = \frac{1}{S_t} (\mu S_t \, dt + \sigma S_t \, dW_t) + \frac{1}{2} \left(-\frac{1}{S_t^2}\right)(\sigma^2 S_t^2 \, dt) =μ dt+σ dWt−12σ2 dt=(μ−σ22)dt+σ dWt= \mu \, dt + \sigma \, dW_t - \frac{1}{2} \sigma^2 \, dt = \left(\mu - \frac{\sigma^2}{2}\right) dt + \sigma \, dW_t

So the log of the stock price follows an arithmetic Brownian motion with constant drift μ−σ2/2\mu - \sigma^2/2 and constant diffusion σ\sigma. This is the key fact. It is why GBM is analytically tractable while arithmetic Brownian motion is not.

Integrating both sides from 0 to tt:

log⁡St−log⁡S0=(μ−σ22)t+σWt\log S_t - \log S_0 = \left(\mu - \frac{\sigma^2}{2}\right) t + \sigma W_t

Exponentiating:

St=S0exp⁡[(μ−σ22)t+σWt]S_t = S_0 \exp\left[\left(\mu - \frac{\sigma^2}{2}\right) t + \sigma W_t\right]

That is the explicit solution. Every path of GBM is a deterministic exponential of a Brownian motion with drift. The σ2/2\sigma^2/2 term inside the exponent is the famous Itô correction. It comes from the convexity of the exponential function, and it would not be there if we used ordinary calculus. Removing it is one of the most common mistakes students make when first learning this material.

The Distribution of StS_t

Since Wt∼N(0,t)W_t \sim \mathcal{N}(0, t), we can read off the distribution of log⁡St\log S_t immediately. It is Gaussian with mean log⁡S0+(μ−σ2/2)t\log S_0 + (\mu - \sigma^2/2)t and variance σ2t\sigma^2 t. Equivalently, StS_t itself is lognormal:

St∼LogNormal(log⁡S0+(μ−σ22)t,  σ2t)S_t \sim \text{LogNormal}\left(\log S_0 + \left(\mu - \frac{\sigma^2}{2}\right) t, \; \sigma^2 t\right)

The lognormal distribution is the right skew, fat-tailed distribution you get when you exponentiate a Gaussian. Its mean is

E[St]=S0eμt\mathbb{E}[S_t] = S_0 e^{\mu t}

and its variance is

Var[St]=S02e2μt(eσ2t−1)\text{Var}[S_t] = S_0^2 e^{2\mu t} \left(e^{\sigma^2 t} - 1\right)

Notice that the mean is S0eμtS_0 e^{\mu t}, not S0e(μ−σ2/2)tS_0 e^{(\mu - \sigma^2/2)t}. The Itô correction in the exponent only affects the median and the mode. The mean comes from the full distribution and includes a contribution from the upward-skewed tail.

Why the Log Trick Works

The reason StS_t has a clean closed form is that the coefficients μSt\mu S_t and σSt\sigma S_t are homogeneous of degree one in StS_t. When you apply Itô’s lemma to log⁡St\log S_t, the multiplicative StS_t factors out, and you end up with a linear SDE in log⁡St\log S_t. Linear SDEs are the only ones with explicit solutions in elementary functions.

This is a special property of GBM. Add a jump term, replace the constant μ\mu with a function μ(St)\mu(S_t), or let σ\sigma depend on StS_t in a nonlinear way, and the closed form disappears. The Black-Scholes formula works because Black and Scholes chose GBM. They did not choose it because it is realistic. They chose it because it is solvable.

The Black-Scholes Connection

Now we can derive the heart of Black-Scholes pricing. Suppose the stock follows GBM under the risk-neutral measure Q\mathbb{Q}, with drift rr (the risk-free rate) and volatility σ\sigma:

dSt=rSt dt+σSt dWtQdS_t = r S_t \, dt + \sigma S_t \, dW_t^{\mathbb{Q}}

Consider a European call option with payoff (ST−K)+(S_T - K)^+ at time TT. The risk-neutral pricing formula says

C0=e−rTEQ[(ST−K)+]C_0 = e^{-rT} \mathbb{E}^{\mathbb{Q}}\left[(S_T - K)^+\right]

Substituting the explicit form of STS_T:

ST=S0exp⁡[(r−σ22)T+σWTQ]S_T = S_0 \exp\left[\left(r - \frac{\sigma^2}{2}\right) T + \sigma W_T^{\mathbb{Q}}\right]

The expectation is a lognormal expectation, which can be computed in closed form using a change of variable. The result is the famous formula:

C0=S0Φ(d1)−Ke−rTΦ(d2)C_0 = S_0 \Phi(d_1) - K e^{-rT} \Phi(d_2)

where Φ\Phi is the standard normal CDF and

d1=log⁡(S0/K)+(r+σ2/2)TσT,d2=d1−σTd_1 = \frac{\log(S_0/K) + (r + \sigma^2/2) T}{\sigma \sqrt{T}}, \quad d_2 = d_1 - \sigma \sqrt{T}

The same machinery gives put prices, digital options, and a host of exotic variations. The whole edifice of equity derivatives pricing rests on GBM plus risk-neutral valuation.

Simulating GBM Paths

In practice, you often want to simulate GBM rather than use the closed form. The standard recipe is to simulate log-returns and exponentiate. Here is a compact implementation.

import numpy as np

def simulate_gbm(S0, mu, sigma, T, n_steps, n_paths, seed=42):
    rng = np.random.default_rng(seed)
    dt = T / n_steps
    drift = (mu - 0.5 * sigma**2) * dt
    diffusion = sigma * np.sqrt(dt)
    Z = rng.standard_normal((n_paths, n_steps))
    log_paths = np.cumsum(drift + diffusion * Z, axis=1)
    log_paths = np.concatenate([np.zeros((n_paths, 1)), log_paths], axis=1)
    return S0 * np.exp(log_paths)

The cumsum accumulates the log-returns along each path. We prepend a column of zeros so that paths[:, 0] equals S0S_0 for every simulation. This is the simplest, cleanest simulation scheme. It is exact for GBM, meaning there is no discretization error — the only randomness is the standard normal draws ZZ, and the marginal distribution of STS_T is exactly lognormal.

This exactness is again a special property of GBM. For most SDEs, you need Euler-Maruyama or Milstein discretization, and you accumulate error as nstepsn_{\text{steps}} shrinks. For GBM, the closed form gives you the right answer for any number of steps.

The Itô Correction in Practice

If you have ever wondered why μ−σ2/2\mu - \sigma^2/2 shows up in the drift of log⁡St\log S_t but μ\mu shows up in the drift of StS_t, here is the punchline. The process log⁡St\log S_t has deterministic expected growth rate μ−σ2/2\mu - \sigma^2/2. The process StS_t has expected value S0eμtS_0 e^{\mu t}, which has average growth rate μ\mu. These are different things. The expected value of an exponentiated process is not the exponential of the expected value, because of Jensen’s inequality and the convexity of exp⁡\exp.

When people say “stocks grow at 8% a year”, they usually mean the expected value of StS_t grows at 8%. Under GBM, that corresponds to μ=0.08\mu = 0.08. The expected value of log⁡St\log S_t grows at μ−σ2/2=0.08−0.5⋅0.162≈0.067\mu - \sigma^2/2 = 0.08 - 0.5 \cdot 0.16^2 \approx 0.067 if σ=0.16\sigma = 0.16. The two statements are consistent. Do not confuse them.

Where GBM Breaks

Be honest about the limitations. Empirical stock returns have:

  • Volatility clustering. Volatility is not constant. It comes in waves. GARCH models handle this.
  • Fat tails. Daily returns have kurtosis well above 3. The lognormal underestimates tail risk.
  • Jumps. Prices occasionally gap. Merton jump-diffusion and variance-gamma address this.
  • Skewness. Implied volatility is skewed, especially for equities. GBM produces flat implied vol.

For pricing vanilla options, the failures do not matter much. You can fit σ\sigma to match market prices and live with the model. For risk management, fat tails matter a lot. For multi-asset products, correlations matter and the model says they are constant. For long-dated options or stress scenarios, the model is dangerously optimistic.

None of this makes GBM useless. It makes it the first model, not the last one. Most exotic pricing starts with a Black-Scholes baseline and layers corrections on top.

A Numerical Illustration of the Itô Correction

The σ2/2\sigma^2/2 term is small but not negligible. Take σ=0.30\sigma = 0.30 (about 30% annualized vol, a typical number for an individual equity). Then σ2/2=0.045\sigma^2/2 = 0.045, so the difference between μ\mu and μ−σ2/2\mu - \sigma^2/2 is 4.5 percentage points per year. Over a ten-year horizon, that compounds: e0.045⋅10≈1.57e^{0.045 \cdot 10} \approx 1.57. So the median GBM path is roughly 60% below the mean path. That is a substantial gap.

If you simulate 10,000 paths of StS_t with μ=0.08\mu = 0.08, σ=0.30\sigma = 0.30, T=10T = 10, S0=100S_0 = 100, the sample mean of S10S_{10} is about 100⋅e0.08⋅10≈222100 \cdot e^{0.08 \cdot 10} \approx 222, but the median is about 100⋅e(0.08−0.045)⋅10≈138100 \cdot e^{(0.08 - 0.045) \cdot 10} \approx 138. Half the paths end below 138, half above. The mean is pulled up by the long right tail of the lognormal.

This matters when you compute expected payoffs. If your derivative payoff is monotone in STS_T, the expectation is dominated by the right tail and the σ2/2\sigma^2/2 correction is largely irrelevant. If your payoff is sensitive to the median (like a butterfly spread or any payoff concentrated near a strike), the correction matters a great deal.

Path-Dependent Payoffs and GBM

Many exotic options depend on the path of StS_t, not just the terminal value. Asian options average the price over time. Lookback options depend on the running maximum or minimum. Barrier options knock out if the price touches a level. For these, the full path matters.

For GBM, you can compute Asian option prices in closed form using a geometric average — but only if the averaging is geometric, because the geometric average of a lognormal is lognormal. For arithmetic averaging, you are stuck with numerics. That is the first hint that path-dependent payoffs are harder than European payoffs, even with the most tractable model in the world.

Barrier options under GBM are more delicate. The price process is continuous, but it can touch a barrier infinitely often in continuous time. The probability of touching a level before expiry is computed via the reflection principle (see Karatzas and Shreve, Brownian Motion and Stochastic Calculus, or Glasserman, Section 3.4). The result is a clean formula for the survival probability of a barrier at HH given a drift and volatility, but in practice you have to choose a barrier-monitoring convention (continuous vs. discrete) carefully, because they give different prices.

The Forward Price and Drift

A subtle but important point. Under the physical measure P\mathbb{P}, the drift of StS_t is μ\mu, the expected return of the asset. Under the risk-neutral measure Q\mathbb{Q}, the drift is rr, the risk-free rate. The volatility σ\sigma is the same under both measures (volatility is invariant under equivalent measure changes that are sufficiently regular — this is Girsanov’s theorem in action).

When you simulate forward-looking scenarios (real-world projections, asset-liability modeling, retirement forecasts), use μ\mu. When you price derivatives, use rr. Mixing the two is one of the most common beginner mistakes. The Black-Scholes formula uses rr because it prices a derivative. A Monte Carlo that prices an option but uses μ\mu will give the wrong answer — usually way too high.

The transformation between the two measures is the risk-neutral change of measure, and the key tool is Girsanov’s theorem. We will derive that in a later article. For now, just remember: physical drift is what you expect. Risk-neutral drift is what you discount with.

Continuous Compounding vs. Discrete Returns

When you take logs of daily prices and compute log-returns, you are implicitly using continuous compounding. The relationship between log-returns and simple returns is

rsimple=erlog−1≈rlog+12rlog2+⋯r_{\text{simple}} = e^{r_{\text{log}}} - 1 \approx r_{\text{log}} + \frac{1}{2} r_{\text{log}}^2 + \cdots

For daily returns on the order of 1%, the difference is tiny. For longer horizons, it accumulates. Annual log-returns have standard deviation about 15-20% for an equity index. The gap between mean log-return and mean simple return is about σ2/2\sigma^2/2 per year — exactly the Itô correction we have been talking about. Same fact, different language.

A Quick Word on Calibration

In practice, you do not know μ\mu or σ\sigma a priori. You estimate them from data. The historical estimator for σ\sigma is the standard deviation of log-returns scaled by Δt\sqrt{\Delta t}. For daily data, you compute

σ^2=1N−1∑i=1N(ri−rˉ)2,ri=log⁡(Sti/Sti−1)\hat{\sigma}^2 = \frac{1}{N-1} \sum_{i=1}^N (r_i - \bar{r})^2, \quad r_i = \log(S_{t_i}/S_{t_{i-1}})

then scale: σ^annual=σ^daily⋅252\hat{\sigma}_{\text{annual}} = \hat{\sigma}_{\text{daily}} \cdot \sqrt{252}. The factor 252 is the number of trading days per year.

For pricing, you usually want implied volatility, not historical volatility. You back out the σ\sigma that makes the Black-Scholes price match the observed market price of an option. Implied vol is the language of the options market. It is quoted in vol terms rather than price terms because it is more comparable across strikes and expiries.

What to Take Away

GBM is what you get when you impose three things: constant percentage drift, constant percentage volatility, and continuous (no-jump) paths driven by Gaussian noise. The closed-form solution is St=S0exp⁡[(μ−σ2/2)t+σWt]S_t = S_0 \exp[(\mu - \sigma^2/2)t + \sigma W_t], which is lognormal. It underlies the Black-Scholes formula and most of the introductory derivatives curriculum.

The math is beautiful and the model is wrong, and both can be true. Use GBM when its tractability matters more than its realism. Reach for something richer — local volatility, stochastic vol, jump-diffusion, variance-gamma — when the tails start to bite. The next articles in this module derive those richer models from first principles. The references here are Glasserman (2004), Chapter 3, and Hull (2018), Chapter 15.