Это зависит. Если вы хотите оценить перекрестки Бермудских островов, вам не повезло; 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.
Awesome - спасибо за ответ Luigi, очень полезно. Книга QL также очень удобна. – keynesiancross
Привет Луиджи - быстрый вопрос для новичка. Где в этой ссылке около версии 1.2? И будет ли я загрузить его и построить его, как 1.1? (Для некоторого контекста мне потребовалось 4 часа, чтобы понять, что мне нужно было создать 1.1, прежде чем я смогу использовать его ха-ха). Еще раз спасибо – keynesiancross
Эта ссылка _is_ версия 1.2. Если у вас установлен Subversion, вы можете проверить его с этого адреса. Если вы не знаете, о чем я говорю, перейдите на http://quantlib.svn.sourceforge.net/viewvc/quantlib/branches/R01020x-branch/QuantLib и нажмите «Загрузить архив GNU» в нижней части страница. Если вы работаете в Windows, вы построите его как 1.1; если вы находитесь на Linux или Mac OS, вам сначала нужно запустить скрипт autogen.sh (некоторые подробности об этом и о Subversion находятся по адресу http://quantlib.org/svn.shtml) –