程式

如何使 Quantlib 中的 futuresHelpers 與星期一結算日而不是 IMM 一起工作?

  • December 3, 2021

我的 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 日。這就是您收到錯誤的原因。

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