Введение 3
Предметная область 6
Постановка задачи 8
Обзор литературы 9
1 Последовательные алгоритмы оценки опционов 10
1.1 Численные методы оценки опционов 10
1.2 Алгоритмы оценки опционов, основанные на методе Монте-Карло 10
1.2.1 Стохастическое дифференциальное уравнение .... 11
1.2.2 Континуальный интеграл 16
1.2.3 Дифференциальное уравнение в частных производных 20
2 Параллелизм для ускорения вычислений 24
2.1 Вычислительные мощности 24
2.2 Параллельные вычисления в MATLAB 25
2.2.1 О MATLAB и Parallel Computing Toolbox 25
2.2.2 Параллельный алгоритм в MATLAB 26
2.3 Технология параллельных вычислений OpenCL 27
2.3.1 Описание технологии OpenCL 27
2.3.2 Генератор случайных чисел 29
2.3.3 Редукция выходного массива 31
2.3.4 Структура программы на OpenCL 33
2.3.5 Параллельный алгоритм расчета опционов на OpenCL35
3 Анализ полученного ускорения вычислений 37
3.1 Ускорение в MATLAB 37
3.2 Ускорение при помощи OpenCL 40
3.3 Сравнение времени работы реализаций в MATLAB, на языке
С и OpenCL 46
Выводы 48
Заключение 50
Список литературы
Метод Монте-Карло - метод численного решения математических задач с помощью моделирования большого количества случайных величин и на-хождения их математического ожидания. Вычисление интегралов является основной направленностью этого метода, так как математическое ожидание непрерывной случайной величины выражается через интеграл.[1][2]
Метод Монте-Карло имеет применение во многих областях, как то:
• задачи финансовой математики - моделирование рыночных ситуаций;
• задачи теории игр;
• производственные задачи - моделирование сложных систем и сетей;
• задачи ядерной и статической физики, и другие.
Популярность этому методу принесла его существенная простота. Данный метод основан на теории вероятности, а конкретнее, на Центральной предельной теореме. Таким образом, ошибка вычислений, проводимых на основе этого метода, сильно зависит от количества моделируемых испытаний. Чем больше испытаний мы проводим, тем меньше ошибка, и в то же время больше временные затраты на расчеты. Тем не менее, для некоторых задач, которые требуют высокой точности вычислений, даже достаточно большое количество испытаний, проведенных в рамках метода Монте-Карло, не даст желательной точности.
Однако мы будем рассматривать применение этого метода в рамках моделирования экономических ситуаций. Обычно в таких задачах требуется спрогнозировать примерную траекторию развития рыночной ситуации. Например, нам не нужно знать сколько будет стоить акция через год с точностью до копейки, но нам нужно знать, будет ли цена на акцию расти или падать, и чем быстрее мы это узнаем, тем лучше. Таким образом, для прогнозирования в рамках экономической и финансовой области в приоритете оказывается скорость вычислений, нежели их точность. И тут оказывается полезным свойство хорошей распараллеливаемости метода Монте-Карло, путем распределения численных статических испытаний по отдельным процессорам.
В настоящее время большую популярность приобрели различные техно-логии параллельных вычислений, в том числе с использованием GPGPU (General Purpose GPU). Это связано с постоянно растущей сложностью актуальных задач, а так же с растущим объемом данных для обработки. Суть таких вычислений в том, чтобы части программы выполнялись одновременно в наборе потоков, взаимодействующих друг с другом. Использование параллельных компьютеров (компьютерных систем с набором процессоров, работающих одновременно) обосновано идеей о том, что если одному процессору на выполнение задачи требуется времени, то п процессорам на это должно потребоваться в п раз времени меньше. Но, конечно, это идеальный случай, и в реальности такого добиться не удастся. Однако, ускорить работу вполне возможно, в той или иной степени, в зависимости от алгоритма и имеющейся аппаратной системы.
Примерами технологий для параллельных вычислений могут быть OpenMP, MPI, CUDA, OpenCL. Так же в пакете прикладных программ MATLAB существует набор средств для написания параллельных алгоритмов, объединенных в MATLAB Parallel Computing Toolbox.
В данной работе будут исследоваться алгоритмы оценки европейского опциона, как примера классического вида, и азиатского, в качестве усложнения первоначальной задачи. Рассматриваемые алгоритмы, основанные на методе Монте-Карло, будут реализованы последовательно и параллельно с помощью технологий MATLAB Parallel Computing Toolbox и технологии гетерогенных вычислений OpenCL и языка С. Анализ скорости работы разных подходов и технологий будет проведен на высокопроизводительном кластере Ресурсного Центра "Вычислительный Центр СПбГУ"[4].
Опцион - вид экономических деривативов, который является достаточно гибким инструментом работы на бирже и позволяет снизить риски манипулирования активами. Подробнее опционы будут описаны в главе "Предметная область". Большую роль в теории оценки опционов сыграла статья
"The pricing of options and corporate liabilities" 1973 года (Myron Scholes, Fischer Black) [5], в которой была описана модель Блэка-Шоулза, давшая аналитическую формулу для классических, или ванильных, опционов. Но для опционов другого вида, экзотических, формулы нет, поэтому приходится использовать численные методы для приближенного нахождения цены таких опционов, что и приводит нас к методу Монте-Карло.
Таким образом, в данной работе будет исследован вопрос об оценке опционов методом Монте-Карло и ускорении соответствующих вычислений с помощью программных средств MATLAB Parallel Computing Toolbox и технологии гибридных вычислений OpenCL.
В процессе рассмотрения задачи, были разобраны и реализованы три подхода к нахождению цены европейского и азиатского Call-опциона (таким же образом можно искать и Put-опцион, формула его стоимости немногим отличается от Call, главное - правильно спрогнозировать цену на базовый актив в нужный нам момент времени). Все эти методы сходятся и дают нам примерно один и тот же результат достаточной точности.
Для получения ускорения работы алгоритмов были написаны программы на MATLAB, С и OpenCL, которые запускались на высокопроизводительных кластерах. В результате измерения времени данных алгоритмов было получено различное ускорение.
Реализации на MATLAB дали хорошее ускорение, но время работы про-грамм было неудовлетворительным. Реализации на OpenCL показали чуть меньшее ускорение ввиду особенностей работы написанного для алгоритмов генератора, но время работы программ оказалось гораздо меньше.
В итоге были выполнены все поставленные задачи и сделан вывод, что ускорение расчета опционов на OpenCL имеет потенциал.
[1] Ермаков С. М. Метод Монте-Карло в вычислительной математике: Вводный курс. СПб.: Невский Диалект; М.: БИНОМ. Лаборатория знаний, 2009. 192 с.
[2] Войтишек А. В. Михайлов Г.А. Численное статистическое моделирование. Методы Монте-Карло. Академия М., 2006.
[3] Дегтярев А.Б. Андрианов С.Н. Параллельные и распределенные вычисления. Часть 1. Спб.:"СОЛО" 2007. 60 с.
[4] Сайт Ресурсного Центра "Вычислительный центр СПбГУ",http://cc.spbu.ru/.
[5] Fischer Black and Myron Scholes. The pricing of options and corporate liabilities. The journal of political economy, pages 637-654, 1973.
[6] Hongbin Zhang. Pricing Asian Options using Monte Carlo Methods. Department of Mathematics Uppsala University, 2009. 36 c.
[7] Михаил Глухов. Оценка опционов методом Монте-Карло. Futures К Options,апрель 2009. 38-43 с.
[8] Михаил Глухов. Оценка экзотических опционов методом Монте- Карло. Futures &Options,май 2009. 40-49 с.
[9] Guido Montagna, Oreste Nicrosini, and Nicola Moreni. A path integral way to option pricing. Physica A: Statistical Mechanics and its Applications, 310(3) :450-466, 2002.
[10] Vadim Linetsky. The path integral approach to financial modeling and options pricing. Computational Economics, 11(1-2):129—163, 1997.
[11] Daniel Zwillinger. Handbook of differential equations, volume 1. Gulf Professional Publishing, 1998.
[12] Джон К Халл. Опционы, фьючерсы и другие производные финансовые инструменты, 6-е издание. Издательский дом Вильямс, 2008.
[13] Центр компетенций mathworks matlab.exponenta. http:matlab.exponenta.ru.
[14] Aaftab Munshi, Benedict Gaster, Timothy G Mattson, and Dan Ginsburg. OpenCL programming guide. Pearson Education, 2011.
[15] Matthew Scarpino. Opencl in action: How to accelerate graphics and computation, ny, 2012.
[16] Сайт Научного Парка СПбГУ,http://researchpark.spbu.ru.
[17] Сайт компании nvidia. http://www.nvidia.ru.
[18] Сайт the mathworks, www.mathworks.com.
[19] Сайт компании khronos group, https://www.khronos.org/opencl/.
[20] Электронная документация oracle по java, http: //docs. oracle. com/javase/7/docs/api/index.html.
[21] Электронная документация khronos group no opencl, https://www.khronos.org/registry/cl/sdk/1.O/docs/man/xhtml/.