English 中文 Español Deutsch 日本語 Português
preview
Парный трейдинг

Парный трейдинг

MetaTrader 5Трейдинг | 13 сентября 2023, 10:53
1 874 18
Aleksej Poljakov
Aleksej Poljakov

Введение

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

Парный трейдинг – это одна из разновидностей статистического арбитража, которая была впервые предложена Джерри Бамбергером в 1980-х годах. Эта торговая стратегия является нейтральной по отношению к рынку, что позволяет трейдерам получать прибыль практически при любом состоянии рынка. В основе парной торговли лежит предположение о том, что характеристики взаимосвязанных финансовых инструментов после временного отклонения вернутся к своим средним историческим значениям. Таким образом, парный трейдинг сводится к нескольким простым операциям:

  • выявить расхождение статистической связи двух финансовых инструментов;

  • открыть по ним позиции;

  • закрыть позиции, когда характеристики инструментов вернутся к среднему.

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


Корреляция

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

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

Для трейдинга наиболее интересны валютные пары с отрицательной корреляцией. Например, так выглядит движение EURUSD и USDCHF.

Для оценки корреляции чаще всего используется коэффициент корреляции Пирсона. Этот коэффициент рассчитывается по формуле:

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

Давайте попробуем разработать правила торговой стратегии на основе корреляции.

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

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

На следующем шаге нужно установить уровень срабатывания. Если текущая корреляция достигнет этого уровня, то советник может открывать позиции. Этот уровень можно задать явно. Например, -0.95, -0.9 и т.п. Но можно применить и другой подход. Мы можем взять исторические значения корреляции и отсортировать их по возрастанию. А в качестве уровня срабатывания взять границу в 10% наименьших значений.

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

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

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

Кроме того, я добавил в советник еще два уровня. Пересечение первого уровня указывает на необходимость перевода позиций в безубыток. Его значение равно 33%. А пересечение второго уровня приводит к закрытию всех позиций. Уровень закрытия равен 67%, но не больше ноля. Изменение этих уровней может сильно повлиять на прибыльность советника.

Давайте протестируем советника, который работает по этим правилам. Вот так выглядит изменение баланса для валютных пар EURUSD и USDCHF в период с 2021.01.01 по 2023.06.30.

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

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

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

Также, коэффициент корреляции Спирмена может выявить нелинейные зависимости. Например, на одном временном ряду действует линейный тренд, а на другом — экспоненциальный. Коэффициент Спирмена легко справится с такой ситуацией. А вот коэффициент Пирсона не сможет полностью выявить силу взаимосвязи этих рядов.

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

index
EURUSD
USDCHF
0 1.06994
 0.89312
1 1.06980
0.89342
2 1.07058
0.89277
3 1.07045
0.89294
4 1.07089

0.89283

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

cur. index EURUSD USDCHF
0 1.06980   (1) 0.89277   (2)
1 1.06994   (0) 0.89283   (4)
2 1.07045  (3) 0.89294   (3)
3 1.07058   (2) 0.89312   (0)
4 1.07089   (4) 0.89342   (1)

Теперь нам нужно найти разности между текущими индексами у цен с одинаковыми индексами до сортировки. Например, найдем разность D0. Сначала найдем цены индекс, которых был равен нулю. Это 1.06994 EURUSD и 0.89312 USDCHF. Текущие индексы этих цен равны 1 и 3. Тогда, разность D0 = 1 – 3 = -2.

Далее найдем разность D1. Текущий индекс цены 1.06980 EURUSD равен 0, а цены 0.89342 USDCHF равен 4. D1 = 0 – 4 = -4.

Таким же образом рассчитываются остальные разности.

После того, как мы вычислили все разности, можно приступать к расчету коэффициента ранговой корреляции Спирмена:

На первый взгляд, различие между коэффициентами Пирсона и Спирмена невелико.

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

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

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


Коинтеграция

В 1980-х годах Клайв Грейнджер выдвинул концепцию коинтеграции временных рядов. Раз есть коинтеграция, то сначала должна быть интеграция. Давайте посмотрим, что это такое.

Предположим, что у нас есть временной ряд, значения которого меняются по такому закону:

Где, c – константа, а rand – случайное число. Уравнение выглядит простым, но с его помощью можно получить интересные траектории движения. Для генерации случайных чисел мы воспользуемся библиотекой Статистика. В этой библиотеке есть все необходимые нам распределения, с помощью которых мы сможем сгенерировать интегрированные временные ряды.

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

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

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

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

На практике поведение коинтегрированных валютных пар можно отслеживать с помощью разности:

При этом коэффициенты k и m должны быть подобраны таким образом, чтобы значения d[i] наименьшим образом отклонялись от ноля. Их значения можно оценить с помощью метода наименьших квадратов по формулам:

Вот так выглядит изменение разности между USDCHF и USDCAD.

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

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

Советник, работающий на валютных парах USDCHF и USDCAD, за период с 2021.01.01 по 2023.06.30 показал такое изменение торгового баланса.

Для улучшения качества трейдинга этого советника применимы те же рекомендации, что и для эксперта, торгующего по корреляции.


Заключение

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

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

