Quantlib浮动利率债券,已知第一现金流和预测现金流相等
Quantlib Floating rate bond with known first cash flow and forecasted cash flows equal
我正在尝试为浮动利率债券定价,并且我已经在C++上用 quantlib 构建了贴现曲线。现在我想做的是使用 FloatingRateBond 类并创建一组现金流,其中第一个现金流是已知的(假设与该现金流相关的索引在上次重置日期是已知的),并使用当前指数预测剩余现金流。
为了使其更加图形化,假设年度付款,并且上次重置日期的指数为1%,重置保证金为1%。那么第一个现金流将是粗略地说是 2%。现在假设今天的指数是2%,那么我希望所有剩余的现金流都是3%(根据日计数惯例和工作日惯例进行适当调整)。
如何为浮动利率债券类的实例创建这样的现金流结构?
首先,我将快速构建债券,从 QuantLib 版本中的债券示例中复制一些代码(另外,免责声明:我还没有尝试编译下面的代码)。 有关所涉及的类的更多详细信息,请参阅 QuantLib 文档。
让我们假设您所说的年度付款:
Schedule schedule(startDate, maturityDate, Period(Annual),
calendar, convention, convention,
DateGeneration::Backward, true);
为了说明,我们假设我们将使用美元LIBOR指数。它的未来固定是根据我们稍后将设定的利率期限结构预测的。
RelinkableHandle<YieldTermStructure> liborTermStructure;
boost::shared_ptr<IborIndex> libor(
new USDLibor(Period(1,Years),liborTermStructure));
现在建立债券,将保证金作为LIBOR利率的利差添加:
FloatingRateBond bond(settlementDays, faceAmount,
schedule, libor, dayCounter,
convention, fixingDays,
// gearings
std::vector<Real>(1, 1.0),
// spreads
std::vector<Rate>(1, 0.001));
现在要获得所需的优惠券,您只需设置相应的市场数据。要设置第一个现金流的比率,请存储过去固定的Libor指数:
libor->addFixing(resetDate, 0.01);
为了设定未来的现金流,请创建一个具有所需利率的平坦利率曲线(注意惯例,使其与Libor指数相匹配):
boost::shared_ptr<YieldTermStructure> flatRate(
new FlatForward(today, 0.01, dayCounter, Simple, Annual));
liborTermStructure.linkTo(flatRate);
(您不一定局限于统一利率;如果您可以引导Libor曲线,则可以使用该曲线来获得对未来息票的现实估计。
此时,您应该能够提取债券息票并检查它们是否符合预期:
std::vector<boost::shared_ptr<CashFlow> > cashflows = bond.cashflows();
for (std::size_t i=0; i < cashflows.size(); ++i)
std::cout << cashflows[i]->date() << " "
<< cashflows[i]->amount() << "n";
如果您还想调用诸如 bond.cleanPrice()
之类的方法,则需要告诉债券如何贴现现金流:
RelinkableHandle<YieldTermStructure> discountingTermStructure;
boost::shared_ptr<PricingEngine> bondEngine(
new DiscountingBondEngine(discountingTermStructure));
bond.setPricingEngine(bondEngine);
您可以使用用于折扣您用于预测的相同曲线...
discountingTermStructure.linkTo(flatRate);
。或创建并使用其他的。
- 使用流处理接收到的数据
- C++中的cin.ignore()函数不适用于整个流
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 使用ios:ate写入到流会覆盖现有文件
- std::当在256字节边界上写入整数时,流的奇怪行为
- 是否可以使用if constexpr删除控制流语句
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 是否可以在c++中处理字符串流中的各个元素
- catch框架有没有办法比较流或文件
- C++初级读本5版1.23从文件流中读取
- 试图创建流或fopen时程序崩溃
- 如何在 c++ 中将数据与文件流分离
- 为什么make_optional不适用于文件流?
- 流填充字符的默认定位
- 多流迭代器 c++
- 如何忽略输入流中的某些字符?
- 为什么我不能在同一代码行中创建和打开流?
- Quantlib浮动利率债券现金流计算
- Quantlib浮动利率债券,已知第一现金流和预测现金流相等
- FloatingRateBond现金流检索和打印