程式

QuantlIb:如何在 OIS 利率助手 Quantlib 中使用期限代替期限?

  • February 13, 2022

我想知道我是否可以使用我的費率數據框中的到期日期來生成 OISratehelpers。在以下程式碼中,OIS 利率助手使用“期限”,我想用到期日替換這些期限。對於“如果”條件,可以使用期限,但在計算中我想使用到期日。我在這部分需要幫助(ql.OISRateHelper(0, ql.Period(tenor), ql.QuoteHandle(ql.SimpleQuote(rate)), index)。我該如何處理到期日?

rates_df = [Curve      date        maturity    tenor  rates
        FEDFUNDS   1/10/2022     1/11/2022     1D    -0.07
        FEDFUNDS   1/10/2022     1/12/2022     2D    -0.75
        FEDFUNDS   1/10/2022     1/19/2022     1W    -0.654
        FEDFUNDS   1/10/2022     1/26/2022     2W    -0.675
        FEDFUNDS   1/10/2022     2/2/2022      3W    -0.432
        FEDFUNDS   1/10/2022     2/14/2022     1M    -0.564]
index = 'FEDFUNDS'
helpers = []   
for idx, row in rates_df.iterrows():
   rate = row["rates"] / 100
   tenor = row.tenor
   if tenor == "1D":
       helpers.append(ql.DepositRateHelper(rate, index))
   elif tenor == '2D':
        print("2D")
   else:
       helpers.append(
           ql.OISRateHelper(
               0, ql.Period(tenor), ql.QuoteHandle(ql.SimpleQuote(rate)), index
           )
       )

改用DatedOISRateHelper類。它需要明確的開始和結束日期。

(這兩種情況——期限和顯式日期——需要在 C++ 中以不同的方式實現,因此我們必須編寫兩個不同的類。)

似乎建構子堅持一個男高音。您或許可以嘗試轉換曲線的到期日和結算日/生效日之間的天數,然後從中創建一個 Period 對象。請看下面的例子:

settlement = ql.Date(10,1,2022)
maturity = ql.Date(1,11,2022)
calendar = ql.TARGET()
calendar.businessDaysBetween(settlement,maturity)
tenor = ql.Period(int(days_between),ql.Days)

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