Блог им. AleksandrBaryshnikov

Почти всё есть курвафиттинг

    • 17 декабря 2023, 00:04
    • |
    • bascomo
  • Еще
Доброй ночи.

После отпуска я много размышлял о том, почему же я, при таких отличных результатах на тестах, да ещё и с кучей перекрёстных проверок, никак не решусь запустить торговлю на всю котлету. А потому что не хочу быть слившим :) далее — подробнее.

Собрал в кучку мысли об этом, и фиксирую их для моей истории.

Почти всё есть курвафиттинг

Граница между уверенностью и самоуверенностью
В том, что разработанный мною подход работает в краткосрочной перспективе — у меня нет сомнений, это было проверено на живом рынке и живыми торгами. Однако, тут самое время собирать камни вспомнить о моей цели: абсолютно автономная торговая система, за которой не нужно присматривать месяцами или даже годами. И вот в том, что я этой цели достиг — я вовсе не уверен. Ибо подход слишком сложен, и как бы хорошо выдуманная мной система ни зарабатывала на тестах и даже в первое время реальной торговли — сливать она будет ещё быстрее, если звёзды (ха-ха-ха, и тут астрология) образуют, скажем так, новую конфигурацию. Эта самая ситуация регулярно происходит и с трейдерами, и, тем более, алготрейдерами, которые тем более не имеют возможности так же оперативно подстроиться под изменения в окружающей действительности, как и человеческий мозг.
Почему же тогда люди сливают депозиты, если это так? Думаю, потому что самоуверенны слишком, особенно, «живущие с рынка» — мне прямо покорябало слух, когда я такое издевательство над языком услышал; так их с тех пор и зову — «срыночные». Самоуверенность проистекает от незнания и от неспособности / невозможности увидеть всю картину целиком. Действительно, если некто придумал торговую систему и начал ей торговать — без разницы, руками или алгоритмом, — и она приносит прибыль — возникает сильный соблазн влить в неё побольше. И чем дольше она торговала прибыльно, тем больше доверия к ней и терпимости к просадкам, которые, увы, могут оказаться не просадками, а потерей капитала. Маржин-колл близок тогда, когда его совсем не ждёшь.

Собственно, я ищу эту уверенность. Может оказаться и так, что на рынках её не найти, но в это нужно поверить и убедиться лично. Время такое — верить никому нельзя, хотя это утверждение справедливо для любого времени. Огромное количество людей убеждает себя и других в обратном — что заработать на рынках легко и просто. Эпизодически — скорее «да», но 50/50, а систематически всё куда хуже. Кто-то говорит, что вопрос слива — это вопрос времени, а другие продолжают бодать стаканы и свечные графики. Первые поверили, что стабильно и долговременно зарабатывать на рынках невозможно, вторые пока ещё не разочаровались в своей обратной вере.

Подгонка и overfitting
Нет никаких сомнений в том, что мои торговые системы, как и подавляющее большинство торговых систем и прочих трейдеров, вне зависимости от того, как они торгуют, суть подгонка под определённый рынок и его условия. Даже если торговая система одинаково хорошо зарабатывает на нескольких различных инструментах, это не меняет сути — просто она подогнана под несколько. Всё это ставит меня перед очевидным фактом: рано или поздно возникнет ситуация, когда ТС, найденная методом подгонки, перестанет работать в прибыль. Может, временно, а может, и навсегда. Впрочем, и за «временно» она вполне справится с тем, чтобы слить всё, что нажито непосильным трудом. Своевременно отправлять в хоспис умирающую и запускать свеженькую — это отдельная грань трейдерского искусства, и по этому пути я только начал движение, и не очень уверен, что хочу продолжать. Почему? Потому что отключать и включать торговые системы по их статистическим параметрам — это очередная подгонка, только более высокого уровня. Всё ещё больше запутывается, и кто меня потом будет распутывать?
Отсюда и растут рожки и хвостики моих желаний поиска адаптивных систем, которые подстраиваются под рынок.

