Прогнозирование рыночных движений с помощью байес-классификации и индикаторов на основе сингулярного спектрального анализа

Roman Korotchenko | 25 апреля, 2017

Введение

Сегодня с помощью алгоритмической торговли осуществляются порядка 60 — 70% транзакций на фондовых биржах, а на рынках FORTS и FOREX — около 90%.  Соответственно, увеличивается доля роботов в объеме реальных сделок. Это связано с тем, что стратегия «купил и держи» не соответствует современному рынку с активными колебаниями на коротких временных интервалах. Эффективная торговля требует перехода от пассивного инвестирования к активному трейдингу.  Успех на современном рынке основан на применении эффективных алгоритмов и совокупности системных правил, позволяющих увеличить число успешных сделок и уменьшить количество неудачных, сводя потери к минимуму.

Одним из перспективных способов достичь этого представляется построение рекомендательной системы для оперативной торговли на основе объединения возможностей прогнозирования с помощью сингулярного спектрального анализа (ССА) и важного метода машинного обучения, основанного на теореме Байеса. В выбранном подходе ценно то, что обработка данных основана исключительно на методах статистического анализа и не предполагает малообоснованных предположений. Это позволяет ясно понимать, как возможности, так и ограничения метода, его перспективы в создании автоматизированной торговой системы. 

При разработке этой системы интерес был направлен на масштаб единиц шкалы времени от 5 минут до часа. В большинстве описаний теоретически успешных статистических методов популярен принципиально больший масштаб — часы и дни (поскольку при этом уменьшается вклад хаотической составляющей). Однако такие методы малопригодны в реальной практике индивидуальной спекулятивной торговли.


Особенности применения и прогнозирования временных рядов с помощью ССА

Метод ССА используется для решения таких задач, как:


ССА — один из немногих статистических методов, используемых при работе с нестационарными рядами. Яркие примеры таких рядов — последовательности рыночных цен с их трендами, скачкообразным поведением, импульсными выбросами. В то же время цены складываются под влиянием независимых неслучайных факторов, различающихся по значимости и длительности. Предполагая, что рынок большую часть времени зависит от подобных сил, можно использовать модель на основе суммы разномасштабных компонент, что соответствует подходу ССА. 

С математической базой ССА и его разновидностью — «Гусеница» — можно ознакомиться в [1] (см. список литературы, приложенный к статье). С прикладной точки зрения важно отметить, что еще недавно одной из принципиальных причин, оказывавших влияние на распространенность ССА в практике обработки данных, было отсутствие быстрых алгоритмов, подобных БПФ. Сейчас этой проблемы больше нет — подобные алгоритмы разработаны, и их эффективность доказана [2] (см. список литературы, приложенный к статье).

Прогнозирование с помощью ССА использует модель скрытых периодичностей: разложив ряд данных на компоненты, поведение которых определено в процессе анализа, можно продолжить эти составляющие согласно параметрам поведения и просуммировать результат. Итог — результат прогнозирования, а его качество зависит от того, насколько хорошо исходный набор компонент описывает оригинальные данные. Понятно, что для хаотически изменчивого ряда прогноз будет малодостоверным, а для цен, сформировавшихся под влиянием стабильных факторов и с относительно малым шумом, прогноз будет обоснован. Кроме этого, не следует полагаться на статистический анализ в ситуациях с неактивно торгуемыми инструментами. Влияние отдельных факторов и "крупных" игроков в таких случаях непредсказуем и опасен.


Объединение индикаторов для повышения надежности прогнозирования

В рамках рассмотренной идеологии были разработаны три индикатора с прогнозом. Выделение тренда и его прогноз SSA Trend Predictor и Fast Forecast на основе быстрого преобразования, SSACD (модификация MACD) и SSA Stochastic. Каждый индикатор представлен в двух вариантах: упрощенном и расширенном. 

