Парный трейдинг: 3 из 3 способов поиска пар (EMA)

5 месяцев назад

Это заключительная статья по автоматическому🤖 поиску пар🎏 для "Парного трейдинга" с помощью Python🐍. Способ самый быстрый🏎 и самый эффективный👍. Хотя эффективность достигается уже благодаря анализу полученного набора пар.В основе данного способа лежит анализ скользящих средних каждого актива. Идея была взята здесь.

📽В предыдущих сериях

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

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

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

☝Выбор акций для поиска

  • Американский рынок.
  • История за предыдущие 360 календарных дней.
  • Цена более $10.
  • Средний объем более 500 тыс. акций в день.
  • ATR за 13 дней более $0.40.

На 10 февраля 2017 таких всего 1287 штук, минимальная длина истории 245. После фильтрации на отсутствие коинтеграции осталось 1028 штук, что дает нам 0,63 млн. пар. Подготовка историй цен подробно рассмотрена здесь.

🔍3 из 3: спред EMA-50

Попробуем сравнивать спред между EMA-50 (средние за 50 дней). Фильтр по порогу среднего значения спреда давал много шлака, что склонило меня к использованию 70% перцентиля. То есть нам подойдут пары, если максимальное абсолютное значение 70% спреда меньше трех. Три - это произвольное число и для себя можете попробовать использовать любое другое.

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

Стационарность проверяем методом Дики-Фуллера отсюда:
statsmodels.tsa.stattools.adfuller(X)

По порядку:

  • EMA-50;
  • 70% перцентиль abs(спреда) меньше 3;
  • спред проверяем на стационарность.

Код на Python:

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

На 10 февраля 2017 года метод нашел 2056 пар (~0.32%), включая не стационарные. Поиск загружал все ядра процессора, кроме одного и занял почти... 3 минуты, в отличие от второго способа, затянувшегося на 2 часа.В этот раз, для исключения шлака, проведем сбор дополнительных данных и отфильтруем плохие пары. А искать будем следующее:

  • Стандартное отклонение спреда за последние 2 месяца.
  • Количество пересечений сигнальной z-оценкой -1, 0 и 1.

Отфильтруем резкое падение стандартного отклонения за последние 2 месяца, оставим только стационарные пары и упорядочим по количеству пересечений z-оценки нуля. Нам будет доступна всего 1731 пара. Это много и код ниже позволит вам отфильтровать пары по необходимым признакам.

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

Вот пять пар с наибольшим количеством пересечений нуля z-оценкой:

  • SNV, KBWB
  • WEC, DUK
  • ETFC, SCHW
  • XLI, DIA
  • FULT, KBE
  • ...

За время экспериментов заметил, что истории цен различаются в зависимости от источника. В частности, с этим связано добавление фильтра падения сигмы за последние два месяца.

🎏Проверка найденных пар

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

  • SNV, KBWB
  • ETFC, SCHW
  • XLI, DIA

👌SNV, KBWB

SNV - банк.
KBWB - ETF на банки.

Спред стационарен и дает сигналы для торговли.

👌ETFC, SCHW

ETFC - инвестиционный брокер.
SCHW - инвестиционный брокер.

Одна группа, стационарный спред, достаточное количество сигналов.

👌XLI, DIA

XLI - ETF на промышленный сектор.
DIA - ETF на промышленный индекс Доу Джонс.

Единая направленность фондов, достаточное количество сигналов и визуальное соответствие.

🏁Вывод

Анализ результатов поиска данным способом оставляет положительные впечатления. Все найденные пары, включая пары с минимальным количеством пересечений нуля сигнальной z-оценкой (мин. 8), удовлетворяют базовым требованиям стратегии "Парного трейдинга". Способ работает очень быстро и подходит для беглого обзора рынка.

В следующий раз вернемся к бэктестингу найденных пар на платформе Quantopian. Бэктестинг проведем, используя пары, найденные текущим способом.

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

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

Александр Румянцев aka "iamraa"
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.
Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное

Привет! Я робот. Хозяин поручил мне проголосовать за Ваш пост! Я нашла похожий контент, который может быть интересен читателям ГОЛОСа:
https://quantrum.me/948-parnyj-trejding-3-iz-3-sposobov-poiska-par-ema/

69
  ·  5 месяцев назад

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
iamraa
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!