99次迭代后未达到Quantlib收敛

时间:2020-10-04 17:40:18

标签: python finance discount quantlib

我正在尝试为Euribor 6M计算NPV。我计算掉期净现值,但出现错误

RuntimeError: convergence not reached after 99 iterations; last improvement 5.04917e-05, required accuracy 1e-12

发生错误的代码是:

#%%timeit - itt álltam
#Swap pricing under each scenario
npv_cube = np.zeros((N,len(date_grid), len(portfolio)))
npv_cube_df = pd.DataFrame(index=np.arange(N), columns=date_grid)
for p in range(0,N):
    for t in range(0, len(date_grid)):
        print(p,t)
        date = date_grid[t]
        ql.Settings.instance().setEvaluationDate(date)
        ycDates = [date, 
                   date + ql.Period(6, ql.Months)] 
        ycDates += [date + ql.Period(i,ql.Years) for i in range(1,11)]
        yc = ql.DiscountCurve(ycDates, 
                              zero_bonds[p, t, :], 
                              ql.Actual365Fixed())
        yc.enableExtrapolation()
        hyts.linkTo(yc)
        if euribor6m.isValidFixingDate(date):
            fixing = euribor6m.fixing(date)
            euribor6m.addFixing(date, fixing)

        if euribor6m.isValidFixingDate(date):
            fixing = euribor6m.fixing(date)
            euribor6m.addFixing(date, fixing)

        for i in range(len(portfolio)):
            npv_cube[p, t, i] = portfolio[i][0].NPV()
        
        npv_cube_df[date_grid[t]][p] = [portfolio[i][0].NPV() for i in range(len(portfolio))] ## putting values to dataframe for export

    ql.IndexManager.instance().clearHistories()
ql.Settings.instance().setEvaluationDate(today)
hyts.linkTo(yts)

我提供了一个指向完整笔记本的链接,以检查其余代码。 https://colab.research.google.com/drive/14kCxOFm5n-wppNQqJt9b_Z4FpvIX2L-u?usp=sharing 您能告诉我如何解决吗?

0 个答案:

没有答案