Поскольку все индикаторы используют одни данные, но нацелены на различные характеристики процесса, то у каждого есть свои достоинства и недостатки. Возникает естественное желание скомбинировать индикаторы и добиться синергии, повышая эффективность, робастность и точность оценки ситуации в целом.

С позиций спекулятивной стратегии очевидная и востребованная информация состоит в ответе на вопрос: «куда пойдет цена в ближайшем будущем?». Вариантов три: цена будет возрастать, колебаться или уменьшаться.

Для индикатора, прогнозирующего цену по выделяемому тренду, очевидно, что при росте или спадании цены аналог производной должен быть положителен или отрицателен. Задавая уровень погрешность EPS, можно определить условие: если «производная» лежит в окрестности нуля с радиусом эпсилон (EPS), то изменение цены непринципиально.

Индикатор SSACD — модификация MACD, откорректированная с целью избавить информацию от запаздывания, типичную для скользящих средних. Чтобы не увеличивать количество терминов, его также будем в дальнейшем называть MACD. На компьютерном графике отображаются индикатор MACD в виде гистограммы и его сглаженная экспоненциальная средняя — т.н. Signal. Соответственно, изменение сглаженной слегка запаздывает относительно MACD, поэтому, в случае возрастания цены (MACD-Signal)>0, а в случае спадания — (MACD-Signal) < 0. Задавая некоторую окрестность нуля EPS, определяем переходную зону неустойчивого поведения цены.

Индикатор «SSA Stochastic» — модифицированный быстрый стохастический осциллятор, из которого, как и в предыдущем случае, убрано запаздывание. Типичное поведение для линий стохастического осциллятора — их сонаправленность локальному тренду. Т.е. формулировка условий возрастания, спадания и неустойчивого поведения цены возможна через «производную» стохастика: больше или меньше нуля, в окрестности эпсилон.

Поскольку индикаторы предоставляют локальный прогноз, то оценка значений рассмотренных выше показателей дает информацию о поведении цены в ближайшем будущем. Совпадение показателей индикаторов увеличивает достоверность прогноза и уменьшает вероятность ошибки.

Чтобы убедиться в правильности выбранного подхода, следует оценить на исторических данных, как комбинация индикаторов позволяет уменьшать количество критических прогнозных ошибок. Под ошибками понимается ситуация, где уже в ближайшее время прогноз давал одно направление, а цена менялась в другую сторону.

Пользователи, уже работавшие с рассмотренными выше индикаторами, наверняка заинтересуются тем, какие значения параметров управления для них были выбраны и на каком основании. Но поскольку для нас принципиальным является ближайшая прогнозная точка, то необходимости специального и длительного подбора этих параметров нет. Для индикатора подходят параметры, согласующие его поведение с основной (не прогнозной) частью ряда, сочетающие гладкость и детализацию в поведении цены и подходящих для широкого класса торговых инструментов. Были выбраны:

  1. Для предсказания цены по тренду (SSA Fast Trend Forecast, версия 2.5):
    Algorithm: Recurrent forecast,
    N: Data fragment = 256,  
    Time-dependent lag = N/3,
    Trend    high-freq. limit= 0.25,
    Forecast high-freq. limit= 0.25,
    Forecast transform = S[i]/Max(:),
    Forecast smoothing = Smoothing MA(3).
  2. Для SSACD Forecast (Limited)  версия 2.5:
    Algorithm: Recurrent forecast,
    N: Data fragment = 512,  
    Time-dependent lag = N/4,
    FastTrend high-freq. limit = 0.4
    SlowTrend high-freq. limit= 0.6
    Signal SMA period = 4
    Data preparation = {ln(S[i]-Smin+1)}/Max(:)
    Forecast preparation = S[i] /Max(:)
    Forecast smoothing = Smoothing MA(3).
  3. Для SSA Stochastic (Limited) версия 2.0:
    Algorithm: Recurrent forecast,
    N: Data fragment = 256,  
    Time-dependent lag = N/4,
    %K high-freq. limit = 0.3,
    %D high-freq. limit = 0.6,
    Data preparation = S[i] /Max(:),
    Forecast smoothing = Smoothing MA(3).

