Продолжаю допиливать торговую систему и одновременно тестирую робота, который будет по ней торговать...
До этого момента у меня были Out-Of-Sample тесты в виде чередования недель для оптимизации параметров и валидации, walk-forward расширяющимся и скольящим окном. Решил немного улучшить способ с чередованием недель:
- Берем на всей истории случайных N% недель для оптимизации параметров.
- Для валидации берём недели, не попавшие в первый список.
- Оптимизируем параметры и снимаем метрики по первому и второму списку.
- Повторяем 1-3 пункт 100 раз и записываем показания.
- Выводим распределения метрик и их отношений в виде гистограмм.
- Выводим распределения параметров в виде гистограмм.
- Считаем коэффициент деградации метрик на Out-Of-Sample
Истории мало, только с 2025-01-27, — тогда появилась утренняя сессия. Убраны плечи и используется только одна прогнозная модель.
Если разделить недели 50% на 50%, то получается вот что:
Коэффициент деградации стратегии на Out-Of-Sample можно выразить как единица минус среднее геометрическое от отношений прибыли, просадки^-1, средней сделки: 1 — (0.65*(1/1.68)*0.67)^(1/3) = 0.36 = 36%.
Распределения оптимизированных параметров при этом выглядят вот так:
Если разделить недели 75% на 25%, то получается вот что:
Коэффициент деградации: 1 — (0.78*(1/0.94)*0.84)^(1/3) = 0.11 = 11%. (внезапно средняя просадка на валидации получилась чуть меньше, чем на оптимизации)
Распределения параметров при этом выглядят вот так:
Видно, что в распределении первых двух параметров в первом и втором случае имеется большой разброс. Возможно они зависимы друг от друга, выводим их на точках:
Очень отдаленно похоже на линейную зависимость с выбросами. Если бы данных для тестирования было больше, было бы больше уверенности, но чисто теоретически, между ними может быть зависимость, т.к. они влияют на один и тот же параметр сделки и зависят от одной характеристики рынка. Просто один параметр статический, а другой — коэффициент в системе адаптации к рынку через прогноз характеристики рынка. Без выбросов никуда, потому что точность прогноза не очень высокая — средний процент ошибки 28%, но это в 100500 раз лучше, чем совсем без прогноза.
Интересная идея с рандомным разбиением недель и накоплением статистики по 100 прогонам. В теории это лучше одного классического бэктеста. Но есть ощущение, что коэффициент деградации вы выбрали произвольно (на глаз): перемножение прибыли, просадки^-1 и средней сделки + корень кубический могут красиво сглаживать сильную деградацию одной метрики за счёт другой...
Плюс история с 27.01.2025, 25% недель в OOS при 75/25 — это совсем мало, метрики на валидации там будут сильно шумные, а про доверительные интервалы/значимость вы не пишете вроде. Надо перечитать.
По скаттеру первых двух параметров тоже хочется хоть какой‑то формальной проверки зависимости (корреляция/регрессия), а не только визуальной оценки.
Не думали посчитать, например, распределения разницы IS/OOS по каждой метрике отдельно, с интервалами, и/или добавить простой бенчмарк — «тупую» стратегию без прогноза какую-то — для сравнения?
И кривулек не хватает, нет ничего лучше для оценки:)
Мало, но приходится работать с тем, что есть. Другие стратегии не связанные с утренней сессией буду тестировать на всех доступных данных.
Визуальный контроль и мысленный эксперимент может оказаться лучше регрессии:) Если бы это была массовая автоматизированная проверка, то сделал бы регрессию.
Наверное можно, но я уже увидел всё, что хотел, а у меня ещё TODO на год вперёд:)