10.623403551775402
Kerry Back
\[C = \frac{p \times \text{\$}5 + (1-p)\times \text{\$}0}{1.05}\]
\[\text{\$}100 = \frac{p \times \text{\$}110 + (1-p) \times \text{\$}90}{1.05}\]
\[p = \frac{r_f - r_d}{r_u - r_d} = \frac{0.05 - (-0.1)}{0.1 - (-0.1)} = \frac{.15}{.2} = 0.75\]
\[C = \frac{0.75 \times \text{\$}5 + 0.25 \times \text{\$}0}{1.05} = \text{\$}3.57\]
\[ p = \frac{r_f - r_d}{r_u - r_d} = \frac{0.03 - (-0.0476)}{0.05 - (-0.0476)} = 0.795\]
Stock:
Call with a strike of $95:
import numpy as np
S = 100 # stock price
K = 95 # strike
u = 0.05 # up return per period
r = 0.03 # interest rate per period
n = 2 # number of periods
d = 1/(1+u) - 1 # down return per period
p = (r-d) / (u-d) # risk-neutral prob
x = [S*(1+u)**(n-2*i) for i in range(n+1)]
v = np.maximum(0, np.array(x)-K)
while len(v)>1:
v = (p*v[:-1]+(1-p)*v[1:]) / (1+r)
v[0]
10.623403551775402