Блог им. Quantrum
В этой статье мы проведем тестирование стратегии «Парного трейдинга» на платформе Quantopian. В тестах будут использованы пары, найденные с помощью автоматических алгоритмов, описанных в предыдущих статьях. Код будет написан на Python.
В основе стратегии лежит предположение о наличии на рынке двух акций, которые имеют внутреннюю связь. Цены акций двигаются в одном направлении с разной скоростью и всегда возвращаются к своему среднему.
Наша задача найти эту пару и определить сигнальные уровни отклонения. Если акция А убегает, тогда мы покупаем Б и одновременно продаем А. Если акция А отстает, тогда мы продаем Б и одновременно покупаем А. Акции должны быть куплены/проданы на равные суммы.
Условия тестирования:
Будем использовать пары, найденные за один-два года с помощью третьего способа. При поиске пар за полгода, результаты тестов крайне отвратительные и мы их рассматривать не будем.
Графики лежат не идеально, но z-оценка дает достаточное количество сигналов. Тест показывает, что в 2016 году пара действительно шла нога в ногу и позволила опередить рынок с доходностью 25% и небольшой просадкой в -4%. Но в данном случае мы знаем будущее, то есть на начало теста мы уже знаем, что пара стационарна и остается таковой весь год. Как пара поведет себя в будущем нам не проверить. Значит вернемся в 2015.
Движение цен на графике визуально сходится, спред стационарен и дает хорошее количество сигналов. За 2015 год пара показала прекрасные результаты с доходностью в 82% и просадкой в -6%, что является отличным результатом. Но это со знанием будущего.
Справа результаты за 2016 год, когда мы учитываем только прошлые заслуги. Здесь все значительно хуже. Подобная картина на многих парах, которые я проверил. Видимо, одного года недостаточно, чтобы найти стабильную пару.
Попробуем провести поиск за два года (2014-2015) и протестировать пару оттуда.
На удивление, графики компаний похожи. В проблемном 2015 году пара проявила себя великолепно, показав доходность в 100%. Но это опять с учетом заглядывания в будущее. Результаты за 2016 год значительно скромнее, но они остались позитивными. Добавление фильтра стационарности за предыдущие 200 дней «выключает» пару вовсе.
Подобные результаты указывают на то, что при поиске пар надо учитывать дополнительные условия:
Исходный код доступен на Quantrum.me.
Результаты тестов великолепны, если мы знаем будущее, но без будущего никуда не годятся. Корень зла в том, что пара может потерять связь в любой момент. Как это вовремя заметить? Вот главный вопрос. Второй вопрос: Как быстро найти замену в полностью автоматическом режиме? Результаты тестов нам дали подсказку, что необходимо учесть при поиске пар. В следующей статье улучшим автоматический поиск и еще раз попробуем сделать замеры.
Напишите в комментариях, как можно улучшить поиск пар и как проверять их корректность во время теста. При каких условиях заканчивать торговать парой?
Александр Румянцев aka «iamraa»
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Станьте частью команды. Пишите в личку или на email.
Александр Румянцев, именно о порочности, на мой взгляд, подобного подхода я и писал здесь: «мы смотрим на какой-то другой процесс, проявлением которого является эта «связь», но не понимаем, на какой»
2 смотреть компании одного сектора
finviz.com/map.ashx
например индепенденд газ и оил… там их штук 20 очень похоже… тоже в хелскаре
А вот про один сектор не согласен, ведь никто не отменяет взаимосвязь секторов. Например сейчас у Тайваня корреляция с Эппл в 90%, так как 3 крупнейшие компании тайваньского индекса, это поставщики Эппл. Связь есть, а сектора нет.