Alexander Rumyantsev
3
All posts from Alexander Rumyantsev
Alexander Rumyantsev in Quantrum,

Бэктестинг: Парный трейдинг по z-оценке

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


Ранее на эту тему:

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

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

Наша задача найти эту пару и определить сигнальные уровни отклонения. Если акция А убегает, тогда мы покупаем Б и одновременно продаем А. Если акция А отстает, тогда мы продаем Б и одновременно покупаем А. Акции должны быть куплены/проданы на равные суммы.

Условия тестирования:

  • Ищем за 2014, 2015 и 2016 года.
  • Тестируем за 2015 и 2016 года.
  • Торгуем спустя 1 час после открытия рынка, один раз в день.

 

Выбор акций для поиска и тестирования

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

Будем использовать пары, найденные за один-два года с помощью третьего способа. При поиске пар за полгода, результаты тестов крайне отвратительные и мы их рассматривать не будем.

2016, DIA и SLB (знаем будущее)

  • Ищем пары внутри 2016 года.
  • DIA — ETF на промышленный индекс Доу Джонса.
  • SLB — крупный нефтедобытчик.

DIA vs SLB
 

2016, z-оценка

Графики лежат не идеально, но z-оценка дает достаточное количество сигналов. Тест показывает, что в 2016 году пара действительно шла нога в ногу и позволила опередить рынок с доходностью 25% и небольшой просадкой в -4%. Но в данном случае мы знаем будущее, то есть на начало теста мы уже знаем, что пара стационарна и остается таковой весь год. Как пара поведет себя в будущем нам не проверить. Значит вернемся в 2015.

2015, CIT и STT

  • CIT — банк.
  • STT — финансовая компания.

2015, CIT vs STT
 

2015, z-оценка

Движение цен на графике визуально сходится, спред стационарен и дает хорошее количество сигналов. За 2015 год пара показала прекрасные результаты с доходностью в 82% и просадкой в -6%, что является отличным результатом. Но это со знанием будущего.



2016, z-оценка

Справа результаты за 2016 год, когда мы учитываем только прошлые заслуги. Здесь все значительно хуже. Подобная картина на многих парах, которые я проверил. Видимо, одного года недостаточно, чтобы найти стабильную пару.

Попробуем провести поиск за два года (2014-2015) и протестировать пару оттуда.

2014-15, H и MMP

  • H — гостиничный холдинг Hyatt.
  • MMP — нефтегазовая транспортая компания.

2014-15, H vs MMP
 

2015, z-оценка

На удивление, графики компаний похожи. В проблемном 2015 году пара проявила себя великолепно, показав доходность в 100%. Но это опять с учетом заглядывания в будущее. Результаты за 2016 год значительно скромнее, но они остались позитивными. Добавление фильтра стационарности за предыдущие 200 дней «выключает» пару вовсе.

2016, z-оценка
 

2016, z-оценка, стационарность

Подобные результаты указывают на то, что при поиске пар надо учитывать дополнительные условия:

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

Код в студию

Исходный код доступен на Quantrum.me

Заключение

Результаты тестов великолепны, если мы знаем будущее, но без будущего никуда не годятся. Корень зла в том, что пара может потерять связь в любой момент. Как это вовремя заметить? Вот главный вопрос. Второй вопрос: Как быстро найти замену в полностью автоматическом режиме? Результаты тестов нам дали подсказку, что необходимо учесть при поиске пар. В следующей статье улучшим автоматический поиск и еще раз попробуем сделать замеры.

Напишите в комментариях, как можно улучшить поиск пар и как проверять их корректность во время теста. При каких условиях заканчивать торговать парой?

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

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