Цена барьерных опционов в Python

#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')    

Я ничего не получаю, потому что что-то не так, и я не знаю, что

Но является ли это симуляцией ?

Кто-нибудь может помочь ?