The Milstein Scheme
A refinement of the Euler-Maruyama method for simulating stochastic differential equations that adds a correction term for how the noise's own size changes with the state, giving noticeably more accurate simulated paths at almost no extra cost.
Prerequisites: The Euler-Maruyama Scheme, Itô's Lemma
The Euler-Maruyama scheme simulates a stochastic differential equation by taking small time steps and, at each step, adding a drift term and a noise term scaled by the current volatility — treating the volatility as if it stays constant across that one small step. But if volatility itself depends on the asset price (as it does in geometric Brownian motion and almost every realistic model), that approximation quietly loses accuracy: the noise term should really reflect how volatility is also moving during the step, not just its value at the start. The Milstein scheme adds exactly one extra term to correct for this, using a piece of Itô calculus that Euler-Maruyama leaves out.
An analogy: predicting a hiker's position on shifting terrain
Imagine forecasting a hiker's position after a step where each stride's length itself depends on the ground underfoot, and the ground's steepness is changing as the hiker moves. A naive forecast uses the steepness at the start of the stride to size the whole stride. A better forecast accounts for the fact that the steepness itself is drifting slightly as the stride happens, adding a small correction proportional to how fast the steepness changes with position. That correction is exactly what the Milstein scheme adds to the plain Euler forecast, using the derivative of volatility with respect to the asset price.
The scheme, one symbol at a time
For an SDE , where is the drift, is the volatility (which can depend on ), and is a Brownian increment, the Euler-Maruyama update over a step of size is , where is a normal random draw with variance . The Milstein scheme adds one term:
where is the derivative of the volatility function with respect to the state. In plain English: the extra piece corrects for the fact that volatility isn't really constant across the step — it captures, to leading order, how the size of the random kick itself is affected by where the state ends up moving during the very step being simulated. This correction comes directly out of Itô's lemma: it's the same second-derivative adjustment that appears whenever Itô calculus is applied, here applied to itself.
Worked example 1: one step of GBM by hand
Geometric Brownian motion has , (so ). Take , , , , and a drawn Brownian increment . Euler-Maruyama: . Milstein adds . So the Milstein estimate is — a small correction here because the step is small, but the correction term does not shrink as fast as the leading terms do, which is exactly why it improves long-run accuracy.
Worked example 2: why the correction matters over many steps
Simulating the same GBM path over 100 steps, Euler-Maruyama's local error at each step is of order but accumulates a global error of order in the strong sense (path-by-path accuracy). Milstein's correction improves the strong global error to order — for , that's roughly a improvement in path-tracking accuracy for the same number of steps. For pricing instruments that depend on the whole simulated path (barrier options, path-dependent payoffs) rather than just the terminal value, this directly translates into needing far fewer time steps to hit a given accuracy target.
Compare paths generated at coarse versus fine time steps above — Milstein's correction is precisely what keeps a coarse-step path close to what a very fine-step path would have produced, for models where volatility depends on the state.
What this means in practice
The Milstein scheme is used whenever path-level accuracy matters and volatility is state-dependent — barrier and lookback option pricing, local volatility model simulation, and any setting where Euler-Maruyama's cruder approximation would require impractically many time steps to reach acceptable accuracy. When is constant (as in arithmetic Brownian motion with constant volatility), and the Milstein correction vanishes entirely — Euler-Maruyama is already exact in that special case, which is a useful sanity check that the extra term is implemented correctly.
The Milstein scheme improves on Euler-Maruyama by adding a single correction term, , that accounts for volatility changing with the state during a simulation step — this raises strong convergence from order to order at almost no extra computational cost.
A frequent implementation mistake is computing , the derivative of volatility with respect to the state, incorrectly or forgetting it entirely and calling the result "Milstein" anyway — for state-independent volatility this happens to cause no visible error, which can mask the bug until the scheme is applied to a model (like local volatility) where genuinely matters, at which point the simulated paths quietly drift from the true dynamics without any error message.
Related concepts
Practice in interviews
Further reading
- Kloeden & Platen, Numerical Solution of Stochastic Differential Equations
- Glasserman, Monte Carlo Methods in Financial Engineering, ch. 6