Setting Finite-Difference Boundary Conditions for a European Put
Original question
Can you explain how to derive the boundary conditions for a European put option using a finite difference method?
For a non-dividend-paying European put under Black–Scholes, use the terminal payoffP(0,S)=(K−S)+ when the time variable is remaining maturity τ. At spot zero, set P(τ,0)=Ke−rτ. At a sufficiently high truncation point Smax, use P(τ,Smax)≈0 and check whether moving the boundary materially changes the prices you need.
Derive each edge from the payoff
With τ=T−t, write the risk-neutral value as
P(τ,S)=e−rτEQ[(K−SX)+],X=exp((r−21σ2)τ+στZ),
where Z is standard normal. Substituting S=0 gives the exact lower boundary. Since X>0 almost surely, (K−SX)+→0 pointwise as S→∞. The payoff is bounded by K, so dominated convergence gives the zero limit. With finite Smax, the value at the boundary generally remains positive.
On a spot grid, suppose a backward-Euler row next to the left edge contains aP0n+1+bP1n+1+cP2n+1 on the left side. Substituting the known boundary moves aP0n+1 to the right side with a minus sign. The boundary is a known value at the new time layer, whereas the right side also contains known values from the previous time layer.
At S=0, a stock in this multiplicative model stays at zero, so the put payoff is the certain payment K at maturity. Today's value is therefore the discounted strike for that layer's remaining time. At high spot the put payoff tends to zero, but the limit is attained only as spot tends to infinity. Using zero at finite Smax is a numerical approximation. Compare the price near the strike after moving Smax farther out while keeping comparable local grid spacing. That separates the boundary choice from how finely you resolve the payoff kink.
Take K=100, r=4%, σ=25%, and a maximum remaining maturity of nine months. At the payoff layer the zero-spot value is 100. At the nine-month layer it is 100e−0.04(0.75)≈97.04. Set the upper edge at 350. The analytic put value there is about 10−8 in this example, so zero is an accurate approximation at that edge. At spot 85, the analytic price is about 15.29. Compare that value to the solver’s output and repeat with a higher upper boundary while keeping spot step fixed. Holding the spot step fixed helps separate boundary truncation from grid resolution.
It helps to picture the time-marching array. At the initial layer of remaining maturity zero, the left node is the strike and each interior node is the immediate exercise payoff. After one step the left node is the discounted strike for one step of time. Its value changes again at every later layer. In an implicit solver, the new-layer boundary contribution moves to the right-hand side of the linear system. Using the old-layer value there would solve a slightly different boundary problem.