Введение 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 Параллелвный алгоритм расчета опционов на OpenCL 35
3 Анализ полученного ускорения вычислений 37
3.1 Ускорение в MATLAB 37
3.2 Ускорение при помощи OpenCL 40
3.3 Сравнение времени работы реализаций в MATLAB, на языке С и OpenCL 46
Выводы 48
Заключение 50
Список литературы 51
Метод Монте-Карло — метод численного решения математических задач с помощью моделирования большого количества случайных величин и нахождения их математического ожидания. Вычисление интегралов является основной направленностью этого метода, так как математическое ожидание непрерывной случайной величины выражается через интеграл.[1][2]
Метод Монте-Карло имеет применение во многих областях, как то:
• задачи финансовой математики - моделирование рыночных ситуаций;
• задачи теории игр;
• производственные задачи - моделирование сложных систем и сетей;
• задачи ядерной и статической физики, и другие.
Популярность этому методу принесла его существенная простота. Данный метод основан на теории вероятности, а конкретнее, на Центральной предельной теореме. Таким образом, ошибка вычислений, проводимых на основе этого метода, сильно зависит от количества моделируемых испытаний. Чем больше испытаний мы проводим, тем меньше ошибка, и в то же время больше временные затраты на расчеты. Тем не менее, для некоторых задач, которые требуют высокой точности вычислений, даже достаточно большое количество испытаний, проведенных в рамках метода Монте-Карло, не даст желательной точности.
Однако мы будем рассматривать применение этого метода в рамках моделирования экономических ситуаций. Обычно в таких задачах требуется спрогнозировать примерную траекторию развития рыночной ситуации. Например, нам не нужно знать сколько будет стоить акция через год с точностью до копейки, но нам нужно знать, будет ли цена на акцию расти или падать, и чем быстрее мы это узнаем, тем лучше. Таким образом, для прогнозирования в рамках экономической и финансовой области в приоритете оказывается скорость вычислений, нежели их точность. И тут оказывается полезным свойство хорошей распараллеливаемости метода Монте-Карло, путем распределения численных статических испытаний по отдельным процессорам.
В настоящее время большую популярность приобрели различные технологии параллельных вычислений, в том числе с использованием GPGPU (General Purpose GPU). Это связано с постоянно растущей сложностью актуальных задач, а так же с растущим объемом данных для обработки. Суть таких вычислений в том, чтобы части программы выполнялись одновременно в наборе потоков, взаимодействующих друг с другом. Использование параллельных компьютеров (компьютерных систем с набором процессоров, работающих одновременно) обосновано идеей о том, что если одному процессору на выполнение задачи требуетсяр времени, то п процессорам на это должно потребоваться в п раз времени меньше. Но, конечно, это идеальный случай, и в реальности такого добиться не удастся. Однако, ускорить работу вполне возможно, в той или иной степени, в зависимости от алгоритма и имеющейся аппаратной системы.[3]
Примерами технологий для параллельных вычислений могут быть 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.
...