The Crank-Nicolson Scheme
A finite-difference method for solving pricing PDEs that averages the explicit and implicit stepping methods, getting the stability of implicit schemes with noticeably better accuracy than either method alone.
Prerequisites: Finite Difference Option Pricing
Solving the Black-Scholes PDE by finite differences means marching backward in time across a grid of asset prices, updating every grid point's option value at each time step. There are two natural ways to do this update: explicit, computing each new value directly from the previous time step's known values (fast, but blows up numerically if the time step is too large relative to the price-grid spacing), and implicit, solving a system of equations that ties the new values to each other (always numerically stable, but only first-order accurate in time, so it converges slowly). The Crank-Nicolson scheme is the average of the two, and averaging turns out to fix both problems at once.
An analogy: splitting the difference between two flawed forecasts
Suppose one weather model forecasts tomorrow using only today's conditions (fast but occasionally wildly unstable when conditions are changing fast), and another forecasts tomorrow by solving simultaneously for a forecast that's self-consistent with tomorrow's own conditions (always stable, but systematically a little off because it under-weights today's information). Averaging the two forecasts together turns out to cancel each method's leading source of error while keeping the stability of the second — not a coincidence, but a direct consequence of how each method's error behaves, one tilting one way and the other tilting the opposite way by a matching amount.
The scheme, one symbol at a time
Let be the option value as a function of asset price and time , discretized on a grid with time step . The explicit scheme approximates the PDE's time derivative using only the known grid values at the current time step; the implicit scheme uses only the unknown values at the next time step. Crank-Nicolson averages the right-hand side of the PDE evaluated at both time levels:
where is the spatial operator built from the PDE's price-derivative terms (the Black-Scholes operator, involving the delta and gamma terms) and are the option-value grids at the current and next time steps. In plain English: instead of stepping forward using only "now" (explicit) or only "next" (implicit), Crank-Nicolson steps forward using the average of the PDE's right-hand side computed at both ends of the step — which requires solving a system of equations like the implicit method (since appears on both sides), but the averaging cancels the leading error term that plagues both pure methods individually, raising the accuracy from first-order to second-order in time.
Worked example 1: a single grid point, explicit vs. implicit vs. Crank-Nicolson
Consider a simplified update rule (ignoring boundary points) where the spatial operator gives at a particular grid point using today's values, and, once solved, using tomorrow's values, with and current value . Explicit update: . Implicit update (using only tomorrow's operator value): . Crank-Nicolson: — sitting between the two, and, because it uses information from both time levels, converging to the true continuous-time solution roughly twice as fast as either single-sided method as the grid is refined.
Worked example 2: stability near a kink
Finite-difference pricing of a vanilla option starts with a kinked payoff at expiry (the terminal condition — a sharp corner at the strike for a call or put). A pure explicit scheme, stepping away from this kink with too coarse a time step relative to the price-grid spacing, can produce visibly oscillating, even negative, option values near the kink — a numerical instability, not a real feature of the option. Running the same grid and time step with Crank-Nicolson (or pure implicit) keeps the values well-behaved because both are unconditionally stable; in practice, quants often blend a few pure-implicit steps right after the kinked terminal condition before switching to Crank-Nicolson, since Crank-Nicolson can still show small spurious oscillations immediately near a kink even though it never diverges.
Picture the curve above as an option's value profile across the price grid at one time slice — the finite-difference schemes discussed here are different rules for marching this whole curve backward in time, one step at a time, from expiry to today.
What this means in practice
Crank-Nicolson is the default choice in most production PDE pricers for vanilla and many exotic options because it combines unconditional stability with second-order accuracy, letting a pricer use a coarser grid (faster) while still hitting tight accuracy targets. It's especially valuable for computing Greeks by finite differencing the price surface, since first-order errors in time-stepping propagate more visibly into derivative sensitivities than into the price itself.
The Crank-Nicolson scheme averages the explicit and implicit finite-difference update rules for a pricing PDE, inheriting the implicit method's unconditional stability while achieving second-order accuracy in time — a genuine free lunch that comes from the two methods' leading errors canceling when averaged.
"Unconditionally stable" does not mean "free of numerical artifacts near non-smooth data" — Crank-Nicolson applied directly to a kinked terminal payoff (a vanilla option's payoff at expiry) can still produce small spurious oscillations in the first few time steps, even though the scheme never blows up the way a badly-tuned explicit scheme can. Practitioners handle this by damping the first few steps with a more strongly stabilizing method (like pure implicit or Rannacher smoothing) before switching to Crank-Nicolson for the remaining steps.
Related concepts
Practice in interviews
Further reading
- Wilmott, Howison & Dewynne, The Mathematics of Financial Derivatives, ch. 14
- Crank & Nicolson, A Practical Method for Numerical Evaluation of Solutions of PDEs