Фрагменты исторических данных для анализа брались в разные интервалы времени:

для фьючерсов GOLD на периодах 5M, 15M, 1H;

BRENT — 5M, 15M;

Si-USD/RUB — 15М,

для форекс-котировок EUR/USD — 15М.

Разные торговые инструменты с разными периодами обрабатывались при неизменных параметрах индикаторов, что позволило рассмотреть устойчивость и качество прогнозных показателей. Проход вдоль рядов данных длиной порядка 1000 точек с исчислением прогноза в каждой исторической точке предоставил возможность сравнить прогнозы и факты.

Проиллюстрируем на графиках результаты прогнозов индикаторов по данным цен закрытия.


Рис. 1. Фрагмент сопоставления фактической цены закрытия, прогнозного значения для нее и сглаженного по трем точкам прогнозного значения

Из рис. 1 видно, что прогноз "по тренду" большую часть времени имеет небольшое запаздывание. Это в общем неудивительно, поскольку прогноз цены по тренду настроен на универсальность применения для разных торговых инструментов и обладает гладкостью в силу фильтрации значительной части ВЧ-колебаний. Подобное поведение прогноза имеет место для других инструментов (BRENT, GOLD) на разных масштабах времени (5 мин и 1 час).

Сопоставим прогноз другой индикаторной оценки (MACD-Signal) с ее фактическим значением.


Рис. 2. Фрагмент фактических и прогнозных значений показателя направления эволюции цены по индикатору MACD 


Рис. 3. Согласованность реализовавшейся направленности изменения цен и прогноз изменения цены по MACD

Граница неопределенности направления (EPS) была установлена 0.25 от стандарта нормированных (по макс. амплитуде) значений ряда (MACD-Signal).

Фрагмент сопоставления реализовавшегося в точках стохастика и предварительного прогноза для каждой точки с помощью индикатора "SSA Stochastic" приводится на следующем рисунке.


Рис. 4. Фактические и прогнозные значения для стохастика 

Рисунки 2 и 4 показывают практически полную синфазность прогнозных предсказаний и фактической реализации по данным индикаторов SSACD и SSA Stochastic. Вероятно, что этого можно ожидать в случае применения ССА-прогнозирования для многих осцилляторных индикаторов.

Поскольку предсказания цены, представленные на рис. 1, содержат совокупность ошибок по направлению, выясним, как комбинация индикаторов позволяет сократить число подобных ошибок.  Различие в значениях фактической и прогнозной цен на рис. 1 существенного значения не имеет, поскольку, если мы находимся в согласованной позиции, это не ведет к потерям. 

Имеются значения: (MACD-Signal), разностные производные для сглаженных по трем точкам рядов фактической и прогнозной цен, стохастика. Для анализа эффективности их комбинации далее используется совместность ранее определенных условий, указывающих на направление изменения цены. 


Рис. 5. Совпадение фактических и прогнозных направлений изменения цены при использовании трех индикаторов

 

Рис. 6. Серьезные ошибки в предсказании направления изменения цены для случая прогноза только по тренду


Рис. 7. Ошибки в предсказании для комбинации прогнозов цены по тренду и (MACD-Signal)


Рис. 8. Ошибки в предсказании для комбинации прогнозов цены по тренду, MACD и Стохастику

Рис. 6 — 8 демонстрируют синергетический эффект применения трех индикаторов — количество грубых ошибок прогноза направления дальнейшего изменения цен падает не хуже, чем в 5 — 7 раз при согласованных значениях индикаторных функционалов. 


Байес-классификатор вероятных движений цены на основе прогнозных показаний индикаторов

Теорема Байеса представлена в базовом курсе теории вероятностей и связывает условную вероятность   события x при условии события y.

По определению:  ,  где   – это совместная вероятность x и y, а p(x) и p(y) — вероятности каждого события по  отдельности. Соответственно, совместную вероятность можно выразить двумя способами:

