Прогнозирование валютных колебаний статистическими методами

в 0:16, , рубрики: Программирование, статистика, Финансы для всех, метки: ,
С чего все начиналось

Осваивая новое направление в программировании (программирование под платформу MetaTrader), мне пришла идея попробовать свои силы в чем-то большем. Например, найти какой-то нестандартный способ прогнозирования движения цен на валютные пары.

Изначально, предпринимались попытки реализовать либу со всеми статистическими показателями, но на полпути я обнаружил, что таковые уже существуют:

Проанализировав их содержимое, я понял одну простую вещь…

Все функции, описанные и реализованные в вышеизложенных исходниках являются основой стандартных торговых индикаторов.

Для справки

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

Все они берут за основу статистику и математику, а именно: аппроксимацию и интерполяцию, расчет средних значений различных порядков, расчет гистограмм распределения и др. Данные таких индикаторов основываются на показаниях цены в зависимости от времени.

Количество формул просто внушало! Затея казалась практически нереальной, по-этому я решил отложить в сторону мат. расчеты и использовать шаблонный подход.

Как это было

Первый шаг (провал)

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

image

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

Второй шаг (провал)

Далее были предприняты попытки найти некие «шаблоны», состоящие из нескольких баров. То-есть, теперь, за основу бралось понятие шаблона, или как я это называю — маска. Также, было введено новое понятие — длина маски.
Соорудив «пирамиду» из вложенных циклов, я запустил первый проход по всей истории в поисках схожих масок длиной в 6 баров. Результат меня шокировал! Программа ничего не нашла за последние 12лет! Совпадений — 0! Что не так?

После нескольких часов «допиливания» алгоритма, выяснилось, что не в нем дело. Все дело в точности вычислений. Действительно, практически нереально найти одинаковые маски такой длины. Не долго думая, добавляю внешний параметр — максимальная точность вычислений. Пробуем опять тестировать, только уже с маской в 3 бара и максимальной точностью 90 процентов. Результат опять шокирует. 206 масок найдено, причем расположены они одна на одной:

image

Попытки изменять длину маски или точность приводили всегда то к нулевому результату, то к «куче» масок, в которой практически ничего нельзя разобрать, что уж говорить о прогнозировании. И снова провал.

Третий шаг — долгожданное прояснение

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

Я оставил позади, идею непосредственного анализа цены, и подключил мат. аппарат, а точнее его реализацию — торговые индикаторы.

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

И тут наступил переломный момент! Мы же можем получать не только значения цены, по историческим данным, но и так-же, беспрепятственно, мы способны рассчитать состояние тренда в любой момент истории.
Остается только техническая часть вопроса.

Чем закончилось

В результате «третьего шага», был разработан алгоритм анализа текущего состояния тренда и поиска шаблонных ситуаций в истории. Данная программка успешно показала хороший публичный прогноз на конкурсе идей от 15.03.2012. При следовании указаниям этого прогноза, была возможность заработать более 1500пунктов за 15.02-16.02.2012. В данный момент проходят массовые доработки и оптимизации кода (т.к. вычисления получились ну очень тяжелыми), и уже в скором времени, я выложу его на всеобщее обозрение.

Выводы

Наступив на кучу граблей, теперь уже с уверенностью, могу дать пару советов начинающим трейдерам/исследователям/программистам:
1. Не пытайтесь анализировать конкретные значения цены.
2. Цена — это функция от спроса, предложения и брокерских уловок.
3. Пытайтесь подходить к исследованию вопросов прогнозирования со стороны трейдера, брокера и программиста.

Успешных вам прогнозов!

Подвал

1. Краткое определение индикаторов взято с сайта: http://infofx.ru/
2. Ссылки исходных кодов ведут на решения неизвестных мне людей. Но могу вас уверить, эти сорцы не способны навредить вашему компьютеру, т.к. это файлы обычного текстового формата.
3. К сожалению, нулевая карма не позволяет писать в «Финансы». Адаптировал топик под данный хаб. Как только смогу — перенесу.
4. Я открыт для обсуждения данного вопроса. Буду рад любому замечанию или дополнению.

Автор: fxstats

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js