[英]Quantlib FloatingRateBond cashflow computation
看一下Bond.cpp示例: http : depoSwapTermStructure
,看起來depoSwapTermStructure
和liborTermStructure
是完全相同的曲線。 但是,對於浮動利率債券,似乎FloatingRateBond類正在通過計算遠期利率然后向其添加價差來計算floatRateBond實例的息票利率,因此也在計算現金流量。
這是正確的嗎?還是在本示例中,僅通過使用現貨曲線並添加點差來獲得預測息票率來計算預測現金流量?
該示例中有兩種不同類型的對象在起作用。
實際曲線被建立並存儲在智能指針中。 例如, depoSwapTermStructure
(點曲線)是boost::shared_ptr<YieldTermStructure>
, bondDiscountingTermStructure
。 它們基本上充當着YieldTermStructure
指針。
然后,您擁有Handle<YieldTermStructure>
(或RelinkableHandle
)的實例,這些實例為您提供了另一個間接級別:一個Handle
包含一個shared_ptr
並可以在需要時將其切換為另一個(該方法的原理和更多細節可在此鏈接中找到) )。
在該示例中, libor3m
索引傳遞給liborTermStructure
句柄,因此它將使用與其鏈接的任何曲線來預測其固定值:在這種情況下, depoSwapTermStructure
,因為該語句
liborTermStructure.linkTo(depoSwapTermStructure);
在對債券定價之前執行。 如您所說,票面利率是通過預測曲線上的固定指數並加上價差來計算的。 如果我們將liborTermStructure
鏈接到另一條曲線,並再次要求債券提供其現金流量,則會根據新曲線重新計算它們。
折扣也一樣。 與discountingTermStructure
任何曲線相關聯的discountingTermStructure
將用於折現現金流量; 在該示例中,將為bondDiscountingTermStructure
。
至於票息率的計算方式:每個票息都在BlackIborCouponPricer
實例的幫助下計算其自己的利率和金額,該實例在債券發行后立即建立,並在語句之后不久與票息相關聯
setCouponPricer(floatingRateBond.cashflows(),pricer);
實際執行計算的代碼涉及BlackIborCouponPricer
和FloatingRateCoupon
類(更多詳細信息在此處和BlackIborCouponPricer
的文章中),但最終在IborIndex
類中以如下方式計算IborIndex
:
Rate IborIndex::forecastFixing(const Date& fixingDate) const {
Date d1 = valueDate(fixingDate);
Date d2 = maturityDate(d1);
Time t = dayCounter_.yearFraction(d1, d2);
return forecastFixing(d1, d2, t);
}
Rate IborIndex::forecastFixing(const Date& d1,
const Date& d2,
Time t) const {
DiscountFactor disc1 = termStructure_->discount(d1);
DiscountFactor disc2 = termStructure_->discount(d2);
return (disc1/disc2 - 1.0) / t;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.