Запуск торгового алгоритма в лайв-режиме — кульминация разработки стратегии. Форвард-тест показывает, как ваша модель поведёт себя на свежих данных, и позволяет избежать дорогостоящих ошибок.
Перед тем как изучать форвард-тесты:
До некоторого времени мы придерживались стандартной процедуры:
Благодаря современным технологиям довольно легко обнаружить хорошую стратегию на истории. Взгляните.

Один из примеров работы алгоритма по валютной паре GBP/JPY.
Здесь пример алгоритма, который до сих пор довольно успешно торгует по GBP/JPY, если не эта настройка в точности, то одна из. Кривая капитала растет как на этом, так и на следующем примере, где другой алгоритм торговал по XAU/USD.

Результативность алгоритма по золоту.
Но несмотря на успешный исторический тест, вот этот конкретный алгоритм так и не дошел до живого трейдинга. Причины кроются намного глубже изображений с кривой капитала.
Запуск алгоритма в боевой режим сразу после обнаружения хорошей настройки на истории — не всегда хорошая практика.
Темная сторона этого подхода в том, что трейдер может слепо выбрать алгоритм с хорошей кривой капитала на истории (как выше) и запустить его в лайве. Но так он рискует попасть на переоптимизированный алгоритм.
Переоптимизация — это одна из главных причин, по которой алгоритмы в реальном времени начинают ломаться и приносят убытки.—
По теме переоптимизации у нас есть отдельный премиальный материал: "Переоптимизация торговых стратегий: как не одурачить себя на стадии разработки алгоритма", а пока же пойдём к основной части — форвардному тестированию.
Бэктесты дают трейдеру несметное количество данных. Представим такую картину.
У нас есть стратегия с одним набором параметров, и мы торгуем по ней в ручном режиме. Это значит, что в пределах дня мы можем охватить ограниченное количество инструментов и успеть среагировать на ограниченное количество торговых сигналов. В конце некого отчетного периода у нас получилась кривая капитала по мотивам торговли по этой стратегии.
Теперь представим ситуацию, когда мы протестировали эту же стратегию и можем посмотреть, как на истории отторговала каждая из, допустим, 300 настроек. То есть у нас на руках 300 кривых капитала. С одной стороны, мы совершили прорыв и отказались от ручного трейдинга и логирования наших действий (ведения журнала). С другой стороны, биг дата часто означает и проблему выбора. Возникнет вопрос: какую настройку выводить в живой трейдинг?

Процесс подготовки алгоритма.
Имея на руках 300 конфигураций (наборов параметров), в лайв мы можем запустить, например, только одну. Но, как мы помним, необдуманный переход в лайв сразу после бэктеста — это рискованная практика. Понадобится еще один уровень защиты, который повышает нашу уверенность. Вот здесь на сцене появляется форвардное тестирование — forward-test и walk-forward analysis (WFA).
Форвард-тест является простой симуляцией, которая дает представление о возможных результатах в живом режиме.—
Для проведения форвард-теста нужно разделить историческое окно на интервалы “оптимизаций” (этот интервал еще называют in-sample) и собственно “форвардов” (out-of-sample). Конфигурация алгоритма, которая хорошо зарекомендовала себя на этапе оптимизации, применяется в фазе форварда. Так мы получаем кусочек форвардной кривой капитала.

Пример бэктеста (in-sample) с 2007 по 2020, и форвард-теста (out-of-sample) с 2020 по 2024.
Дальше мы добавляем “шаг” нашему форвард-тесту, смещая каждый тест вправо, чтобы получить склеенный период всех out-of-sample периодов — это уже полноценный walk-forward.
Рассмотрим пример с шагом 6:2, то есть 6 лет IS-период, и 2 года OOS-период.

Классический walk-forward тест.
Склеивая рыжие кривые доходностей, мы получаем walk-forward результат, который выглядит вот так:

Пример финальной кривой форвардного анализа.
Разберём подробнее другие форвардные тесты.
Каждая форвардная фаза дает кусочек кривой капитала. Эти кусочки склеиваются в одну большую кривую для оценки широкой картины. Благодаря таким объединенным отрезкам мы можем почти точно оценить ценность любой стратегии. “Почти” потому, что только время покажет, на что способна как сама стратегия, так и методы отбора.—
Рассмотрим форвардный тест на примере трех шагов и в конце оценим кривую капитала за все форвардные фазы. Стратегия трендоследящая. Точные даты всех фаз видны на рисунке. По каждому интервалу также собирается профиль результативности, который включает:

В таблице представлены результаты бэктестов и форвард-тестов. Сравнение идет по 5-ти коэффициентам.
Каждая фаза оптимизации длится 3 года (точнее 156 недель). Каждая форвардная фаза длится год (52 недели). Также надо добавить, что MDD (просадка) на оптимизационных интервалах всегда будет 15%. Благодаря этому приему мы подбираем рисковую фракцию от капитала (для стоп-лосса) на форвардную фазу.
Процесс определения лучшей настройки алгоритма на оптимизационном интервале, которая затем пойдет на форвардный интервал, очень прост:
С настройками форвард-теста разобрались, выяснили критерии, теперь запускаем.
Результаты первого бэктеста.
Первая фаза оптимизации, на которой мы отбираем лучшие настройки для “будущего”, дает великолепную кривую. За три года капитал вырос в 26 раз, среднегодовой доход составляет невообразимые 197%! Из 30-ти возможных инструментов было отобрано 14 (по одному набору параметров на каждую), которые и сделали результат для “прошлого” периода оптимизации.
Теперь посмотрим, что если запустить отобранные 14 алгоритмов на следующих 52-х неделях (включаем форвард-тест)?
Те же алгоритмы, только теперь на форвард-тесте.
Не слишком ужасно, но сильно далеко от ожиданий! По итогу после года как бы живых торгов получаем минус 5%.
Теперь сдвигаем даты интервалов на 52 недели вправо и выполняем второй шаг.

