Yield-Curve
Quantlib FuturesRateHelper 觸發無效的 IMM 日期錯誤
我開始將 QuantLib 與 Python SWIG 一起使用,並嘗試建構歐元收益率曲線。
我面臨這個坦率地說我不明白的錯誤;我查看了 imm.cpp 中 bool IMM::isIMMdate 的程式碼,該日期不應該造成問題。其他日期可能會引起麻煩,因為有些日子 < 到 15 並且在 imm.cpp 中,到期日期 < 15 的未來顯然不是 IMM 日期 - 好吧,但在這種情況下,2016 年 12 月 19 日應該沒問題,這是一個歐瑞博的未來。
this = _QuantLib.new_FuturesRateHelper(*args) RuntimeError: December 19th, 2016 is not a valid IMM date
這是我觸發錯誤的一段程式碼:
print('futures: {}'.format(futures))
它輸出:
futures: {Date(19,12,2016): 100.01, Date(13,6,2016): 100.04, Date(19,9,2016): 100.035, Date(14,3,2016): 100.045, Date(14,12,2015): 100.035, Date(18,9,2017): 99.905, Date(13,3,2017): 99.985, Date(19,6,2017): 99.95} futuresHelpers = [ql.FuturesRateHelper(ql.QuoteHandle(futures[d]), d, months, calendar, ql.ModifiedFollowing, True, dayCounter, ql.QuoteHandle(ql.SimpleQuote(0.0))) for d in futures.keys()]
我認為檢查是正確的。
來自維基百科: https ://en.wikipedia.org/wiki/IMM_dates
IMM 日期是每年的四個季度日期,大多數期貨合約和期權合約將其用作預定到期日或終止日期。日期是 3 月、6 月、9 月和 12 月的第三個星期三(即 15 日和 21 日之間,以星期三為準),IMM 代表國際貨幣市場。
所以你有幾個選擇:
- 使用正確的日期
2)修改該方法,使其始終返回 true,重建 quantlib,重新執行 swig 以建構 python 綁定並前往城鎮。