Finite-Difference Option Pricing with a Discontinuous Payoff
Summary
The document addresses numerical instability when a finite-difference method prices a call option using its terminal payoff, which has a kink at the strike. Near that point, a coarse grid can make a central approximation to the second derivative very large, creating an extreme contribution in the diffusion term of a Black–Scholes-type equation. The example shows this effect for grid points surrounding the strike, while the second derivative is zero at other points at the initial time step.
The response notes that the continuous-time solution becomes smooth before expiry, though its derivatives can become very large as maturity approaches. It recommends implicit time stepping for greater stability, smaller time steps, and using log-price coordinates for geometric Brownian motion. These are high-level practical suggestions rather than a derivation or a tested comparison; the source provides no accuracy results or implementation details. Grid placement and payoff treatment are not explored, so the recommendations should be treated as a starting point for numerical validation.
Key ideas
- A call payoff has a kink at the strike, making its second derivative difficult to approximate on a grid near expiry.
- A central finite-difference stencil can produce an unusually large diffusion term near the payoff discontinuity.
- The option value is smooth before expiry, but its derivatives can be large close to maturity.
- The response suggests implicit time stepping, smaller time increments, and log-price coordinates as practical approaches.
- The document does not compare these methods quantitatively or provide a complete implementation.
Tags
Full text
# Finite difference methods with discontinuity in the payoff function
# Finite difference methods with discontinuity in the payoff function
I have implemented a finite difference scheme for pricing options using a Black-Scholes-like model. I tested my implementation on a call option, and found that it gave extremely inaccurate results. I investigated intermediate values in my computations, and I suspect that my inaccurate results are caused by the discontinuity in the payoff function.
The payoff function:
$$\text{Payoff}(S) = \max(S-K, 0) \hspace{.4em} \text{for some strike price } K \text{.} $$
My scheme requires that I calculate $\frac{\partial{U}}{\partial{S}}$ and $\frac{\partial^2{U}}{\partial{S}^2}$ at two points near $K$. At these points, $rs\frac{\partial{U}}{\partial{S}}$ causes a minor issue, but $\frac{1}{2}s^2v\frac{\partial^2{U}}{\partial{S}^2}$ explodes when I use a first order central approximation.
What kinds of solutions exist for this problem? I'm trying to keep my derivative matrix $A$ (meaning $U' = A U+x$) "oblivious" to the type of derivative (or, in the case of a call option, the strike price) for simplicity of implementation. "Hack"-ish solutions are very welcome.
An example: I set the strike to K=110. Three nearby asset prices are 107.336, 109.983, and 112.732. If you compute first order central approximations at the point 109.983, you get
\begin{align} \frac{1}{2}s^2v\frac{\partial^2{U}}{\partial{S}^2} &= \frac{1}{2}(109.983^2)*v*\Big( 0.140*0 + (-0.274) * 0 + 0.134858*(112.732-110) \Big) \\ &=2,228.32*v \end{align}
At all other points, for the first time step, $\frac{\partial^2{U}}{\partial{S}^2}=0$.
## Answer by Andrea (score 0)
https://quant.stackexchange.com/a/81108
Yes, the smaller your $\Delta x$, the more extreme the 2nd derivative, and imagine if you tried a digital, it would be a lot worse.
This is life, nothing you can do about it. Check the BS formula and you will see that the 2nd derivative explodes too (the closer to maturity you are).
The solution of the real continuous time PDE is $C^2$ (and more) only for $t<T$, not at $T$.
The practical implication of this is: some time stepping methods and some log(S) are better at dealing with this than others.
So, without going into the details
- An implicit scheme is more stable wrt payoff discontinuities
- Smaller $\Delta t$ are better
- log(s) is better for a Geometric Brownian Motion
Each of these points would require a long explanation.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.