Подробнее о подгонке
Чтобы понять, как можно — и возможно ли — построить ТС, которая заведомо не будет подогнана под рынок / инструмент, нужно понять суть вопроса. Для себя я определил критерий «подгоночного» класса торговых систем, про который уже писал и ещё раз упомяну ниже. А чтобы было яснее, возьму такой пример.
Допустим, есть некоторая ТС, для которой жёстко определены условия входа в позицию и выхода из неё. Не важно, чем эти условия определены — подойдёт пример из классики со средними скользящими и их пересечениями. Что бы там на рынке ни происходило, торговые сигналы будут детерминированы поведением этих скользящих. Я для себя называю такие системы линейными. Их алгоритмы входа и алгоритмы выхода не меняются в зависимости от состояния рынка и движения цены. Меняются лишь точки входа, но сами алгоритмы являются константой.
Подгоняй мы лишь точку входа или точку выхода — это было бы полбеды, но, оптимизируя такую торговую систему, мы подгоняем и точку входа, и точку выхода. Это и является проблемой, на мой взгляд, потому что мы одну вероятность (допустим, 0.5) умножаем на другую (допустим, 0.5) и результат движется совсем не в том направлении, который нам интересен, а ровно наоборот (0.25).
В этом же, кстати говоря, и проблемы применения НС и ML в трейдинге. Они предскажут точку совершения сделки без связи с парной точкой фиксации сделки.
Если убрать из такой системы детерминированное правило выхода (как в случае со средними скользящими), заменив его на стоп, то получим уже систему, которую я называю полу-нелинейной. Если стоп будет скользящим, получим уже (условно) нелинейную систему. Эта классификация спорна, а я хочу лишь подчеркнуть, что если правила входа и выхода — статические, то такие торговые системы я бы называл линейными, а если динамические — то нелинейными.

Более и менее подгоняемые системы
Суть в том, что когда мы на этапе тестирования торговой системы на истории детерминировали правила входа и выхода, то такая система будет более подгоняема, чем если бы мы детерминировали только правило входа или (пусть и звучит безумно) только правило выхода. Если мы знаем, когда мы войдём в сделку и когда выйдем из неё, как в случае скользящих, вероятность подогнать параметры будет выше, а вероятность поломки такой системы на реальных данных — выше. А если у нас детерминирован только вход, а выход обусловлен динамикой позиции, то тогда у нас больше шансов найти повторяемые рыночные паттерны, вход на которых даёт большую вероятность успеха.
Не подгоняемых систем я не знаю. А вы?

Итого и цели
Наверное, уже понятно, что я хочу сказать. Успешность сделки зависит от входа и выхода, но только лишь хороший вход не гарантирует успешность сделки. Быть может, вероятность распределена в ином соотношении, а не 0.5 на вход и 0.5 на выход, и очевидно, что вход влияет на выход, но по дороге из баров от входа до выхода у детерминированных линейных систем есть, как правило, несколько возможностей, которые они — эти системы — неминуемо пропустят в силу своей детерминированности.

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

Минутка философии
Не так, чтобы было сильно сложно предсказывать точки входа, вероятность выхода в прибыль или в ноль для которых существенна. Но это совершенно другая архитектура мышления — она не про «заработать больше», а про «не закрыться в убыток». И она в другой парадигме мышления, которой вроде как не учат. А чему учат? Планируйте вход и выход одновременно. Рассчитывайте соотношение прибыль/риск. Выставляйте стоп-лоссы и тейк-профиты. Видите ли, если бы мы сразу начали торговать алгоритмически — возможно, это было бы по-другому. Но вначале были ручные трейдеры. И они не могли думать о том, что делать с позицией после того, как вошли в неё. В голове всё быстро не посчитаешь, да и позиций, видимо, не одна. Алготрейдеру хорошо бы вынести из головы все парадигмы ручной торговли и начать с чистого листа или хотя бы залить прошивку без багов, но увы. Имеем то, что имеем.

Про сливы и мои опасения
У меня уже были и недельные обороты в 60 млн от алготорговли акциями, и ежедневная прибыль около 15к на депо 2млн, и сотни сделок на одном минутном баре туда-обратно с минусом в 40-50 тысяч, и проскальзывания от всаживания в одну акцию 6 млн, и многое другое, и это в 20 и 21 году. Так что я не то, что бы не торгую — я не торгую тем капиталом, которым бы хотел. Я никогда не сливал и у меня нет вот этих душещипательных историй из прошлого, и мне хотелось бы в таком состоянии и остаться, даже если торговать в том режиме, в котором мне хочется, и не получится. Значит, трейдинг не для меня и попробуем что-нибудь другое.
Более 15% от депо у меня просадок не было и хочется, чтобы дальше было только лучше. А для этого нужна уверенность, а не самоуверенность, и минимизация влияния подгонки. То ощущение, когда на собственном опыте понимаешь, что лучше долго запрягать, чтобы потом быстро ехать.


И, как обычно, доброй ночи вам и приятных снов и берегите капитал — он у вас один! :)
★4
26 комментариев

«Computer Analysis of the Futures Market»
Charles LeBeau and David W.Lucas.

Эти Друзья утверждают, что в тестах мы тестируем не входы, а Выходы и далее по тексту.

Книжка не плохая, для любителей навного тестирования.

