Блог им. Quantrum

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

В прошлой статье мы рассмотрели первый способ поиска пар для стратегии «Парного трейдинга», который работал относительно быстро, но результаты требовали тщательной обработки напильником. То есть дополнительной визуальной проверки графиков для выбора подходящих кандидатов.

В этот раз мы рассмотрим метод поиска коинтеграции (подробнее здесь) по методу Дики-Фуллера.

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

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

История каждого актива должна удовлетворять следующим требованиям:

  • Длина историй должна быть одинаковой.
  • Значения должны быть переведены в относительные величины.
  • Каждая история цен не должна быть стационарной.

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

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

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

Всего таких ~1500 штук, минимальная длина истории 245. После фильтрации на отсутствие коинтеграции осталось 1028 штук, что дает нам 0,5 млн. пар.

2 из 3: тест Дики-Фуллера

Данный тест проверяет времянной ряд (историю изменения цены) на стационарность (наличие коинтеграции). Осуществляется проверка наличия у времянного ряда единичного корня, о чем подробнее написано в Вики. Реализован в библиотеке statsmodels.

Функция проверки стационарности:
statsmodels.tsa.stattools.adfuller(X)

Выбираем пары с оценкой ниже 5% критического порога и p-значением меньше 0,001. Код поиска пар ниже: Исходный код на Quantrum.me

На февраль 2017 года метод нашел 1599 пар (~0.13%), в 4 раза меньше, чем прошлый способ. Поиск загружал все ядра процессора, кроме одного и занял почти 2 часа. Вот пять пар с наименьшим p-значением:

  • XIV, SVXY
  • TRN, AMAT
  • IPHI, TRN
  • COMM, KN
  • TRN, TNA

На первом месте старый знакомый (пара на $VIX), а вот дальше в каждой паре есть компания. Просмотр графиков данных пар не выявил абсолютных провалов, в отличие от прошлого раза.

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

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

  • TRN, AMAT
  • COMM, KN
  • AEL, MRC

TRN, AMAT

TRN — диверсифицированная промышленная компания.
AMAT — технологическая компания, занимающаяся полупроводниками и дисплеями.

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

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

COMM, KN

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

График удовлетворяет задаче и дает хорошее количество сигналов.

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

AEL, MRC

AEL — американская страховая компания.
MRC — промышленная компания, поставщик труб и сопутствующего оборудования для энергетической промышленности.

График стационарен и дает хорошее количество сигналов.

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

Вывод

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

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

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

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

Александр Румянцев aka «iamraa»
Автор Quantrum.me
★9
12 комментариев
я бы еще добавил в качестве признака  - отсутствие важных новостей у парных акций за последние дни
avatar
evgen000, я преследую цель сделать полностью  автоматическую систему. Поиск, проверка, торговля, исключение. Может у вас есть опыт автоматической обработки новостей? 
Александр Румянцев, по идее есть google api который можно использовать для признака есть/нет новостей, так же можно использовать SeekingAlpha https://seekingalpha.com/market-news/top-news в ленте которой новость уже обработана, куда попадают только важные новости. По крайне мере я бы делал так. 
avatar
evgen000, в данном случае есть/нет будет скорее мешать, чем помогать. А seeking alpha может быть интересна. Спасибо.
Александр Акулов, любые пары рвёт. Какие-то раньше, какие-то позже. Взаимодействие секторов нельзя исключать. Здесь надо сосредоточиться на задаче определения своевременного выхода из проблемных пар. 
Александр Акулов, на данный момент я глубоко проблему не изучал. От катастроф в тестах помогает контроль стационарности за полгода.
Александр Румянцев, А как Вам поможет контроль стационарности в реальной торговле? Спред может умереть за один день. Вот утром он еще был, а вечером он уже вместе с твоим счетом благополучно почил в бозе.
avatar
C-4, какие есть у вас решения данной проблемы? Я лишь основываясь на рекомендациях других трейдеров рассматриваю одновременную торговлю несколькими парами. 
Не понятно, как ты ищешь пары с помощью ДФ теста. В adfuller(X) у тебя указана 1 переменная и этот тест всего-лишь определяет стационарен ли ряд или нет 
avatar

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

....все тэги



UPDONW
Новый дизайн