如何使 Quantlib 中的 futuresHelpers 與星期一結算日而不是 IMM 一起工作?
我的 EuroDollar 期貨有第三週的星期一到期和 CME 交易所的結算日期,但 Python Quantlib 似乎並不喜歡它。無論如何,我可以逃脫 IMM 檢查嗎?
期貨 = { ql.Date(14,9,2020): 99.700, ql.Date(14,12,2020): 99.67, ql.Date(15,3,2021): 99.76 }
期貨助手 =
$$ ql.FuturesRateHelper(ql.QuoteHandle(futures[d $$), d, 月, 日曆, ql.ModifiedFollowing, True, dayCounter, ql.QuoteHandle(ql.SimpleQuote(0.0)), ql.Futures.IMM) for d in futures.keys()] 錯誤資訊:
RuntimeError:2020 年 9 月 14 日不是有效的 IMM 日期
IMM 日期實際上是星期三而不是星期一…
在 ql.IMM 類中有幾種處理 IMM 日期的方法。
要檢查日期是否為 IMM 日期,請使用
ql.IMM.isIMMdate(date, mainCycle=True)
在您的範例中:
futures = { ql.Date(14,9,2020): 99.700, ql.Date(14,12,2020): 99.67, ql.Date(15,3,2021): 99.76 } list(map(ql.IMM.isIMMdate, futures.keys()))
$$ False, False, False $$ 您還可以查看下一個 IMM 日期:
list(map(ql.IMM.nextDate, futures.keys()))
$$ Date(16,9,2020), Date(16,12,2020), Date(17,3,2021) $$
歐洲美元期貨合約在到期月份的第三個星期三之前的 2 個工作日(通常是星期一)停止交易。
但這不是參考 3 個月利率 3M USD Libor 開始的日期。該日期實際上是第三個星期三本身,即 IMM 日期(請參閱此處的契約規範)
因此,在您的範例中,liborStartDate(在您的範例中是“d”,FuturesRatesHelper() 的第二個參數)應設置為 2020 年 9 月 16 日,而不是 2020 年 9 月 14 日。這就是您收到錯誤的原因。