УДК 681.324:519.17
ЭФФЕКТИВНОЕ ИСПОЛЬЗОВАНИЕ ГРАФИЧЕСКИХ УСКОРИТЕЛЕЙ ПРИ ПАРАЛЛЕЛЬНОЙ ОПТИМИЗАЦИИ ФИНАНСОВЫХ СТРАТЕГИЙ НА КЛАСТЕРНОЙ СИСТЕМЕ
О.Г. Монахов
Институт вычислительной математики и математической геофизики СО РАН, г. Новосибирск E-mail: monakhov@rav.sscc.ru
Описан подход к оптимизации финансовых стратегий (алгоритмов), основанный на индикаторах финансовых и товарных рынков и эволюционных вычислениях. Представлен параллельный генетический алгоритм, который был применен для автоматизации поиска оптимальных параметров торговых стратегий с точки зрения максимизации показателей доходности. Экспериментально с использованием кластерной системы и GPU-ускорителей показано, что предложенный алгоритм позволяет увеличить доходность финансовых стратегий и имеет отличную масштабируемость иускорение при параллельных вычислениях на суперЭВМ с 53000 ядер.
Ключевые слова:
Параллельные вычисления, генетический алгоритм, финансовые стратегии, оптимизация, графические процессоры, биржевая торговля.
Key words:
Parallel computation, genetic algorithm, financial strategies, optimization, graphics processing units, trading.
Введение и постановка задачи
В практике биржевой торговли одним из основных направлений при выработке финансовых стратегий (торговых алгоритмов) является технический анализ ценовых рядов с помощью множества индикаторов [1-3]. В соответствии с принятой торговой стратегией, выраженной в виде набора правил, с поведением ценового ряда и значениями индикаторов инвестор принимает решение о совершении/не совершении сделки купли-продажи в данный момент времени. При совершении сделки инвестор руководствуется соображениями максимизации доходности и минимизации риска. Принятый набор правил, составляющий торговую стратегию, и используемые индикаторы имеют эмпирический характер, и значения их параметров определяются, в основном, опытным путем (методом проб и ошибок). Однако, как показывают эксперименты, такой подход с использованием известных правил и статически задаваемых параметров часто приводит к убыточным стратегиям. Использование высокопроизводительных вычислительных систем для торговли на бирже обозначается термином «высокочастотная» алгоритмическая торговля (high-frequency algorithmic trading) и позволяет компьютерным программам (торговым роботам) самостоятельно отслеживать данные по нескольким индексам на фондовых биржах, оптимизировать торговые стратегии и совершать миллионы сделок за максимально короткий промежуток времени.
В работе рассматривается проблема поиска параметров данной стратегии биржевой торговли S с целью оптимизации заданной целевой функции F, характеризующей ее качество. Будем считать, что цена на акцию представлена в виде ценового ряда |С;|, 1<i<N, с заданной частотой (например, минутные или часовые цены), где С - цена закрытия в момент i. Пусть г;+1=С;+1-С;. Важными инстру-
ментами технического анализа рынка акции являются скользящие средние, индикаторы и осцилляторы, на основе которых формируются множество торговых стратегии и которые помогают инвестору принимать решения о купле-продаже акций [1-3].
Пусть мы имеем индикатор технического анализа: 1(")=/(С;,С;-1,...,С;_„). Обобщенная торговая стратегия S(Il")), основанная на индикаторе 1["\ определяется следующими соотношениями:
1,если /,(п) > е1,
Р/+1 = №, ,еСЛИ -£2 < П)
-1,если //и) < -е2.
где е1, е2>0 - уровни значимого изменения индикатора Iм. Состояние покупки в данной торговой стратегии наступает при <рм=1, а состояние продажи наступает при эд+1=-1. Решение о сделке (купли/продаже) принимается при смене состояний: Р/<Р/+1=-1.
Эта стратегия S(I[n)) будет использована как темплейт (с некоторыми модификациями) для определения торговых стратегий на основе различных индикаторов технического анализа, и поиска оптимальных значений свободных параметров (и,е1,е2), определяющих стратегию с наилучшими показателями доходности, будет осуществляться с помощью генетического алгоритма (ГА).
Например, одним из часто используемых индикаторов при анализе ценовых рядов является экспоненциальное скользящее среднее порядка к:
—(к) — (к) 2 — (к) —(к)
Сш = С, +---------(С,.+1 - С, ); С0 = С0, 1 < , < N.
к +1
Порядок скользящего среднего к определяет степень сглаживания цены: чем больше к, тем сильнее сглаживание. Рассчитывается также разность экспоненциальных скользящих средних порядков к1<к2: г-=(С/к1)-С/к2))/С/к2).
Приведем пример простейшей торговой стратегии на основе экспоненциальных скользящих средних [2]. Задается уровень значимого изменения сглаженных цен е>0. Состояние покупки в данной торговой стратегии наступает при ->е, а состояние продажи наступает при -,<-& Решение
о сделке (купли/продаже) принимается при смене состояний. Стратегия имеет три свободных параметра к1, к2, е, изменение которых изменяет показатели доходности и риска торговой стратегии.
Поиск оптимальных стратегий (с наилучшими показателями доходности и/или риска) может осу-ществлятся для каждого типа акций отдельно в динамике торговых сессий, с постоянной адаптацией к рыночной ситуации, или в квазидинамическом режиме, когда расчет оптимальных параметров происходит либо через заданные периоды времени, либо по выполнению определенных условий (например, по достижении заданного уровня потерь).
Пусть торговая стратегия S содержит параметры P={pn}, n>0, описывающие значения целочисленных и действительных коэффициентов и переменных, значения индексов, параметры структур данных, константы и некоторые примитивные операции алгоритма (величины инкрементов и декрементов, знаки переменных, логические операции и отношения, типы округления переменных).
Целевая функция F оценивает величину доходности стратегии S, полученную при заданных значениях параметров P={pn}, n>0 и при входных данных ценового ряда {C}:Fi=Fi(P,Cj), j<i, 1<i<N.
Таким образом, проблема оптимизации торговой стратегии состоит в следующем: для данной стратегии S и заданного набора значений ценового ряда {C;}, 1<i<V, необходимо найти такие значения параметров P* стратегии S, что Fv(S(P *,C))>Fv(S(P,C)), для 1<i<N, при любых других значениях параметров PeDom(P).
Целью данной работы является описание подхода к оптимизации торговых стратегий, основанного на эволюционных вычислениях, и его распараллеливанию на кластерной суперЭВМ с графическими (GPU - graphics processing unit) ускорителями. Представлен генетический алгоритм, который в процессе торговых сессий осуществляет автоматический поиск оптимальных параметров торговых стратегий и индикаторов с точки зрения максимизации показателей доходности. Для решения данной проблемы в работе предлагается подход, основанный на применении генетических алгоритмов [4, 5] с использованием предварительного знания прикладной области (множества индикаторов), выборе обобщенной схемы торговой стратегии, задаваемой в виде темплейта с параметрами [6], и ограничении пространства поиска оптимальных параметров.
Генетический алгоритм оптимизации стратегий
Генетический алгоритм основан на моделировании процесса естественного отбора в популяции особей, каждая из которых представлена точкой
в пространстве решений задачи оптимизации. Особи представлены структурами данных Gen -хромосомами, включающими свободные (неопределенные) параметры pk торговой стратегии S: Gen={P}={pbp2,...,pk}, k>0. Эти параметры определяют необходимую торговую стратегию S(Gen). Каждая популяция является множеством структур данных Gen и определяет множество стратегий S(Gen).
Примем, что целевая функция (fitness function, функция качества, функция пригодности) F вычисляет суммарную доходность DN, полученную в результате торговли в соответствии с данной стратегией S за N шагов для заданного ценового ряда {C,■},
1<i<N:
F = Dn =£ (dbr - Comm),
m=l
C^ell c^uy
где С = mc-u,m ; CT, Cnbu - цены продажи и
m
покупки в m-той сделке; Nbr - число сделок за N шагов моделирования; Conn - размер постоянных комиссионных за каждую сделку. Целью алгоритма является поиск максимума F.
Основная идея генетического алгоритма состоит в эволюционном преобразовании множества хромосом (параметров стратегии) в процессе естественного отбора с целью выживания «сильнейшего». В нашем случае этими особями являются стратегии, имеющие наибольшее значение целевой функции. Алгоритм начинается с генерации начальной популяции. Все особи в этой популяции создаются случайно, затем отбираются наилучшие особи и запоминаются. Для создания популяции следующего поколения (следующей итерации) новые особи формируются с помощью генетических операторов селекции (отбора), мутации, кроссовера и добавления новых элементов (для сохранения разнообразия популяции).
Оператор мутации применяется к особям, случайно выбранным из текущей популяции с вероятностью pnute [0,1]. Мутация хромосомы Gen состоит в изменении значения случайно выбранного параметра pk на другую, случайно выбранную величину из множества допустимых значений. Оператор кроссовера (скрещивания) применяется к двум особям (родителям), случайно выбранным из текущей популяции с вероятностью pcrase [0,1]. Кроссовер состоит в порождении двух новых особей путем обмена частями хромосом родителей. Оператор создания нового элемента (особи) состоит в генерации случайных значений параметров pk. Это позволяет увеличить степень разнообразия особей при создании популяции. Оператор селекции (отбора) реализует принцип выживания наиболее приспособленных особей. Он выбирает наилучших особей с минимальными значениями целевой функции F.
Для поиска оптимума заданной целевой функции F итерационный процесс вычислений в генетическом алгоритме организован следующим образом.
Первая итерация: порождение начальной популяции. Все особи популяции создаются с помощью оператора новый элемент, с проверкой и отсеиванием всех непригодных особей. После заполнения массива популяции лучшие особи отбираются и запоминаются в массиве best. Промежуточная итерация: шаг от текущей к следующей популяции. Основной шаг алгоритма состоит в создании нового поколения особей на основе массива best, используя операции селекции, мутации, кроссовера и добавления новых элементов. После оценки целевой функции для каждой особи в поколении проводится сравнение величин этих функций с величинами целевых функций тех особей, которые сохранены в массиве best. В том случае, если элемент из нового поколения лучше, чем элемент best [i], для некоторого i помещаем новый элемент на место i в массив best и сдвигаем в нем все остальные элементы на единицу вниз. Таким образом, лучшие элементы локализуются в верхней части массива best. Последняя итерация (критерий остановки): итерации заканчиваются либо после исполнения заданного числа шагов, либо после нахождения оптимального значения целевой функции F.
Экспериментальные результаты
Предложенный генетический алгоритм с использованием темплейтов был успешно применен для адаптивной оптимизации торговых стратегий, основанных на следующих, наиболее популярных инструментах технического анализа: экспонен-циальнных скользящих средних (EMA - exponential moving average), индекса относительной силы (RSI - relative strength index), темпа изменения цены (ROC - price rate-of-change), момента (Momentum), метода схождения/расхождения скользящих средних (MACD - Moving Average Convergence/Divergence) [1-3].
Для экспериментов были рассмотрены ценовые ряды с минутными интервалами для акций ГАЗПРОМа (10000 точек), РАО ЕС России (10000 точек), NIKKEI (10000 точек), DJIA - Dow Jones Industrial Average (10000 точек), для периода с 16.04.2006 по 16.06.2006. Мы использовали первые 5000 точек для обучения и остальные точки - для тестирования.
Число итераций и размер популяции выбирались экспериментальным путем, основываясь на параметрах из [4, 5]. Значения основных параметров в экспериментах следующие: размер популяции - от 524288 до 105*524288, число итераций
- 100, частота мутации - 0,15, частота кроссовера
- 0,7, комиссионные - 0,001.
Генетический алгоритм оптимизации торговых стратегий был реализован в системе эволюционного синтеза алгоритмов на основе шаблонов (TES -template-based evolutionary synthesis) [6] на языке программирования C. Параллельная реализация ГА оптимизации стратегий биржевой торговли выполнена на основе распараллеливания по данным
[7-9], при этом, в отличии от аналогичных подходов [10], на графических процессорах исполнялись все части генетического алгоритма (и генетические операторы, и вычисление целевой функции), а не отдельные его элементы, что позволило на порядок увеличить ускорение. Так, результаты сравнения параллельной (на видеокарте NVIDIA GeForce 470 GTX 1280MB, 448 процессоров) и последовательной (на одном ядре процессора INTEL Core2Quad Q6700, 2.66 ГГц) реализации ГА для оптимизации стратегии показали ускорение времени выполнения алгоритма в 178 раз.
Параллельная реализация генетического алгоритма оптимизации стратегий биржевой торговли была выполнена в Сибирском Суперкомрьютерном Центре на кластерной суперЭВМ НКС-30Т с гибридной архитектурой (содержащей 40 вычислительных модулей, каждый из которых содержит
2 CPU Intel Xeon X5670 (по 6 ядер) и 3 графических ускорителя Tesla M 2090 (по 512 ядер), всего 480 ядер CPU и 61440 ядер GPU). Программа реализована в системе программирования CUDA [11] с использованием библиотеки MPI путем распараллеливания по данным с равномерным распределением популяции по потокам графической подсистемы. На каждом вычислительном модуле использовались 3 ядра CPU (3 потока MPI, по одному на каждую карту, для организации коммуникаций) и все 1536 ядер GPU - для вычислений. В конце итераций среди всех потоков выбирается лучшее решение, что минимизирует взаимодействия и позволяет получить отличное масштабирование и значительное (линейное) ускорение для параллельного алгоритма. Величина популяции составляла 524288 особей на каждой видеокарте (графическом ускорителе), использовались ценовые ряды в 10000 точек. Отметим, что в случае реализации генетического алгоритма на ГПУ, данные для обучения и тестирования следует по возможности помещать или в быструю разделяемую память или в константную память. Так, размещение этих данных в константной памяти, которую могут использовать все потоки сразу, позволило сократить время исполнения алгоритма на ГПУ почти в два раза.
В табл. 1 приведены результаты сравнения для параллельной реализации генетического алгоритма для оптимизации стратегии с MACD для акций ГАЗПРОМа при числе вычислительных модулей M, числе графических ускорителей N, числе ядер GPU K, размере популяции Pop, времени исполнения T (сек.) и полученном ускорении Sp по отношению к одному процессору GPU. Из табл. 1 видно, что при линейно возрастающем объёме вычислений (при линейном росте величины популяции) время исполнения остаётся постоянным (с отклонениями не более 1 %), что свидетельствует об отличном масштабировании, высокой эффективности распараллеливания и линейном ускорении (превышающим два порядка) для параллельного генетического алгоритма.
Таблица 1. Сравнение параллельных реализаций генетического алгоритма
M N K Pop T(сек) Sp
1 1 512 524288 785,45 1
1 3 1536 3*524288 779,4 3
5 15 7680 15*524288 781,24 15
10 30 15360 30*524288 784,17 30
15 45 23040 45*524288 787,78 45
20 60 30720 60*524288 785,42 60
25 75 38400 75*524288 784,96 75
30 90 46080 90*524288 784,47 90
35 105 53760 105*524288 784,62 105
Таблица 2. Увеличение суммарной доходности торговых стратегий
Тип акции \ Индикатор EMA MACD RSI ROC
%
ГАЗПРОМ 155 14,3 75 67,5
DJIA 41 35,7 31 16,1
СПИСОК ЛИТЕРАТУРЫ
1. Achelis S.B. Technical analysis from A to Z. - Chicago: Probus, 1996. - 380 p.
2. Артемьев С.С., Якунин М.А. Математическое и статистическое моделирование на фондовых рынках. - Новосибирск: ИВМиМГ СО РАН, 2003. - 123 с.
3. LeBeau Ch.L., David W. Computer analysis of the futures market. -New-York: IRWIN, 1992. - 323 p.
4. Goldberg D.E. Genetic Algorithms in Search, Optimization and Machine Learning. - MA: Addison-Wesley, 1989. - 432 p.
5. Koza J. Genetic Programming. - Cambridge: The MIT Press,1992.
- 609 p.
6. Монахов О.Г Эволюционный синтез алгоритмов на основе шаблонов // Автометрия. - 2006. - № 1. - C. 106-116.
7. Монахов О.Г, Монахова Э.А. Параллельные системы с распределенной памятью: структуры и организация взаимодействий. - Новосибирск: Изд-во СО РАН, 2000. - 242 с.
Используемый ГА позволил найти значения параметров торговых стратегий, обеспечивающие увеличение функции суммарной доходности (на 14...155 % для различных индикаторов, табл. 2) по сравнению с известными ранее [1, 3].
Заключение
Представленный подход к оптимизации торговых стратегий, основанный на индикаторах технического анализа, эволюционных вычислениях и темплейтах, был успешно применен для поиска свободных параметров стратегий с целью максимизации функции суммарной доходности. Параллельная реализация генетического алгоритма оптимизации стратегий биржевой торговли на гибридном кластере с графическими процессорами NVIDIA позволяет получить отличную масштабируемость для суперЭВМ с 53000 ядрами и существенное, превышающее два порядка, ускорение по сравнению с одним GPU-ускорителем, а также увеличить значения функции суммарной доходности.
8. Монахов О.Г. Параллельный генетический алгоритм для оптимизации торговых стратегий // Сиб. журн. вычисл. математики
- 2008. - № 4. - С. 423-432.
9. Монахов О.Г. Параллельные генетические алгоритмы при поиске оптимальных финансовых стратегий на графических процессорах // Параллельные вычисления и задачи управления (РАСО-2010): Труды IV Междунар. конф. - Москва, 2010. -C. 212-224.
10. Tsutsui S., Fijimoto N. Solving Quadratic Assignment Problems by Genetic Algorithms with GPU Computation: A Case Study // In Proc. of Internat. Genetic and Evolutionary Computation Conference (GECC0-2009). - Montr?al Qu?bec, Canada, 2009. -P. 176-181.
11. NVIDIA CUDA Programming Guide. URL: http://developer.nvi-dia.com/cuda/cuda-downloads (дата обращения 10.08.2012).
Поступила 17.09.2012 г.