gpt4 book ai didi

c++ - 如何向 Quantlib 中的现有 YieldTermStructure 对象添加常量点差

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:23 28 4
gpt4 key购买 nike

我非常感谢您从 YieldTermStructure 指针移动到添加点差的输入,如下所示::

boost::shared_ptr<YieldTermStructure> depoFutSwapTermStructure(new PiecewiseYieldCurve<Discount,
LogLinear>(settlementDate, depoFutSwapInstruments_New, termStructureDayCounter, 1.0e-15));

我尝试如下添加 50 个基点的点差...

double OC_Spread(0.50 / 100);
Rate OCSQuote = OC_Spread;
boost::shared_ptr<Quote> OCS_Handler(new SimpleQuote(OCSQuote));

然后我继续创建一个 zerospreaded 对象,如下所示:

ZeroSpreadedTermStructure Z_Spread(Handle<YieldTermStructure>(*depoFutSwapTermStructure), Handle<Quote>(OCS_Handler));

但是现在我被卡住了,因为如果我继续做类似的事情,代码会反复崩溃

Z_Spread.zeroYieldImpl;

上面的代码有什么问题。我已经尝试了上述几种方法,但都失败了。

还有一种直接调用折扣函数的 native 方法,就像我现在在添加当前点差之前使用 TermStructure 对象所做的那样,如下所示???

depoFutSwapTermStructure->discount(*it)

最佳答案

恐怕您的界面有点困惑。您尝试在 ZeroSpreadedTermStructure 上调用的 zeroYieldImpl 方法受到保护,因此您不能在您的代码中使用它(至少,这就是我猜测您的方式代码中断,因为您没有报告您收到的错误)。

您与创建的曲线交互的方式是通过它继承的公共(public) YieldTermStructure 接口(interface);其中包括您要调用的 discount 方法,以及 zeroRateforwardRate 等方法。

同样,很难说出为什么您对 discount 的调用会准确地失败,因为您没有引用错误也没有说明 *it 是什么电话。从您报告的初始化和您编写的调用中,我猜您可能已经实例化了一个 ZeroSpreadedTermStructure 对象,但您正试图将它与 -> 语法就好像它是一个指针。如果是这种情况,调用 Z_Spread.discount(*it) 应该会起作用(假设 *it 解析为一个数字)。

如果这不是问题所在,恐怕您需要为您的问题添加更多细节。

最后,对于 QuantLib 中术语结构的更一般处理,您可以阅读 herehere .

关于c++ - 如何向 Quantlib 中的现有 YieldTermStructure 对象添加常量点差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com