Блог им. Quantrum

Бэктестинг: улучшаем поиск для парного трейдинга

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

Найденные пары проверим на дневной истории. А в следующий раз на часовой.

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

Рекомендую весь цикл статей по теме «Парный трейдинг»:

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

Найденная пара должна сохранять стационарность на длинном промежутке (один-два года) и на коротких (квартал, полугодие). При стабильной коинтеграции пара должна прожить дольше и давать положительные результаты в течение последующих 3-6 месяцев.

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

Условия выбора

Пары будем выбирать, учитывая следующие условия:

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

Улучшим поиск

За основу берем алгоритм поиска по положению средних. Добавим проверку стационарности коротких периодов внутри основного диапазона и будем по ней фильтровать.

Результаты поиска

2014 год (1 год)

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

  • PNW, GPC (участвует в проверке)
  • SBH, TJX
  • ROK, MOS

2015 год (1 год)

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

2014-15 годы (2 года)

Проверяем стационарность пары за весь год и за каждое полугодие. Выбираем пары, где стационарность сохраняется за весь период (два года) и последние два полугодия, так как пар стационарных во все периоды нет. Всего найдено 10 пар.

  • ETFC, BSX (результатов при тесте не дает)
  • DRE, O
  • HON, VUG (участвует в проверке)

Проверяем 2014 и 2015 годы

  • PNW — коммунальная компания, поставка электроэнергии.
  • GPC — распространение автозапчастей.

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

Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по цене, 2014
 Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2014
 Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по цене, 2015
 Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2015

 

Показаны графики по разным сигнальным линиям, о чем я напишу в будущем.

  • DRE — траст недвижимости (REIT).
  • O — траст недвижимости (REIT).

Аналогично первой паре, работает хорошо, но быстро выключается во второй половине 2015 года.

Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2015
 Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2016

Проверяем 2014-15 года (за 2 года)

  • HON — крупный производственник промышленных товаров.
  • VUG — ETF на акции роста.

По результатам теста пара среагировала только в конце 2015 года. Пара быстро выключилась и к убыткам не привела. Однако показала нам, что поиск за продолжительный период времени (2 года) не дает преимуществ.

Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2015
 Бэктестинг: улучшаем поиск для парного трейдинга
Сигнал по доходности, 2016

Код в студию

Ссылка на репозиторий с кодом и полным алгоритмом Quantopian.
Доступна на Quantrum.me.

Вывод

Предположение, что пары найденные при анализе 2-х лет будут стабильнее, провалились.

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

Пары удается автоматически отключать до наступления убытков при фильтре полугодичной стационарности. Это дополнительный плюс в автоматизацию.

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

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

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

Обучение «Парному трейдингу» у профессионалов.
★6
11 комментариев
Многопарный робот для торговли десятков пар одновременно www.saturn-capital.info/pt
Александр Акулов, оставайтесь с нами и мы сделаем такого робота на Python. В отличие от чёрного ящика, за который просят денег. ;) Ещё и работающего только на Windows. 
Александр Румянцев, надеюсь он тоже будет многопарный, с графикой, гибкими настройками, торгующий корзиной инструментов и СМС оповещением?
тогда здорово!
avatar
Апостол Андрей, о да! Более гибких настроек, чем исходный код я не встречал никогда. Графики, смс-оповещения, подключение практически к любому брокеру, работа в облаке. Торгующий корзиной и эту корзину постоянно обновляющий. 
Александр Акулов, благодарю за поставленные минусы. Видите конкуренцию? ;) Рано ещё, пока алгоритм в зачаточном состоянии. ;) 
Александр Румянцев, минус вы получили за ваш минус. А что касается конкуренции, то ее нет. У нас готовый продукт для алготрейдеров, у которых нет навыков программирования, а те кто умеет программировать, тот как правило сам напишет, вместо того, чтобы ковыряться в чьем-то коде на питоне.

И да, когда начнете торговать вышеописанный алгоритм на реальном счете будите неприятно удивлены, ибо абсолютно разные стоки, подобранные вышеуказанным способом, будут разлетаться с треском по поводу и без, и никакой стоп не спасет.

Ну да ладно, чем бы дитя не тешилась...))))
Александр Акулов, ах, вы просто мстительный рекламный спамер. ;) Я благодарю вас за предупреждение о неминуемой гибели. 
Лучше расскажите про комиссию. Как сделать так, чтобы она не сжирала результат парной торговли.
avatar
Alextrading, я тестирую с учётом комиссии IB. Стараюсь искать пары, которые дают достаточное количество сигналов, но ниже критического количества, которое будет съедать капитал. Ищу на дневном графике и продолжительность сделок достигает недель. Я пока не учитываю комиссии за аренду акций, что может стать проблемой в реале. 
Александр Румянцев, понял вас. А я вот внутри дня протестировал. Комиссия жрет все. Хотя другие трейдеры утверждают, что торгуют как-то.
avatar
Alextrading, вы должны учитывать величину движения. Например, я выбираю пары только среди акций с достаточным atr. Если вы живёте внутри дня, то вам в помощь atr на 5 минутах хотя бы. Все это можно увидеть ещё на этапе отбора пар. Высокая частота требует отсутствие комиссий или достаточного движения. 

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

....все тэги



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