Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> личный блог
26 апреля 2023, 16:48

Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Мы здесь: Глава 8.2 Определения. WFRM

Термин «робастность» означает способность торговой стратегии повторять результаты своего тестирования в прошлом на новых данных.

И было бы здорово измерять эту способность в цифрах. В этом тексте я познакомлю Вас с одной из метрик робастности стратегии, которая есть у нас в OsEngine — «Walk-Forward Robustness Metric».

Вспоминаем о сути робастности

 

Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Супер! Вы включили стратегию в торги, и в реальном времени за следующие два месяца стратегия вам дала примерно такой же результат по прибыльности, как и в тестере:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 1. Стратегия с высокой робастностью. Повторяет результаты тестов в реальной торговле

 

Пример 2.

Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Вы включили стратегию в торги, и в реальном времени за следующие два месяца (зелёный квадрат) стратегия вам дала убытки:

 

 

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 2. Стратегия с низкой робастностью. Не повторяет результаты тестов в реальной торговле

 

 

Где смотреть робастность в цифрах??

 

В рамках Walk-Forward оптимизатора OsEngine есть его метрика:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 3. Окно результатов оптимизации WF Оптимизатора в OsEngine

 

Рассчитывается от 0 до 100 %. Чем ближе к 100, тем робастнее стратегия.

Лучший результат в таком случае выглядит так:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 4. Максимально хороший результат это 100 %

При этом я вовсе не случайно оставил столбцовую диаграмму в кадре. Она отражает успешность выбранного робота из InSample во множестве OutOfSample результатов. Именно от того, что там за столбики, зависит WFRM. Но… Обо всём по порядку.

 

Этапы WF оптимизации

 

Обычно, во время формирования этапов для тестирования при Walk-Forward, используется подобного рода визуализация:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 5. Визуальное и табличное представление этапов WF оптимизации

 

В данном конкретном случае история разбита на 14 пар InSample / OutOfSample.

Последний InSample без пары, т.к. предполагается, что его OutOfSample будет уже в реале.

 

Пары InSample – OutOfSample

 

В каждом из этих периодов тестируются роботы с одними и теми же параметрами! Во всех 29 этапах ОДНИ И ТЕ ЖЕ РОБОТЫ. Это справедливо, если не включены фильтры, и процесс оптимизации ведётся Brut-Force (Т.е. полным обходом всех параметров)

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 6. InSample – OutOfSamle. Всего лишь две таблицы результатов

 

В каждой паре получается по 40 результатов.

 

Сортируем обе таблицы по какому-то параметру

 

В данном случае параметр для сортировки — это П/У %

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 7. Таблицы результатов оптимизации отсортированные по П/У %

 

Лучшим роботом в InSample периоде является робот с номером 9. Его, как мы предполагаем, мы бы включили в торги.

Смотрим под каким номером он пришёл в OutOfSample периоде:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 8. Смотрим «Лучшую лошадку» из InSample в «забеге» OutOfSample

 

На основании результата добавляем его в соответствующий столбец диаграммы распределения:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 9. Переносим результат в какую-то категорию по успешности

 

 

В данном случае вот сюда:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 10. Наша «лошадка» пришла в предпоследней категории успешности. Между 60 и 80 % других

 

И таким образом заполняем данную диаграмму. 14 пар InSample / OutOfSample. 14 добавленных единиц в различные столбцы.

 

Расчёт WFRM

 

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 11. Формула расчёта WFRM

 

Засчитываем из разных столбцов вес 1 результата пары с разным коэффициентом.

 

И получаем в итоге WFRM:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 12. Итоговый WFRM

 

Зачем это может быть нужно?

Очевидно это один из важнейших показателей во время WalkForward оптимизации. И нужно включать роботов в торговлю с наиболее большим коэффициентом. WFRM должен обязательно участвовать в фильтрации различных алгоритмов.

 

Осуществлять выборку лучшего робота для применения в OutOfSample можно совершенно по разному:

 Численный показатель робастности при Walk-Forward оптимизации. Определения #2

Рис. 13. Варианты выбора лучшего робота из InSample в OsEngine

 

В OsEngineэто параметры:

1)      Total Profit

2)      Max Drow Dawn

3)      Average Profit

4)      Average Profit Percent

5)      Profit Factor

6)      Pay Off Ratio

7)      Recovery

8)      Sharp Ratio

И разные типы выбора лучшего робота дают разную WFRM.

Соответственно, чтобы выбирать более робастные настройки для торговли, нужно провести соответствующую серию тестов, которую мы сделаем вместе.

 

Если читаешь не из 2023 года. С.М. Исследования: «Влияние параметра выбора лучшего робота из InSampleв в WF оптимизации на робастность» Дальше по блогу.  smart-lab.ru/blog/862087.php 

Продолжение следует...

Видео-версия:



P.S.

Напоминаю, что для того, чтобы писать комментарии у меня под постами, нужно добавиться ко мне в друзья. Давайте учиться жить дружно. 

P.S.2.

Хотите в алготрейдинг? Читайте мой блог. Сэкономите себе кучу времени. Вот его оглавление: smart-lab.ru/blog/853677.php 

P.S.3. 

Наш чатик для алготрейдеров: https://t.me/o_s_a_chat 

Наш бесплатный терминал для алготрейдеров: https://github.com/AlexWan/OsEngine

2 Комментария
  • А. Г.
    26 апреля 2023, 17:39
    Вы включили стратегию в торги, и в реальном времени за следующие два месяца стратегия вам дала примерно такой же результат по прибыльности, как и в тестере

    Считать робастность только по прибыльности — «путь в никуда».

    Во первых, надо учитывать, что значение прибыли вообще случайная величина и то, что мы видим на тесте — это лишь ее выборочное среднее за период.

    Во-вторых, робастность торгового алгоритма должна быть для показателя «доходность-риск», а не просто доходность.

    В-третьих, максимизация любого показателя в тесте — это путь в переподгонку и ждать от такого теста  робастности — бессмысленно. 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн