2012-01-16 70 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