Eth_algotrader
Eth_algotrader личный блог
04 августа 2024, 14:44

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

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

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

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

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

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

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

Такой подход мог бы помочь выявить, что не все сложные модели являются переобученными (и не все простые — эффективными). Было бы интересно проверить им, например, модели Майтрейда))
28 Комментариев
  • wistopus
    04 августа 2024, 15:18
    а если запустить систему с подстраивающимися параметрами в зависимости от состояния рынка?..

    • Matrica
      04 августа 2024, 17:36
      wistopus, чтобы подстраивать параметры, надо сначала разобраться, когда и как меняются эти самые параметры. Для этого надо выйти на мат. модель. А на модель выходят единицы, ввиду усвоения правильных Знаний. А выйдя на модель, можно и ручками торговать, расчеты то уже есть.
      P.S. — с индикаторами (строящие модель) естественно удобнее и быстрее.
  • 22022022
    04 августа 2024, 15:34
    Сразу бросается в глаза переподгонка-подгонка

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

      • wistopus
        05 августа 2024, 08:58
        Eth_algotrader, 
        Система просто берет все подряд, что проходит базовые условия. Для некоторых систем это означает быть всегда в рынке
        опять таки влезу...
        а не надо все время быть в рынке — энто просто экономически не выгодно..

          • wistopus
            04 августа 2024, 15:57
            Eth_algotrader, 
            То лонг, то шорт
            как говорил мне Сумашедший Квант, который собаку съел во время своего трейдерства тогда еще по месту своего проживания....
            — шортить в капиталистической России под такие проценты — энто забесплатно кормить своего брокера...
            • Антон Б
              04 августа 2024, 16:54
              wistopus, можно фьючерсы продавать на базовый актив.
          • Matrica
            04 августа 2024, 17:26
            Eth_algotrader, торгуйте модель, она на рынке одна. И во время тренда, и во время флета.
              • Matrica
                04 августа 2024, 17:52
                Eth_algotrader, если убрать все циферки, то визуально получите модель. Или модель в модели, т.к.процесс на рынке непрерывный. А вот как искать эти правильные пропорции (они не в процентах считаются), каждый докумекивает сам.



  • SergeyJu
    04 августа 2024, 17:49
    Сама разметка уже элемент подгонки. 
  • Replikant_mih
    04 августа 2024, 19:06

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

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

      • Replikant_mih
        04 августа 2024, 20:45

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

         

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

         

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

         

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

  • SergeyJu
    05 августа 2024, 09:31
    Концептуально я сейчас предпочитаю простые системы с минимальным числом параметров. Желательно побольше и на разных активах. Тогда можно строить метасистему их включения/выключения или даже раздачи весов. 
    А вот использование того, что принято называть фильтрами при проектировании систем я так и не смог приспособить к делу. Когда-то даже воспроизвел с очень высокой точностью фильтры А.Г. с его активной помощью. Но и им применения не нашел. 
  • svgr
    05 августа 2024, 10:20
    Всегда думалось, что системы сначала по ошибкам первого рода надо оценивать. Если у вас пойманные тренды в сумме дают меньше, чем она теряет от этих ошибок, то до ошибок второго рода не доходит дело. Система плохая.
    А мерить систему по соотношению ошибок первого и второго рода стоит, если после применения фильтров она по-прежнему берёт ВСЕ тренды, определённые ею без фильтров. Только меньшую долю тренда.
      • svgr
        05 августа 2024, 14:50
        Eth_algotrader, методически нужно чётко раскладывать систему.
        1. Изначально система берёт тренды при всех параметрах из какой-то сплошной области. Далее вы сужаете область, выделяя прибыльную зону. Тут все ошибки 1-го и 2-го рода считаются зафиксированными, присущими системе.
        2. Дальнейшие манипуляции с фильтрами ведутся внутри этой зоны только таким образом, чтобы новых ошибок 2-го рода не возникало. По возможности такого результата делается вывод о применимости фильтра с его областью параметров.

        Обычная ситуация — это возможно, приобретаете больший процент выигрышных сделок, но теряете в средней величине сделки, а их произведение увеличивается.
          • svgr
            07 августа 2024, 20:44
            Eth_algotrader, описанный эффект зависит от типа системы.
            Раз речь ведёте о трендах, то можно представить картину: при применении т. н. 'фильтра' часть убыточных без фильтра заходов в тренд становятся слабо прибыточными, а прибыточные без фильтра с фильтром уменьшаются в размерах из-за ухудшившихся входов и выходов.
            Средняя по прибыльным уменьшается, средняя по убыточным несколько увеличивается. Общая средняя снижается. Доля прибыльных растёт. Сумма прибыльных минус сумма убыточных несколько возрастает.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн