Timing Solution: Результаты тестирования

Прогнозирование изменения индекса Dow Jones Industrial с использованием "японских свеч"

 

Предисловие
Суть дела
Описание численного эксперимента
Исследование артефактов
Параметры для изменения

Предисловие

Результаты тестирования совершенно определенно указывают на то, что прогностическая модель, построенная с учетом пропорций составляющих прайс-бара (Open, High, Low, Close), действительно позволяет прогнозировать будущие изменения цены. (Такая модель называется моделью с использованием "японских свеч"). Данный факт находится в противоречии с Random Walk Theory (теорией случайных колебаний рынка), согласно которой "... на основании прошлого движения или направления движения стоимости акции нельзя предсказать ее будущее движение." 

Статистические результаты представлены здесь. Кроме того, можно посмотреть на прогностические кривые, полученные с помощью этой модели. Это - всего лишь часть отчета, который содержит примерно 600 диаграмм и занимает 10 Мбайт памяти. Прогностические кривые, показанные в этой статье, были отобраны случайным образом. Полный отчет доступен всем желающим, достаточно послать запрос по этому адресу: tarassov@rogers.com.

Все расчеты были проведены для индекса Dow Jones Industrial (данные с 1970 по 2005 год).

Вот так выглядит сводная таблица результатов для лучших моделей:

Model Training Interval Prediction Horizon
Neural Net Model 5.000 price bars (20 years) 7 price bars
Neural Net Model

Linear Model

1.000 price bars (4 years) 5 price bars

 

Суть дела

С точки зрения математики, используемый здесь подход очень близок к методам, используемым при создании нейросетей на базе нечеткой логики (Fuzzy Neural Network(. Достоинством его является то, что удается выявить связи между несколькими прайс-барами недавнего прошлого и будущими колебаниями цены. Такие связи выявляются во время обучения нейросети. Происходит это так: программа сравнивает структуру прайс-баров на некотором отрезке времени с последующими колебаниями цены  (к примеру, 15 торговых дней, глубина погружения регрессии) и на базе этого строит модель. В процессе обучения нейросети программа подбирает такие ее параметры, чтобы добиться наилучшего совпадения между кривой прогноза и реальными данными.

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

Перейдем от теории к практике. Каким образом данный подход реализован в программе Timing Solution? Прежде всего, давайте разберемся, как программа работает с прайс-барами. Это возможно благодаря уникальной особенности данной программы - наличию в ней особого языка, Универсального Языка Событий (Universal Language of Events, ULE), который есть не что иное, как особый способ записи событий разного рода, позволяющий использовать эти записи в качестве входов нейросети. 
Например, чтобы записать любой прайс-бар, (обычно имеющий 4 характеристики - High, Low, Open, Close), нам достаточно знать лишь 3 величины:

1) разницу между High и Low (так называемый "True range");
2) разницу между Close и Open (так называемое "Real body");
3) разницу между Open и Low (так называемую "Lower shadow").

Все эти величины нормализованы, чтобы исключить влияние тренда. Затем для описания соотношений между ними используются методы нечеткой логики. Что это значит? Всего лишь то, что программа работает с такими событиями, как "пять дней назад real body было большим, и lower shadow была очень высокой". То есть, мы работаем не с числами, а качественными характеристиками, так называемыми membership functions (например, "real body было большим").

В качестве примера, рассмотрим одну из "японских свеч" - фигуру, которая называется "Shaven bottom (пардон, бритая задница)":

Вот как ее описание звучит на языке нечеткой логики: "среднее негативное real body при нулевой lower shadow". Это и есть событие, с которым мы будем работать. В программе Timing Solution предусмотрена возможность работы и с такими, и с иными, самыми разнообразными, событиями..

