我有一个列表对象,它基本上采用两个值之间的差异。这是优化问题,我试图找出接近零的值,以便我可以找到局部最小值。列表对象的值应为 [-100,-90,-80,...0.0001,...80,90,100]。
import numpy as np
import scipy.stats as sp
def BSM_Call(S,K,T,r,Sigma):
d1 = (np.log(S/K) + (r+Sigma**2/2)*T) / (Sigma*np.sqrt(T))
d2 = d1 - (Sigma*np.sqrt(T))
Call = S*sp.norm.cdf(d1) - K*np.exp(-r*T)*sp.norm.cdf(d2)
return Call
ini_vol = 0.0001
rng = np.arange(0.0001,1,0.0001)
diff = []
for i in range(len(rng)):
diff.append(67.33923210204784 - BSM_Call(4395.26,4400,31/365,ini_vol+rng[i]))
一旦确定了优化点,我想获取对应的 ini_vol+rng[i] 值。