«Робастность» — это способность торговой стратегии воспроизводить результаты своего тестирования на новых данных.
Было бы полезно измерить эту характеристику численно. В этом тексте расскажем о метрике робастности стратегии, представленной в OsEngine — Walk-Forward Robustness Metric.
Примеры.
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Отлично! Включаем стратегию в торги, и в реальном времени за следующие два месяца стратегия вам дала примерно такой же результат по прибыльности, как и в тестере: стратегия с высокой робастностью повторяет результаты тестов в реальной торговле.
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Включаем стратегию в торги, и в реальном времени за следующие два месяца (зелёный квадрат) стратегия дала убытки: стратегия с низкой робастностью не повторяет результаты тестов в реальной торговле.
В OsEngine есть метрика Walk-Forward оптимизатора. Так выглядит окно результатов оптимизации FW в OsEngine.
Рассчитывается от 0 до 100 %. Чем ближе к 100, тем робастнее стратегия.
Максимально хороший результат это 100 %.
Столбцовая диаграмма отражает успешность выбранного робота из InSample во множестве OutOfSample результатов. Именно от того, что там за столбики, зависит WFRM.
Во время формирования этапов для тестирования при Walk-Forward используется визуальное и табличное представление этапов WF оптимизации.
В данном конкретном случае история разбита на 14 пар InSample / OutOfSample.
Последний InSample без пары. Предполагается, что его OutOfSample будет уже в реале.
В каждом из этих периодов тестируются роботы с одними и теми же параметрами! Во всех 29 этапах ОДНИ И ТЕ ЖЕ РОБОТЫ. Это справедливо, если не включены фильтры и процесс оптимизации ведётся Brut-Force (Т.е. полным обходом всех параметров). Получается две таблицы результатов — InSample – OutOfSamle.
В каждой паре получается по 40 результатов.
В данном случае параметр для сортировки — это П/У %
Лучшим роботом в InSample периоде является робот с номером 9. Предполагается, что именно его мы бы включили в торги.
Смотрим, под каким номером он пришёл в OutOfSample периоде:
На основании результата добавляем его в соответствующую ячейку диаграммы — переносим результат в какую-то категорию по успешности.
В данном случае, робот № 9 попал в предпоследнюю категорию успешности. Между 60 и 80 % других.
Таким образом заполняем данную диаграмму. 14 пар InSample / OutOfSample. 14 добавленных единиц в различные ячейки.
Из разных столбцов мы присваиваем вес 1 результату пары с разным коэффициентом. Мы пытались вычислить этот показатель по медиане оси X, разделяя результаты пополам. Однако это показалось нам неудачной идеей. Когда результатов было недостаточно, медианные значения получались довольно странными. Поэтому мы остановились на описанном выше варианте.
И получаем в итоге WFRM:
Очевидно, это один из важнейших показателей при Walk Forward оптимизации. В торговлю нужно включать роботов с наиболее большим коэффициентом. WFRM должен обязательно участвовать в фильтрации различных алгоритмов.
Осуществлять выборку лучшего робота для применения в OutOfSample можно совершенно разными вариантами выбора лучшего робота из InSample в OsEngine.
В OsEngine это параметры:
И разные типы выбора лучшего робота дают разный WFRM.
Соответственно, чтобы выбирать более робастные настройки для торговли, нужно провести соответствующую серию тестов.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php