Finite difference methods
Finite difference methods value a derivative by solving the differential equation that the derivative satisfies. Consider an American put option on a stock paying a dividend yield of q. The associated Black-Scholes equation is:
∂f∂t+(r−q)S∂f∂S+12σ2S2∂2f∂S2=rfThe finite difference method discretizes the time and stock price axis, see Figure below.
The life of the option is T. We divide the time into N+1 equally spaced intervals of length Δt=T/N. For the stock price, we suppose that Smax is the max stock price, a price when reached, the put has no value. We divide the stock price into M+1 equally spaced intervals of length ΔS=S/M.
The implicit finite difference method discretizes the different partial derivatives such that we get:
ajfi,j−1+bjfi,j+cjfi,j+1=fi+1,jwhere the coefficients aj, bj and cj depends on r, q, Δt, σ2.
We know the value of the put at time T: max(K−ST,0)=fN,j. We also know its value when the stock price is 0: fi,0=K. We assume that its value is worthless when the stock is equal to Smax.
Therefore, starting from t=T and going backwards, we can solve the value of the derivative on all points in the grid. However, at each time step t we need to not forget to replace the value of ft,j with K−jΔS to account for early exercising.
One nice property of the implicit finite difference method is that the user does not have to take any precautions to ensure convergence.
The problem with finite difference methods is that they are difficult to apply when the payoffs depend on the past history of the state variables. They are also liable to become computationally very time consuming when more than three variables are involved.
For more information on finite difference methods, I did a project with D. Duffy here.