- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为 float 利率债券定价,并且我已经在 C++ 上使用 quantlib 构建了贴现曲线。现在我想做的是使用 FloatingRateBond 类并创建一组现金流量,其中第一个现金流量已知(假设与该现金流量相关的指数在上次重置日期已知)并预测剩余现金使用当前索引的流。
为了使其更形象化,假设每年支付一次,上次重置日期的指数为 1%,重置 margin 为 1%。那么第一笔现金流大概是2%。现在假设今天的指数为 2%,那么我希望所有剩余的现金流量为 3%(根据日计数惯例和工作日惯例进行适当调整)。
如何为 FloatingRateBond 类的实例创建这样的现金流结构?
最佳答案
首先,我将快速构建绑定(bind),从 QuantLib 版本中的绑定(bind)示例中复制一些代码(另外,免责声明:我没有尝试编译下面的代码)。有关所涉及类的更多详细信息,请参阅 QuantLib 文档。
让我们假设您所说的年度付款:
Schedule schedule(startDate, maturityDate, Period(Annual),
calendar, convention, convention,
DateGeneration::Backward, true);
为了便于说明,我们假设我们将使用 USD Libor 指数。它的 future 定盘价是根据我们稍后设定的利率期限结构预测的。
RelinkableHandle<YieldTermStructure> liborTermStructure;
boost::shared_ptr<IborIndex> libor(
new USDLibor(Period(1,Years),liborTermStructure));
现在构建债券,添加 margin 作为 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);
为了设定 future 的现金流量,创建一条具有所需利率的平坦利率曲线(注意惯例,使其与 Libor 指数相匹配):
boost::shared_ptr<YieldTermStructure> flatRate(
new FlatForward(today, 0.01, dayCounter, Simple, Annual));
liborTermStructure.linkTo(flatRate);
(您不必局限于固定利率;如果您可以引导 Libor 曲线,则可以使用该曲线来获得对 future 息票的现实估计。)
此时,您应该能够提取债券息票并检查它们是否符合预期:
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++ - Quantlib 已知第一现金流量与预测现金流量相等的 float 利率债券,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30870599/
王者人生分享抽10Q币、现金、游戏钻石等 非必中 王者人生分享活动页面给随便一人 即可参与抽奖 奖品有10Q币、现金、游戏钻石等 亲测中10Q币 中了按照步骤兑换即可 活动地址:http:
微博新年许愿DNF抽5Q币+现金 亲测10Q币秒到 速度上 打开微博APP扫码进入活动界面 右上角如果没有红包 就关注并分享 然后在从自己的微博文章入口进入 进入以后再次点击红包 拆红包 红包需
我有个问题困扰了我一段时间。我尝试了一些解决方案,但没有奏效。 我有一个用于现金输入的文本框(例如 $999,99)。但是我需要自动输入“,”和“。”正确显示值。 我尝试了两种解决方案。其中之一是:
#include #include #include int main(void) { // prompt user for "0.00" value float dollars
我是一名优秀的程序员,十分优秀!