量化庫

使用 QuantLib 在幾天內為 IRS 定價

  • May 4, 2022

我正在嘗試根據 QuantLib Python 書中的範例(其中包含債券)找出在幾天範圍內評估 SONIA 交換的方法。

import QuantLib as ql

rate = 0.02
calculation_date = ql.Date(10, 12, 2021)
ql.Settings.instance().evaluationDate = calculation_date
day_count = ql.Actual365Fixed()
ois_curve = ql.FlatForward(calculation_date, rate, day_count)

curve_handle = ql.RelinkableYieldTermStructureHandle(ois_curve)

swap = ql.MakeOIS(
   swapTenor=ql.Period("1Y"),
   overnightIndex=ql.Sonia(curve_handle),
   fixedRate=ql.nullDouble(),
   fwdStart=ql.Period("0Y"),
   swapType=ql.Swap.Receiver,
   discountingTermStructure=curve_handle,
   fixedLegDayCount=day_count
)

正如所料print(swap.NPV()) 0

現在計算一個月後此掉期的 NPV(為簡單起見假設相同的平坦曲線)

new_date = calculation_date + ql.Period("1M")
ql.Settings.instance().evaluationDate = new_date
new_ois_curve = ql.FlatForward(new_date, risk_free_rate, day_count)
curve_handle = ql.RelinkableYieldTermStructureHandle(new_ois_curve)

打電話後NPV我收到以下錯誤

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_10169/552115063.py in <module>
----> 1 swap.NPV()

~/miniconda3/envs/notebooks/lib/python3.9/site-packages/QuantLib/QuantLib.py in NPV(self)
  9657 
  9658     def NPV(self):
-> 9659         return _QuantLib.Instrument_NPV(self)
  9660 
  9661     def errorEstimate(self):

RuntimeError: 2nd leg: Missing SoniaON Actual/365 (Fixed) fixing for December 14th, 2021

例如,我可以在這裡看到修復它以提供索引修復的方法。我在這裡的問題是,我需要多少數據點來為這個 OIS 交換定價?我需要在掉期開始日期和新估值日期之間的每一天提供指數固定嗎?

是的,您需要為開始日期和估值日期之間的每一天提供指數修正。程式碼將組成它們。

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