Теорема Байеса:

Теорема Байеса

 

Для рассматриваемой ситуации прогноза направления движения цены по индикаторам теорему можно переписать в следующем виде:


где:

V — событие, отвечающее реальному движению цены в заданном направлении (знак ее изменения). Три возможных варианта: V1= -1 «вниз», V2 = 0 «неопределенно», V3 = +1 «вверх».

F — событие, отвечающее прогнозу направления движения цены или знаку прогнозируемой производной (три возможных варианта: F1 = -1 «вниз», F2 =0 «неопределенно», F3 = +1 «вверх»).

M — событие, отвечающее прогнозу знака (MACD-Signal), согласованного с поведением цены (три возможных варианта: M1 = -1 «вниз», M2 =0 «неопределенно», M3 = +1 «вверх»),

S — событие, отвечающее знаку прогнозируемой производной стохастика (три возможных варианта: S1 = -1 «вниз», S2 =0 «неопределенно», S3 = +1 «вверх»).

Левую часть формулы можно перевести на естественный язык следующим образом: «Какова вероятность движения цены в направлении Vk={-1,0,1}, если прогнозные показатели дают конкретные значения F, M, S ?».  

Далее, чтобы упростить изложение, будем говорить, что индикаторы принимают значение -1, 0, +1, подразумевая под этим знак производной или знак (MACD-Signal). 

Чтобы оценить и сравнить вероятности того, пойдет ли цена вниз, вверх или останется слабо колебаться, нужно знать значения величин в правой части формулы. Для этого решим две задачи:

  1. проведем «обучение» на исторических данных,
  2. исследуем «устойчивость» результатов обучения на данных вне интервала обучения.

Варианты обучения проводились на различных фрагментах данных, на разных таймфреймах и инструментах. Длина обучающей выборки составляла несколько сотен баров. Результаты оказались подобными, как и следовало ожидать из универсальности выбранных параметров индикаторов, рассмотренных в 3 части статьи.

Проиллюстрируем результаты на анализе данных цены "закрытия" фьючерса USD/RUB 15 M. 

Ограничимся исследованием вероятностей движения цены  «вверх» и «вниз», поскольку именно на основании этих значений принимается решение о входе в сделку или ее завершении.

Достаточно понятно, что в случае реального движения цены вниз сигналы индикаторов также должны быть отрицательными («вниз») или около нуля («нейтральные»). Это подтверждает первая оценка условных вероятностей совместных прогнозных событий при падении цены. Однако другие вероятности, полученные по результатам обучения на данных фьючерса USD/RUB-15M, указывают на возможность отклонений от ожиданий, что представлено в таблицах 1, 2.

Табл. 1 и 2

Результаты вычислений по формуле Байеса дают любопытную информацию о распределении вероятности реального движения в зависимости от показаний индикаторов. Максимальные условные вероятности движения цен вниз (событие V1 =-1) и вверх (событие V3 = +1) в зависимости от прогнозных показаний представлены в таблицах 3 и 4.

Табл. 3 и 4

Условия классификации будут простыми: если в текущий момент условная вероятность события «движение вниз» больше 0.5 и при этом она больше вероятности движения «вверх», то прогноз движения — вниз. Аналогичное условие для прогноза движения цены «вверх».

Представим результат обучения в виде графика цены с отметками классификации.



Рис. 9. Прогнозируемая классификация движения цены фьючерса USD/RUB-15, рассчитанная на материалах обучения 

Результаты классификации, представленные на рис. 9, выглядят достойно: прогнозирование направления на ближайший момент времени успевает быстро переключать указатель направления движения и сопровождать его. 

Остается рассмотреть главный вопрос: насколько устойчивы результаты обучения, представленные матрицей условных вероятностей P(V|FMS), чтобы их можно было распространить на внешнюю (относительно данных обучения) ситуацию.

