Sergey Pavlov
Sergey Pavlov личный блог
09 ноября 2020, 17:14

Калибровка versus переподгонка

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

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

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

Значит у нас есть какая-то модель, раз есть модель и есть разрыв между ней и реальным рынком, то надо как-то притянуть за уши эту модель к реальному рынку — калибровки. Технически это всегда (поправьте, если я ошибаюсь) решение задачи оптимизации. И тут возникает всем известная проблема — переподгонка или оверфит. Калибруем модель, а получаем оверфит. Обидно. Ведь бывают и хорошие модели.

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

В чем тут трудность с пониманием? То, что в одной ситуации будет дикой переподгонкой, в другом — вполне сойдет за калибровку. Очевидный пример. Если мы вертим сгенерированное СБ без какой-либо памяти и на нем находим какие-то модели или уже известные модели пытаемся «оптимизировать», то мы априори понимаем, что это оверфит и ничего иного не дано.

Однако, много моделей на рыночных временных рядах имеют какую-то область калибровки, за границами которой наступает переподгонка. У плохих моделей потенциал по калибровке мал и легко попасть в переподгонку. У хороших моделей калибровочный потенциал пошире. Собственно, это мы знаем из опыта из практики и можно дать определение хорошей модели. Модель тем лучше, чем труднее из калибровки попасть в переподгонку. Видимо, идеальная модель это такая, которую можно только откалибровать и невозможно чрезмерно зафиттить. Существует ли такие модели — отдельный разговор.

Внимательный читатель спросит, что же я хотел сказать или о чем спросить у внимательного читателя? Вот я даже до конца не могу толком это сформулировать в силу какой-то своей тупости. Но я эту проблему хорошо понимаю как проблему, а уверенного решения не вижу или не знаю. Но в практических ситуациях как-то легко могу понять, где идет калибровка, а где уже оверфит.

