原文是建立在https://www.jianshu.com/p/ee33c4375a8e的基础之上的,在检验其代码时发现这一ETOD代入有问题,因为这篇文章是在matlab上的代码做的,我看matlab上也是这样,就没太搞懂。
具体更改的代码
```def KMVOptSearch(E,D,r,T,EquityTheta):
def KMVfun(x,E,D,r,T,EqutityTheta):
d1 = (np.log(x[0]/D)+(r+0.5*x[1]**2)*T)/x[1]*np.sqrt(T)
d2 = d1-x[1]*np.sqrt(T)
return [E-x[0]*stats.norm.cdf(d1,0,1)+D*np.exp(-r*T)*stats.norm.cdf(d2,0,1),
EqutityTheta-x[0]*stats.norm.cdf(d1,0,1)*x[1]/E]
VaThetaX = fsolve(KMVfun,[100,0.001],args=(E,D,r,T,EquityTheta))
Va = VaThetaX[0]
AssetTheta = VaThetaX[1]
return Va, AssetTheta```
但是运行起来总会报错,报错内容是RuntimeWarning: invalid value encountered in log
还希望有人指点一下
网友评论