Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Запускаем QuantLib в IPython Notebook

leave a comment »

Честно говоря, я немного в шоке от того, насколько быстро Python откусил себе место в финансовом мире. Ведь всегда казалось что финансы – это удел CAS-ов вроде MATLAB или R, а также языка C++. Ан нет. Оказывается что Python тоже людям по душе, и даже соблазняет людей на генерацию оберток вокруг плюсовых библиотек.

Собственно в этом посте я хочу показать, как настроить под Python’ом библиотеку QuantLib, которая является пожалуй самой известной quant finance библиотекой с открытым кодом. Именно это сейчас неустанно демострирует Луиджи Баллабио, главный автор QuantLib.

Достаем Python

Для тех кто уже знаком с этим языком, никакой магии не будет. Наша цель – воспользоваться механизмом IPython notebook, который представляет собой Mathematica-образный интерфейс, на котором можно писать текст (включая LaTeX) а также команды, которые будут обработаны питоновским интерпретатором.

В качестве дистрибутива я выбрал Enthought Canopy Express. Дистрибутив этот поставляется для Windows, Linux и OSX, так что работать будет на любой О.С. и битности. Этот дистрибутив уже поставляется с NumPy, Matplotlib и IPython — вообщем всем, что нам позже потребуется.

“Ноутбуки” можно запускать сразу же после установки питона командой ipython notebook. Фактически, запустится отдельный веб-сервер, который развернет (не особо интуитивный) пользовательский интерфейс. Просто выбираем “New Notebook” в меню справа, и поехали.

Собираем обертку QuantLib

На самом деле, для QuantLib есть две обертки: кошерный, поставляемый из коробки интерфейс для SWIG а также Enthought’овский (сюрприз!) PyQL который работает поверх Cython но судя по комментариям в репо пока может не так много (плюс вроде не собирается на Windows, что как бы, это, проблемка).

Так что мы попробуем воспользоваться SWIG. Скажу сразу – будет это весьма непросто. Для того чтобы построить эту обертку, нам нужны следующие ингредиенты:

  • Полностью собранный Boost.

  • Собранный QuantLib (основные плюсовые либы). Параметры сборки должны быть, конечно же, совместимы с бустом.

  • Установленный SWIG, и swig.exe должен быть доступен в PATH.

  • Установленный Python, который опять же лучше сделать доступным везде.

Это все на самом деле очень болезненно. Например, мои Boost и QuantLib обычно оптимизированны Intel 64 компилятором, соответственно мне нужно добавлять в LIB и INCLUDE вагон всего! Пришлось написать целый batch-файл который выставляет все нужные переменные:

set ql_dir=c:\quantlib\quantlib
set path=%path%;c:\swig
set include=%include%;c:\boost
set lib=%lib%;c:\boost\stage\lib
set vs90comntools=%vs120comntools%

Но это еще не всё! Пришлось так же руками редактировать скрипт сборки чтобы добавить компилятору ключик /bigobj а в линковщике заменить /machine:I386 (wtf?!?) на /machine:X64.

Запуск

Если вы промучались и у вас вдруг все получилось, можно запускать ipython notebook и гонять примеры из квантлиба. Удивительно, но у меня примеры все заработали да и вообще, работать в этом можно!

ipython_quantlib

Advertisements

Written by Dmitri

7 мая 2015 в 12:42

Опубликовано в С++

Tagged with , ,

Оставить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: