這要看情況。如果你想定價百慕大的換貨,你的運氣不好; 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處檢出。
太棒了 - 感謝您的回覆Luigi,非常有幫助。你是QL書也很方便。 – keynesiancross 2012-01-17 13:01:06
嗨路易吉 - 快速問題的初學者。在那個鏈接中,哪裏是1.2版本?我會下載它並像1.1一樣構建它? (在某些情況下,花了我4個小時才弄清楚在使用它之前必須先構建1.1)。再次感謝 – keynesiancross 2012-01-17 16:01:44
鏈接_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