An explicit finite-difference step uses the old price curve to advance its diffusion and curvature. On a fixed spatial grid, a large
time step can amplify small grid-scale errors at every update. Refine the time step, or use backward Euler or Crank–Nicolson with suitable treatment of the
payoff kink and a convergence check.
Track what the explicit update does to an alternating error
For the diffusion equation Uτ=DUxx, the standard explicit update uses λ=DΔτ/Δx2:
Ujn+1=(1−2λ)Ujn+λ(Uj−1n+Uj+1n).
For the alternating error
ej=(−1)j, each neighbour equals
−ej. One update multiplies the error by
1−4λ. Its
absolute value exceeds one when
λ>1/2. Fourier modes at lower frequencies impose no tighter bound for this simple stencil. The
Black–Scholes log-price equation has
diffusion coefficient D=σ2/2, along with drift and discounting, so this heat-equation analysis explains the scaling. Derive or check the constraint for the actual discretisation used.
On a uniform spot grid Sj=jΔS, the explicit central Black–Scholes update has diagonal coefficient 1−Δτ(σ2j2+r). Requiring all coefficients to be nonnegative is a useful sufficient monotonicity check for this stencil with nonnegative r. Also check the off-diagonal coefficients, especially at small j where central differencing of the drift can create a negative weight.
Insert ej−1=ej+1=−ej into the update to get a multiplier of 1−4λ. If its magnitude exceeds one, even a small alternating perturbation grows each time you step. This explains the wiggles that appear before the prices become obviously wrong. In Black–Scholes the diffusion coefficient increases with Sj2, so the largest spot indices can be the most restrictive. Halving the spatial step at fixed upper spot typically calls for about four times as many time steps in the diffusion-dominated part of an explicit grid.
Calculate the limit on one stock grid
Let maturity be one year, r=5%, σ=25%, and Smax=400 with 200 spot intervals. The highest interior index is 199, so keeping its diagonal coefficient nonnegative requires Δτ≤1/(0.252(199)2+0.05)≈0.000404. The off-diagonal weights are nonnegative for these inputs. Using 4,000 time steps gives a diagonal weight of about 0.381 at that node. Using 1,000 time steps gives a weight near −1.475. Inspect the entire price curve, including the far right, because an instability seeded there can grow long before the price at spot 100 appears visibly wrong.
Use the
options pricer to spot-check your explicit-grid European prices after refining the time step.
References and next steps