使用非线性插值器的自举风险率



>我一直在使用 QuantLib 1.6.2 从 CDS 引导危险率曲线。我的代码CDS.cpp类似于QuantLib 分布,即

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 "。将这些插值器之一传递给 PiecewiseDefaultCurve课?

谢谢

克里斯

[注意:如果有人偶然发现了这个问题,我在这里复制了我在QuantLib邮件列表中给你的答案。

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

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类。

最新更新