Quantlib浮动利率债券现金流计算
Quantlib FloatingRateBond cashflow computation
查看Bond.cpp示例:http://quantlib.org/reference/_bonds_8cpp-example.html看起来CCD_ 1和CCD_。然而,对于浮动利率债券来说,浮动利率债券类别似乎是通过计算远期利率,然后将利差添加到浮动利率债券实例来计算票面利率,从而计算现金流(这听起来很正确)。
这是正确的吗?还是这个例子的情况是,预测的现金流是通过只取现货曲线并添加价差来获得预测的票面利率来计算的?
示例中有两种不同类型的对象。
实际曲线被构建并存储在智能指针中;例如,depoSwapTermStructure
(点曲线)是boost::shared_ptr<YieldTermStructure>
,bondDiscountingTermStructure
也是。它们基本上充当指向YieldTermStructure
的指针。
然后,您有Handle<YieldTermStructure>
(或RelinkableHandle
)的实例,它们为您提供了另一个间接级别:Handle
包含一个depoSwapTermStructure
0,如果需要,可以将其切换为另一个(其基本原理和更多详细信息可在此链接中获得)。
在该示例中,libor3m
索引被传递给liborTermStructure
句柄,因此它将通过使用链接到它的任何曲线来预测其固定值:在这种情况下,depoSwapTermStructure
,因为语句
liborTermStructure.linkTo(depoSwapTermStructure);
在债券定价之前执行。正如你所说,票面利率是通过预测曲线外的指数固定值并添加价差来计算的。如果我们将liborTermStructure
与另一条曲线联系起来,并再次询问债券的现金流,它们将根据新曲线重新计算。
折扣也是如此。与discountingTermStructure
相关的任何曲线都将用于贴现现金流;在该示例中,它将是bondDiscountingTermStructure
。
至于如何计算息票利率:每个息票都在BlackIborCouponPricer
实例的帮助下计算自己的利率和金额,该实例在债券之后立即构建,并在不久后通过声明与息票关联
setCouponPricer(floatingRateBond.cashflows(),pricer);
实际执行计算的代码涉及BlackIborCouponPricer
和FloatingRateCoupon
类(更多详细信息在这里和下面的帖子中),但最终在liborTermStructure
0类中计算速率为:
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;
}
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 使用流处理接收到的数据
- 计算输入流中值的出现次数
- 不计算程序中的最低和最高成绩。(C++)(流)
- tellp()计算字符串流长度的原理是什么
- 计算存储在向量中的值流的移动平均值
- 将实时摄像机源从 RPI 计算模块流式传输到 RPI 3
- 用opencv计算光流
- 计算大数据流中每个元素的出现次数
- 计算文件流中的字符
- 计算分布流中字符串数的任何更快方法
- Quantlib浮动利率债券现金流计算
- 在计算密集型程序中正确使用流
- Quantlib浮动利率债券,已知第一现金流和预测现金流相等
- 从计算的光流中去除噪声
- FloatingRateBond现金流检索和打印