rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4

«Робастность» — это способность торговой стратегии воспроизводить результаты своего тестирования на новых данных.  

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

Было бы полезно измерить эту характеристику численно. В этом тексте расскажем о метрике робастности стратегии, представленной в OsEngine — Walk-Forward Robustness Metric.

 

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

Примеры.

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

 

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

В OsEngine есть метрика Walk-Forward оптимизатора. Так выглядит окно результатов оптимизации FW в OsEngine.

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4

Столбцовая диаграмма отражает успешность выбранного робота из InSample во множестве OutOfSample результатов. Именно от того, что там за столбики, зависит WFRM.

 

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

Во время формирования этапов для тестирования при Walk-Forward используется визуальное и табличное представление этапов WF оптимизации.  

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

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

 

4. Пары InSample – OutOfSample.

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

 

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

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

На основании результата добавляем его в соответствующую ячейку диаграммы — переносим результат в какую-то категорию по успешности.

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

В данном случае, робот № 9 попал в предпоследнюю категорию успешности. Между 60 и 80 % других.

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

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

 

6. Расчёт WFRM.

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4

Из разных столбцов мы присваиваем вес 1 результату пары с разным коэффициентом. Мы пытались вычислить этот показатель по медиане оси X, разделяя результаты пополам. Однако это показалось нам неудачной идеей. Когда результатов было недостаточно, медианные значения получались довольно странными. Поэтому мы остановились на описанном выше варианте.

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

 

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

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

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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4 

В 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.

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

Удачных алгоритмов!

Комментарии открыты для друзей!

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка 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

Численный показатель робастности при Walk-Forwards. Оптимизатор в OsEngine #4

★2

UPDONW
Новый дизайн