УДК 519.245
ЭФФЕКТИВНОЕ ИСПОЛЬЗОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ РЕСУРСОВ ДЛЯ ОПРЕДЕЛЕНИЯ СПРАВЕДЛИВЫХ ЦЕН ОПЦИОНОВ БЕРМУДСКОГО ТИПА
А.С. Горбунова, И.Б. Мееров, А.С. Никонов, А.В. Русаков, А.В. Шишков
В работе рассматривается вопрос эффективной реализации одного из алгоритмов определения справедливых цен опционов бермудского типа. Приводится описание подходов к оптимизации вычислений как в последовательном, так и в параллельном варианте, а также результаты вычислительных экспериментов. Ключевые слова: метод Монте-Карло, нахождение справедливой цены опциона, параллельное программирование, оптимизация вычислений.
Введение
Задача определения рациональных цен опционов является актуальной в связи с их популярностью на финансовых рынках. Опционы американского типа [1, 2], которые могут быть предъявлены к исполнению в произвольный момент времени в течение срока действия контракта, получили широкое распространение на фондовых биржах. На практике такая задача часто решается для дискретного аналога опционов американского типа - опционов бермудского типа, которые могут быть предъявлены к исполнению в любой из конечного количества зафиксированных в контракте моментов времени. Получение аналитического решения в общем случае является затруднительным. Популярный подход к решению данной задачи состоит в применении методов Монте-Карло и средств имитационного моделирования. Успех применения этих методов существенно зависит от качества используемых генераторов случайных чисел и, как правило, требует больших вычислительных затрат. По этой причине разработка параллельных реализаций расчетных алгоритмов для решения задач такого типа оказывается особенно актуальной.
В работе [3] рассматривается рекурсивная реализация одного из наиболее популярных алгоритмов для решения подобных задач - Broadie-Glasserman Random Trees [2]. Авторами настоящей статьи разработана нерекурсивная последовательная реализация, производительность которой в среднем на 18% выше. Отличительной особенностью данной реализации является ориентация на распараллеливание на базе технологий OpenMP и MPI, позволяющее эффективно использовать имеющиеся вычислительные ресурсы. Указанные особенности позволят применить результаты работы при создании многопроцессорных/многоядерных аппаратно-программных комплексов и систем для оптимального принятия решений на финансовых рынках в условиях, когда выигрыш во времени решения задачи дает большое преимущество в конкурентной борьбе.
Постановка задачи
Рассмотрим N-мерный финансовый рынок, эволюционирующий в непрерывном времени [1]:
dBt = rBfdt, B0 > 0;
t t 0 (1) ds; = s't ((в1 - ô1 )dt+&dw; ), so > 0,
где процессы B = (Bt)t>0 и S1 = (S't )t>0, i = 1,..., N, описывают поведение облигации B и 1-ой акции в каждый момент времени t > 0 соответственно.
Поведение облигации B задается процентной ставкой r , изменение стоимости акции S1 определяется волатильностью о1 и нормой возврата в1, ô1 - ставка дивиденда.
Случайные возмущения в цене акции S' описываются /-ой компонентой векторного ви-неровского процесса W1 = (W/) t>0(W = W1,..., WN).
Предположим, что & и = 9г -5г,i = 1,..., N являются функциями времени, а ковариационная матрица COV = (cov ij )г. j=1 N отражает зависимости между ценами рисковых активов финансового рынка в каждый момент времени.
Рассмотрим одну из часто встречающихся разновидностей опциона max-call - опциона, для которого функция выплаты h(t, St) имеет следующий вид:
h(t, st)=(пи« ( s; ) - p) +, (2)
i=1...N
где положительная константа P определяется опционным контрактом, x + = max(x, 0) .
Решим задачу вычисления стоимости опциона бермудского типа, который может быть предъявлен к исполнению в любой из заранее фиксированных моментов t е Time = {t0 = 0, t1, t2,..., td = T}, где момент времени T задает истечение срока действия опциона.
Описание алгоритма
Математически поиск рациональной цены опциона сводится к решению следую-
гот ^ _rh(Sт)п
щей стохастической оптимизационной задачи [2J: Q = max E[-J.
TeTime B
Пусть Q(t, x) = max(h(t, x), E
Q(t + 1, S;+i)Bt
Bt+1
|St = xj), Q(T, ST) = h(t, ST). Тогда
стоимость опциона бермудского типа определяется как C = Q(0, S0) [2].
Алгоритм Broadie-Glasserman Random Trees основан на методе Монте-Карло и динамическом программировании. Первым шагом его работы является построение дерева цен акций, каждый i-ый уровень которого соответствует моменту времени t.. Второй шаг алгоритма состоит в обратном динамическом программировании - вычислении верхней и нижней оценок справедливой цены опциона методом их пересчета от листьев дерева к корню. После многократного повторения шагов 1 и 2 вычисляется доверительный интервал для параметра C. Подробно алгоритм и его теоретическое обоснование описаны в [2].
Программная реализация и подходы к оптимизации вычислений
Некоторые подходы к реализации алгоритма описаны в работе [3]. В настоящей статье мы ограничимся описанием основных усовершенствований, внесших наибольший вклад в оптимизацию вычислений по скорости, а также подходов к распараллеливанию алгоритма для многоядерных и кластерных систем.
Обход дерева цен акций. Главной особенностью реализации алгоритма является обход дерева цен акций в глубину (рис. 1). Корень дерева содержит N-мерный вектор цен акций в начальный момент времени, а каждая вершина дерева хранит N-мерный вектор цен акций в соответствующий момент времени tt из множества Time. Таким образом, каждый уровень дерева соответствует некоторому моменту исполнения опциона ti . Количество уровней соответствует количеству моментов исполнения опциона (d), а количество ветвей дерева (K) является параметром алгоритма и влияет на точность вычислений. Значения цен акций в узлах рассчитываются путем численного интегрирования системы стохастических дифференциальных уравнений (1). В отличие от первона-
чальных реализаций, основанных на обходе дерева цен акций в ширину, описываемая реализация использует обход дерева в глубину.
Для навигации по дереву используется стек, содержащий номера вершин в порядке посещения. Максимальная длина стека - ё*$12е_о/(1М) байт - соответствует максимальной длине пути в дереве от корня до листа. Для адресации памяти вводится нумерация вершин дерева таким образом, что корень получает номер 0, а, начиная с К, номера присваиваются по порядку потомкам только тех узлов, которые лежат на верхней ветви (рис. 1).
Уровень 3
Рис. 1. Пример обхода дерева стоимостей акций для N=1, К=2, 6=4
На каждом шаге алгоритма номер текущей вершины сравнивается с номером предыдущей. Рассмотрим логику работы алгоритма, исходя из того, что особым будет случай, когда вершина является листом дерева, а также случай, когда вершина является К-м потомком (т.е. данных достаточно для построения оценок для узла-предка). 1. Если номер предыдущего узла меньше номера текущего узла (направление движения по дереву от корня): если текущий узел является листом дерева (рис. 2, а):
a. моделируем цену акций для текущего узла;
b. оцениваем стоимость опциона;
c. делаем шаг назад;
если текущий узел является внутренним узлом дерева (рис. 2, б):
a. моделируем цену акций для текущего узла;
b. вычисляем номер узла для шага вперед и осуществляем переход.
3. Если номер предыдущего узла больше номера текущего узла (направление движения по дереву к корню), вычисляем, каким по счету потомком является текущий узел:
a. если узел не является последним из потомков (не К-й), переходим к следующему потомку (рис. 2, в);
b. если узел является последним из потомков (К-й): оцениваем стоимость опциона для предка текущего узла и делаем шаг назад (рис. 2, г).
Результатом работы алгоритма являются нижняя и верхняя оценки стоимости опциона.
Винеровскии процесс
буфер цен
буфер нижних оценок (буфер верхних оценок)
Винеровскии процесс
стек пути
J-LË
стек пути■ ►
буфер цен
I I ! I
I_I_I ■ I_I_I I_L
буфер нижних оценок (Бушар верхних оценок)
Г)
Рис. 2. Реализация обхода дерева
Нерекурсивная реализация. В работе [3] был реализован рекурсивный алгоритм обхода дерева цен акций. Так как задача обладает высокой вычислительной трудоемкостью, нерекурсивная реализация алгоритма целесообразна для уменьшения времени работы. Немаловажным преимуществом такой реализации является также то, что моделирование цены акций занимает меньше времени, так как, благодаря изменению порядка вычислений, появляется возможность векторизовать функцию вычисления экспонент применительно к массиву достаточно большого размера.
Важно заметить, что для хранения цен акций при использовании данного алгоритма необходимо N*K*d*size_of(double) байт, а для хранения оценок -2*d*K*size_of(double). Алгоритм строит дерево акций в глубину и одновременно с этим подсчитывает оценки стоимости опциона.
Схема распараллеливания. В основе алгоритма лежат стохастические математические модели. Для их реализации используется метод Монте-Карло. Потому для получения результатов, наиболее приближенных к действительности, необходимо проведение как можно большего числа запусков с целью получения среднего значения. Исходя из этого, очевиден наиболее простой способ распараллеливания алгоритма - запуск функций вычисления цены опциона на каждом вычислительном устройстве независимо и сбор результатов на главном вычислительном устройстве.
Распараллеливание с помощью технологии MPI проводилось двумя способами -на уровне обхода дерева и на уровне независимых испытаний метода Монте-Карло. Основная идея распараллеливания (рис. 3) базируется на том факте, что генерация ветвей в дереве стоимостей акций происходит независимо друг от друга. Следующий за этим подсчет верхних и нижних оценок начинается с последнего уровня, далее проходит все уровни дерева до первого, используя на каждом шаге лишь результаты предыдущего шага (работает схема динамического программирования). Лишь на нулевом уровне (в корне дерева) происходит агрегация результатов, собранных на различных ветвях.
Схема распараллеливания выглядит следующим образом.
1. Головной процесс формирует первый уровень дерева.
2. Построение ветвей дерева равномерно распределяется между процессами (в том числе и головным) в соответствии с рис. 3.
3. По окончании построения дерева каждый процесс пересчитывает оценки от листьев дерева к корню вплоть до первого уровня.
4. Получив оценки первого уровня, процессы пересылают результат головному процессу.
5. Головной процесс агрегирует полученные результаты и вычисляет верхнюю и нижнюю оценки стоимости опциона.
О
-ю
К Г| ух4*1
Jt о
Процесс-к
Рис. 3. Схема распараллеливания на уровне обхода дерева
Кроме того, также как и с помощью OpenMP, было проведено распараллеливание на уровне независимых испытаний метода Монте-Карло на основе MPI.
Результаты вычислительных экспериментов
Реализация описанного выше алгоритма проводилась на языке программирования C с использованием библиотек Intel® Math Kernel Library (MKL) 10.0.012, OpenMP 2.0, Microsoft MPI и оптимизирующего компилятора Intel® C/C++ Compiler 10.0.026 for Windows. Результаты вычислительных экспериментов получены на системе Intel® Core(TM) 2 Quad (Kentsfield, 4 core x 2.4 GHz, L2 Cache 2 x 4096 KB). Для экспериментов были выбраны тестовые значения параметров, перечисленные в табл. 1.
Таблица 1. Значения параметров
N 5
K 50
D 5, 6 в разных экспериментах
T (дни) 365
R 5%
S0 (90; 100; 110; 120; 130)
P 100
Коэффициент корреляции 0,3
| (-0,05; -0,05; -0,05; -0,05; -0,05)
а (0,2; 0,2; 0,2; 0,2; 0,2)
Эксперимент демонстрирует (рис. 4) время работы алгоритма для 5 и 6 моментов исполнения опциона в сравнении с реализацией из [3]. Ниже приведены результаты распараллеливания для многоядерных/многопроцессорных систем с использованием OpenMP (табл. 2) и MPI (табл. 3).
$
О О,! к Е
2L
ш
Ускорение 17,8%
1,4
1 ? 1
0,6 0,4
0,2 0
d = 5
1,26
1,07
□ рекурсивная реализация ■ нерекурсивная реализация
Ускорение 18,1%
70 60 50
Ï
О 40 К
I30
m
20 10
62,65
53,07
d = 6
□ рекурсивная реализация ■ нерекурсивная реализация
Рис. 4. Сравнение с рекурсивной реализацией Таблица 2. Ускорение при распараллеливании с использованием ОрепМР
Количество ядер 1 2 4
Ускорение 1 1,98 3,93
Таблица 3. Ускорение при распараллеливании с использованием MPI
Схема распараллеливания / кол-во процессоров 1 2 4
На уровне обхода дерева 1 1,97 3,96
На уровне независимых итераций 1 1,99 3,99
Результаты вычислительных экспериментов, основанных на использовании технологии MPI, получены на системе Intel® XEON 5150 Dual Core (4 core x 2.66 GHz, 4Gb DDR2) с межузловым соединением 1Gb Ethernet.
Как можно заметить, созданная программная реализация показывает практически линейное ускорение в зависимости от числа ядер. При использовании технологии MPI также были получены подобные результаты.
Заключение
Разработана эффективная реализация алгоритма Broadie-Glasserman Random Trees нахождения цены опциона Бермудского типа, позволившая получить прирост производительности в 15-18% относительно реализации [2]. Программа эффективно выполняется на многоядерных архитектурах, показывая практически линейное ускорение как на многоядерных, так и на многопроцессорных вычислительных системах.
Полученные результаты могут быть использованы в рамках создания аппаратно-программных комплексов для оптимального принятия решений при анализе финансовых рынков.
Литература
1. Ширяев А.Н. Основы стохастической финансовой математики. - В 2 тт. - М.: Фазис, 1998.
2. Broadie M., Glasserman P. Pricing American-style securities using simulation // Journal of Economic Dynamics and Control. - 1997.- Vol. 21. - Р. 1323-1352.
3. Горбунова А.С. и др. Параллельная реализация одного алгоритма нахождения цены опционов бермудского типа // Материалы 5-го Международного научно-практического семинара «Высокопроизводительные параллельные вычисления на кластерных системах»; Под ред. проф. Р.Г. Стронгина. - Н. Новгород: Изд-во Нижегородского госуниверситета, 2005. - С. 60-67.
Горбунова Анна Сергеевна Мееров Иосиф Борисович
Никонов Андрей Сергеевич
Русаков Андрей Валентинович
Шишков Александр Валерьевич
Нижегородский государственный университет им. Н.И. Лобачевского, аспирант, [email protected] Нижегородский государственный университет им. Н.И. Лобачевского, доцент, к.т.н., [email protected]
Нижегородский государственный университет им. Н.И. Лобачевского, студент, andrey.nikonov@itlab. unn.ru Нижегородский государственный университет им. Н. И. Лобачевского, студент, [email protected] Нижегородский государственный университет им. Н. И. Лобачевского, студент, [email protected]
УДК 519.6
СРЕДА МОДЕЛИРОВАНИЯ ДЛЯ РЕШЕНИЯ ПЕРКОЛЯЦИОННЫХ ЗАДАЧ Е.Н. Головченко, Д.В. Петров
Процесс подготовки и запуска заданий на современных вычислительных системах коллективного пользования сопряжен с рядом трудностей. Для его упрощения авторами была создана среда моделирования. С ее использованием произведено моделирование заводнения месторождения нефти. Месторождение аппроксимировалось перколяционными решетками, содержащими 106-1010 узлов. Исследованы стационарный и нестационарный режимы воздействия на месторождение. Получены графики распределений нефти, воды, давления и вакансии по месторождению.
Ключевые слова: математическое моделирование, параллельное программирование, теория перколя-ции.
Введение
В настоящее время многопроцессорные вычислительные системы перестали быть редкостью, и пользователи зачастую имеют доступ к нескольким вычислительным ресурсам. Также в последнее время большое внимание уделяется развитию ОКТО-технологий, что дает многим пользователям возможность вычислять задачи в рамках распределенных систем. Однако процесс подготовки и запуска заданий для каждой системы имеет свои особенности, а операции, связанные с проектированием, не всегда интуитивно понятны обычному пользователю. При моделировании практических задач чаще всего требуется провести несколько десятков вычислений одной и той же задачи с разными или одними и теми же наборами входных данных. В результате пользователю приходится выполнять десятки раз повторяющиеся действия. Операции, производимые при решении задачи, могут быть нацелены на различные кластеры или хранилища данных, что требует запоминания и многократного ввода различных логинов и паролей. Для упрощения процесса взаимодействия пользователя с вычислительными системами была создана специализированная среда моделирования.