我也在威尔莫特上发布了这个,不确定哪个会得到更多的回应。

我对 Quantlib(和 C++ . . .)的世界比较陌生,所以也许这很明显。我想弄清楚 Quantlib 是否可以为远期溢价 Vanilla 掉期定价(OIS 贴现,3mL 曲线用于估计)。我在 Quantlib 的 Swaption 文件中看到的只是一种用于贴现的期限结构的输入。它是否也将其用于估计?或者有没有办法覆盖它,这样我就可以输入两条曲线。

任何帮助,示例等将不胜感激(并且可以节省我很多时间盯着相同的文件,希望有什么东西突然出现在我身上......)!

非常感谢

最佳答案

这取决于。如果你想为百慕大互换定价,那你就不走运了; QuantLib 只能在树上为它们定价,并且无法使用这两条曲线。

如果您想为欧洲掉期定价,您可以使用 Black 公式中的两条曲线,尽管我同意通过查看代码发现这一点并不明显。正如您可能已经看到的,您必须同时实例化一个工具(Swaption 类)和一个相应的引擎(BlackSwaptionEngine 类)。 BlackSwaptionEngine 的构造函数除其他参数外还采用折扣曲线,因此您将在此处传递 OIS 曲线。另一方面,Swaption 的构造函数将期权底层的交换作为 VanillaSwap 实例。反过来,VanillaSwap 构造函数接受一个 IborIndex 实例,表示要支付的 float 利率指数;最后,IborIndex 构造函数将曲线用于预测其固定值,因此您可以在此处传递 3mL 曲线。总结一下:

shared_ptr<IborIndex> libor(new GBPLibor(3*Months, forecastCurve));
shared_ptr<VanillaSwap> swap(new VanillaSwap(..., libor, ...));
shared_ptr<Instrument> swaption(new Swaption(swap, ...));
shared_ptr<PricingEngine> engine(new BlackSwaptionEngine(discountCurve, ...));
swaption->setPricingEngine(engine);
double price = swaption->NPV();

另外,请注意当前发布的版本(QuantLib 1.1)有一个错误,它会在计算过程中的某些时候使用错误的曲线。您将需要使用 1.2 版,该版本尚未发布,但可以从 https://quantlib.svn.sourceforge.net/svnroot/quantlib/branches/R01020x-branch/QuantLib 的 Subversion 存储库中 check out 。

关于c++ - QuantLib 中的掉期定价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8884668/

10-11 01:46