[Тут был большой кусок текста с деталями разработки алго, я его вырезал, т. к. он УЖ СЛИШКОМ забористый вышел для стороннего читателя, да и наговорил там лишнего, поэтому начало такое будет… не плавное.
Для 99% читателей вообще советую сразу прыгнуть к заголовку «Изменчивость рынка» и не парить себе мозги моими нудными рассуждениями/гипотезами про curve fitting ⬎]
… и пока идёт время, у меня это подвешенное в воздухе нововведение, как я уже говорил в предыдущей части, проходит модерацию/акцепцию дефолт-системой мозга (ДСМ)… Она подсознательно её там как‑то крутит в моей голове, и иногда бывает так, что со временем отторгает, т. е. я ни с того ни с сего понимаю, что это противоречит чему‑то более важному и не встраивается в мою «экосистему». Или прям жопой чую, что это пахнет подгонкой 🧐
Понятно, что нет смысла зацикливаться на неразрешимых (в моменте) примерах, надо делать костыли, чтоб можно было двигаться дальше, но я опишу, как они в итоге зачастую разрешаются.
Т. к. логика в разных аспектах часто бывает похожа, то, если не удаётся решить какой‑то конкретный вопрос, стоит подвесить его в воздухе (вставив костыль), потому что со временем будет получен опыт похожей логики в других аспектах, что может подсказать правильный ответ. Само по себе висение в воздухе не приведёт к правильному ответу, разве что ДСМ сможет собрать пазл, но если даже для ДСМ не хватает частей для сборки пазла, они могут появиться при разработке других аспектов, и тогда станет понятно, как разрешать и подвешенную в воздухе ситуацию.
Приведу хоть какой‑нибудь пример. Проще не с логикой, а с константами ⬎
Допустим, я убедился, что какой‑то фактор создаёт мультипликатор для расчёта силы поддержки/сопротивления, тогда возникает вопрос: «Насколько конкретно?» На 10%? На 20%? На 100%? Подвешиваю вопрос в воздухе. И потом нахожу чёткое значение мультипликатора для совершенно другого свойства совершенно другой сущности (т. к. примеры менее зашумлены, и значение сразу бросается в глаза). Потом так же определил ещё один мультипликатор для совершенно другого, и, несмотря на совершенно разные плоскости применения, они совпали по значению! И я думаю: «Ага… а дай‑ка я применю это значение мультипликатора к моей подвешенной в воздухе проблеме…», и — хуяк — что бы вы думали?
Значение подходит и сюда с точностью до сраных тиков и миллисекунд (и не в одном примере, а в массиве примеров)!
Для меня это ещё один аргумент, уменьшающий для меня вероятность подгонки. Я слишком туп, чтобы изучать такие работы, как эта (и это вдогонку), я там ничего не понимаю (но мой напарник-прогер одобряет), поэтому у меня есть свои представления о том, что более вероятно относится к модели реальности, а что есть оптимизация случайных значений.
По моим представлениям, подгонка под историю разных параметров не имеет взаимосвязей НИ С ЧЕМ — ни в рамках одного объекта, ни между принципиально разными объектами — и является уникальным статистическим решением для каждого параметра в отдельности. Короче, по‑простому ⬎
Если взять разницу между двумя МАшками типичного алготрейдера, т. е. насколько один период больше другого, то вот это значение n будет просто случайной величиной, и она с вероятностью в 99,9% больше не встретится нигде в коде. Потому что, как правило, нет никакой взаимосвязи между ними вообще, и больший период не получен с помощью какого‑то стандартизированного мультипликатора от меньшего периода, а они оба получены случайным образом как дающие лучший статистический результат на истории. Возьми другой инструмент или таймфрейм — там эти периоды могут быть другими. Если же МА одна, то для неё невозможно взять значение из чего‑либо другого.
.. .
Почему так получается? Потому что среднее значение цены за последние n баров (причём n — константа, не меняющаяся под конкретные обстоятельства) — это абсолютно от балды выдуманная производная цены, которая не входит в какую бы то ни было модель рынка и механику ценообразования (или входит случайным образом со случайным исходом). Поэтому и оптимальные периоды будут на разных ТФ и инструментах разные (случайные), и, кроме как статистикой (подгонкой), определять их (оптимизировать) не представляется возможным. Там нет почвы для логики и каких‑либо взаимосвязей с чем бы то ни было вообще.
У меня же в коде нет ни одного оптимизируемого параметра, для всех ТФ и для всех инструментов один и тот же код и… (за исключением спецификации, такой как размер тика, часы торгов и т. д.) одни и те же параметры, которые я утвердил вручную максимум за 1–3 попытки (разумеется, не от балды).
Поэтому у меня возникает когнитивный диссонанс от таких вот изречений:
«Не подгоняемых систем я не знаю. А вы?» © bascomo
Кста… знаю ещё одного трейдера, у которого нет подгоняемых параметров 😉
Ну ладно, шутки в сторону. Пример с мультипликаторами — это просто частный случай. На самом деле у меня такое происходит по всем фронтам алгоритма, и именно это в выступлении на конфе Смартлаба я называл некой наработанной «эвристикой» в процессе разработки алгоритма. Отрывок моего спича:
Это позволило мне начать мыслить не причинно, а системно. И я сейчас не про торговую систему говорю, я говорю про такое понятие, как «системное мышление», это в смысле не трейдерский термин.
Раньше открытию нового всегда предшествовала причина — как правило, столкновение с какой‑то проблемной ситуацией в поведении цены, которая выходила за рамки моего понимания. Сейчас же я могу двигаться за рамки своего понимания с помощью некой эвристики, тем самым предвосхищая проблемные ситуации.
В общем, когда я понял принцип, у меня появилась некая эвристика в нахождении новых рыночных механизмов, законов, факторов или в нахождении в привычных вещах новых свойств, а также эвристика по решению всякой проблематики в процессе разработки. Проще говоря, чем больше я разгадываю этих загадок, тем быстрее приходит решение для каждой последующей… Решения часто вытекают сами собой, потому что имеют какую‑то единую логику, модель, принцип.
И тут плюс ещё знаете в чём? Это снижает вероятность переподгонки под историю всякими нафантазированными правилами с потолка...
Раз уж я задержался на curve fitting’е, давайте соберём по всем частям мемуаров мои доводы об этом и подведём итог. Можете его пропустить, в нём нет ничего нового, просто компиляция: [тыц!].
Тема про подгонку довольно холиварная, потому что всё, что я понаписал выше, можно перечеркнуть таким ответом, как: «Рынок постоянно меняется!» Исходя из этого утверждения, любое соответствие текущим правилам игры есть подгонка.
«На рынке никогда не происходит ничего нового...» © Ливермор
Сейчас я вынужден признать, что, похоже, рыночные законы и механика и впрямь никогда не меняются. Меняется лишь то, что не имеет к этому никакого отношения. Как шортила широкая публика по лоям боковиков и покупала по хаям задолго до электронной торговли, так и делает это сейчас со всеми возможными техническими приблудами: неважно — по стакану/ленте, по графику или по новостям, а может, и по корреляционным матрицам или по «обучившимся» нейросетям 😜
Если рынок меняется — например, всё время на хороших новостях рос, а на плохих падал… а потом вдруг изменился, — то это ТОЛЬКО ДЛЯ ТОГО, чтобы оставаться неизменным в своей истинной природе, чтобы все также покупали по хаям и шортили по лоям. Если для этого рынку нужно измениться в каком‑то его проявлении, он сделает это, не нарушая законов, по которым функционирует. Рынок меняется в том, в чём может, чтобы глобально оставаться неизменным в своей истинной, базовой, фундаментальной модели.
Зима меняется на весну, потом на лето и осень, но глобально на длинной дистанции всё остаётся неизменным… Я намекаю на то, что чем более дальновиден и опытен трейдер, тем менее изменчив рынок для него.
Дальновидность и адекватность просто отсеивают всю шелуху, которая может меняться, видоизменяться, как глина под ногами рынка, и тем самым трейдер выбирает для себя более твёрдую на длинной дистанции почву.
Бэктестов не проводил, но вручную много раз смотрел Nikkei/Dow с ~1900 года и не смог найти причин, чтобы не торговать их с самого начала своей текущей ТС.
Т. е. ~100 лет назад для меня было всё то же, что и сейчас. И считать, что рынок изменился, т. к. какие‑то паттерны в стакане, «линии тренда», «голова и плечи» и «ударные дни» Резвякова перестали работать, — для меня сейчас просто смешно. Это не имеет отношения к неизменным законам рынка, которые и есть тот самый Святой Грааль, постичь который не дано широкой публике.
Мне, может быть, тоже не дано. Я, несмотря на весь свой апломб и на то, что положил на это всю свою жизнь после универа (уже 17 лет), на самом деле до сих пор нахожусь в начале пути. И несмотря на все свои убеждения и ожидания, на выходе в самом конце могу получить то же, что и широкая публика 😂🤦🙈 Но для меня ставки сделаны, господа, ставок больше нет.
Надеюсь, что скоро я смогу выяснить, кто из нас псих 😉 Все вокруг уже давно сложили свои бумажные самолётики, которые даже летают… а я до сих пор строю какую‑то космическую ракету, и пока она не полетит, то я даже в собственных глазах кажусь реально сумасшедшим.
Ладно… не всё так безнадёжно ‑_^
Я же уже проговорился, что собираюсь выходить на тропу войны трейдинга 😈
На этом пост заканчивался, но я тут подумал… Насколько же определяющее значение для развития имеют две составляющие в правильном балансе:
Если нет адекватной базы, то можно уверовать в любую чушь: зацените мой анализ 2007 года, и ведь веровал же! 🤣
С другой стороны, даже адекватная база без достаточной веры в неё неизбежно будет отвергнута по одной простой причине: невозможно СРАЗУ самостоятельно осознать максимально полную, продуманную во всех деталях базу, а вероятность получить её путём эксплицитного обучения крайне мала. И чтобы довести зачатки адекватной базы до ума, до необходимого уровня целостности и детализации, нужна вера в неё, ибо зачатки поначалу нежизнеспособны!
Адекватность базы, возможно, познаётся в сравнении, а оно аккумулируется с опытом. А может быть, познаётся в том, поддаётся ли она развитию или нет. Как бы то ни было, я пока не могу объяснить, почему, когда рынок изменился и перестал ходить по каналам, я понял, что это чепуха, а когда рынок изменился и перестал соответствовать зачатку той базы, которая у меня до сих пор, я подумал: «Нет‑нет‑нет… быть такого не может, надо разобраться в деталях» — и продолжил копать в том же направлении. Да, были периоды, когда рынок будто изменился и для моей текущей модели, например: рынок какое‑то время был более инертным/трендовым, поэтому когда начинал направленное движение из области «застоя», то продолжал идти и дальше. Я входил в это направление и бед не знал. Потом он перестал быть инертным, и получалось очень много «ложных выходов» из областей застоя, а я покупал по хайным хаям. Казалось бы, вот, рынок изменился и текущую парадигму нужно выбрасывать на помойку!
В итоге выяснилось, что в период инертного/трендового рынка мне просто сходили с рук непроработанные критерии выхода из области застоя. И когда я их доработал в рамках той же самой парадигмы, то стал входить направленно, когда рынок становился направленным, а не всегда. Хочу подчеркнуть, что рынок на самом деле никогда не менялся в критериях смены своего состояния, потому что доработанные критерии, как оказалось, работали и раньше на истории, просто их незнание какое‑то время сходило мне с рук, и я «бычий рынок путал со своей гениальностью».
Подобные «изменения» на рынке ещё не раз случались в разных аспектах моей модели, моих представлений о рыночной физике и её механизмах, и можно было бы подумать:
«Ну вот же, рынок постоянно меняется, и нужно меняться вместе c ним!»
Но каждый раз выяснялось, что рынок никогда не менялся, а просто оголял мои пробелы в понимании. И когда я заполнял эти пробелы, продолжая развиваться в рамках той же самой модели, всегда оказывалось, что я просто детализировал его неизменную модель, а не делал каждый раз новую уникальную подгонку к новым уникальным правилам игры. Правила игры никогда не менялись, иначе новая детализация‑подгонка сливала бы на предыдущих исторических периодах, но она не только не сливала бы, но и давала бы лучшие результаты, если бы я её применял раньше!
Короче, ещё раз для наглухо запаянных танкистов: когда рынок якобы изменился, варианта на самом деле два:
Поэтому… для кого‑то рынок действительно постоянно меняется, а для кого‑то он не меняется никогда, а только лишь проявляет те грани, те правила игры, которые трейдер раньше просто не замечал.
Ну, тут можно принять, что солнечные день — это как бы хаи, а дожди — лои, и участники делают ставку на эти события.
Когда я рассчитываю на какие-то цены акций, то говорю себе, что дождь и солнце (лои и хаи) всё равно когда-нибудь наступят, даже если я не могу точно предсказать когда. Это избавляет от нетерпеливого отношения к рынку.
Тима говорит, что это утопия)
Я так жж вёл с 2007 по 2013? уже не помню… только вот рекламу не продавал(( мне что-то в голову это не пришло даже в то время )))
Сейчас интересны онлайн-торговля, стримы и ответы на вопросы.
Типа «Мой путь на Олимпию» или «мой путь к $1 млн.»
А там и интеграции и рекламы подтянутся когда за 100 тыс. подписоты перевалит.
Все же думают, что если он смог — то и я смогу.
Когда счет удваивается на твоих глазах -это вштыривает невероятно.
Ведь ты тоже можешь повторять.
Это как ЛЧИ. только длинной в несколько лет.
Боишься конкуренции? 😈
Во второй части ещё написал, что ручками похоже и придётся, просто робот анализ вместо меня будет строить… ну и сам анализ пободрее намного, чем раньше.
)
Как как… разметкой на графике… выделить все поддержки, сопротивления, флеты, тренды, рассчитать силу и потенциал... В чём тут может быть прикол
.
Вот поэтому для тебя и утопия, если ты считаешь, что робот не нужен и всё можно на глаз сделать)
.
Ты только заметил?)))) На 9ой части?)
alexandro foenix,
Будет голосом машиниста в нужный момент говорить:
Как ты быстро меня на чистую воду вывел((((
Я такого не ожидал!
Блин, чувак, оставь меня.
Я за несколько месяцев забыл уже весь код, я после 11 части мемуаров возвращаюсь к кодингу и буду вкуривать что там блядь вообще щас по итогу сделано, а что нет, и что нужно сделать, что бы побыстрее подготовить его к реал-тайм работе, вместо бэктестов.
Когда вернусь к торговле — тогда и будем зарубы делать
К И. В. Сталину в кабинет входит
дежурный офицер.
— Товарищ Сталин, к Вам пришел
человек, который предсказывает будущее.
Сталин, выпуская дым из трубки:
«Расстрелять!»
— Товарищ Сталин, может снача-
ла допросить?
Сталин: «Зачем? Он мошенник.
Знал бы будущее, не пришел бы».
Баффетт пишет в рецензии к книге Грэма, что покупать надо на лоях, а продавать на хаях, и указывает — эта простая мысль либо доходит до человека, либо не доходит никогда, толпа на рынке тарится на хаях как не в себя. Много рассуждает про маржу безопасности — надо не просто купить дешевле, а постараться прям совсем дешево)))
Ну ок, думаю я, грааль найден, только как его воплотить?
За много лет наблюдения за рынком поняла почему эта простая мысль вызывает уныние от того, что её сложно применить, несмотря на техническую простоту. Действительно, видим низкие цены — покупаем, в чем проблема?
Дело в том, что покупать на хаях — это покупать в условиях оптимизма, это просто. А покупать на лоях тяжело — не случайно рынок упал. Рынок отрастет, но мало кому хватает смелости на покупки на двойном дне, например при ковиде.
ММВБ 3500 это уже хай, или очередной хай? Ну так то да это хай, но еще не абсолютный хай
Этот финт позволяет не впадать в эту псих.ловушку о которой вы. Просто не смотрите на график, смотрите на баланс в портфеле, он подскажет вам где вы на графике, на хаях или на лоях.
smart-lab.ru/blog/861238.php
Вспомнился фильм Ким Ки Дука «Весна, лето, осень, зима… и снова весна»
MatrixLis, во-первых, у меня куски исторических данных были не такие свежие, я сейчас типа в отпуске от кодинга… видишь, мемуары пописываю. Во-вторых, я все силы положил не на то, чтобы он сам сделки делал и торговал, а на максимально-адекватный анализ… чтобы бычьи тренды начинались там, где они начинаются, и заканчивались там, где они заканчиваются… я это чисто визуально по построенному анализу на графике вижу, мне сделки наносить не обязательно для этого. Ну и с флетами тоже самое. И в итоге, те куски данных что у меня были для отладки правил анализа вылизаны настолько, что там даже теоретически не может быть ни одной убыточной сделки, их для этого нет смысла наносить))))))
А как будет out-of-sample — я сам узнаю только когда вернусь к торговле ближе к концу лета или около того, и торговать я всё равно буду вручную, принимать решения сам на основе анализа, который будет строить мне робот, поэтому заранее увидеть статистику тоже не возможно. Короче, *ля*ь, интрига…
Согласен 100%. Но если будут тесты на твоих роботах, выкладывай, очень интересно)
Почему))) Ты так переживаешь, будто это твой робот)
У меня был период, когда я занимался таким, правда длилось это несколько месяцев, а не лет. Строил систему на основе чистой логики, анализируя сделки на ограниченном куске истории. Мозг тоже взрывался от решения подобных задач, как вы описываете. Сложность системы (и размер кода) выросли до каких-то монструозных масштабов. Убыточных сделок на этом участке вообще не стало. Потом прогнал на соседних: убыточные появились, но в целом торговала нормально. А потом добавил пару лет до и пару лет после — полный шлак. Сравнил результат с затраченными усилиями и решил на этом закончить.
Тем не менее, думаю, ваш подход имеет право на жизнь. Но только если регулярно проверять результат на новых (достаточно больших) участках OOS. Иначе будет как в той статье, которую вы не захотели читать («the probability of backtest overfitting»). Там кстати объясняется, почему так происходит.
Не «не захотели», а не хватило мозгов, чтобы даже Abstract осилить))) хАХахахааха