Spread option contracts are becoming increasingly important, as they frequently arise
in the energy derivative markets, e.g. exchange electricity for oil. In this paper, we study the
pricing of European and American spread options. We consider the two-dimensional Black-Scholes
Partial Differential Equation (PDE), use finite difference discretization in space and consider
Crank-Nicolson (CN) and Modified Craig-Sneyd (MCS) Alternating Direction Implicit (ADI)
methods for timestepping. In order to handle the early exercise feature arising in American
options, we employ the discrete penalty iteration method, introduced and studied in Forsyth and
Vetzal (2002), for one-dimensional PDEs discretized in time by the CN method. The main novelty
of our work is the incorporation of the ADI method into the discrete penalty iteration method, in
a highly efficient way, so that it can be used for two or higher-dimensional problems. The results
from spread option pricing are compared with those obtained from the closed-form approximation
formulae of Kirk (1995), Venkatramanan and Alexander (2011), Monte Carlo simulations, and the
Brennan-Schwartz ADI Douglas-Rachford method, as implemented in MATLAB. In all spread
option test cases we considered, including American ones, our ADI-MCS method, implemented
on appropriate non-uniform grids, gives more accurate prices and Greeks than the MATLAB ADI
method.