Yield-Curve

Quantlib FuturesRateHelper 觸發無效的 IMM 日期錯誤

  • June 18, 2016

我開始將 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 代表國際貨幣市場。

所以你有幾個選擇:

  1. 使用正確的日期

2)修改該方法,使其始終返回 true,重建 quantlib,重新執行 swig 以建構 python 綁定並前往城鎮。

引用自:https://quant.stackexchange.com/questions/20832