Блог им. Quantrum

Бэктестинг: Парный трейдинг по 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.


Обучение «Парному трейдингу» у профессионалов.
★8
20 комментариев
Почему вы не хотите использовать акции и фьючерсы на них, или акции и опционы? Уж между акцией и деривативом на неё очень хорошая корреляция. Ну и торгуйте их. Конноли вам в помощь.
avatar
buy_sell, это практически невозможно торговать. Эти деньги забирает ММ мафия )
avatar
buy_sell, это отличное решение. Благодарю за рекомендацию книги «торговля волатильностью». Я в основу статей закладываю доступность и бесплатность реализации. Истории опционов или фьючерсов на акции нет в свободном доступе. И quantopian наиболее лоялен к новичкам. 
Если «пара может потерять связь в любой момент», то это нам как бэ намекает, что мы смотрим в книгу, а видим фигу на какой-то другой процесс, проявлением которого является эта «связь», но не понимаем, на какой.
avatar
PSH, золото
avatar
PSH, не вижу свой первый ответ, поэтому повторю. Это нам намекает, что необходим контроль пары во время торговли и улучшение механизма выбора пар. Об этом в следующих статьях. 
Александр Румянцев, Вы вот ниже хорошо пишете «Например сейчас у Тайваня корреляция с Эппл в 90%, так как 3 крупнейшие компании тайваньского индекса, это поставщики Эппл.». Это именно то, что я имею в виду.
avatar
PSH, я рассматриваю полностью автоматическую систему. Глубокий анализ связи требует правильной модели ИИ. Я же буду закладывать в систему торговлю несколькими десятками пар одновременно. Только статистика. 

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

avatar
PSH, найти или притянуть причину можно всегда приложив время и усилия. Было бы желание. А наша связь, это статистическая закономерность возвращения к среднему в паре. А ещё, умение вовремя обнаружить потерю этой закономерности. 
Старая стратегия, в 90-е и 2000-е использовалась вместе с арбитражем. Те кто первыми до этого догадались и смогли определить закономерность заработали на ней миллиарды
avatar
Mr Gold, изучить, как они это сделали и попробовать самостоятельно будет полезно для общего развития. 
1 тестить надо лет за 10… чтоб получить достоверную статистику хотяб в 1000 сделок
2 смотреть компании одного сектора 
finviz.com/map.ashx
например индепенденд газ и оил… там их штук 20 очень похоже… тоже в хелскаре
avatar
ves2010, стационарность пары недолговечна и тесты одной пары за 10 лет бесполезны. Тестировать надо больше пар для какого-то заключения, это факт. Все это в следующих статьях. 
А вот про один сектор не согласен, ведь никто не отменяет взаимосвязь секторов. Например сейчас у Тайваня корреляция с Эппл в 90%, так как 3 крупнейшие компании тайваньского индекса, это поставщики Эппл. Связь есть, а сектора нет. 
Александр Румянцев, протесть сбер-газпром… там стационарность 10лет
avatar
ves2010, у меня нет опыта торговли русскими бумагами. В России другие закономерности. Я пишу на основе опыта на американском рынке. Моя команда уже копает русский рынок, о чем я буду писать позже. 
Неудивительно, что без look forward у вас ничего не получается, т.к. z-score имеет prediction power около 0. Вы можете получить положительный результат, если возьмете не пару, а баскет и будете из него выбирать N лучших и N худших стоков для cash neutral портфеля. Но там тоже этот результат не ахти.  
avatar
MegaZoiD, это первая статья с бэктестами. В следующих статьях я рассматриваю контроль пары во время торговли и улучшение поиска. Что в сумме приносит результаты и сокращает просадки. 
Ok. Только выкладывайте тесты out-of-sample без look forward'a плз.
avatar
MegaZoiD, Здесь вы тоже абсолютно правы и я для этого выкладываю исходный код. Заинтересовавшийся может все проверить сам. Тестирую так намеренно, чтобы видеть, что система, рассмотренная в предыдущей статье, находит рабочие пары. 

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

....все тэги



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