Блог им. melamaster

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

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

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

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

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

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

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

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

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

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

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

    т.е прогноз реально усложняется и вероятность точного прогноза резко падает
    т.е прикинем что точность каждого прогноза 70%=0.7
    для первого случая — так и останется точность 70%
    для второго случая точность прогноза будет 0.7*0.7=49%
    а для третьего варианта с тейком и трейлингом точность прогноза 0.7*0.7*0.7=35%
    мораль в том… что я не ванга и прогноз даю только вверх или вниз
    avatar
    Надо чтобы весь разумный спектр параметров давал требуемый результат, возможно с небольшими вариациями. Если же одни параметры дают хороший результат, а параметры рядом, плохой, то это будет система-казино.
    Калибруеют под идею, без идеи — подгонка, имхо.
    avatar
     Критерий Шварца/Акаике?
    Сергей, на 101% согласен!
    Для меня калибровка — это то, что в пределах здравой трейдерской логики торговой системы. Как только параметры начинают выходить за пределы стратегической логики по месту или по сигналу — это уже переоптимизация, подгонка, ЭТО долго работать не может. Это типа как уловить кратковременную неэффективность текущего рынка, которая не обязана быть вечной или хотя бы долгой.
    Если же алгоритм четко соответствует задуманной логике по месту и сигналу, параметров может быть хоть миллион.

    Кстати, ТСЛаб дает пример робота по ТС без параметров. Я там насчитал не менее 6-ти параметров. А если учесть, что ни одна ТС не может долгосрочно работать без определения места где брать сигналы, то там еще десяток надо добавить — такая вот будет… безпараметрическая ТС. ))
    avatar
    Наверное почти никто не откажется от системы без параметров, которая идеально или хотя бы приемлемо торгует любой инструмент. Мне кажется, что такая система ровно одна и она невозможна либо никому недоступна — заглядывание в будущее. Иным способом получить безпараметрическую и не нуждающуюся в оптимизации систему нереально.
    Не только возможна, но и не требует ни оптимизации, ни подгонки, ни подбора параметров.
    По крайней мере, тесты работают на любом инструменте без каких либо изменений системы.
    Реал система пока в стадии проектирования. Но, по прошлому опыту уже могу сказать, что реал не сильно будет отличаться от тестов.
    ЗЫ кстати, о переобучении. Если вы имеете дело с реальными зависимостями, а не плодами вашего воображения, то переобучения быть в принципе не может.
    avatar
    А чем не нравится классическое определение из МЛ: пока в процессе обучения перформанс модели на CV-части данных растет — это калибровка. Когда перестает расти и начинает падать — это переподгонка? Просто и максимально соответствует тому, что нам надо от модели.
    avatar
    MadQuant, да, стопроцентов. Машин ленинг на многие вещи вправляет мозги).
    avatar
    Сергей Сергаев, еще параметр это выбор бумаги

    т.е бумагу выбрал для торговли — это уже параметр

    avatar
    Можно построить тепловую карту результатов перебора. Если выбранные параметры лежат на карте в области экстремальных значений и эта область занимает < 20% всей тепловой карты, то думаю, что это уже переподгонка
    avatar
    Андрей К, тепловую карту по какому диапазону составлять будем?) Например, можно период МА брать для оптимизации вплоть до миллиона
    avatar
    krolix, по диапазону перебираемых значений. Если разраб стратегий решит, что ему нужно миллион, пусть пробует миллион =) Арендует мощности и вперед 
    avatar
    А если иначе взглянуть, что какая-то степень подгонки всегда есть, даже в области где вроде бы ее нет? Это же более реалистично. Вопрос останется ли система прибыльна, когда подогнанная часть обнулится.
    avatar
    Это филосовский вопрос. О том как ставить эксперимент и как обрабатываеть его результаты. Есть полярные мнения: Одни говорят, что сначало придумываем модель, а потом экспериментом(обрабатываем данные заранее заданым алгоритмом) подтвержаем или отбрасываем модель. Другие (например соврменный ML) предлагаю копать данные пока не будет получен нужный результат.
    На этот вопрос общего ответа нет.

    avatar

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

     

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

     

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

     

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

    avatar
    Параметры всегда есть, хоть и не в строгом TS-Wealthlab'овском смысле — время входа, направление сделки, время выхода. Ну и рынок, инструмент.
    avatar
    да, самое главное понятийность, а в договоре понятия, а между делом понятийные договоренности возможно и решают

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

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

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

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

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

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

    avatar
    WFO тест должен показать
    OOS же. Зачем выдумывать велосипеды.
    avatar
    Если я вижу у коллег в параметрах MA цифры не кратные общепринятым отрезкам времени, я понимаю, что это «оптимизация».
    Тоже самое можно применить и к любому другому параметру. Если у параметра не прослеживается физический смысл, то это....

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

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

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

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

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

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

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

    теги блога Sergey Pavlov

    ....все тэги



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