Let's create a class named FDCnAm that inherits from the FDCnEu class, which is the Crank-Nicolson method's counterpart for pricing European options. The setup_coefficients method may be reused, while overriding all other methods for the inclusion of payoffs from an earlier exercise, if any.
The constructor __init__() and the setup_boundary_conditions() methods are given in the FDCnAm class:
In [ ]: import numpy as np import sys """ Price an American option by the Crank-Nicolson method """ class FDCnAm(FDCnEu): def __init__(self, S0, K, r=0.05, T=1, Smax=1, M=1, N=1, omega=1, tol=0, is_put=False): super(FDCnAm, self).__init__(S0, K, r=r, T=T, ...