问题描述
[8.023027e+06,1.416185e-0.02]
但是在python上实现以下功能时,例如:
def Opt(params):
sigma,Assets = params
Market_cap,Debts,sigma2 = args2
d1 = (np.log(Assets/Debts) + (0.0232 - 0.5*sigma**2))/sigma
d2 = d1 - sigma
Diff1 = Market_cap - (Assets*norm.cdf(d1)-Debts*norm.cdf(d2)*np.exp(-0.0232))
Diff2 = norm.cdf(d1) * sigma * Assets - sigma2 * Market_cap
return Diff2,Diff1
添加参数:
Assets,Market_cap = 4740291,33404048,4740291
sigma2 = 0.02396919
Equity = Market_cap
args2 = [Market_cap,sigma2]
print(Market_cap,sigma2)
sol = optimize.broyden1(Opt,[sigma2,Assets])
Opt(sol)
它返回以下错误:
NoConvergence Traceback (most recent call last)
<ipython-input-480-de3204c1d7f2> in <module>
----> 1 sol = optimize.broyden1(Opt,Assets])
2 Opt(sol)
~/opt/anaconda3/lib/python3.7/site-packages/scipy/optimize/nonlin.py in broyden1(F,xin,iter,alpha,reduction_method,max_rank,verbose,maxiter,f_tol,f_rtol,x_tol,x_rtol,tol_norm,line_search,callback,**kw)
~/opt/anaconda3/lib/python3.7/site-packages/scipy/optimize/nonlin.py in nonlin_solve(F,x0,jacobian,full_output,raise_exception)
345 else:
346 if raise_exception:
--> 347 raise NoConvergence(_array_like(x,x0))
348 else:
349 status = 2
NoConvergence: [1.70805965e+11 4.80094866e+09]
谁能解释一下如何解决它(我尝试重新排列术语但没有结果)
PS:它是 KMV 模型的复制品,用于对信用违约建模。
感谢您的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)