如何使用QuantLib计算单一名称债券价格?

时间:2015-03-05 15:53:51

标签: c++ quantlib

我想计算债券的价格,折扣因素称为时间函数和固定息票。

我从QuantLib 1.5找到的例子(bond.cpp)看起来相当复杂。我删除了零债券和浮动息票债券,只留下固定的息票债券计算部分。

我不明白的部分是如何根据我的表格定义RATE HELPERS和CURVE BUILDING部件:

仪器类型|到期日|引用|折扣因子

 CD                 03/04/2015       0.25        0.9999
 CD                 03/18/2015       0.254       0.9998
 CD                 06/17/2015       0.266       0.9997
 CD                 09/16/2015       0.38        0.9996
 CD                 12/16/2015       0.57        0.9995
.....
 SWAP               03/04/2019       1.33        0.94
 SWAP               03/04/2020       1.66        0.92
 SWAP               03/04/2021       1.74        0.89

如何在QuantLib中建立折扣曲线?

1 个答案:

答案 0 :(得分:2)

您应该直接使用折扣因子,忘记率助手和曲线构建。

当您想要从某个报价中暗示曲线时,使用后者;但如果您已经计算了折扣因子,则可以使用InterpolatedDiscountCurve类模板直接构建曲线,如:

#include <ql/termstructures/yield/discountcurve.hpp>

...

boost::shared_ptr<YieldTermStructure> discountCurve(
    new InterpolatedDiscountCurve<LogLinear>(dates, discounts,
                                             dayCounter));

其中datesvector<Date>(必须包含曲线开头的第一个日期,通常是今天的日期),discounts是包含相应折扣的vector<double>因素(包括1作为第一个)和dayCounter将用于将日期转换为时间; Actual360()应该没问题。

上面的例子使用对数线性插值;您可以通过将LogLinear替换为另一个来更改它(查看<ql/math/interpolations/>文件夹中的可用文件夹。)