Для проверки устойчивости возьмем исторические ряды других торговых инструментов и на других масштабах времени. Зная прогнозные показатели индикаторов для каждого отдельного момента времени, выполним классификацию по направлению, используя уже готовую матрицу условных вероятностей, рассчитанную для фьючерса USD/RUB-M15.  Результат классификации сопоставим с фактической ситуацией.



Рис. 10. Прогнозируемая классификация движения котировки EUR/USD-15M (обучено на фьючерсе USD/RUB-15M)




Рис. 11. Прогнозируемая классификация для фьючерса GOLD-15M (обучено на фьючерсе USD/RUB-15M)




Рис. 12. Прогнозируемая классификация для фьючерса GOLD-5M (обучено на фьючерсе USD/RUB-15M)




Рис. 13. Прогнозируемая классификация для фьючерса BRENT-5M (обучено на фьючерсе USD/RUB-15M)

Представленные на рис. 10 — 13 результаты выглядят весьма оптимистично. Подготовленный на фьючерсе USD/RUB-15M классификатор актуален для других масштабов времени и для других торговых инструментов.


Рекомендательная система на основе байесовского классификатора

На основе представленного классификатора можно спроектировать конструктивную рекомендательную, а затем и торговую систему с малым числом управляющих параметров. Ограниченное число параметров позволяет проводить эффективную оптимизацию. 

Чтобы не быть голословным, рассмотрим ситуацию применения системы на исторических данных. Конечно, результат имеет отдаленное отношение к реальной ситуации, поскольку все принципиально упрощено, но он показывает заложенный потенциал.

Имеется 4 основных параметра управления:

  1. Risk Ratio — стоп-уровень в долях волатильности.
  2. Risk Fix     — допустимое противоход-колебание при открытии сделки и сохранении успешной позиции (в долях волатильности).
  3. Probability Trade Min — приемлемая вероятность для сохранения сделки.
  4. Probability Trade OK — вероятность, при которой сделка рекомендуется.


Под мерой волатильности в данном случае будем понимать среднеквадратическое среднее разности цен открытия и закрытия на фрагменте обрабатываемых данных. Стоп-уровень привязан к предыдущим ценам закрытия и сдвигается однонаправленно. Решение о входе и выходе из позиции принимается после закрытия бара

На основании рекомендаций системы, обученной на данных фьючерса USD/RUB-15M, выполнялось моделирование торговли одним фьючерсом GOLD-15M, согласно истории цен "закрытия", представленной на рис. 11, и прогнозной классификации, контролируемой параметрами управления 3 и 4.  Графики, представленные далее, показывают изменение доходности в зависимости от "времени", измеряемого в количестве баров. 



Рис. 14. Влияние значения вероятности рекомендации сделки на доходность торговли отдельным фьючерсом GOLD-15M (обучено на фьючерсе USD/RUB-15M)



Рис. 15. Влияние параметра стоп-уровня на доходность торговли отдельным фьючерсом GOLD-15M (обучено на фьючерсе USD/RUB-15M)



Рис. 16. Влияние значения вероятности рекомендации сделки на доходность торговли отдельной котировкой EUR/USD-15M  (обучено на фьючерсе USD/RUB-15M)

Результаты моделирования, представленные на рис.14 — 16, показывают стабильный рост доходности без провальных убытков. Влияние значения параметров на рост доходности указывает на возможность и эффективность оптимизации. 


Программа оперативной оценки рыночной динамики

В следующей работе будет описана структура, правила и результаты тестирования системы автоматизированной торговли. Однако здесь будет логично предоставить программный модуль, предназначенный для оперативной оценки ситуации и "рекомендаций" в процессе реальных торгов. К работе прилагается модуль, решающий задачу классификации и работающий с различными парами индикаторов: а) SSACD Forecast Limited и SSA Stochastic Limited, б) SSACD Forecast и SSA Stochastic . Версии SSACD должны быть не ниже 2.5, а Stochastic — не ниже 2.0 х. В случае полных версий индикаторов программа позволяет более гибко настраивать параметры управления классификацией и имеет выбор вариантов обучения на различных данных, что дает возможность выбрать наиболее «близкую» модель, подготовленную для прогнозной классификации. Прогнозирование "по тренду" выполняется внутри модуля, поэтому отдельного индикатора SSA Fast Trend Forecast не требуется.  

