Способов улучшения торговых стратегий — десятки. Получая результаты бэктестов, всегда хочется попробовать улучшить стратегию и сделать ее эффективней.
В этой статье расскажем, как мы использовали фильтрацию сделок по времени, исключали убыточные часы из трейдинга, и что в итоге получилось.
Полезные материалы, которые хорошо бы изучить перед продолжением:
Гипотеза торговых сессий
В этой гипотезе участвовали валютные пары. Известно, что рынок Forex работает 24/5, и меняются только часовые зоны и торговые сессии. Разные торговые сессии имеют разную активность: азиатские сессии чаще всего спокойные, тогда как открытие европейской или американской торговли иногда приносят волатильность. Подробнее о волатильности — в статье Как использовать повышенную волатильность рынка при создании торговых стратегий или в видео ниже:
Так как большинство наших алгоритмов — трендоследящие, нам нужны сигнальные периоды времени. Периоды с очень низкой волатильностью плохо подходят к таким стратегиям.
Когда проходит какой-то эксперимент, берется один фактор для исследования. Так принято в любой науке. Один эксперимент — одна гипотеза. Такой подход прагматичней, потому что если брать несколько факторов для тестирования, потом можно запутаться, какой конкретно вариант улучшил (или ухудшил) результативность.
Анализируя бэктесты, мы заметили, что есть стратегии, которые в некоторые часы в чистом виде давали убыток, и решили эти сделки в определенные часы “вырезать”.
В нашем Telegram-канале есть то, чего не публикуем в блоге 🙌
Подготовка гипотезы к тесту
Критерии нашего выбора были следующие:
- Мы не пытались улучшать изначально слабые стратегии. У нас работает такое правило: если в самом простом варианте стратегия ничего хорошего не показала, мы ее бросаем и идем к следующим логикам.
- Убыток в определенный час был достаточно выражен.
- Количество сделок в определенный период времени было не менее 50.
Первым делом мы собрали кривые доходностей бэктестов и проанализировали их сделки по часам.
Анализ исторических тестов
Всего у нас попало в это исследование около 15 алгоритмов, но не все прошли условия, которые мы описали выше. Так что рассмотрим только 3 стратегии.
Стратегия №1
Эта стратегия работала на 4-х часовом таймфрейме по валютной паре USD/JPY. Ее бэктест начинался с 2007 года.
Кривая доходности не идеальная — есть глубокая просадка в 2011 и затяжная просадка с 2017 по 2020. Ок, анализируем сделки стратегии по времени и прибыльности.
Выше доходность сделок, открытых (здесь внимание — именно открытых, а не закрытых) каждые 4 часа, начиная с 00:00 по GMT. 4-х часовой диапазон по той причине, что алгоритм открывал сделки только по закрытию 4-х часовой свечи.
Видим слабое место — 4 утра по GMT. 179 сделок было открыто в этот час — достаточное количество для анализа.
Хорошо, добавляем одну строчку кода в алгоритм:
Делаем перетест алгоритма с новым условием и получаем такую кривую.
Сравним 2 кривые и важные метрики. Слева старый алгоритм, справа новый.
Что изменилось визуально? Немного сгладилась просадка в 2017 году, но вот в 2011 осталась без изменений. Чуть-чуть улучшились метрики: подрос R-квадрат, снизилась максимальная просадка и увеличился среднегодовой доход. На основе этого чуть увеличился и коэффициент Шарпа — с 0,31 до 0,35 (последняя строчка). Грандиозного изменения кривой доходности не случилось, но мы этого и не ждали.
Переходим к следующему алгоритму.
За 1 час поможем разобраться с факторами успеха и причинами неудач на финансовых рынках. Бесплатно 🔥
Стратегия №2
Эта стратегия тоже на Н4, только теперь по валютной паре GBP/JPY. Кривая бэктеста выглядела так:
Неплохая стратегия, по которой с 2007 года было совершено 1613 сделок. Идем по тому же принципу: собираем все сделки и строим диаграммы доходностей по часам.
В 12 часов видим отрицательный результат по сделкам. Не очень выраженный, зато много сделок было открыто в это время — 285.
Теперь исключаем возможность открывать сделки в 12:00 GMT, делаем перетест, и получаем новую кривую для сравнения. Слева до, справа после.
В этой стратегии результаты неоднозначные. Визуально новый вариант выглядит даже похуже, зато чуть снизилась максимальная просадка и вырос коэффициент восстановления (Recovery factor). Результаты не статистически значимы (об этом поговорим в конце статьи).
Стратегия №3
Теперь исследуем стратегию на Н1 по валютной паре EUR/JPY. Бэктест здесь начинался с 2016 года. Вот такая кривая была изначально:
Стратегия на тройку. В таком виде мы не готовы были внедрять ее в реальный портфель. Пошли по уже знакомой нам оптимизации — исключили убыточные часы.
Здесь уже сделки открывались раз в час, а не раз в 4 часа, как в прошлых стратегиях. Исключали убыточные часы, где было более 50-ти сделок. Вот что в итоге получилось.
Волатильность кривой стала меньше, улучшился фактор восстановления и коэффициент Шарпа. Но все равно улучшений было недостаточно, чтобы мы могли ее включить в наш портфель. 4 года на одном и том же месте и сильная просадка в конце теста не дали нам дополнительного доверия после оптимизации.
Идеи, инсайты и выводы
Начнем с мыслей вслух.
Любое улучшение добавляет какой-то новый параметр в стратегию. Новый параметр добавляет риск подгонки стратегии под исторические данные — так называемый overfitting. Это хитрая ловушка, в которую попадают начинающие и опытные алготрейдеры.
Следующее наблюдение — из 15-ти алгоритмов только 3 можно было пробовать оптимизировать. У других либо не было выраженных убыточных часов, либо не было достаточного количества сделок, либо результаты после оптимизации даже ухудшились. А эти 3 алгоритма, которые мы рассмотрели выше, улучшились незначительно. И чтобы проверить статистическую значимость одного алгоритма перед другим, нужно проводить дополнительные исследования, например t-тест Стьюдента. Для такого теста понадобится около 30 лет исторических данных для обеих стратегий (информация из книги The Evaluation and Optimization of Trading Strategies, Robert Pardo).
И следующее наблюдение, более субъективное: если стратегия в простейшем виде показывает хорошие результаты, тогда можно ее использовать именно в таком виде и она будет эффективной (чаще всего). Плохие стратегии, как уже отмечали выше, вообще не имеет смысла улучшать, а средненькие стратегии очень неохотно улучшаются.
Алгоритмический трейдинг не только про данные и статистику — он еще и про креативность с воображением. Не стесняйтесь исследовать и внедрять свои собственные улучшения, но не увлекайтесь.