#python #for-loop #quantitative-finance
Вопрос:
У нас есть барьерный колл-опцион европейского типа с ценой Kgt;0
исполнения и значением барьера
0 lt; blt; S0
,
где S_0
стартовая цена.Согласно контракту, время 0lt;t_1lt;...lt;t_klt;T
, когда цена должна быть проверена S(t_k)gt;b
для каждого k
.
Предполагая S(t)
, что это описано с помощью модели биномиальных опций с u=1.1
и d = 0.9
, r=0.05
, T=10
, и t_1=2,t_2=4
и t-3=7
временем, в течение которого актив должен быть проверен.Также рассмотрите S_0=100,K=125
и барьер b=60
.
Моя попытка заключается в следующем :
# Initialise parameters S0 = 100 # initial stock price K = 125 # strike price T = 10 # time to maturity in years b = 60 # up-and-out barrier price/value r = 0.05 # annual risk-free rate N = 4 # number of time steps u = 1.1 # up-factor in binomial models d = 0.9 # ensure recombining tree opttype = 'C' # Option Type 'C' or 'P' def barrier_binomial(K,T,S0,b,r,N,u,d,opttype='C'): #precompute values dt = T/N q = (1 r - d)/(u-d) disc = np.exp(-r*dt) # initialise asset prices at maturity S = S0 * d**(np.arange(N,-1,-1)) * u**(np.arange(0,N 1,1)) # option payoff if opttype == 'C': C = np.maximum( S - K, 0 ) else: C = np.maximum( K - S, 0 ) # check terminal condition payoff C[S gt;= b] = 0 # backward recursion through the tree for i in np.arange(N-1,-1,-1): S = S0 * d**(np.arange(i,-1,-1)) * u**(np.arange(0,i 1,1)) C[:i 1] = disc * ( q * C[1:i 2] (1-q) * C[0:i 1] ) C = C[:-1] C[S gt;= H] = 0 return C[0] barrier_binomial(K,T,S0,b,r,N,u,d,opttype='C')
Я ничего не получаю, потому что что-то не так, и я не знаю, что
Но является ли это симуляцией ?
Кто-нибудь может помочь ?