我想计算债券的价格,使用称为时间函数的贴现因子和固定息票。
我从 QuantLib 1.5 中找到的示例 (bond.cpp) 看起来相当复杂。我删除了零债券和 float 息债券,只留下固定息债券计算部分。
我不明白的部分是我应该如何根据我的表格定义 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 中构建折扣曲线?
最佳答案
您应该直接使用您的折扣因子,而忘记费率助手和曲线构建。
当您想暗示某个报价的曲线时使用后者;但是如果你已经计算了折扣因子,你可以只使用 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/>
文件夹中可用的)。
关于c++ - 如何使用 QuantLib 计算单名债券价格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882100/