Quantlib

Python QuantLib FuturesRateHelper 問題

  • April 30, 2021

我正在嘗試使用一些未來的費率進行引導,但是在下面遇到了一些錯誤。一個可重現的案例如下:

這是用來自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::TypeASX並且價格和凸度作為數字而不是報價句柄提供時。您可以在此處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 日

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