avatar
Какие такие «отличные результаты на тестах»? Какой фактор восстановления? 
avatar
Проблемы, о которых ты пишешь, обусловлены простой причиной — нет ТОЧНОГО решения для движения цены. Той волшебной формулы, закодив которую мы получили бы кнопку БАБЛО. 
   Чтобы дальнейшие мои мысли были наглядно-понятны, прокомментирую их в терминах вот такой простенькой задачи: едет авто и надо определять его координаты, только мы знаем лишь уравнение равномерного движения с постоянной скоростью. Вход/выход — банально получить 2 координаты.
   1. Авто едет равномерно и по нашей оси X. Идеальный вариант. Все считается верно. Аналогия для биржи — наш алгоритм дает прибыль. 
   2. Авто продолжает равномерно ехать, но не по оси X. Достаточно ввести поправочный коэффициент в расчеты и они вновь верны. Аналогия для биржи — оптимизация параметров того же алгоритма.
   Оба первых пункта — это область линейного решения. Проблема вовремя понять изменение движения. И никто не гарантирует, что даже эти два банальных случая не перемешиваются неизвестным нам способом.
   3. Авто продолжает равномерно ехать, но не по оси X и вдобавок — дорога начинает петлять. Если знать последовательность и продолжительность изгибов — то можно ввести динамические корректирующие коэффициенты и получить приемлемый результат. Если знать. Аналогия для биржи — смена интервала, оптимизация параметров того же алгоритма для нового интервала. Точность решений снижается. 
   4. Авто начинает ускоряться дискретным образом. Все ваши линейные расчеты вместе с оптимизированными параметрами, динамическими коэффициентами, разными интервалами и проч. — идут в топку. Аналогия для биржи — оптимизация параметров того же алгоритма по сути ничего не дает, произносятся слова «рынок изменился», «мои боты сломались», «волатильность неправильная», «мои стопы выносят — это заговор».
   5. Ну и самый красивый и реальный вариант — авто совмещает все перечисленные выше действия, плюс иногда водителю просто хочется (аналог новостей) получить драйв или подрезать кого-то. Аналог для биржи простой — это и есть движение цены. 
   Последние три случая — это нелинейная область решений. Просто коэффициентом, оптимизацией, интервалом и проч.  здесь решение не улучшить, требуется именно нелинейный член (в хорошем смысле этого слова) в расчетах. Аналог для биржи возможен в прямом смысле, но требует корректного выбора интервала и понимания что точность расчета изменилась. 
   Получилось много текста, ограничусь этими мыслями, хотя хотел сказать немного больше и еще немного в бок...
   Какие же выводы? 
    — в алго нужен инициируемый дискретно блок, определяющий текущий характер движения цены
    — одной линейной областью (в моей классификации) не обойтись, и риск-менеджмент для нелинейной области иной
    — по хорошему: нельзя зацикливаться на конкретном интервале, это тоже параметр (за исключением совсем коротких фреймов), надо иметь несколько типов расчета под разные характеры движения цены; как вариант это можно отсекать фильтром и банально не торговать
    — система из большого количества инструментов, интервалов и проч. смягчает часть нюансов, но одновременно и уменьшает управляемость от  них по той же причине.
Владимиров Владимир, да рынок это не просто 1 график ohlc, есть еще волатильность вертикальная, волатильность горизонтальная, скорость с которой он перемещается от точек buy и  sell, итп (неизвестные) характеристики. Теоретический адаптивная МА это грааль. Но исходя из того, что мы по прежнему не знаем что есть «Тренд», то у одного и того же графика имеется множество решений





Добавим сюда переходы адаптивного периода к периоду. Переход должен быть плавным или скачкообразный? Если подумать логический то плавным. Но там где плавный переход там запаздывания.
avatar
22022022, «Что есть тренд» (в терминах конкретного интервала) мы все знаем, особенно легко это делается по левой части графика цены ))). А вот определить достаточно быстро и не пост-фактум его наличие и его окончание — это большой и нетривиальный практический вопрос. 
   «горизонтальная волатильность»… Это какой-то новый для меня термин… Наверное вы вкладываете в этот термин разумный смысл, но чтобы вас понимали другие — все же лучше использовать общепринятую терминологию. Классически волатильность — это изменение цены от какого-то параметра, обычно параметром является период времени. С этой точки зрения волатильность сводится к разнице High и Low.  
