債券

QuantLib 上的dirtyPrice() 和貼現曲線

  • September 23, 2020

我對 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

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