После того, как определены и записаны события, приходит пора подключения объектно-ориентированной нейросети (являющейся специальной разработкой группы Timing Solution).
Как и любая нейросеть, данная система ищет любые возможные связи между конфигурациями цены в прошлом и будущими колебаниями цены. Но, в дополнение к этому, наша нейросеть имеет встроенный механизм суб-оптимизации. В общих чертах, это означает, что во время обучения нейросети программа способна самостоятельно делать выводы относительно характеристик прайс-бара (то есть, определяет, обладает ли такой-то прайс-бар широким "body" или средней "lower shadow". Таким образом, мы стараемся исключить довольно неприятный эффект, присущий многим нейросетям, - их переобучение

 

Описание численного эксперимента

Процедура тестирования любой модели включает в себя следующие шаги:

  1. Загрузка данных: в нашем случае, это данные о ежедневных изменениях индекса Dow Jones с 1970 по 2005 г.г..

  2. Выбор интервала обучения и тестового интервала: для анализа и построения модели можно использовать как все имеющиеся данные, так и любые их временные отрезки. Данные разбиваются на две части - интервал обучения (или тренировочный интервал), служащий для обучения нейросети, и следующий непосредственно за ним тестовый (или проверочный) интервал, служащий для оценки работы модели. Чтобы исключить возможные информационные утечки (то есть, ситуации, когда одни и те же данные используются и на тренировочном, и на тестовом интервалах), эти два интервала не имеют общих точек. Граница между интервалом обучения и тестовым интервалом называется Курсором Границы Обучения (Learning Border Cursor, LBC). Граница устанавливается самим экспериментатором до начала обучения нейросети. 

  3. Обучение нейросети: для тренировки нейросети используется метод обратного распространения ошибки (Back Propagation) В качестве целевой функции (target function) используется нормализованный осциллятор, позволяющий исключить тренд и отследить краткосрочные свинговые движения. В данном примере осциллятор рассчитывается как (Close-MA(Close,Period=5))/MA(Close,Period=5), где MA - это экспоненциальная скользящая средняя для индекса Close с периодом 5 прайс-бар. Нейросеть имеет 32 скрытых нейрона и тренируется за 25,000 шагов. Одновременно на базе тех же самых событий создается обычная линейная модель; ниже поясняется, для чего мы это делаем.

  4. Различные комбинации тренировочного и тестового интервалов: при oбучении нейросети на тренировочном интервале создается модель, эффективность которой затем автоматически оценивается на разных тестовых интервалах. Мы используем тренировочные и тестовые интервалы такой длины: 1000 прайс-баров (или 4 года ценовой истории), 2500 баров (10 лет) и 5000 баров (20 лет). В качестве критерия оценки рассчитывается коэффициент корреляции ценового индикатора (т.е. осциллятора) и прогностической кривой, которую построила наша нейросеть.

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

  6. Повторение шагов 2, 3, 4, 5 для новой границы обучения: в изначально введенном наборе данных выбирается другой временной отрезок, то есть, новый комплект данных для работы. Это можно сделать двумя способами - либо вручную передвинуть курсор границы обучения (и, следовательно, саму границу между тренировочным и тестовым интервалом) на несколько прайс-баров вперед, либо делать это автоматически случайным образом. Мы предпочли второй способ, так как он позволяет исключить некоторые артефакты (см. "Исследование артефактов").

  7. Размер образца = 200: вышеописанная процедура повторяется 200 раз. Таким образом, в программе можно работать с 1,800 различными вариантами (200 LBC x 3 тренировочных интервала x 3 тестовых интервала = 1,800). ???????

  8. В качестве нулевой гипотезы берется следующая: если система не способна предсказывать будущее изменение цены, то средняя корреляция между осциллятором и построенной программой прогностической кривой должна быть равна нулю (подробности см. в "Исследовании артефактов"). Результаты численного эксперимента опровергают эту гипотезу.

  9. Статистические результаты: Численный эксперимент показал, что для данной модели и исследуемого индекса наилучшую прогностическую кривую выдает нейросеть, обученная на тренировочном интервале из 5,000 прайс-баров (это соответствует 20 годам ценовой истории). Такая модель позволяет делать прогноз на 7 прайс-баров вперед (то есть, заранее). Средний коэффициент корреляции при этом составляет 0.1125. Положительная корреляция наблюдалась в 124 случаях, тогда как отрицательная - в 76. Согласно нашей нулевой гипотезе, результаты должны были бы быть такими: 100 раз должна была бы наблюдаться положительная корреляция и 100 раз - отрицательная. Таким образом, согласно критерию Пирсона, полученные нами результаты неслучайны, с вероятностью 98%.

  10.  Анализ деталей: Для более узкого окна прогноза (5 прайс-баров вперед), можно ограничиться 1000 прайс-барами (или 4 годами ценовой истории) для обучения нейросети. В таком случае, средняя корреляция (для данной модели и исследуемого финансового инструмента) составляет 0.1019 (121 раз наблюдалась положительная корреляция, тогда как отрицательная корреляция имела место в 79 случаях). Для сравнения, давайте построим обычную линейную модель для тех же самых параметров ( то есть, для тренировочного интервала в 1000 прайс-баров и окна прогноза в 5 прайс-баров). Линейная модель дает среднюю корреляцию 0.060 (113 раз наблюдалась положительная корреляция и 87 раз - отрицательная). Похоже, что модели, созданные с помощью нашей нейросети, способны давать лучший прогноз. Это значит, что для такого типа исследований следует учитывать эффект нелинейности. То есть, практически это значит следующее: будущие колебания цены зависят не столько от структуры самих прайс-баров, как от их комбинации. Иными словами, для прогноза гораздо более влиятельными оказываются комбинации типа "morning star formation (образование утренней звезды)", чем параметры каждого отдельного прайс-бара, входящего в их состав.  

 

Исследование артефактов

В данном  исследовании, мы постарались учесть следующие факторы:

    1) Сезонная составляющая: Ее воздействие исключено тем, что анализируются лишь краткосрочные колебания цены, в пределах 7 - 10 дней. В качестве целовой функции был выбран краткосрочный осциллятор с периодом 5 дней. Чтобы полностью закрыть все вопросы, связанные с сезонной составляющей, мы специально провели тестирование спектральной модели. То есть, мы рассчитали спектр, используя 1000 прайс-баров до границы обучения, извлекли наиболее значимые циклы, действующие в этом интервале, и построили прогноз на их основе. Полученная средняя корреляция оказалась всего лишь 0.051. Это все, что смогла дать в общем-то неплохая спектральная модель для прогноза на 7 дней (то есть, прайс-баров???) вперед. Сравните это с приведенным выше результатом для модели на основе "японских свеч" (средняя корреляция 0.112). Это значит, что с вероятностью по меньшей мере 95% модель на основе "японских свеч" может показать больше, чем любая модель на основе фиксированных циклов (t-statistic, t=1.8). Результат статистического исследования для спектральной модели приводится здесь.  

    2) Нормализация границы обучения (LBC): другой артефакт, который также учитывается программой, это алгоритм выбора положения курсора границы обучения (LBC). Бывают случаи, когда совершенно ясно и без привлечения сложных математических выкладок, что произойдет с рынком в ближайшем будущем. Например, если за день курс акций поднялся на 4% (как результат воздействия определенного фундаментального фактора), то, скорее всего, ближайшие несколько дней не следует ждать подобной активности. Об этом нам говорит, к примеру, тест на эффективность для индекса Доу-Джонс (рассчитано для данных с 1970 по 2004 г.г.), анализ события "цена поднимается по меньшей мере на 4%":

 

