2012-01-16 68 views
1

我也在Wilmott上发布了这个消息,不确定哪个会得到更多的回复。QuantLib中的交换定价

我对Quantlib(和C++ ...)的世界比较陌生,所以也许这是相当明显的。我试图弄清楚Quantlib是否可以推出优质香草替代品(OIS折扣,估计3毫升曲线)。我可以在Swaption文件中看到的所有Quantlib都是用于折扣的一个期限结构的输入。它是否也用于估计?或者有没有办法重写它,这样我可以输入两条曲线。

任何帮助,例子等将不胜感激(并会节省我很多时间盯着相同的文件希望有东西跳出来,我...)!

非常感谢

回答

6

这要看情况。如果你想定价百慕大的换货,你的运气不好; QuantLib只能在树上定价,并且无法使用这两条曲线。

如果您想为欧式换款定价,您可以使用黑色公式中的两条曲线,尽管我同意通过查看代码来发现这一点并不明显。正如你可能已经看到的那样,你将不得不实例化一个工具(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,该版本尚未发布,但可以从Subversion存储库https://quantlib.svn.sourceforge.net/svnroot/quantlib/branches/R01020x-branch/QuantLib处检出。

+0

太棒了 - 感谢您的回复Luigi,非常有帮助。你是QL书也很方便。 – keynesiancross 2012-01-17 13:01:06

+0

嗨路易吉 - 快速问题的初学者。在那个链接中,哪里是1.2版本?我会下载它并像1.1一样构建它? (在某些情况下,花了我4个小时才弄清楚在使用它之前必须先构建1.1)。再次感谢 – keynesiancross 2012-01-17 16:01:44

+1

链接_is_ 1.2版本。如果你安装了Subversion,你可以从这个地址查看它。如果您不知道我在说什么,请转到http://quantlib.svn.sourceforge.net/viewvc/quantlib/branches/R01020x-branch/QuantLib,然后单击底部附近的“下载GNU tarball”这一页。如果你在Windows上,你会像1.1一样构建它;如果你使用的是Linux或Mac OS,那么你必须先运行autogen.sh脚本(关于这个和Subversion的一些细节在http://quantlib.org/svn.shtml) – 2012-01-17 19:44:24