Блог им. Eth_algotrader

Новый взгляд на проблему переподгонки

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

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

Кому-то это не понравилось, и он решил навесить на нее кучу фильтров. Профитов конечно изрядно поубавилось, но лосей стало еще меньше:
Новый взгляд на проблему переподгонки

Вроде все хорошо: винрейт подрос, эквити сгладилось. Но возникает вопрос: почему трендовая (вроде как) модель ничего не делает на участках рынка с большими трендами?

Результат выглядит лучше, только если мы считаем ошибками модели лишь ее лоси (ложноположительные результаты, или ошибки 1-го рода). Но, глядя на улучшенную форму эквити, мы не замечаем ложноотрицательных результатов (ошибок 2-го рода), или упущенных профитов. 

Они сразу бросились бы в глаза, если бы наши данные были размечены, как в машинном обучении, и тогда пропуск тренда считался бы такой же (на самом деле — еще более дорогой, ведь у трендовых систем всегда большие профиты и мелкие лоси) ошибкой, как и стоп-лосс. И мы бы увидели, что добились роста precision (винрейта) при сильной потере recall (число взятых профитов). Или, в терминах матрицы ошибок, подняли специфичность (способность различать лоси, или ошибки 1-го рода) за счет падения чувствительности (способности не упускать профиты, что является ошибкой 2-го рода). Что, вероятно, говорит о переобучении, потому что если трендовая модель не берет тренды, то, скорее всего, она потеряла обобщающую способность.

Такой подход мог бы помочь выявить, что не все сложные модели являются переобученными (и не все простые — эффективными). Было бы интересно проверить им, например, модели Майтрейда))
★1
#24 по плюсам, #10 по комментариям
20 комментариев
а если запустить систему с подстраивающимися параметрами в зависимости от состояния рынка?..

avatar
wistopus, ну к этому почти все рано или поздно приходят. В том или ином виде.

Но это ничего не меняет. Модель все равно будет брать какой-то % лосей от общего числа. И какой-то % профитов. И ее можно будет оценивать по этим критериям.
avatar
Eth_algotr ader, 
Но это ничего не меняет. Модель все равно будет брать какой-то % лосей от общего числа. И какой-то % профитов
 трейдер без лосей как без пряника...
фильтр низких частот не успеет перестроиться ни при каких периодах ибо никто не знает будущего...

а вот уменьшить % лосей… даже свести оных почти  к минимуму запросто....
но есть один нюанс — придется и прибылью частично пожертвовать…

пн
Баффет прав — богатеть надо медленно...
avatar
wistopus, чтобы подстраивать параметры, надо сначала разобраться, когда и как меняются эти самые параметры. Для этого надо выйти на мат. модель. А на модель выходят единицы, ввиду усвоения правильных Знаний. А выйдя на модель, можно и ручками торговать, расчеты то уже есть.
P.S. — с индикаторами (строящие модель) естественно удобнее и быстрее.
avatar
Matrica, 
чтобы подстраивать параметры, надо сначала разобраться, когда и как меняются эти самые параметры. Для этого надо выйти на мат. модель
в общем-то я других способов и не знаю...
avatar
Сразу бросается в глаза переподгонка-подгонка

Упование на то, участков типа (А) будет больше чем (В). Или «тренды» с углом 45 встретятся чаще «трендов» под 10 градусов. Или волатильность сохранится на уровне (n) в будущем. итд.

avatar
22022022, как раз в первом варианте переподгонка фильтров отсутствует, потому что нет фильтров :))) Система просто берет все подряд, что проходит базовые условия. Для некоторых систем это означает быть всегда в рынке.
avatar
Eth_algotrader, 
Система просто берет все подряд, что проходит базовые условия. Для некоторых систем это означает быть всегда в рынке
опять таки влезу...
а не надо все время быть в рынке — энто просто экономически не выгодно..

пн
для примера, сейчас надо быть в деньгах, а деньги на счетах… и фуй кто знает скока времени там еще надо быть…
avatar
wistopus, всегда в рынке — это же не обязательно всегда лонг. Есть переворотные системы, которые всегда в рынке. То лонг, то шорт. И на удивление прибыльны на дистанции (на сильно трендовых активах, конечно же).
avatar
Eth_algotrader, 
То лонг, то шорт
как говорил мне Сумашедший Квант, который собаку съел во время своего трейдерства тогда еще по месту своего проживания....
— шортить в капиталистической России под такие проценты — энто забесплатно кормить своего брокера...
avatar
wistopus, значит, первым параметром торговой стратегии является место проживание трейдера)))
avatar
wistopus, можно фьючерсы продавать на базовый актив.
avatar
Eth_algotrader, торгуйте модель, она на рынке одна. И во время тренда, и во время флета.
avatar
Matrica, поделитесь?
avatar
Eth_algotrader, если убрать все циферки, то визуально получите модель. Или модель в модели, т.к.процесс на рынке непрерывный. А вот как искать эти правильные пропорции (они не в процентах считаются), каждый докумекивает сам.



avatar
Сама разметка уже элемент подгонки. 
avatar
SergeyJu, ну да. Поэтому правильнее было бы здесь говорить о проблеме переподгонки фильтров.
avatar

1. С точки зрения метрик качества модели, в трейдинге можно забить на ложно отрицательные. Тем на рынке дофига, рынков дофига, всего дофига, умеешь хорошо говорить «вот щас точно оно», даже если мимо вагонами пролетают упущенные возможности — этого более чем достаточно для заработка.

2. Ложно отрицательные  как мера робастности и переподгонги. Идея интересная, но не думаю, что там что-то есть. Детали раскрывать не буду). 

avatar
Replikant_mih, 1. в том и дело, что с точки зрения метрик качества. Вот человек смотрит на свои метрики. Они растут. Он добавляет еще фильтров. Они снова растут. С этой точки зрения все действительно будет прекрасно! :)) А модель, тем временем, перестала полноценно брать то, на что она заточена, даже на истории… Чего уж говорить о будущем!

2. Против секретных аргументов у меня есть только секретные контраргументы, так что я тоже не буду их раскрывать! :)))

На самом деле пару раз замечал, как стратегия не берет прям забористые тренды из-за дурацкого фильтра. Думал, что сделать. Менял фильтр так, чтобы брало. И вуаля — на других участках тоже становилось сильно лучше!
avatar

Eth_algotrader, 
1. Робастность модели и метрики качества (обычно это трейдерские — PF, winrate и т.д.) на бою, на OOS или где угодно — для меня это две разные вещи. Метрики качества — по сути это метрики в моменте, а робастность — про то, с какой вероятностью ты такие метрики сможешь в будущем увидеть :).

 

2. Технично обсудили)).

 

На самом деле пару раз замечал, как стратегия не берет прям забористые тренды из-за дурацкого фильтра. Думал, что сделать. Менял фильтр так, чтобы брало. И вуаля — на других участках тоже становилось сильно лучше!

 

«Пару раз замечал» обычно путь к подгонке. Ну вернее стриггерить рисёч можно и «пару разами», но понимать что работает, что нет — через рисёч, ну или хотя бы расширить «пару раз» до большего кол-ва раз.

avatar

теги блога Eth_algotrader

....все тэги



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