Блог им. Quantrum

Парный трейдинг: 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.
★18
47 комментариев
-ТЕСТ НА РЕАЛЬНОМ СЧЕТЕ ГДЕ???
avatar
maikl sake, в последующих статьях. Изначально описание, затем поиск, после бэктестинг, анализ тестов, улучшение поиска, еще бэктестинг, бумажный счет на IB и реальный на IB. Это серия статей.
Возьмите Сбер и Сбер-пр. Идеальная пара
avatar
buy_sell, к сожалению, я торгую на американском рынке.
Александр Румянцев, хорошо сказано ))) 
OsenЬ, Quantopian позволяет подключить свой счет на IB (о чем буду писать в будущем) и есть несколько шлюзов к IB (что тоже опишу после quantopian).
OsenЬ, эх, если бы это была моя разработка, то я бы уже привлек инвестиций на $0,5 млрд. долларов. Мне нравится ход ваших мыслей, но реальность другая. Я торгую на американском рынке, изучаю алготрейдинг на нем же. Использую Python и все доступные инструменты.
Вы не пробовали использовать Stocksharp у него много коннекторов?
avatar
Андрей М, я не люблю ms языки. Может быть в будущем поковыряю моно.
Александр Румянцев, 
я в моно на алоре, удалось присобачить их библиотеку.
avatar
baron_samedi, а на какой ос? 
Александр Румянцев, 
ясно дело линукс. Поэтому аренда сервака — 200р в мес, все консольное. В этом дело, смекаете?
avatar
baron_samedi, я это понимаю.) какой? Centos или Debian? 
Александр Румянцев, 
убунтовод.
сервер убунту с моной, но можно и дебиан ставить на выбор.
avatar
OsenЬ, благодарю за оценку статьи. Я лишь документирую свои наблюдения и делюсь этим. Чем подробнее я пишу, тем лучше понимаю материал. Стратегия имеет свои риски, как и весь рынок в целом. Quantopian — это система бэктестинга и лёгкая возможность подключить робота на Python к ib. Поиск пар я описываю для понимания стратегии. Мои скрипты поиска не зависят ни от одной платформы. 
OsenЬ, мне нравится ход ваших мыслей.) Но вот обучение, не моя стихия. Я заметил, что подробные статьи здесь вызывают неподдельное подозрение. Вы не первый, кто меня записывает в учителя. ;) 
OsenЬ, это всего лишь партнёрская программа, так как я не обучаю, а обращаются. ;) Я пишу, пока учусь, а учусь, пока живу. Но вы правы, надоест писать, перестану. 

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

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

avatar
Alex Hurko, я с вами полностью согласен. Решение прекрасно подходит для начинающих. А детали проявляются со временем. 
OsenЬ, я не тушуюсь. Может благодаря мне некоторые на реал выйдут. ;) 
OsenЬ, мне приятно, что вам не безразлична моя судьба. ;) Но чувствуется в ваших словах небезупречность. ;) 
Логика  Вашего исследования привела к весьма однородным парам ЕТФ против ЕТФ. 
Я думаю, что это жжж не спроста. Вы можете взять совсем другой период для анализа и снова выбрать подходящие пары, скажем, быстрым третьим способом. Я почти уверен, что при тщательном долгосрочном анализе у Вас почти ничего, кроме пар типа ЕТФ-ЕТФ, и, возможно, обычная акция против привилегии того же эмитента не останется.
avatar
SergeyJu, это не исследование, а пример исходного кода для самостоятельного поиска. В разные периоды разные результаты. Описанные вами результаты — это цель. Но нужны дополнительные фильтры найденных пар. Пока это изучаю. 
Александр Румянцев, помимо упражнений с кодом, важно общее понимание используемой торговой схемы. Скажем, стандартная парная торговля (возврат к среднему) есть специфический вариант контртренда. Какие тут подводные камни? 
Во-первых, относительно низкая доходность, вынуждающая работать с плечами и платить повышенные комиссы и нести транзакционные издержки 
во-вторых, трудно поддающийся контролю риск. 
Если на рынке или у одного эмитента происходит крах, в паре безбожно рвет. Следовательно, критически важно изучить особенности относительного движения в парах в зонах кризиса и ярких корпоративных событиях. 
avatar
SergeyJu, благодарю за советы. Буду учитывать эти детали. 
Александр Румянцев, это не детали.
Не исключаю, что при тщательном изучении вопроса может обнаружиться, что торговать как раз нужно события выхода пары из квазистационарного состояния.
avatar
SergeyJu, а это может быть интересной идеей. Торговать разрыв пары. Здесь может понадобиться анализ широкого рынка. 
SergeyJu, 
любопытно, я тоже к этому 2 раза приходил — торговля некоррелированных инструментов, и поиск именно раскорреляций между собой или с индексом.
avatar
OsenЬ, мои чувства в безопасности. ;) И мне приятна ваша забота. ;) 
OsenЬ, проверим. У меня появилась идея, как обойти ограничения Quantopian для масштабного теста в сотню пар. Напишу о результатах в одной из будущих статей. 
OsenЬ, в пару кликов подключается счет IB. У меня по плану: quantopian-бэктест, quantopian-livetest; quantopian-ib-paper; quantopian-ib-live. Каждый шаг документирую, будут статьи.
Александр Румянцев, к IB как будете подключаться? через API сами или будете юзать какую тулзу?
avatar
Petr S, в первую очередь я буду использовать сам Quantopian. Там можно подключить свой счет на IB и торговать алгоритмом. Дополнительно буду тестировать библиотеки для разворачивания на своем сервере и в облаке. Одна из библиотек — IbPy. Все буду документировать, выложу.
OsenЬ, я планирую отсечки 1 мес., квартал и полгода. 
аффтару огромный респект!
Вот из-за таких крупиц отличной информации и не бросил еще заходить на этот срачный смартлаб
avatar
Petr S, Благодарю.

теги блога Александр Румянцев

....все тэги



UPDONW