Название Тип Особенности
sPearson скрипт iPeriod - период корреляции
Анализирует исторические корреляции по всем символам, доступным в Обзоре рынка. По окончании работы сохраняет средние значения корреляции в папке Files
iPearson
индикатор SecSymbol - второй символ
iPeriod - период корреляции
Показывает текущий коэффициент корреляции Пирсона
sSpearman скрипт Анализирует историческую корреляцию Спирмана
iSpearman индикатор Показывает текущую корреляцию Спирмана
EA Correlation советник Эксперт, торгующий по корреляциям Пирсона и Спирмена
Integrated Series скрипт Скрипт показывает возможности по построению интегрированных временных рядов. Есть возможность использования разных распределений
sCointegration скрипт Скрипт оценивает возможную коинтеграцию валютных пар
iCointegration индикатор Индикатор показывает коинтеграционную разность двух валютных пар
EA Cointegration советник Эксперт, использующий для торговли коинтеграцию валютных пар


Прикрепленные файлы |
sPearson.mq5 (2.33 KB)
iPearson.mq5 (3.14 KB)
sSpearman.mq5 (2.43 KB)
iSpearman.mq5 (3.3 KB)
EA_Correlation.mq5 (21.54 KB)
sCointegration.mq5 (2.29 KB)
iCointegration.mq5 (3.03 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (18)
Aleksej Poljakov
Aleksej Poljakov | 14 сент. 2023 в 13:48
Dmitry Fedoseev #:

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

Поэтому считаем корреляцию с наклонной линий. За два периода надо считать - за длинный и за короткий. Корреляция за длинный период даст понимание, в одну сторону ходят символы или в разные. 

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

Например за длинный период корреляция на обеих символах больше 0, то есть они идут в одну сторону - вверх. 

Если на коротком периоде корреляция разошлась, например, на первом символе больше 0, на втором - меньше 0 - входим. 

На первом продаем, на втором покупаем. И т.д.  в таком же стиле...

---

Хотелось бы задать вопрос автору про поправку Олкина - Пратта. Что это и зачем? Действительно ли это здесь нужно?

Что будет без нее? 

направление движения символов можно узнать и с помощью первой производной...

поправка нужна, если будем применять открытие/закрытие позиций по значению корреляции... К примеру -0.95 - открываем, -0.3 - закрываем... Можно от нее отказаться, только нужно помнить, что края графика будут немного сжаты

Stanislav Korotky
Stanislav Korotky | 14 сент. 2023 в 19:54
Dmitry Fedoseev #:

Теоретически. А как практически посчитать этот АТР?

Если вопрос про период АТР, то можно взять средний период удержания позиции по ТС и умножить на N>1 (для запаса). Важно, чтобы АТР была учтена, потому что без неё слив обеспечен. Практически. Исключение составляют только совпадения, когда АТР1 примерно равно АТР2.

Maxim Kuznetsov
Maxim Kuznetsov | 14 сент. 2023 в 20:37
Dmitry Fedoseev #:

Поэтому считаем корреляцию с наклонной линий. За два периода надо считать - за длинный и за короткий. Корреляция за длинный период даст понимание, в одну сторону ходят символы или в разные. 

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

например тренд образовался импульсами, а основное время курс корректировалось вниз. 

Dmitry Fedoseev
Dmitry Fedoseev | 14 сент. 2023 в 23:50
Maxim Kuznetsov #:

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

например тренд образовался импульсами, а основное время курс корректировалось вниз. 

Это сенсация! Покажите числовой ряд, дающий такой эффект.

marker
marker | 16 сент. 2023 в 10:14

https://www.mql5.com/ru/signals/2020078?source=Site+Signals+Favorites


вот этот сигнал, похоже как раз на арбитраже (расхождении) пар eurusd и usdchf и построен.

P/S не реклама, просто попался на глаза и судя по истории сделок так оно и есть.

Понимание и эффективное использование тестера стратегий MQL5 Понимание и эффективное использование тестера стратегий MQL5
MQL5-разработчикам крайне необходимо освоить важные и ценные инструменты. Одним из таких инструментов является тестер стратегий. Статья представляет собой практическое руководство по использованию тестера стратегий MQL5.
Разработка пользовательского индикатора True Strength Index с помощью MQL5 Разработка пользовательского индикатора True Strength Index с помощью MQL5
Представляю новую статью о том, как создать пользовательский индикатор. На этот раз мы будем работать с индексом истинной силы - True Strength Index (TSI) и создадим советник на его основе.
Разработка пользовательского канала Дончиана с помощью MQL5 Разработка пользовательского канала Дончиана с помощью MQL5
Существует множество технических инструментов, которые можно использовать для визуализации ценового канала. Одним из таких инструментов является канал Дончиана (Donchian Channel). В этой статье мы узнаем, как создать канал Дончиана и как использовать его в качестве пользовательского индикатора в составе советника.
Нейросети — это просто (Часть 57): Стохастический маргинальный актор-критик (SMAC) Нейросети — это просто (Часть 57): Стохастический маргинальный актор-критик (SMAC)
Предлагаем познакомиться с довольно новым алгоритмом Stochastic Marginal Actor-Critic (SMAC), который позволяет строить политики латентных переменных в рамках максимизации энтропии.