看看Bond.cpp的例子:http://quantlib.org/reference/_bonds_8cpp-example.html,看起来depoSwapTermStructure和liborTermStructure是完全一样的曲线。但是,对于浮动利率债券,FloatingRateBond类似乎正在计算floatingRateBond实例的票面利率,从而计算现金流,方法是计算远期利率,然后将利差添加到其中(我觉得这听起来不错)。
这是正确的吗?还是本例的情况是,预测现金流仅通过采用现货曲线并添加价差来计算,以获得预测的息票利率?
发布于 2015-06-25 21:05:29
在该示例中,有两种不同类型的对象在起作用。
它们基本上表现为指向YieldTermStructure的指针。
然后,您有了Handle<YieldTermStructure> (或RelinkableHandle)的实例,它为您提供了另一个间接级别:Handle包含一个shared_ptr,如果需要,可以将其切换为另一个(其基本原理和更多细节可在this link中找到)。
在本例中,libor3m索引被传递给liborTermStructure句柄,因此它将使用链接到它的任何曲线来预测其修正:在本例中为depoSwapTermStructure,因为语句
liborTermStructure.linkTo(depoSwapTermStructure);在债券定价之前执行。正如你所说,票面利率是通过预测曲线外的指数定价并加上价差来计算的。如果我们将liborTermStructure连接到另一条曲线,并再次要求债券提供现金流,则会根据新曲线重新计算现金流。
贴现也是如此。链接到discountingTermStructure的任何曲线都将用于对现金流进行贴现;在本例中,该曲线将是bondDiscountingTermStructure。
至于如何计算息票利率:每个息票在BlackIborCouponPricer实例的帮助下计算自己的利率和金额,该实例在债券之后立即构建,并在不久之后通过语句与息票相关联
setCouponPricer(floatingRateBond.cashflows(),pricer);实际执行计算的代码涉及BlackIborCouponPricer和FloatingRateCoupon类(更多详细信息见here和后面的帖子),但最终在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;
}https://stackoverflow.com/questions/31037325
复制相似问题