Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
iamraa
7 лет назад

Парный трейдинг: описание стратегии на Python

Стратегия парного🎏 трейдинга очень популярна на рынке. Она основана на чистой статистике📊, что делает ее привлекательной для алгоритмической🤖 торговли. Общий смысл сводится к нескольким шагам: найти пару, проверить ее поведение, определить границы входа в позицию и направление (лонг/шорт).

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

В статье рассмотрены:

  • Введение в корреляцию/коинтеграцию на простом примере.
  • Корреляция без коинтеграции.
  • Коинтеграция без корреляции.

Основные понятия

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

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

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

Стационарность - свойство процесса не менять свои характеристики со временем.P-значение - величина используемая при тестировании статистических гипотез.

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

🎓Предположение

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

Сигналами являются минимальные и максимальные отклонения спреда от нуля. Когда спред на минимуме - необходимо купить акцию А и продать в шорт акцию Б. Когда спред на максимуме - покупаем акцию Б и продаем в шорт акцию А. В обоих случаях закрываем позицию около нуля.

Введение в корреляцию/коинтеграцию

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

Код доступен на Quantrum.me.

Нарисуем график спреда:

Код доступен на Quantrum.me.

Проверив значения коинтеграции и корреляции, видим что спред пары стационарен, p-значение рядом с нулем, и имеет высокую корреляцию около 95%. Код для получения значений оценки ниже:

Код доступен на Quantrum.me.

Корреляция без коинтеграции

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

Код доступен на Quantrum.me.

И нарисуем спред:

Код доступен на Quantrum.me.

Видим, что оба ряда имеют высокую корреляцию около 99% и проваливают тест на коинтеграцию с p-значением 0.885 (рядом с единицей). Мы видим, что спред имеет тенденцию роста со временем.

Коинтеграция без корреляции

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

Код доступен на Quantrum.me.

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

🏁Вывод

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

💬В комментариях задавайте вопросы и напишите, где не хватает подробностей, а что можно описать иначе.

Александр Румянцев aka "iamraa"
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.

🎓Обучение «Парному трейдингу» у профессионалов👍.

10
0.591 GOLOS
На Golos с June 2017
Комментарии (8)
Сортировать по:
Сначала старые