Python
使用/從給定的索引固定計算 QuantLib IborCoupon
在給定的 3M Euribor 指數定價情況下,如何使用 QuantLib 計算 3M Euribor 指數上浮動利率 IborCoupon 的票面金額?
如果我嘗試以下 Python 程式碼:
from QuantLib import * index = Euribor(Period(3, Months)) start = DateParser_parseISO("2019-02-22") end = DateParser_parseISO("2019-05-22") coupon = IborCoupon(end, 1.0, start, end, 2, index) fixDate = coupon.fixingDate() index.addFixing(fixDate, 0.04) print coupon.amount()
我得到錯誤
pricer not set
。根據我的理解,我想知道錯誤原因不需要定價,因為相關的修復已經給出。結果應該是大約 0.01。
查看該方法的 (c++) 原始碼
amount()
或更確切地說是該rate()
方法,我可以看到在每次呼叫時都會檢查定價器的存在。因此,我認為我的程式碼是錯誤的方法。
目前的實現在檢查優惠券是否已經固定之前委託給定價者;不僅如此,它還要求指數具有有效的預測期限結構。不過,您也沒有錯:我可以看到人們期望呼叫如何工作。我建議你在 GitHub 上打開一個問題(在https://github.com/lbalabio/QuantLib/issues)並建議將其作為可用性改進。
同時,您可以解決此問題。IBOR券的預設定價器不需要額外的參數,您可以通過添加設置一個:
coupon.setPricer(BlackIborCouponPricer())
創建優惠券後。順便說一句,如果您使用
IborLeg
創建一系列優惠券而不是創建單個優惠券,並且如果優惠券沒有上限或下限(這需要通過波動性),IborLeg
將為每個優惠券設置一個預設定價器,以便您不必。至於預測曲線,最簡單的方法是將索引創建為:
dummy_curve = FlatForward(0, NullCalendar(), 0.0, Actual365Fixed()) index = Euribor(Period(3, Months), YieldTermStructureHandle(dummy_curve))
但如果你有一個實際的 Euribor 曲線,我建議你改用那個。這樣,您就不會冒指數使用虛擬曲線進行預測的風險,以防萬一您滑倒並要求未來修復。