22022022, Где-то можно про это подробней почитать? Как-то будто бы это перекликается с некоторыми моими идеями, но не уверен, что правильно понял, про что здесь.
avatar
Replikant_mih, думаю да, сам не читал. Всего лишь спекуляция и личный опыт. Линейные ТСки которые откурвлены под определенную волу, и др.параметры «ломаются» при их изменениях. Под «горизонтальной волой» имею ввиду гармошку которая то разжимается то ссужается и так же «ломает» линейные ТСки которые были откурвлены под определенные параметры.
avatar
22022022, Да, тоже сейчас копаю в эту сторону. Есть какие-нибудь идеи как все это формализировать? 
avatar
Fade, нет я не копаю в ту сторону и не буду. Представляю с чем придется столкнуться.
avatar
Я уже, видимо, алгоритмически заматерел. Раньше бы кёрвфиттинг точно бы стриггерил внимательно прочитать текст, сейчас уже нет. Видимо есть 3 стадии — 1. Тебя это не триггерит потому что не понимаешь про что это и/или не осознаешь важности, 2. Тебя это триггерит, потому что понимаешь важность, поэтому начитываешь, 3. Тебя это не триггерит, потому что понимаешь что с этим делать, имеешь рабочие инструменты, и ничего нового уже давно не видел на эту тему.
avatar
Replikant_mih, там между строк не столько про него
avatar
bascomo, Да в целом как-то охладел к внешней информации, чем выкристаллизованней подход, тем меньше что-то внешнее интересует. Когда он только выкристаллизовывался — жадно всё впитывал.
avatar
Replikant_mih, Пора рассказывать, значит :))
avatar
Я бы предложил в принципе отказаться от применения индикаторов и осцилляторов, т.к. они строятся на прошлых ценах и все системы, использующие их в алгоритмах прибыльны исключительно из-за подгонки.
Но сейчас получу волну негатива от сторонников ТА.
Кто бы что ни говорил, это не работает или работает какое-то время...
Лично я управляю только риском и мне неважно куда пойдёт цена. Иными словами, если убыток достиг определённой суммы, то я переворачиваю робота для торговли в другом направлении.
avatar
Fairman,
" Иными словами, если убыток достиг определённой суммы, то я переворачиваю робота для торговли в другом направлении. "

И вуаля — после стопосъема рынок весело шуршит в обратном направлении?))
Осторожный спекулянт, ну и что? Как вы это предскажете? Всегда вероятность 50/50, поэтому и управляем риском, ведь если рынок пойдет дальше против вас, то будет совсем невесело, а этот убыток я отобью за день-два
avatar

1. Это всё 'горе от ума'. Если система работает хоть 2-3 недели, хрен с ним как она называется 'курв' или 'некурв' фиттинг.
2. Есть долгосрочные закономерности ('неэффективности') в ценах, объемах из-за гепов, сезонностей, корреляций и прочего. Можно на этом делать системы, будет проще.
3. Есть целый мир микроструктуры, там раздолье для творческого ума и технологий.

avatar
Нет никаких алгоритмов торговли. Это миф или самообман. Реально, вы полагаете себя умнее аналитиков JPMorgan или BlackRock? Кто там использует алгоритмы? А ведь у них точно есть вся возможная информация....
И не надо мне говорить про квантов. Там сливаются пачками. У меня трое дипломников работали в крупных американских алго шарагах
Омг. Математики на этот счёт — хоть одним местом. Хоть простой, хоть сложной. У меня пять или шесть статей на этот счёт было и по российскому рынку, и по американскому и отдельно по Великобритании и Франции. Есть куча статей по любому рынку и любому временному промежутку.
Тупо пример: www.jstor.org/stable/2329349
avatar
Liberalism, 
вы полагаете себя умнее аналитиков JPMorgan или BlackRock?

Считать себя глупым, середнячком, глупее кого-то, пусть даже каких-то там аналитиков каких-то там BlackRock и JPMorgan — серьёзное ограничивающее убеждение. Довольно вредное. Даже если ты не умнее. А можешь быть вполне и умнее.

У меня пять или шесть статей на этот счёт было и по российскому рынку, и по американскому и отдельно по Великобритании и Франции. Есть куча статей по любому рынку и любому временному промежутку.


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

avatar
Liberalism, какая чушь. 
avatar
Liberalism, 

Кошелек украсть невозможно и я вам это в два счета докажу.

JPMorgan или BlackRock могут нанять специалистов любого профиля сколь угодно высокой квалификации, но не воруют кошельки. Значит что?

Значит кража в принципе невозможна!
avatar
Как давно торгуете?
Именно на кого?
Есть хфт стратегии всегда зарабатывающие.
Есть на старших таймфреймах зарабатывающие, но с бо́льшим риском для капитала.
avatar
читаю и не понимаю -если у вас уже есть деньги- зачем больше; если это вызов себе и обществу-есть  более полезные кейсы
я, торгую руками, и практически в ноль, не рискуя большими суммами, чисто для поддержания формы,  и, то и дело, читаю истории взлетов и падений, это похоже на детские игры только выросших мальчиков  девочек
avatar
андрей молисов, мне пока это интересно; а главное — я сильно развиваюсь в своей профессиональной области — обработка данных.
avatar
Время такое — верить никому нельзя, хотя это утверждение справедливо для любого времени.

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

теги блога bascomo

....все тэги



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