Новое «окно» бэктеста.
На этот раз оптимизационный интервал обнаружил 16 алгоритмов с хорошими настройками. А кривая капитала оказалась еще круче — в прямом и переносном смысле. Средний годовой темп прироста 447%! Показатель просто шокирует, как же можно потерять деньги на этих же 16-ти роботах, если запустить их в следующем году?

Те же алгоритмы, только с новым форвард-тестом.
В реальности следующие 52 недели сильно расстроили. Как же так вышло, что 450% годовых в “прошлом” превратились в минус 18.8% в “будущем”? Вся эта затея с алготрейдингом начинает плохо пахнуть. Может, хотя бы последний интервал даст прибыль, хотя бы на симуляции?

Заключительное окно бэктеста.
Привыкаем видеть шикарные кривые капитала на фазах оптимизации. В этот раз виртуальный счет вырос в 15 раз, среднегодовой прирост 149.7%. Так постарались 15 настроек. С дрожью в руках приступаем к последней форвардной фазе.

Заключительная форвард-фаза тех же алгоритмов.
За эти последние 3 месяца стратегия, наконец, приносит профит — в симуляции живых торгов. Надо признать, что для адекватной оценки этот интервал коротковат.
Но широкая картина теперь ясна: ошеломительный успех в фазах оптимизации не гарантирует успеха в последующей “будущей” фазе форвардного применения алгоритма.—
Итоговая, склеенная, кривая капитала по всем форвардным участкам выглядит вот так.

Кривая доходности всех стратегий по форвард-тесту.
2 года и 3 месяца форвардной симуляции принесли такой результат:
Грустно, но изучим другие варианты.
Разберем другой пример. На этот раз возьмем ту же стратегию на тех же участках оптимизации и форварда, но процесс отбора лучших настроек на оптимизационных фазах немного изменим. Теперь мы отбираем только такие параметры алгоритма, которые дают такое же количество сделок в месяц (от 0.5 до 5), фактор восстановления должен быть ниже (от 0.66 до 1), и требование к R-квадрат тоже немного снижается (начиная с 0.5, а не с 1, как раньше). В общем, мы немного снизили требования. Посмотрим, как это отразится на оптимизационных и форвардных участках.

Таблица бэк и форвард-тестов с новыми условиями для стратегий.
В этой таблице видим показатели результативности по каждой фазе. Наконец в столбце АR (среднегодовая доходность) появились зеленые ячейки!
Бэктест первого «окна» с новыми настройками.
На первом оптимизационном интервале получаем красивую кривую капитала, хотя ее показатели результативности ниже, чем в предыдущем примере. Капитал был преумножен всего в 9 раз.
Из 30 инструментов 19 дали по одному хорошему роботу. Теперь испытаем этот набор на следующих 52 неделях.
Форвард-тест к предыдущему бэктесту.
Успех! Найденные на оптимизации 19 наборов параметров закончили год со среднегодовой доходностью 19.3%, а просадка приблизилась к как бы ожидаемой — 14.4%.
Пройдем эти шаги еще 2 раза на следующих интервалах.
И еще один форвард.
Хорошо, теперь среднегодовой доход равен 21.9%. Однако рост кривой оказался не очень стабильным, а просадка превысила порог 15% и достигла 18.6%. Такое часто и случается в реальности.
Остался последний шаг.
Заключительный форвад-тест с заключительными настройками.
И получаем кривую, которую хочется и в реальном времени получить. Рост стабильный, а максимальная просадка ниже ожидаемой. Суммарная кривая капитала по всем форвардным фазам получилась такой.
Кривая доходности всех форвард тестов по всем временным окнам.
Результат по итогу:
Такой получилась симуляция живых торгов, когда мы снизили требования для оптимизационных фаз, позволив стратегии как бы подышать. Подход оказался удачным, и он сработал со многими стратегиями из нашей базы.
Алгоритмический трейдинг — это весьма скучная и монотонная работа, которая состоит из повторяющихся циклов разработки и тестирования стратегий. Однако уровень скуки можно понизить благодаря таким вот экспериментам, как выше. Экспериментаторство с параметрами тестирования иногда приводит к неожиданным результатам, которые потом применяешь в будущем. Так случилось и с форвардным анализом, благодаря чему был неожиданно открыт новый подход к подбору требований на оптимизационных участках.
Не стоит ожидать слишком многого от своих алгоритмов, а на этапах отбора не выдвигать слишком жестких требований. Проще говоря — не закручивать гайки. Также благодаря форвард-тестам мы видим случаи, когда алгоритм или набор алгоритмов показывают выдающиеся результаты на истории, но внезапно ломаются и приносят крупные убытки в будущем или в форвардной симуляции.
Применение результатов форвардного анализа в живом трейдинге значительно повышает уверенность трейдера и помогает точнее откалибровать ожидания от реального трейдинга с выбранными настройками алгоритмов.
Больше исследований — в нашем Telegram и блоге сайта >
Большой Брат, Роберт Пардо, Маркол Лопез де Прадо, Пол Уилмотт и другие умнейшие кванты индустрии так не считают.
И да, WFA не волшебная палочка (и на нем не ограничивается проверка на устойчивость), но WFA — часть набора методологий для повышения достоверности результатов.
побаловаться на тестах никогда не вредно...
в самом худшем варианте — начнешь немного понимать структуру рынка...