Александр Румянцев
Александр Румянцев личный блог
02 мая 2017, 22:09

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

Это заключительная статья по автоматическому поиску пар для «Парного трейдинга» с помощью Python. Способ самый быстрый и самый эффективный. Хотя эффективность достигается уже благодаря анализу полученного набора пар.

В основе данного способа лежит анализ скользящих средних каждого актива. Идея была взята здесь.

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

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

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

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

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

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

  • Американский рынок.
  • История за предыдущие 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 часа.

В этот раз, для исключения шлака, проведем сбор дополнительных данных и отфильтруем плохие пары. А искать будем следующее:

  • Стандартное отклонение спреда за последние 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 на банки.

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

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

ETFC, SCHW

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

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

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

XLI, DIA

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

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

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

Вывод

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

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

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

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

Александр Румянцев aka «iamraa»
Автор Quantrum.me
Есть желание создать команду алготрейдеров. Пишите в личку или на email.
47 Комментариев
  • maikl sake
    02 мая 2017, 22:20
    -ТЕСТ НА РЕАЛЬНОМ СЧЕТЕ ГДЕ???
  • buy_sell
    02 мая 2017, 22:22
    Возьмите Сбер и Сбер-пр. Идеальная пара
  • Андрей М
    02 мая 2017, 22:58
    Вы не пробовали использовать Stocksharp у него много коннекторов?
      • baron_samedi
        03 мая 2017, 06:42
        Александр Румянцев, 
        я в моно на алоре, удалось присобачить их библиотеку.
          • baron_samedi
            03 мая 2017, 10:36
            Александр Румянцев, 
            ясно дело линукс. Поэтому аренда сервака — 200р в мес, все консольное. В этом дело, смекаете?
              • baron_samedi
                03 мая 2017, 12:19
                Александр Румянцев, 
                убунтовод.
                сервер убунту с моной, но можно и дебиан ставить на выбор.
  • day0markets.ru
    03 мая 2017, 07:19

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

    Но в целом решение для начала неплохое. 

  • SergeyJu
    03 мая 2017, 10:42
    Логика  Вашего исследования привела к весьма однородным парам ЕТФ против ЕТФ. 
    Я думаю, что это жжж не спроста. Вы можете взять совсем другой период для анализа и снова выбрать подходящие пары, скажем, быстрым третьим способом. Я почти уверен, что при тщательном долгосрочном анализе у Вас почти ничего, кроме пар типа ЕТФ-ЕТФ, и, возможно, обычная акция против привилегии того же эмитента не останется.
      • SergeyJu
        03 мая 2017, 11:00
        Александр Румянцев, помимо упражнений с кодом, важно общее понимание используемой торговой схемы. Скажем, стандартная парная торговля (возврат к среднему) есть специфический вариант контртренда. Какие тут подводные камни? 
        Во-первых, относительно низкая доходность, вынуждающая работать с плечами и платить повышенные комиссы и нести транзакционные издержки 
        во-вторых, трудно поддающийся контролю риск. 
        Если на рынке или у одного эмитента происходит крах, в паре безбожно рвет. Следовательно, критически важно изучить особенности относительного движения в парах в зонах кризиса и ярких корпоративных событиях. 
          • SergeyJu
            03 мая 2017, 11:37
            Александр Румянцев, это не детали.
            Не исключаю, что при тщательном изучении вопроса может обнаружиться, что торговать как раз нужно события выхода пары из квазистационарного состояния.
        • baron_samedi
          03 мая 2017, 12:22
          SergeyJu, 
          любопытно, я тоже к этому 2 раза приходил — торговля некоррелированных инструментов, и поиск именно раскорреляций между собой или с индексом.
  • Petr S
    14 мая 2017, 21:38
    аффтару огромный респект!
    Вот из-за таких крупиц отличной информации и не бросил еще заходить на этот срачный смартлаб

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн