Бэктестинг: парный трейдинг на 15, 30, 60 минутах
Торговля один раз в день, это хорошо для комиссий💸. Но не пропускаем ли мы колебания цен, на которых можно заработать💰? Для проверки уменьшим таймфреймы и увеличим частоту проверки сигналов🚦.
Проверять будем на 15, 30 и 60 минутных периодах. Торговать будем ранее найденными парами🎏. Все проверяем на Quantopian, а код пишем на Python🐍.
Как искать пары для стратегии "Парного трейдинга" подробно описано здесь, здесь и здесь. Бэктестинг на дневках доступен здесь.
🎓Гипотеза
У многих активов цена волатильна внутри дня. Учитывая, что мы при поиске пар использовали фильтр по ATR, то цены найденных активов могут существенно гулять внутри дня.
Учтя это предположение, уменьшение таймфрейма позволит нам лучше контролировать поведение пары и больше заработать на движениях внутри дня.
☝Условия тестов
Тестировать будем пары, найденные в 2015 году.
- Пары:
- STT, CIT
- TLT, VNQ
- Капитал - $100 тыс.
- Период тестирования - 2015 год.
- Таймфреймы - 15, 30, 60 минут.
- Пара должна быть стационарна за предыдущие полгода на момент сигнала.
- Сигнал - спред относительных значений (доходность). Открываемся на ±1, закрываемся в диапазоне ±0.05.
🎏CIT и STT
Протестируем на следующих периодах: 1 день, 60 минут, 30 минут, 15 минут. Сигналы будем искать на сигнальной кривой, полученной на дневных графиках.
Всплеск на 15 минутном периоде ложный. По логам не хватало акций для покупки/продажи CIT против STT. В данном случае наиболее удачным считаю торговлю по часовому таймфрейму.Проводя тесты, обратил внимание, что сигналы можно брать со спреда меньшего таймфрейма. Ниже пара графиков наблюдений:
Как видно, часовой период показывает хорошие результаты, но при снижении до 30 минут пара начинает приносить проблемы. Предположу, что это связано с потерей стационарности на меньшем периоде.
🎏TLT и VNQ
Теперь рассмотрим пару, которая на дневке проявила себя очень плохо. Посмотрим, что можно выжать из нее на меньшем периоде.
На этой паре понижение до 1 часа сказывается положительно, а вот ниже особого смысла не имеет.
🎁Код в студию
Как уменьшить таймфрейм на Quantopian? Как известно, нам доступны только дневные и минутные тики, историю которых можно получить следующим кодом:
Код доступен на Quantrum.me
Другие таймфреймы в платформе отсутствуют. Однако нам на помощь приходит библиотека Pandas, которая лежит в основе Quantopian. Получить историю за нужный таймфрейм можно следующим кодом:
Код доступен на Quantrum.me
Как вызывать алгоритм в разные периоды? Quantopian по умолчанию дает два варианта вызова алгоритма:
Код доступен на Quantrum.me
Исходя из этого, можно продублировать на каждый час торговли функцию schedule_function(...). Но делать это для каждых 15 минут или 5 минут, уже перебор. Самым простым методом является проверка текущего времени в ежеминутной функции:
Код доступен на Quantrum.me
🏁Вывод
Уменьшение таймфрейма положительно влияет на результаты рассмотренных пар. Возможно, поиск пар на меньшем таймфрейме тоже принес бы более интересные результаты, но мы имеем, что имеем. Также снижение ниже часа заставляет нас проверять доступный объем для торгов, так как нам может не хватить ликвидности или мы сильно повлияем на цену при открытии позиции.
Дополнительно, можно строить сигнал на пониженном таймфрейме. Это может привести даже к положительным результатам. Однако проверка на 1-2 парах еще ничего не значит.
В следующий раз мы вернемся к дневным графикам и проверим, как можно сократить количество ложных сигналов на кривой.
💬В комментариях пишите, какие мысли или вопросы у вас возникают. Может стоит проверить какой-то другой таймфрейм? Также запрашивайте полный исходный код алгоритма.
Александр Румянцев aka "iamraa"
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.
🎓Обучение «Парному трейдингу» у профессионалов👍.