1

我想计算债券的价格,折扣因子是时间的函数,固定息票。

我从 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 中构建贴现曲线?

4

1 回答 1

2

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

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

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

...

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

其中dates是 a vector<Date>(必须包括曲线开始的第一个日期,通常是今天的日期),discounts是一个vector<double>包含相应折扣因子(包括 1 作为第一个)的 a,dayCounter将用于将日期转换为时间;Actual360()应该可以。

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

于 2015-03-05T23:09:49.117 回答