Сразу следует подчеркнуть, что программа использует заложенную модель и поэтому не гарантирует, а помогает оценить вероятность эволюции цены для активно торгуемых  инструментов. Не следует полагаться на статистический прогноз цены для ситуации с малым количеством сделок, поскольку отдельные воздействия  могут иметь слишком большое значение или на интервалах времени, или в периоды, когда цена демонстрирует "гэп"-поведение.

Expert-программа называется "SSA Bayes Observer" и при запуске предлагает установить значения параметров рассмотренных выше.

Рис. 17. Запуск программы SSA Bayes Observer с параметрами "по-умолчанию"

Кроме основных значений "Observer"-а можно устанавливать параметры для индикаторов прогноза по тренду, SSACD и SSA Stochastic. Смысл и назначение их рассмотрено в описаниях самих индикаторов, но вполне можно полагаться на установленные значения "по умолчанию".

Если индикаторы SSACD и SSA Stochastic свежей версии установлены в системе,то пользователь увидит интерфейс подобный следующему:

Рис. 18. Интерфейс программы SSA Bayes Observer 

В процессе работы программы пользователь может изменить текущие настройки, выбрав соответствующую вкладку.

Рис. 19. Параметры классификации 


Выбор модели, на основании которой происходит классификация, возможен на вкладке "МОДЕЛИ":

Рис. 20. Закладка для выбора модели обучения

Параметры управления, представленные на рис. 18 — 20, возможно переключать в процессе работы программы. Выбор модели обучения возможен при наличии полных версий индикаторов SSACD и SSA Stochastic.

В процессе работы пользователь может наблюдать интерфейс подобный следующему:


Рис. 21. Рабочий режим программы SSA Bayes Observer 

Как видно на рис. 20, в нижней строке интерфейсного окна отображаются FIX и STOP — уровни для разных режимов торговли. Их смысл состоит в том, что следует выходить из позиции, если цена вышла за пределы. FIX-уровень ориентирован на ситуацию, когда сделка развивалась успешно, STOP-уровень предполагает безусловное закрытие позиции. Предполагается, что решение о выходе из позиции принимается после завершения временного интервала анализа (метка READY).

Заключение

В работе представлена методика и алгоритм построения рекомендательной системы для оперативной торговли на основе объединения возможностей прогнозирования с помощью Сингулярного Спектрального Анализа (ССА) и важного метода машинного обучения, основанного на теореме Байеса. Проведено моделирование с целью определения возможности применения системы, обученной на наборе некоторых данных к анализу временных рядов другого масштаба времени и других финансовых инструментов. Представлена программа, позволяющая на практике рассмотреть возможность применения метода к анализу реальных данных. Описание структуры программы и пояснения кода будет представлено в следующей статье.

Практика применения классификации в режиме реального времени выявила ряд проблем, решение которых необходимо для формулировки стратегии, пригодной для автоматизации торговли. Их обсуждение также будет выполнено в следующей части работы.

Хочу выразить особую благодарность Anatoli Kazharski за разработку библиотеки графического интерфейса [3], применение которой избавило от тяжкого труда и больших затрат времени, а также и специалистам, предоставившим MQL-реализацию прекрасной математической библиотеки ALGLIB [4]. 

Литература

  1. Голяндина Н.Э. Метод "Гусеница"-SSA: прогноз временных рядов. Учебное пособие. Санкт-Петербург, 2004.
  2. Korobeynikov, A. Computation- and space-efficient implementation of SSA. // Statistics and Its Interface. 3, 2010, 3, 357-368.
  3. https://www.mql5.com/ru/articles/3173
  4. https://www.mql5.com/ru/code/1146