От истории к реальности: зачем трейдеру форвард-тест
Запуск торгового алгоритма в лайв-режиме — кульминация разработки стратегии. Форвард-тест показывает, как ваша модель поведёт себя на свежих данных, и позволяет избежать дорогостоящих ошибок.
Перед тем как изучать форвард-тесты:
- Статья Тестирование торговых стратегий на исторических данных (бэктест) — чтобы понять, как тестировать начальные трейдинг-данные.
- 15 важнейших параметров, которые отвечают за качество торговых стратегий — чтобы разобраться, на что обращать внимание при выборе стратегий.
- А если у вас пока нет торговых идей, вам поможет наш материал 3 способа поиска идей и гипотез для трейдинга.
Содержание
- Видео о форвард-тесте.
- Из исторического теста сразу в живой трейдинг?
- Как выбрать лучшую настройку стратегии.
- Как форвард-тест проверяет стратегию на свежих данных.
- Примеры кривых капитала, полученных на форвардном тестировании №1.
- Примеры кривых капитала, полученных на форвардном тестировании №2.
- Выводы.
Видео о форвард-тесте
Из исторического теста сразу в живой трейдинг?
До некоторого времени мы придерживались стандартной процедуры:
- Создать торговую идею.
- Провести историческое тестирование.
- Изучить профили результативности разных настроек алгоритма.
- Выбрать лучшую и запустить ее в реальном времени.
Благодаря современным технологиям довольно легко обнаружить хорошую стратегию на истории. Взгляните.
Здесь пример алгоритма, который до сих пор довольно успешно торгует по GBP/JPY, если не эта настройка в точности, то одна из. Кривая капитала растет как на этом, так и на следующем примере, где другой алгоритм торговал по XAU/USD.
Но несмотря на успешный исторический тест, вот этот конкретный алгоритм так и не дошел до живого трейдинга. Причины кроются намного глубже изображений с кривой капитала.
Запуск алгоритма в боевой режим сразу после обнаружения хорошей настройки на истории — не всегда хорошая практика.
Темная сторона этого подхода в том, что трейдер может слепо выбрать алгоритм с хорошей кривой капитала на истории (как выше) и запустить его в лайве. Но так он рискует попасть на переоптимизированный алгоритм.
Переоптимизация — это одна из главных причин, по которой алгоритмы в реальном времени начинают ломаться и приносят убытки.
По теме переоптимизации у нас есть отдельный премиальный материал: Переоптимизация торговых стратегий: как не одурачить себя на стадии разработки алгоритма, а пока же пойдём к основной части — форвардному тестированию.
Прибыльные торговые стратегии, кейсы и исследования — в нашем Telegram 📈
Как выбрать лучшую настройку стратегии
Бэктесты дают трейдеру несметное количество данных. Представим такую картину.
У нас есть стратегия с одним набором параметров, и мы торгуем по ней в ручном режиме. Это значит, что в пределах дня мы можем охватить ограниченное количество инструментов и успеть среагировать на ограниченное количество торговых сигналов. В конце некого отчетного периода у нас получилась кривая капитала по мотивам торговли по этой стратегии.
Теперь представим ситуацию, когда мы протестировали эту же стратегию и можем посмотреть, как на истории отторговала каждая из, допустим, 300 настроек. То есть у нас на руках 300 кривых капитала. С одной стороны, мы совершили прорыв и отказались от ручного трейдинга и логирования наших действий (ведения журнала). С другой стороны, биг дата часто означает и проблему выбора. Возникнет вопрос: какую настройку выводить в живой трейдинг?
Имея на руках 300 конфигураций (наборов параметров), в лайв мы можем запустить, например, только одну. Но, как мы помним, необдуманный переход в лайв сразу после бэктеста — это рискованная практика. Понадобится еще один уровень защиты, который повышает нашу уверенность. Вот здесь на сцене появляется форвардное тестирование — forward-test и walk-forward analysis (WFA).
Как форвард-тест проверяет стратегию на свежих данных
Форвард-тест является простой симуляцией, которая дает представление о возможных результатах в живом режиме.
Для проведения форвард-теста нужно разделить историческое окно на интервалы “оптимизаций” (этот интервал еще называют in-sample) и собственно “форвардов” (out-of-sample). Конфигурация алгоритма, которая хорошо зарекомендовала себя на этапе оптимизации, применяется в фазе форварда. Так мы получаем кусочек форвардной кривой капитала.
Дальше мы добавляем “шаг” нашему форвард-тесту, смещая каждый тест вправо, чтобы получить склеенный период всех out-of-sample периодов — это уже полноценный walk-forward.
Рассмотрим пример с шагом 6:2, то есть 6 лет IS-период, и 2 года OOS-период.
Склеивая рыжие кривые доходностей, мы получаем walk-forward результат, который выглядит вот так:
Разберём подробнее другие форвардные тесты.
За 1 час поможем разобраться с факторами успеха и причинами неудач на финансовых рынках. Бесплатно
Примеры кривых капитала, полученных на форвардном тестировании №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 настроек. С дрожью в руках приступаем к последней форвардной фазе.
За эти последние 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.
Такой получилась симуляция живых торгов, когда мы снизили требования для оптимизационных фаз, позволив стратегии как бы подышать. Подход оказался удачным, и он сработал со многими стратегиями из нашей базы.
Выводы
Алгоритмический трейдинг — это весьма скучная и монотонная работа, которая состоит из повторяющихся циклов разработки и тестирования стратегий. Однако уровень скуки можно понизить благодаря таким вот экспериментам, как выше. Экспериментаторство с параметрами тестирования иногда приводит к неожиданным результатам, которые потом применяешь в будущем. Так случилось и с форвардным анализом, благодаря чему был неожиданно открыт новый подход к подбору требований на оптимизационных участках.
Не стоит ожидать слишком многого от своих алгоритмов, а на этапах отбора не выдвигать слишком жестких требований. Проще говоря — не закручивать гайки. Также благодаря форвард-тестам мы видим случаи, когда алгоритм или набор алгоритмов показывают выдающиеся результаты на истории, но внезапно ломаются и приносят крупные убытки в будущем или в форвардной симуляции.
Применение результатов форвардного анализа в живом трейдинге значительно повышает уверенность трейдера и помогает точнее откалибровать ожидания от реального трейдинга с выбранными настройками алгоритмов.
Как создавать торговые стратегии на основе статистики и данных, способных работать 24/7
Не упустите возможность получить прибыльные торговые стратегии.
Поделиться статьей
С радостью ответим на ваши комментарии
Читайте также
Роман Молодяшин
Сооснователь Empirix. Алгоритмический трейдер, автор 11 курсов и 80+ статей о трейдинге. На форекс с 2008 года. Исследует микроструктуру финансовых рынков, разрабатывает торговые алгоритмы, управляет системным фондом. E-mail для связи: roman@empirix.ru