債券
QuantLib 上的dirtyPrice() 和貼現曲線
我對 Quant field 和 QuantLib 很陌生,並且在嘗試使用 Python 對非常簡單的固定利率債券進行建模時遇到了以下問題。
如果我使用dirtyPrice() 方法計算IRR,看起來庫不使用提供給DiscountingEngine 的貼現曲線。它確實會影響 NPV() 方法。
這種理解正確嗎?似乎我可以將任何值傳遞給貼現曲線,並且dirtyPrice() 方法僅使用傳遞給FixedRateBond 工具的參數以及它自身在dirtyPrice() 方法中傳遞的參數。
您的問題的答案是,有兩種方法可以呼叫該
dirtyPrice
方法:一種會為您提供給定收益的價格,另一種會使用提供的定價引擎為您提供價格。創建綁定後:
import QuantLib as ql calendar = ql.TARGET() dayCount = ql.Actual360() start = ql.Date(15,12,2019) maturity = ql.Date(15,12,2029) bond = ql.FixedRateBond(2, calendar, 100.0, start, maturity, ql.Period('6M'), [0.05], dayCount)
可以使用建構子呼叫該
dirtyPrice
方法並提供收益(債券可以有一個空定價引擎).dirtyPrice(yield, dayCount, compounding, frequency)
px = bond.dirtyPrice(0.05, dayCount, ql.Compounded, ql.Annual) print(px)
101.89618833523909
或者提供一個定價引擎並呼叫不帶參數的方法:
crv = ql.FlatForward(2, calendar, 0.05, dayCount, ql.Compounded, ql.Annual) yts = ql.YieldTermStructureHandle(crv) engine = ql.DiscountingBondEngine(yts) bond.setPricingEngine(engine) px = bond.dirtyPrice() print(px)
101.89618833523907