Другими словами, иногда информация о будущих изменениях цены может определяться собственно положением курсора границы обучения (LBC). Мы попытались учесть это явление с помощью специального алгоритма выбора LBC (в программе это называется "a normalization of the Learning Border Cursor - нормализация положения курсора границы обучения"). Но проведенные численные эксперименты показывают, что этим можно пренебречь, так как оба алгоритма (обычный и нормализованный) дают практически одинаковые результаты.

К учету артефактов непосредственно примыкает и такой вопрос:
3) Использование коэффициента корреляции Пирсона в качестве меры соответствия кривой цены и прогностической кривой. По большому счету, изменение цены любого вида акций (то есть, любой ряд финансовых данных) не является нормально распределенным. Но нашей задачей является исследование и прогноз краткосрочных изменений. Это и есть то, что показывает наша нейросеть на выходе - краткосрочный индикатор с периодом в 5 прайс-баров (см. красную кривую на рисунке):

Такой индикатор, во-первых, отражает краткосрочные колебания цены; во-вторых, позволяет избежать осложнений, связанных с не-нормальным распределением.

Гистограмма такого индикатора говорит сама за себя:

      

 

Параметры для изменения

Теперь настала пора поговорить о некоторых параметрах, которые стоит варьировать (согласно нашим исследованиям). Более подробную информацию о них можно найти на вебсайте данной программы www.timingsolution.com

1) Порядок авторегрессии:

Практически этот параметр обозначает принимаемое во внимание время воздействия каждого прайс-бара.

2) Количество скрытых нейронов:

На практике, увеличение количества скрытых нейронов означает возможность выявления сложных структур. 

 

24 февраля 2005 г.

Торонто (Канада)

© Timing Solution