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

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

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

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

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

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

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

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

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

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

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

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

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

  • Ищем пары внутри 2016 года.
  • DIA — ETF на промышленный индекс Доу Джонса.
  • SLB — крупный нефтедобытчик.
Бэктестинг: Парный трейдинг по z-оценке
DIA vs SLB
 Бэктестинг: Парный трейдинг по z-оценке
2016, z-оценка

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

2015, CIT и STT

  • CIT — банк.
  • STT — финансовая компания.
Бэктестинг: Парный трейдинг по z-оценке
2015, CIT vs STT
 Бэктестинг: Парный трейдинг по z-оценке
2015, z-оценка

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

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

2016, z-оценка

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

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

2014-15, H и MMP

  • H — гостиничный холдинг Hyatt.
  • MMP — нефтегазовая транспортая компания.
Бэктестинг: Парный трейдинг по z-оценке
2014-15, H vs MMP
 Бэктестинг: Парный трейдинг по z-оценке
2015, z-оценка

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

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

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

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

Код в студию

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

Заключение

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

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

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


Обучение «Парному трейдингу» у профессионалов.
20 Комментариев
  • buy_sell
    18 мая 2017, 23:40
    Почему вы не хотите использовать акции и фьючерсы на них, или акции и опционы? Уж между акцией и деривативом на неё очень хорошая корреляция. Ну и торгуйте их. Конноли вам в помощь.
    • evgen000
      19 мая 2017, 08:36
      buy_sell, это практически невозможно торговать. Эти деньги забирает ММ мафия )
  • PSH
    18 мая 2017, 23:55
    Если «пара может потерять связь в любой момент», то это нам как бэ намекает, что мы смотрим в книгу, а видим фигу на какой-то другой процесс, проявлением которого является эта «связь», но не понимаем, на какой.
    • cfree0185
      19 мая 2017, 08:06
      PSH, золото
      • PSH
        19 мая 2017, 11:11
        Александр Румянцев, Вы вот ниже хорошо пишете «Например сейчас у Тайваня корреляция с Эппл в 90%, так как 3 крупнейшие компании тайваньского индекса, это поставщики Эппл.». Это именно то, что я имею в виду.
          • PSH
            19 мая 2017, 12:31

            Александр Румянцев, именно о порочности, на мой взгляд, подобного подхода я и писал здесь: «мы смотрим на какой-то другой процесс, проявлением которого является эта «связь», но не понимаем, на какой»

  • Mr Gold
    19 мая 2017, 00:58
    Старая стратегия, в 90-е и 2000-е использовалась вместе с арбитражем. Те кто первыми до этого догадались и смогли определить закономерность заработали на ней миллиарды
  • ves2010
    19 мая 2017, 08:38
    1 тестить надо лет за 10… чтоб получить достоверную статистику хотяб в 1000 сделок
    2 смотреть компании одного сектора 
    finviz.com/map.ashx
    например индепенденд газ и оил… там их штук 20 очень похоже… тоже в хелскаре
      • ves2010
        19 мая 2017, 12:48
        Александр Румянцев, протесть сбер-газпром… там стационарность 10лет
  • Siryoyo
    19 мая 2017, 10:47
    Неудивительно, что без look forward у вас ничего не получается, т.к. z-score имеет prediction power около 0. Вы можете получить положительный результат, если возьмете не пару, а баскет и будете из него выбирать N лучших и N худших стоков для cash neutral портфеля. Но там тоже этот результат не ахти.  
  • Siryoyo
    19 мая 2017, 11:03
    Ok. Только выкладывайте тесты out-of-sample без look forward'a плз.

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

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