量化庫
使用 QuantLib 在幾天內為 IRS 定價
我正在嘗試根據 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 交換定價?我需要在掉期開始日期和新估值日期之間的每一天提供指數固定嗎?
是的,您需要為開始日期和估值日期之間的每一天提供指數修正。程式碼將組成它們。