我想计算债券的价格,折扣因素称为时间函数和固定息票。
我从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中建立折扣曲线?
答案 0 :(得分:2)
您应该直接使用折扣因子,忘记率助手和曲线构建。
当您想要从某个报价中暗示曲线时,使用后者;但如果您已经计算了折扣因子,则可以使用InterpolatedDiscountCurve
类模板直接构建曲线,如:
#include <ql/termstructures/yield/discountcurve.hpp>
...
boost::shared_ptr<YieldTermStructure> discountCurve(
new InterpolatedDiscountCurve<LogLinear>(dates, discounts,
dayCounter));
其中dates
是vector<Date>
(必须包含曲线开头的第一个日期,通常是今天的日期),discounts
是包含相应折扣的vector<double>
因素(包括1作为第一个)和dayCounter
将用于将日期转换为时间; Actual360()
应该没问题。
上面的例子使用对数线性插值;您可以通过将LogLinear
替换为另一个来更改它(查看<ql/math/interpolations/>
文件夹中的可用文件夹。)