Оптимизатор в Os Engine. Численный показатель робастности при Walk-Forward оптимизации.

Оптимизатор в Os Engine. Численный показатель робастности при Walk-Forward оптимизации.

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

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

Это не что-то из яндекса с гуглом. Этот параметр добавили в WF Optimizer наша команда, пытаясь получить численное представление робастности того или иного результата. Очень может быть, что нечто похожее уже где-то есть. Обязательно свяжитесь с нами, если похожий параметр обсуждается в других местах и у робастности во время Walk-Forward есть стандартное исчисление, которое скрылось от наших глаз: alexey@o-s-a.net.

 

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

Пример 1.

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

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

 

Пример 2.

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

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

 

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

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

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

 

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

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

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

 

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

 

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

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

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

 

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

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

 

4. Пары InSampleOutOfSample.

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

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

 

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

 

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

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

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

 

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

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

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

 

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

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

 

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

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

 

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

 

6. Расчёт WFRM.

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

 

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

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

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

 

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

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

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

Рис. 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.

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

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

Если что-то не получилось, или остались вопросы, пишите в чат поддержки.

 

13:26
150

Комментарии

Нет комментариев. Ваш будет первым!