这取决于。如果你想为百慕大掉期期权定价,那你就不走运了;QuantLib 只能在树上对它们进行定价,并且无法使用这两条曲线。
如果你想为欧洲掉期期权定价,你可以使用 Black 公式中的两条曲线,尽管我同意通过查看代码来找出这一点并不明显。正如您可能已经看到的那样,您必须同时实例化一个工具(Swaption 类)和一个相应的引擎(BlackSwaptionEngine 类)。BlackSwaptionEngine 的构造函数采用除其他参数之外的折扣曲线,因此您将在此处传递 OIS 曲线。另一方面,Swaption 的构造函数将选项底层的交换作为 VanillaSwap 实例。反过来,VanillaSwap 构造函数接受一个 IborIndex 实例,该实例表示要支付的浮动利率指数;最后,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 存储库中检出。