Какую ценность дает форвард-тест в трейдинге
Запуск торгового алгоритма в боевом режиме — это кульминация процесса разработки стратегии. Если робота берут в реальную торговлю, это значит, что он успешно прошел несколько серьезных тестов и показал себя лучше остальных. Но в процессе применения алгоритмов в реальном времени трейдеры сталкиваются с проблемой, когда алгоритм, отлично себя зарекомендовавший на истории, вдруг начинает сильно терять деньги в реальном времени. Для трейдера это как психологический, так и технологический удар. Он подрывает веру трейдера в себя и в его процессы разработки стратегий.
В этой статье я приведу примеры с обеих сторон: один, когда алгоритм после успешного бэктеста сразу начинает проигрывать, и второй, когда в реальном времени или на форвардной симуляции (о которой подробнее поговорим в этой статье) алгоритм торгует в прибыль.
Полезные материалы, которые хорошо бы изучить перед продолжением:
Содержание
Видео о форвард-тесте
Из бэктеста сразу в лайв?
До некоторого времени я придерживался стандартной процедуры: провести бэктест, изучить профили результативности разных настроек робота, выбрать лучшую и запустить ее в реальном времени. Благодаря современным технологиям довольно легко обнаружить хорошего робота на истории. Взгляните.
Здесь пример алгоритма, который до сих пор довольно успешно торгует по GBP/JPY, если не эта настройка в точности, то одна из. Кривая капитала растет как на этом, так и на следующем примере, где другой робот торговал по XAU/USD.
Но несмотря на успешный исторический тест, вот этот конкретный алгоритм так и не дошел до живого трейдинга. Причины кроются намного глубже изображений с кривой капитала.
Запуск робота в боевой режим сразу после обнаружения хорошей настройки на истории — не всегда хорошая практика. Однако для частичной поддержки этого подхода должен обратиться к прошлому опыту из 2020, когда 3 алгопортфеля из 4-х закончили год положительно. Один счет и вовсе сильно превзошел ожидания, принеся прибыль свыше 100%. В то время я принимал решения о запуске робота основываясь на интуитивных догадках, как избежать последствий переоптимизации (оверфита).
Темная сторона этого подхода в том, что трейдер может слепо выбрать алгоритм с хорошей кривой капитала на истории (как выше) и запустить его в лайве. Но так он рискует попасть на переоптимизированный алгоритм.
Переоптимизация — это главная причина, по которой алгоритмы в реальном времени начинают ломаться и приносят убытки.
Тема переоптимизации и методов по избеганию подводных камней в бэктестировании заслуживает отдельного материала. Предлагаю сосредоточиться на примерах алгоритма, который показал блестящий результат на истории, но сломался на форвардном тестировании.
Как создавать торговые стратегии на основе статистики и данных, способных работать 24/7
Не упустите возможность получить прибыльные торговые стратегии.
От бэктеста к форвард-тесту
Бэктесты дают трейдеру несметное количество данных. Представим такую картину.
У нас есть стратегия с одним набором параметров, и мы торгуем по ней в ручном режиме. Это значит, что в пределах дня мы можем охватить ограниченное количество инструментов и успеть среагировать на ограниченное количество торговых сигналов. В конце некого отчетного периода у нас получилась кривая капитала по мотивам торговли по этой стратегии.
Теперь представим ситуацию, когда мы протестировали эту же стратегию и можем посмотреть, как на истории отторговала каждая из, допустим, 300 настроек. То есть у нас на руках 300 кривых капитала. С одной стороны, мы совершили прорыв и отказались от ручного трейдинга и логирования наших действий (журнал). С другой стороны, биг дата часто означает и большие проблемы, проблемы выбора. Возникнет вопрос: какую настройку робота выводить в живой трейдинг?
Имея на руках 300 конфигураций (наборов параметров), в лайв мы можем запустить, например, только одну. Но, как мы помним, необдуманный переход в лайв сразу после бэктеста — это рискованная практика. Понадобится еще один уровень защиты, который повышает нашу уверенность. Вот здесь на сцене появляется форвардное тестирование — WFA (walk-forward analysis).
Что такое форвард-тест?
Имея на руках бэктест стратегии за 5-10 лет в 300 конфигурациях, мы можем провести форвардный тест. Этот тест является простой симуляцией, которая дает представление о возможных результатах в живом режиме.
Для проведения форвард-теста нужно разделить историческое окно на интервалы “оптимизаций” и собственно “форвардов”. Конфигурация робота, которая хорошо зарекомендовала себя на этапе оптимизации, применяется в фазе форварда. Так мы получаем кусочек форвардной кривой капитала. Затем мы начинаем сдвигать фазы на величину форварда, пока не дойдем до правого края исторического окна.
Фазы, шаги и итоговая кривая схематично показаны на рисунке.
Длина обеих фаз (3 + 1 год) показана для примера. В своей алгоритмической практике я пробую разные значения этих интервалов для всех стратегий, чтобы понимать, на каком промежутке оптимизировать и надолго ли запускать.
Прибыльные торговые стратегии, кейсы и исследования — в нашем Telegram 📈
Примеры кривых капитала, полученных на форвардном тестировании №1
Каждая форвардная фаза дает кусочек кривой капитала. Эти кусочки склеиваются в одну большую кривую для оценки широкой картины. Благодаря таким объединенным отрезкам мы можем почти точно оценить ценность любой стратегии. “Почти” потому, что только время покажет, на что способна как сама стратегия, так и методы отбора.
Рассмотрим форвардный тест на примере трех шагов и в конце оценим кривую капитала за все форвардные фазы. Стратегия трендоследящая. Точные даты всех фаз видны на рисунке. По каждому интервалу также собирается профиль результативности, который включает:
- TPM — сделок в месяц (trades per month)
- AR — средний годовой темп прироста (annualized return)
- MDD — максимальная просадка (maximum drawdown)
- RF — фактор восстановления (recovery factor)
- R2 — R-квадрат (коэффициент детерминации).
Каждая фаза оптимизации длится 3 года (точнее 156 недель). Каждая форвардная фаза длится год (52 недели). Также надо добавить, что MDD (просадка) на оптимизационных интервалах всегда будет 15%. Благодаря этому приему мы подбираем рисковую фракцию от капитала (для стоп-лосса) на форвардную фазу.
Процесс определения лучшей настройки робота на оптимизационном интервале, которая затем пойдет на форвардный интервал, очень прост:
- искомая настройка алгоритма по отдельно взятой валютной паре должна совершить 0.5-5 сделок в месяц;
- фактор восстановления должен быть больше 1 (это очень высокий показатель);
- R-квадрат должен быть выше 0.75 (с таким показателем кривые капитала выглядят очень гладко).
С настройками форвард-теста разобрались, выяснили критерии, теперь запускаем.
Первая фаза оптимизации, на которой мы отбираем лучшие настройки для “будущего”, дает великолепную кривую. За три года капитал вырос в 26 раз, среднегодовой доход составляет невообразимые 197%! Из 30-ти возможных валютных пар было отобрано 14 (по одному набору параметров на каждую), которые и сделали результат для “прошлого” периода оптимизации.
Теперь посмотрим, что если запустить отобранные 14 алгоритмов на следующих 52-х неделях (включаем форвард-тест)?
Не слишком ужасно, но сильно далеко от ожиданий! По итогу после года как бы живых торгов получаем минус 5%.
Теперь сдвигаем даты интервалов на 52 недели вправо и выполняем второй шаг.
На этот раз оптимизационный интервал обнаружил 16 валютных пар с хорошими настройками. А кривая капитала оказалась еще круче — в прямом и переносном смысле. Средний годовой темп прироста 447%! Показатель просто шокирует, как же можно потерять деньги на этих же 16-ти роботах, если запустить их в следующем году?
В реальности следующие 52 недели сильно расстроили! Как же так вышло, что 450% годовых в “прошлом” превратились в минус 18.8% в “будущем”? Вся эта затея с алготрейдингом начинает плохо пахнуть. Может, хотя бы последний интервал даст прибыль, хотя бы на симуляции?
Привыкаем видеть шикарные кривые капитала на фазах оптимизации. В этот раз виртуальный счет вырос в 15 раз, среднегодовой прирост 149.7%. Так постарались 15 настроек — по одной на валютную пару. С дрожью в руках приступаем к последней форвардной фазе. Здесь должен сказать, что у этой фазы есть ограничение, оно связано с физической датой окончания самого бэктеста — апрель 2020.
За эти последние 3 месяца стратегия, наконец, приносит профит — в симуляции живых торгов. Надо признать, что для адекватной оценки этот интервал коротковат.
Но широкая картина теперь ясна: ошеломительный успех в фазах оптимизации не гарантирует успеха в последующей “будущей” фазе форвардного применения робота.
Итоговая, склеенная, кривая капитала по всем форвардным участкам выглядит вот так.
2 года и 3 месяца форвардной симуляции принесли такой результат:
- среднегодовой прирост — минус 10.4%;
- максимальная просадка — 35.3%.
Могло быть и хуже! :)
Подписывайтесь на наши статьи! Исследования, статистика и кейсы трейдинга
Примеры кривых капитала, полученных на форвардном тестировании №2
Разберем другой пример. На этот раз возьмем ту же стратегию на тех же участках оптимизации и форварда, но процесс отбора лучших настроек на оптимизационных фазах немного изменим. Теперь мы отбираем только такие параметры робота по одной валюте, которые дают такое же количество сделок в месяц (от 0.5 до 5), фактор восстановления должен быть ниже (от 0.66 до 1), и требование к R-квадрат тоже немного снижается (начиная с 0.5, а не с 1, как раньше). В общем, мы немного снизили требования. Посмотрим, как это отразится на оптимизационных и форвардных участках.
В этой таблице видим показатели результативности по каждой фазе. Наконец в столбце “АR” (среднегодовая доходность) появились зеленые ячейки!
На первом оптимизационном интервале получаем красивую кривую капитала, хотя ее показатели результативности ниже, чем в предыдущем примере. Капитал был преумножен всего в 9 раз.
Из 30-ти валют 19 дали по одному хорошему роботу. Теперь испытаем этот набор на следующих 52-х неделях.
Успех. Найденные на оптимизации 19 наборов параметров закончили год со среднегодовой доходностью 19.3%, а просадка приблизилась к как бы ожидаемой – 14.4%.
Пройдем эти шаги еще 2 раза на следующих интервалах.
Кривая на этапе оптимизации всегда смотрит вверх. Капитал вырастает в 10 раз. Снова отобраны 19 параметров, но необязательно настройки совпадут с предыдущей фазой. Применяем их на следующем однолетнем интервале.
Хорошо, теперь среднегодовой доход равен 21.9%. Однако рост кривой оказался не очень стабильным, а просадка превысила порог 15% и достигла 18.6%. Такое часто и случается в реальности.
Остался последний шаг.
Мы уже привыкли к красивым кривым капитала на оптимизационных фазах, на этот раз капитал вырос в 6 раз. Снова отобрано 19 роботов. Применяем их на трех месяцах 2020 года.
И получаем кривую, которую хочется и в реальном времени получить. Рост стабильный, а максимальная просадка ниже ожидаемой. Суммарная кривая капитала по всем форвардным фазам получилась такой.
Результат по итогу:
- среднегодовой прирост — 25.6%;
- максимальная просадка — 18.6%;
- R-квадрат — 0.82.
Такой получилась симуляция живых торгов, когда мы снизили требования для оптимизационных фаз, позволив стратегии как бы подышать. Подход оказался удачным, и он сработал со многими стратегиями из нашей базы.
Выводы
Алгоритмический трейдинг — это весьма скучная и монотонная работа, которая состоит из повторяющихся циклов разработки и тестирования стратегий. Однако уровень скуки можно понизить благодаря таким вот экспериментам, как выше. Экспериментаторство с параметрами тестирования иногда приводит к неожиданным результатам, которые потом применяешь в будущем. Так случилось и с форвардным анализом (WFA), благодаря чему был неожиданно открыт новый подход к подбору требований на оптимизационных участках.
Благодаря форвардному тестированию стало известно, что зачастую не стоит ожидать слишком многого от своих алгоритмов, а на этапах отбора не выдвигать слишком жестких требований. Проще говоря — не закручивать гайки. Также благодаря форвард-тестам мы видим случаи, когда алгоритм или набор алгоритмов показывают выдающиеся результаты на истории, но внезапно ломаются и приносят крупные убытки в будущем или в форвардной симуляции.
Применение результатов форвардного анализа в живом трейдинге значительно повышает уверенность трейдера и помогает точнее откалибровать ожидания от реального трейдинга с выбранными настройками алгоритмов.
Материалы
Поделиться статьей
С радостью ответим на ваши комментарии
Читайте также
Роман Молодяшин
Сооснователь Empirix. Алгоритмический трейдер, автор 11 курсов и 80+ статей о трейдинге. На форекс с 2008 года. Исследует микроструктуру финансовых рынков, разрабатывает торговые алгоритмы, управляет системным фондом. E-mail для связи: roman@empirix.ru