preview
Как использовать конечные разности для прогнозирования цен

Как использовать конечные разности для прогнозирования цен

MetaTrader 5Примеры |
49 0
Aleksej Poljakov
Aleksej Poljakov

Введение

Если я задам вопрос: какова главная задача трейдера? Ответ на него будет очень прост — найти простой и эффективный инструмент анализа рынка и прогнозирования цен. В качестве такого инструмента можно использовать конечные разности.

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

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

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


Основы конечных разностей и биноминальное преобразование

Конечные разности — это численный метод, который можно использовать для интерполирования и дифференцирования функций. Этот метод был подробно описан Бруком Тейлором в 1715 г. в работе "Methodus Incrementorum Directa et Inversa".

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

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


Разность 2 порядка можно получить, найдя разность между соседними конечными разностями 1 порядка.

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

Конечные разности можно использовать для биноминального преобразования временного ряда.


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

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

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

Для примера я буду подавлять шум по гиперболическому закону: разность 1 порядка я буду ослаблять в 2 раза, разность 2 порядка в 3, и так далее.  Применив к полученным значениям обратное преобразование, мы получим сглаженную модель временного ряда.

Первый успех достигнут. Давайте посмотрим, как еще можно применять конечные разности в трейдинге.


Конечные разности и паттерны

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

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

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

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

Сначала нам нужно задать количество разностей D, и количество уровней L, которые мы будем различать. Тогда общее количество паттернов, которые будет различать эта модель, можно найти по формуле:


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


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


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


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

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

С помощью конечных разностей можно исследовать и свечные паттерны. Каждая свеча полностью определяется ценами OHLC. На этих ценах можно построить следующие разности:


Эти разности полностью определяют внешний вид свечи. Количество паттернов для одной свечи зависит только от числа уровней.


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


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

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

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

Это нужно учитывать при прогнозировании. Чем чаще встречается паттерн в истории, тем выше уровень доверия к прогнозу.


Конечные разности и прогнозирование

Прогнозирование в трейдинге, как правило, состоит из двух этапов. На исторических данных трейдер ищет закономерности в динамике цены, а потом применяет их к текущей ситуации на рынке. Однако, поиск закономерностей может потребовать много времени и сил. От этого недостатка свободно так называемое «наивное прогнозирование». Этот метод прогнозирования базируется на простом правиле: что было, то и будет. Давайте посмотрим, как можно строить наивные прогнозы.

Итак, у нас есть текущая цена, а мы хотим оценить будущее значение цены. Наивное прогнозирование дает такой ответ:


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


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


То есть, наивный прогноз по значениям временного ряда — это SMA, сдвинутая на 1 бар вправо. Теперь давайте попробуем построить наивный прогноз, основанный на динамике цены. В этом прогнозе мы будем предполагать, что значение 1 разности не изменится.


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


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


Говоря иначе, следующая цена равна текущей плюс средняя скорость за N предыдущих баров. Таким же образом мы можем поступить и с разностями более высоких порядков. Например, формула индикатора, построенного на разности 2 порядка, будет такой:

Конечно же, мы можем суммировать разности друг с другом. А сам индикатор выглядит так:

Конечные разности можно использовать не только для наивного прогнозирования. На этих разностях можно построить и адаптивный прогноз. Давайте разберемся, что это за прогноз и как его строить. Одним из методов обработки временного ряда является регрессия. С ее помощью можно выявить закономерности в изменении цены. Уравнение регрессии выглядит так:

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

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


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


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

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


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

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


Заключение

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

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

При написании статьи были использованы следующие программы.

Название Тип Описание
Binomial transform Индикатор
  • iPeriod — период индикатора. Этот же параметр определяет максимальный порядок конечных разностей.
Similar Differences Скрипт
  • Difference  — максимальный порядок конечных разностей.
Price Patterns Скрипт
  • Differences  — максимальный порядок конечных разностей.
  • Level  — количество уровней.
  • Forward  — количество баров, на которое строится прогноз.
  • Pause  — сколько секунд показывать прогноз.

На вкладке Эксперты выводятся значения прогноза. В папке Files сохраняется рисунок с прогнозом.

Candlestick Patterns Скрипт
  • Candle  — количество свечей для обработки.
Naive Forecast Индикатор
  • Difference  — максимальный порядок конечных разностей.
  • iPeriod  — период индикатора.
Adaptive Forecast Индикатор
  • Difference  — максимальный порядок конечных разностей.
  • LearningSpeed  — скорость обучения. Чем больше этот параметр, тем медленнее происходит подбор коэффициентов.
Probabilistic Forecast Индикатор
Параметров нет. Но вы можете увеличить количество используемых разностей.
Особенности написания Пользовательских Индикаторов Особенности написания Пользовательских Индикаторов
Написание пользовательских индикаторов в торговой системе MetaTrader 4
Торговые инструменты на MQL5 (Часть 2): Улучшение интерактивного торгового помощника через динамическую визуализацию Торговые инструменты на MQL5 (Часть 2): Улучшение интерактивного торгового помощника через динамическую визуализацию
В этой статье мы обновим наш инструмент Trade Assistant, добавив функциональность панели перетаскивания и эффекты наведения курсора мыши, чтобы сделать интерфейс более интуитивно понятным и отзывчивым. Мы совершенствуем инструмент для проверки настроек ордеров в режиме реального времени, обеспечивая точные торговые настройки относительно рыночных цен. Мы также тестируем эти усовершенствования на исторических данных, чтобы подтвердить их надежность.
Особенности написания экспертов Особенности написания экспертов
Написание и тестирование экспертов в торговой системе MetaTrader 4.
Трейдинг с экономическим календарем MQL5 (Часть 8): Оптимизируем тестирование новостных стратегий с помощью фильтров и логов Трейдинг с экономическим календарем MQL5 (Часть 8): Оптимизируем тестирование новостных стратегий с помощью фильтров и логов
В этой статье мы оптимизируем наш экономический календарь, добавив в него умную фильтрацию событий и логи для более быстрого и наглядного тестирования стратегий в режимах live и офлайн. Мы оптимизируем обработку событий, а журнал будем вести по действительно важным операциям и событиям на панели. Попробуем улучшить визуализацию стратегии. Все эти улучшения должны помочь тестировать и улучшать новостные торговые стратегии.