Note
Go to the end to download the full example code or to run this example in your browser via JupyterLite.
Cox-Ross-Rubinstein: the American put and its exercise boundary#
The binomial tree’s real advantage over a closed form is early exercise. At each node an American option is worth the larger of its continuation value and its immediate exercise value, so backward induction prices it as easily as a European option. For a put, early exercise is optimal once the stock falls below a critical price \(S^*(t)\) that rises towards the strike as expiry approaches.
import matplotlib.pyplot as plt
import numpy as np
from financialkit.options import CRRTree, black_scholes_price
from financialkit.options.visualizers import plot_exercise_boundary
Hull’s Example 21.1: five steps#
res = CRRTree(5).price(50.0, 50.0, 5 / 12, 0.10, 0.40, option_type="put", american=True)
print(f"American put on a five-step tree: {res.price:.2f} (Hull: 4.49)")
for n in (30, 50, 100, 500):
print(f" {n:3d} steps: {CRRTree(n).price(50.0, 50.0, 5 / 12, 0.10, 0.40, option_type='put', american=True).price:.3f}")
American put on a five-step tree: 4.49 (Hull: 4.49)
30 steps: 4.263
50 steps: 4.272
100 steps: 4.278
500 steps: 4.283
