import numpy as np
def binomial(strike, optype, extype):
# optype 'C' = call, 'P' = put
# extype 'E' = european, 'A' = american
# set model paramters
S0 = 100 # initial stock level
T = 1.0 # time to maturity
r = 0.05 # risk free rate
vol = 0.20 # volatility
M = 1000 # time stpes
dt = T/M # length of time interval
df = np.exp(-r*dt)
u = np.exp(vol*np.sqrt(dt))
d = 1/u
q = (np.exp(r*dt) - d) / (u - d)
# generate tree
S = np.zeros((M+1,M+1), dtype=np.float64)
S[0,0] = S0
for j in xrange(1, M+1, 1):
for i in xrange(j+1):
S[i,j] = S[0,0]*u**(j-2*i)
# calculte intrinsic value
iv = np.zeros((M+1,M+1), dtype=np.float64)
for j in xrange(M+1):
for i in xrange(j+1):
if optype=='C':
iv[i,j] = max(S[i,j]-strike, 0)
else:
iv[i,j] = max(strike-S[i,j], 0)
binomial tree in python
最新推荐文章于 2024-10-18 10:04:35 发布