#scipy #scipy-optimize
Вопрос:
При расчете подразумеваемой волатильности опциона с входными данными и функцией ниже я получаю ошибку F(a) и F(b), которые должны иметь разные знаки. Я попытался увеличить интервал и максимальное количество итераций, но это не решает проблему. Есть ли другой способ устранить эту ошибку или хороший способ выбрать начальный интервал, чтобы избежать ее?
из импорта scipy оптимизируйте импорт scipy.статистика как si def calcimpliedvol(S,K,T,r,рыночная цена):
def bs_price(sigma):
d1=(np.log(S/K) (r 0.5*sigma**2)*T)/(sigma*np.sqrt(T))
d2=d1-(sigma*np.sqrt(T))
BSprice_call=S*si.norm.cdf(d1,0,1)-K*np.exp(-r*T)*si.norm.cdf(d2,0,1)
fx=BSprice_call-marketoptionPrice
return fx
return optimize.brentq(bs_price,0.0001,1,maxiter=1000)
calcimpliedvol(S=38,01,K=4,T=0,0031, r=0, рыночная цена=0,595)