使用非线性插值器启动危险率

时间:2016-04-26 12:24:22

标签: bootstrapping quantlib

我一直在使用QuantLib 1.6.2从CDS引导危险率 曲线。我的代码类似于随附的示例“function getId (val) { return val.id; } function notMatchId (val) { return arrayOfIDs.indexOf(val) === -1; } var result = response.map(getId).filter(notMatchId); ” QuantLib分布,即

CDS.cpp

我尝试尝试使用不同的非线性插值方法(而不是上面列出的boost::shared_ptr<PiecewiseDefaultCurve<HazardRate, BackwardFlat> > hazardRateStructure(new PiecewiseDefaultCurve<HazardRate, BackwardFlat> (todaysDate, instruments, Actual365Fixed())); ),例如:

BackwardFlat

但我收到错误“ CubicNaturalSpline KrugerCubic Parabolic FritschButlandCubic MonotonicParabolic ”。将这些插值器中的一个传递到的唯一方法是什么? no appropriate default constructor available上课?

谢谢,

克里斯

1 个答案:

答案 0 :(得分:0)

[注意:如果有人在这个问题上遇到麻烦,我在这里复制我在QuantLib邮件列表上给你的答案。]

您列出的类是实际的插值类,但曲线需要相应的工厂类(例如,示例中的BackwardFlatBackwardFlatInterpolation类的工厂)。在三次插值的情况下,您必须使用Cubic类。默认情况下,它构建Kruger插值(我不知道选择的原因)所以如果你写:

PiecewiseDefaultCurve<HazardRate, Cubic>(todaysDate, instruments, Actual365Fixed())

您将使用KrugerCubic类获得曲线。要获得其他插值,您可以传递带有相应参数的Cubic实例(您可以在插值类的构造函数中查找它们);例如,

PiecewiseDefaultCurve<HazardRate, Cubic>(todaysDate, instruments, Actual365Fixed(),
                                         1e-12, Cubic(CubicInterpolation::Spline, false))

将使用CubicNaturalSpline类和

为您提供曲线
PiecewiseDefaultCurve<HazardRate, Cubic>(todaysDate, instruments, Actual365Fixed(),
                                         1e-12, Cubic(CubicInterpolation::Parabolic, true))

将使用MonotonicParabolic类。