Потом попробую иллюстрации на эту тему опубликовать.
36 Комментариев
  • ves2010
    09 ноября 2020, 17:25
    есть овердокуя систем без параметров
    напрмер покупка при пробое хая предыдущего дня и продажа при пробое лоя предыдущего дня
    или цена выше открытия покупаешь ниже открытия продаешь
    торговля графических паттернов   тоже без параметров

    в конечном итоге пробой любого уровня — это система без параметров
    • ves2010, а почему пробой дня, а не двух? Или трёх?
      Или не дня а 3 четырёхчасовиков?
      Пробой типичных ценовых каналов, типа Дончиана или «черепах» предполагает выбор периодов, за который определяются экстремумы для каналов. 
      А в остальном — согласен. 
      • ves2010
        09 ноября 2020, 18:18
        Вестников (Витковский), день это день
        это часов может быть много… 5ти минуток россыпью… а день это такая вещь в себе…
    • Astronomer
      09 ноября 2020, 19:46
      ves2010, А тейкпрофит, стоплос трейлинг это же все равно параметр.
      • ves2010
        09 ноября 2020, 23:14
        Astronomer, с трейлингом и тейком сложно вообще все
        вот сам смотри
        для того чтоб простейше торговать надо предсказать направление движняка вверх или вниз
        а для тейка надо предсказать направление + величину движения — т.е уже сложнее
        а для тейка и трейлинга надо предсказать направление движения+ величину движения + волатильность движения

        т.е прогноз реально усложняется и вероятность точного прогноза резко падает
        т.е прикинем что точность каждого прогноза 70%=0.7
        для первого случая — так и останется точность 70%
        для второго случая точность прогноза будет 0.7*0.7=49%
        а для третьего варианта с тейком и трейлингом точность прогноза 0.7*0.7*0.7=35%
        мораль в том… что я не ванга и прогноз даю только вверх или вниз
  • Надо чтобы весь разумный спектр параметров давал требуемый результат, возможно с небольшими вариациями. Если же одни параметры дают хороший результат, а параметры рядом, плохой, то это будет система-казино.
  • Volahub
    09 ноября 2020, 17:35
    Калибруеют под идею, без идеи — подгонка, имхо.
  • Артур Идиатулин (Tickmill)
    09 ноября 2020, 18:00
     Критерий Шварца/Акаике?
  • VladMih
    09 ноября 2020, 18:02
    Сергей, на 101% согласен!
    Для меня калибровка — это то, что в пределах здравой трейдерской логики торговой системы. Как только параметры начинают выходить за пределы стратегической логики по месту или по сигналу — это уже переоптимизация, подгонка, ЭТО долго работать не может. Это типа как уловить кратковременную неэффективность текущего рынка, которая не обязана быть вечной или хотя бы долгой.
    Если же алгоритм четко соответствует задуманной логике по месту и сигналу, параметров может быть хоть миллион.

    Кстати, ТСЛаб дает пример робота по ТС без параметров. Я там насчитал не менее 6-ти параметров. А если учесть, что ни одна ТС не может долгосрочно работать без определения места где брать сигналы, то там еще десяток надо добавить — такая вот будет… безпараметрическая ТС. ))
  • 3Qu
    09 ноября 2020, 18:02
    Наверное почти никто не откажется от системы без параметров, которая идеально или хотя бы приемлемо торгует любой инструмент. Мне кажется, что такая система ровно одна и она невозможна либо никому недоступна — заглядывание в будущее. Иным способом получить безпараметрическую и не нуждающуюся в оптимизации систему нереально.
    Не только возможна, но и не требует ни оптимизации, ни подгонки, ни подбора параметров.
    По крайней мере, тесты работают на любом инструменте без каких либо изменений системы.
    Реал система пока в стадии проектирования. Но, по прошлому опыту уже могу сказать, что реал не сильно будет отличаться от тестов.
    ЗЫ кстати, о переобучении. Если вы имеете дело с реальными зависимостями, а не плодами вашего воображения, то переобучения быть в принципе не может.
  • MadQuant
    09 ноября 2020, 18:09
    А чем не нравится классическое определение из МЛ: пока в процессе обучения перформанс модели на CV-части данных растет — это калибровка. Когда перестает расти и начинает падать — это переподгонка? Просто и максимально соответствует тому, что нам надо от модели.
    • Replikant_mih
      09 ноября 2020, 18:43
      MadQuant, да, стопроцентов. Машин ленинг на многие вещи вправляет мозги).
  • Андрей К
    09 ноября 2020, 18:18
    Можно построить тепловую карту результатов перебора. Если выбранные параметры лежат на карте в области экстремальных значений и эта область занимает < 20% всей тепловой карты, то думаю, что это уже переподгонка
    • krolix
      09 ноября 2020, 18:25
      Андрей К, тепловую карту по какому диапазону составлять будем?) Например, можно период МА брать для оптимизации вплоть до миллиона
      • Андрей К
        09 ноября 2020, 18:35
        krolix, по диапазону перебираемых значений. Если разраб стратегий решит, что ему нужно миллион, пусть пробует миллион =) Арендует мощности и вперед 
  • Roman Ivanov
    09 ноября 2020, 18:38
    А если иначе взглянуть, что какая-то степень подгонки всегда есть, даже в области где вроде бы ее нет? Это же более реалистично. Вопрос останется ли система прибыльна, когда подогнанная часть обнулится.
  • Ëжик
    09 ноября 2020, 18:41
    Это филосовский вопрос. О том как ставить эксперимент и как обрабатываеть его результаты. Есть полярные мнения: Одни говорят, что сначало придумываем модель, а потом экспериментом(обрабатываем данные заранее заданым алгоритмом) подтвержаем или отбрасываем модель. Другие (например соврменный ML) предлагаю копать данные пока не будет получен нужный результат.
    На этот вопрос общего ответа нет.

  • Replikant_mih
    09 ноября 2020, 18:51

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

     

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

     

    Если вернуться к классическим стратегиям — ещё раз: переподгонка возникает от того, что ты оптимизируешь не так как надо), а не от самого факта оптимизации. Даже просто если убрать в голове предвзятость и поселить установку, что не надо выбирать лучшие результаты из бэктестов и что на отложенной выборке результаты не будут повторяться, а будут как-то распределены и иметь какие-то вероятности пойти туда-то и туда-то — уже это позволит серьезно скорректировать процесс, там так-то не надо быть мегамозгом чтоб обходить переподгонку — достаточно иметь правильные установки.

     

    Ну а вообще оч. рекомендую позаниматься ML'ем — другой взгляд на те же вещи, более фундаментальный) формируется.

  • krolix
    09 ноября 2020, 19:03
    Параметры всегда есть, хоть и не в строгом TS-Wealthlab'овском смысле — время входа, направление сделки, время выхода. Ну и рынок, инструмент.
  • Атласов Михаил
    09 ноября 2020, 19:07
    да, самое главное понятийность, а в договоре понятия, а между делом понятийные договоренности возможно и решают
  • bocha
    09 ноября 2020, 19:11

    Пусть есть вектор параметров (X1) и вектор слегка измененных параметров (X2)

    Соответствующие им эквити  Y(X1)  и  Y(X2)

    Какие требования мы в идеале предъявим к функции Z = Y(X1)  -  Y(X2) ?

    В идеале хотелось бы, чтобы Z представляла из себя функцию монотонную. Прямая – очень хорошо, значит ровно на каждой итерации зарабатывается чуть больше.  Какой-нибудь колокол – очень плохо. Формулируем математически желаемое.

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

    Примерно так можно попытаться.

  • Михаил Табаков
    09 ноября 2020, 19:48
    WFO тест должен показать
  • robomakerr
    09 ноября 2020, 20:14
    OOS же. Зачем выдумывать велосипеды.
  • Дмитрий Овчинников
    09 ноября 2020, 20:50
    Если я вижу у коллег в параметрах MA цифры не кратные общепринятым отрезкам времени, я понимаю, что это «оптимизация».
    Тоже самое можно применить и к любому другому параметру. Если у параметра не прослеживается физический смысл, то это....

  • Jkrsss
    09 ноября 2020, 22:00
    Три базовых теста проверки ограничений на параметры моделей.
    Тест Вальда, тест правдоподобия и тест множителей Лагранжа. Считаются оптимальными критериями.  

  • robot_bsk
    09 ноября 2020, 22:23
    Возможно ответ на вопрос будет в этом видео (смотреть с 36:50 — по 38:00): 
  • wrmngr
    10 ноября 2020, 00:43
    Параметрическая подгонка это ещё полбеды. Далее идёт «идейная». Если перебрать достаточно много простых гипотез без параметров, то с вероятностью 100% найдется одна простая с хорошими результатами, но не имеющая обобщающей силы
    • Дмитрий Овчинников
      10 ноября 2020, 20:29
      wrmngr, 
      интересный комментарий. А в чем разница между идейной и параметрической подгонкой, если ни одна, ни другая, не дают возможности использования системы на других инструментах/таймфреймах?

      Или даже не так.
      Разве параметрическая подгонка имеет обобщающую силу?
      • wrmngr
        11 ноября 2020, 00:43
        Дмитрий Овчинников, сумбурно изложено. причем здесь другие инструменты? Имеет в некоторых случаях
        • Дмитрий Овчинников
          11 ноября 2020, 01:01
          wrmngr, 

          попробую зайти по другому.

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

          Вопросы:
          1. Чем это плохо, почему это хуже, чем подгонка параметров и какое отношение это вообще имеет к подгонке параметров (в каждом из вариантов  и желательно в сравнении с параметрической подгонкой).
          2. А что такое «обобщающяя сила» в вашем комментарии (может быть я неверно вас понял)?

          Заранее благодарен за развернутый ответ!
          • wrmngr
            11 ноября 2020, 17:25
            Дмитрий Овчинников, вы несколько вульгарно смотрите на процесс. слишком долго расписывать.
            1. Плоха любая переподгонка, неважно какого она типа
            2. Обобщающая сила это, то что отличает плохую модель от хорошей. Хорошая способна давать статистически значимые прогнозы за пределами обучающей выборки (только не надо писать здесь про OOS, walk-forward, k-fold и прочую малополезную чепуху)

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

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