Переподгонку торгового алгоритма принято связывать со сложностью модели, в частности, с числом параметров. Но есть, вероятно, более разумный способ ее оценить.
Зачем люди растят сложность и переобучают модели? Чтобы избавиться от лосей. Вот была простая, условно пробойная, система, которая забирала все крупные движения рынка, но за компанию ловила много лосей:
Кому-то это не понравилось, и он решил навесить на нее кучу фильтров. Профитов конечно изрядно поубавилось, но лосей стало еще меньше:
![Новый взгляд на проблему переподгонки Новый взгляд на проблему переподгонки](/uploads/2024/images/23/05/68/2024/08/04/4f9e39.webp)
Вроде все хорошо: винрейт подрос, эквити сгладилось. Но возникает вопрос: почему трендовая (вроде как) модель ничего не делает на участках рынка с большими трендами?
Результат выглядит лучше, только если мы считаем ошибками модели лишь ее лоси (ложноположительные результаты, или ошибки 1-го рода). Но, глядя на улучшенную форму эквити, мы не замечаем ложноотрицательных результатов (ошибок 2-го рода), или упущенных профитов.
Они сразу бросились бы в глаза, если бы наши данные были размечены, как в машинном обучении, и тогда пропуск тренда считался бы такой же (на самом деле — еще более дорогой, ведь у трендовых систем всегда большие профиты и мелкие лоси) ошибкой, как и стоп-лосс. И мы бы увидели, что добились роста
precision (винрейта) при сильной потере
recall (число взятых профитов). Или, в терминах матрицы ошибок, подняли
специфичность (способность различать лоси, или ошибки 1-го рода) за счет падения
чувствительности (способности не упускать профиты, что является ошибкой 2-го рода). Что, вероятно, говорит о переобучении, потому что если трендовая модель не берет тренды, то, скорее всего, она потеряла обобщающую способность.
Такой подход мог бы помочь выявить, что не все сложные модели являются переобученными (и не все простые — эффективными). Было бы интересно проверить им, например,
модели Майтрейда))
Но это ничего не меняет. Модель все равно будет брать какой-то % лосей от общего числа. И какой-то % профитов. И ее можно будет оценивать по этим критериям.
фильтр низких частот не успеет перестроиться ни при каких периодах ибо никто не знает будущего...
а вот уменьшить % лосей… даже свести оных почти к минимуму запросто....
но есть один нюанс — придется и прибылью частично пожертвовать…
пн
Баффет прав — богатеть надо медленно...
P.S. — с индикаторами (строящие модель) естественно удобнее и быстрее.
Упование на то, участков типа (А) будет больше чем (В). Или «тренды» с углом 45 встретятся чаще «трендов» под 10 градусов. Или волатильность сохранится на уровне (n) в будущем. итд.
а не надо все время быть в рынке — энто просто экономически не выгодно..
пн
для примера, сейчас надо быть в деньгах, а деньги на счетах… и фуй кто знает скока времени там еще надо быть…
— шортить в капиталистической России под такие проценты — энто забесплатно кормить своего брокера...
1. С точки зрения метрик качества модели, в трейдинге можно забить на ложно отрицательные. Тем на рынке дофига, рынков дофига, всего дофига, умеешь хорошо говорить «вот щас точно оно», даже если мимо вагонами пролетают упущенные возможности — этого более чем достаточно для заработка.
2. Ложно отрицательные как мера робастности и переподгонги. Идея интересная, но не думаю, что там что-то есть. Детали раскрывать не буду).
2. Против секретных аргументов у меня есть только секретные контраргументы, так что я тоже не буду их раскрывать! :)))
На самом деле пару раз замечал, как стратегия не берет прям забористые тренды из-за дурацкого фильтра. Думал, что сделать. Менял фильтр так, чтобы брало. И вуаля — на других участках тоже становилось сильно лучше!
Eth_algotrader,
1. Робастность модели и метрики качества (обычно это трейдерские — PF, winrate и т.д.) на бою, на OOS или где угодно — для меня это две разные вещи. Метрики качества — по сути это метрики в моменте, а робастность — про то, с какой вероятностью ты такие метрики сможешь в будущем увидеть :).
2. Технично обсудили)).
«Пару раз замечал» обычно путь к подгонке. Ну вернее стриггерить рисёч можно и «пару разами», но понимать что работает, что нет — через рисёч, ну или хотя бы расширить «пару раз» до большего кол-ва раз.