Quantlib
Python QuantLib FuturesRateHelper 問題
我正在嘗試使用一些未來的費率進行引導,但是在下面遇到了一些錯誤。一個可重現的案例如下:
這是用來自Bloomberg的“IRM1 Comdty”建構一個未來的利率助手。但是,maturityDate() 返回空日期,因此當我將這些未來的利率助手傳遞給 PiecewiseLogCubicDiscount 時,我會得到“所有工具都已過期”。有沒有人遇到過這個問題?任何幫助深表感謝
import QuantLib as ql import sys startDate = ql.Date(11,6,2021) endDate = ql.Date(10,9,2021) dayCount = ql.Actual365Fixed() futuresType = 1 #ASX convexityAdjustment = 0 try: tempFuturesRateHelper = ql.FuturesRateHelper(99.95, startDate, endDate, dayCount, convexityAdjustment, futuresType) print(tempFuturesRateHelper.maturityDate()) except: print("Unexpected error:", sys.exc_info()[1])
在關於空到期日期的原始問題上,這看起來像是您遇到的建構子的程式碼中的一個錯誤,即當它被提供一個明確的
iborEndDate
並且Futures::Type
是ASX
並且價格和凸度作為數字而不是報價句柄提供時。您可以在此處maturityDate_
看到未在其他 ctors 中設置為like的 C++ 程式碼,iborEndDate
最終所有日期在最後一行都設置為 null。我可以為此開張票。同時,如果您想獲得您在上面評論中提到的 2021 年 9 月 10 日的成熟度,您可以使用其他 ctor 之一。例如,下面的程式碼:
import QuantLib as Ql ql = Ql # Leave the ibor end date as an empty date and it will calculate the 3 month maturity. frh_1 = ql.FuturesRateHelper(99.95, ql.Date(11, 6, 2021), ql.Date(), ql.Actual365Fixed(), 0.0, ql.Futures.ASX) print(f'frh_1 maturity date: {frh_1.maturityDate()}') # Use the quote based ctor and provide the explicit maturity date. frh_2 = ql.FuturesRateHelper(ql.QuoteHandle(ql.SimpleQuote(99.95)), ql.Date(11, 6, 2021), ql.Date(), ql.Actual365Fixed(), ql.QuoteHandle(ql.SimpleQuote(0.0)), ql.Futures.ASX) print(f'frh_2 maturity date: {frh_2.maturityDate()}')
產生輸出
frh_1 maturity date: September 10th, 2021 frh_2 maturity date: September 10th, 2021
編輯:修復此問題的拉取請求已在此處打開。
我不習慣與 ASX Futures 合作,但我可能會建議另一種建構助手的方法。
由於 STIR 期貨合約與特定指數相關聯,因此您可以將其用於約定。在你的情況下:
index = ql.Bbsw3M() startDate = ql.Date(11,6,2021) helper = ql.FuturesRateHelper(99.95, startDate, index, 0, ql.Futures.ASX) print(helper.maturityDate())
2021 年 9 月 13 日