my-trade
Решил, что мой опыт разработки очень сложного алго может послужить уроком для многих, кто подумывает о чём‑то подобном 😀 Хочу предостеречь всех, кого привлекает принцип «чем сложнее, тем лучше», о котором я ещё напишу в следующих постах. Сразу оговорюсь, что сложность не ради сложности, будто фетиш какой‑то, а как неизбежное следствие попытки описать всё устройство механики рынка. В этом есть много преимуществ, но этот пост о недостатках...
Начну с оценки времязатрат. Когда я поставил на паузу трейдинг и ушёл в кодинг, я искренне был убеждён, что за полгода смогу запрограммировать всё что угодно))) Прошло уже 5 лет...
Как так может получиться? Очень просто.
Первый просчёт в том, что когда я закодил всё, что планировал, я понял, что этого недостаточно, т. к. в процессе разработки и ресёчей у меня много на что открылись глаза. ТЗ стало формироваться и увеличиваться по мере разработки.
Второй просчёт в том, что я себе примерно представлял, сколько я смогу написать кода за 1 день. Но я не учёл тот факт, что я человек )))
Первый день разработки — это одно, а 365‑й день подряд без выходных в режиме 24/7 — это уже совсем другое 😭 Поверьте, это очень‑очень разные дни по производительности...
Т. к. я уже прошёл через несколько циклов производительности (нарисовал зелёным) и полного отказа когнитивки по факту истощения (красным), то могу уже поведать вам о неприятном сюрпризе, который вас ждёт...
Со временем истощение и усталость накапливаются! Каждый последующий период для восстановления становится всё дольше, а период работоспособности всё короче и неэффективнее. Восстановиться на 100% не получается даже после перерыва в полгода. По ощущениям динамика примерно такая:
Я уже даже представить не могу, что мне нужно, чтобы восстановиться до того уровня, с которого я начал. Уехать в горы без книг и интернета на год‑два пасти овец и созерцать природу? ))
Тут нужно сделать немаловажное уточнение… что всё это свалилось на меня в возрасте 35–40 лет… Для периода в 20–25, вероятно, всё будет не так печально.
Итого по графику выше видно, что разработка в итоге замедляется настолько, что её уже просто‑напросто невозможно закончить, т. к. за несколько недель я могу сделать меньше, чем за пару дней в самом начале проекта. Или даже вообще ничего.
Но дело не только в ресурсе… не только в его истощении, а ещё в том, что со временем возрастающая сложность требует его всё в больших и больших объёмах на один и тот же временной отрезок работы.
Кривая внутреннего ресурса тут ещё без учёта обратной связи. Т. е. он снижался бы в таком темпе, если бы ресурсоёмкость была на одном и том же уровне. Но в реальности ресурс снижается галопирующими темпами из‑за мультипликатора увеличивающейся ресурсоёмкости, которая сама по себе тоже возрастает по экспоненте. Потому что комбинаторика очень проста… Представьте варианты взаимосвязей из трёх элементов… а потом из 33… А у меня в коде примерно так и получается 🙈
Разумеется, помимо этого, мне посадил когнитивку кофеин, и как следствие — полное отсутствие режима сна. Ну и куча ноотропов, после которых всегда был откат в работоспособности.
Раз уж я увлёкся тут инфографикой, то добавлю ещё динамику времязатрат
Что я попытался передать на этом графике:
На текущий момент я достиг своего предела в ТС и её реализации. И причина скорее в ресурсоёмкости реализации, именно из‑за неё на дальнейшее развитие просто нет ресурса. Большую часть времени кодинг не был проблемой, ситуация начала резко усугубляться в последний год. Сейчас задача — только привести в стабильный рабочий режим то, что уже есть, и даже она пожирает массу времени. Это болото, в котором чем интенсивнее двигаешься, тем сильнее тебя засасывает в него 😭
Конечно, я тысячу раз думал про аутсорс и всё такое, но после всех этих думок всегда оставался где‑то между «в моём случае это невозможно» и «посторонним тут не место». И я не о том, что другой человек не сможет что‑то закодить, а о том, что когда пишешь код сам, у тебя всё и начинает складываться, т. к. со временем мозг затачивается под алго‑структуру и мыслит ей, а не мешаниной когнитивной, как это происходит в естественном состоянии у людей. Просто поверьте на слово.
Но, несмотря на тёмную сторону такого алго, я убеждён, что сделал правильный выбор. То, что вырисовывается в результатах, стоило того, чтобы заплатить такую цену. Об этом я ещё напишу в следующих постах.
Прискорбно констатировать, но МайТрейд превратился в МайБлог 😭
Кто бы мог подумать...
На смартлабике публикуюсь не всегда, а по настроению. Всегда — здесь.
Продолжение в следующем посте:
«Правильный отдых от когнитивного пекла (или что я делал не так)»
Уже переживаю за Лёху…
@Biopsyhose,
ААХАХХАХАхАХАхАХаХаа
Так что ты все еще в начале пути алго! Готовься к худшему или завязывай ;)
1. Уверен, во-многом нарастание объема кодинга связано с применением плохих практик. Мне это знакомо, когда ты выучил синтаксис и что-то ещё, дальше учишься через практику — ты эволюционируешь наиболее вероятно не в лучшие практики. В то время как есть опыт поколений кодеров. Паттерны проектирования про это. Всё это в том числе про контроль сложности. Чтобы с разрастанием тебе что-то добавлять или менять было легко и приятно, а не всё больнее и сложнее.
2. Про то что сложность это плохо. Если не уметь ей управлять, сложность это плохо, поэтому люди её боятся и оправданно, потому что большинство и не умеет ей управлять. Если не уметь управлять, лучше туда не соваться. Сейчас про трейдерские идеи и рисёч и прочий алго-трейдинг, не кодинг и фреймворк.
3. Ресурс будет истощаться если нет замкнутого цикла, где сделал — увидел результат, сделал ещё — ещё результат увидел. Это гормональная природа нашего биологического вида. Если ты ломаешь это — вэлкам в выгорание и прочие радости. Что нужно: пробовать — ошибаться — получать результат — извлекать урок и на след. итерацию. Без промедлений пробовать, быстро сдаваться, учиться на ошибках и уроках, двигаться дальше. А в плане алго-трейдинга, ты должен работать как эквалайзер — ну когда столбики взлетают, горизонтальная полоска остаётся на уровне пика и медленно оседает, так вот твоя алго-торговля должна вести себя не как столбик, а как эта полоска, она должна быть на уровне наивысшего столбика, а не последнего. Т.е. у тебя есть бейзлайн — пох, пусть сначала это B&H, торгуешь его. Нашел что-то чуть лучше дальше торгуешь его, пока не найдёшь что-то лучше и так постепенно улучшаешься. Да, исследуешь, роешь копаешь, но в это время не ждёшь пока что-то дожмешь маштабное, а торгуешь самое хорошее из того что уже нарыл. Ну и декомпозиция на маленькое, простое и достижимое и наиболее вероятно работающее. Как эволюция — если бы эволюция создавала сложнейший человеческий мозг как единый проект — всё бы провалилось, а так каждый маленький шажок от одиночной клетки миллиарды лет назад до мозга был жизнеспособен в каждый момент времени это и позволило доэволюционировать до мозга.
Я приведу тебе одну аналогию, а ты попробуй её понять. Не выбрасывай сразу в мусор.
Есть такое волновое уравнение Шредингера. Да-да, то самое, частным случаем которого является пресловутый живо-мертвый кот.
Так вот. На сегодняшний день не существует аналитического полного решения этого уравнения. Есть более-менее удачные решения, выполненные численными методами.
А вот частное стационарное (!) и именно аналитическое решение приводит ко всем известным аналитическим представлениям фундаментальных законов физики разных направлений от механики и электромагнетизма до квантовой механики.
По моему мнению, искать решение задачи алготрейдинга в полном виде (а именно это, как я понял, ты и пытаешься сделать) невозможно. А вот частное стационарное решение существует, и оно — достаточно простое.
Возникает шизофренический парадокс: рынок — вещь динамическая, пребывающая в постоянном движении во всех своих аспектах, а решение предлагается стационарное! Тем не менее, это — факт. Просто вместо изменения цены dP/dT нужно взять изменение цены по самой себе, т.е. dP/dP. Тут уже один нечасто пишущий интересный товарищ как-то обмолвился насчет «безразмерной цены», взятой в качестве опорной величины. Т.е. идея пусть и нечасто, но посещает головы некоторых трейдеров…
Смени парадигму, зайди с другой стороны.
В мире метафизическом (как говорят знающие люди, в мире чародейства, волшебства и божьего промысла) времени нет, там все уже существует. Мгновение «там» — это вечность «здесь». Вечное мгновение и мгновенная вечность...
Человеку посильно постичь это.
median(t) — median(t-1)?
но: — это совсем не то, что нужно, т.к. медианная (как и любая скользящая средняя) есть зависимый от времени (количества баров) параметр.
Системы Kagi, Renko, P&F.
Коля Лоссбой давно по ним торгует и даже отчеты постит.
Потому, как я написал выше, очень редко встретишь тех, кто пользуется этими нотациями. В любой из сред (R, Lua, Python, C#, VBScript, PSScript, другие мне неизвестны и не использованы) алгоритм реализуется достаточно быстро, строк 1,5 — 2,0 тысячи кода.
Принципы открытия и закрытия позиций можно найти в соответствующих учебных пособиях по каждой нотации.
Леха Майтрейд, Ну нужно с правильной стороны подойти. Если со стороны «вот моя гениальная идея или вот мой гениальный код, сделай мне приятно» — не прокатит.
А вот выделять атомарные куски и давать задания типа: вот видишь функцию, почему-то эта злая собака в таких-то случаях работает вот так-то, а мне надо вот так-то, помоги найти косяк — тут отличный юз-кейс. Хорошо отработает скорее всего.
А в плане «далёк» — ну это… издалека кажется далёким. Посмотри видео по IDE Cursor и ещё несколько релевантных — там не рокет саенс со стороны юзера вообще.
Хорошая рефлексия, — сейчас допилил алго на нейронных сетях полностью, очень знакомые фазы
Истина
Чё по бэктестам? В студию!)
>> сейчас допилил алго на нейронных сетях полностью
Расскажешь в общих чертах, очень интересно.
Replikant_mih,
собираю маркетдату 1 минутный тф, обогащаю индикаторами (300+ штук);
использую IBMовскую сетку как шаблон, кастомизирую по модулям и архитектуре, обучаю на 1-2 года минуток сетку с нуля в разных архитектурах;
прогоняю эмуляции на unseen дате — отбираю удачные комбинации предиктивных параметров(там предсказывается одновременно 10-20 метрик) и чувствительность;
потом отобранные модели заливаю на сервак с видюхой в токио который в онлайне считает массив 10 000 свечей с 300 параметрами по разным инструментам, делает предикшн и стримит по апи на ботов-клиентов каждые 2 секунды срезы (как обновление свечей на бинанс);
ну и собственно там же экзекьюшн на бинансе в токио. В общем нейронки с элементами жесткой оптимизации быстродействия.
Тут не знаю как рассказать кратко и что, опыт правда очень интересный и тяжелый (нелинейность предсказаний и иногда непонимание логики предсказаний особенно радует мозг программиста :)
AV, Круто. Да в целом идея понятна.
Если ещё не — залетай в чатик по ML в трейдинге). Правда там не очень активно щас.
t.me/+hV1etW5V6hw4MzRi
это ж за што так себя не жалеть?
2. Сон. Невысыпайся один день, а на другой ложись чуть раньше. Принимай седативные для хорошего сна.
3. Мозг требует отдыха каждые 15-40 минут. Отдых это не смартфон и скроллинг, это тишина и полное бездействие, включая отсутствие мыслей и думок. В твоем состоянии нужно провести несколько дней без интернета, мыслей и смартфона, прогулки и физическая активность приветствуется.
4. Проверь давление. Нет ли бледности и низкого давления.
5. Желательно провести чек-ап в платной клинике
лид, выводивший в коммерцию свою работу, сильно отличается вот от таких частных, извини, фрилансеров. Там идешь к конечному результату без вот этих вот 5-ти лет и в строгих бюджетах )
но ты наверное уже научился, отсеивать все лишнее )
Но могу сказать, что вот в этих корпоративных рамках я бы «сдал проект» на уровне динозавровой версии, относительно того, до куда дошёл самостоятельно. Уже 100 раз ловил себя на мысли, что ни один работодатель не выдержал бы и не финансировал бы это безумие. Но я на это смотрю с конструктивной стороны… реально я бы никогда не развился бы в таких рамках. То о чём ты говоришь, это написание какого-то готового ТЗ +-
Готовое ТЗ и я могу написать в рамках. Тут прикол в том, что в разработке алго нет никакого ТЗ, оно по ходу дела формируется. Живой процесс.
речь про то, что необходимо ставить временные рамки и рамки бюджета на решение задач по ТЗ и пытаться работать по этому плану.
думаешь только в алготрейдинке программисты решают задачи «сделай то, не знаю что», «реши то, не знаю как»? Нет. Щас вот импортозамещающие идет полным ходом, там рОбята решают подобные задачи пачками )
нужно стремиться научиться ставить себя в рамки и работать по плану ) Делать срезы результатов, кратковременно корректировать сроки и тд, вплоть до отказа функционала части проекта. Иначе жизнь положишь, а в конце кукиш из каши
В искренность исповеди верю! :)
Нормальные комментарии. :)
Читая — отдохнул. :)
И еще — не надо постоянно что-то менять/добавлять. Надо закончить код в каком то приближении. Затем с удивлением выявить и устранить очепятки, ошибки и залепухи. Ну а как без этого то? Ведь если отладка программы — это исправление ошибок, то логично утверждать, что кодирование — это процесс закладки таких ошибок ))) А идеи запоминаем и потом добавляем/корректируем уже работающий код, меняя существующий или добавляя новый блок.
Удачи, и не опускать руки.
иногда приходится конечно напрячься чтоб засунуть все бумаги насдак100 в один бот… но там сплошная копипаста...
тут кореш твой, смотрю, пост накатал, мол мозг не нравится )
и ты тоже пишешь про 35-40.
я все через это прошел. Если будет интересно, кратко:
1. С 2022г я перешел на ежегодный чекап организма. Веду даже табличку анализов. Слежу строго за всеми показателями, корректирую там всякие витаминчики и остальные штуки
2. Хожу в зал 3 раза в неделю. Если отбросить всю эту хрень, что подвижность это важно и тд. Важна в первую очередь:
2.1 системность действий. То есть не хочу поехал в теннис, а надо прям что то делать каждые N дней.
2.2 если ты посчитал себя программистом, то полюбому ты развил в себе уже проблемы шеи и спины. Но можешь об этом не знать. Шея — ключ к мозгу. Это узкое горлышко кровотока мозга. Надо поставить все позвонки на место у какого нить костоправа и в зале начинать качаться, чтобы там все обросло вокруг мясом и держало твой скелет мышцами.
2.2.1 Если лень ходить в зал, скорее всего возможно достаточно только делать системно упражнения на шею и шейный пояс (но это не точно).
Если сейчас этим заняться, через пару лет в свои 40+, обалдеешь от того, насколько еще мощно может работать твой мозг.
Но может случиться побочка, начнешь считать всех вокруг тупыми. Что с этим делать, я пока не знаю, сам еще решаю.
Андрей К,
>> Но может случиться побочка, начнешь считать всех вокруг тупыми.
Ты в какой квантиль себя помещаешь?)
Если не качать мышцы, они перестаю держать скелет, позвонки выскакивают. Это все стопорит кровоток. Это как у двигателя уменьшить давление масла, оно не будет проникать во все уголки, тут так же про кровь и мозг.
Встает задача — поставить позвонки на место. Это делает или какой нибудь мануальный терапевт за миллиард денег (один прием 7-8т, разведет на 5-7 сеансов). Либо костоправ. Он пощупает и спец приемами (типа ударами и шлепками )) все поставит сразу. Ну и еще за сеанс закрепит. (тыщ в 6-8 все выйдет)
Вот сейчас в 50+ лет разбираюсь в Java и Kotlin. Мозг уже не так хорошо рубит, производительность не та, что на Турбо Паскале в 20 лет.
чем у Вас. Наверное, должно быть что то еще, чтобы сделать такой вывод, к которому Вы пришли. Было бы интересно узнать.
Т.к. с началом СВО я отошел от дел и, наверное, мог что то упустить.:)
MatrixLis, я указал свой опыт в программировании, только и всего. :)
Но заинтересовало меня Ваше утверждение:
" Для создания торговой системы ( в том числе автоматической торговой системы) сейчас программировать вообще ничего не нужно)))" Для меня это не понятно, просто чудо какое то. :)
MatrixLis, спасибо! Я все понял, эта тема мне знакома. :)
Чудо не произошло, а жаль! :)
Всего доброго! :)
Леха Майтрейд, я немного про другое. Есть код, который описывает сам фреймворк, графики какие-то рисует. Вот его можно делегировать другому кодеру, а свое время посвятить разработке и рисечу именно торговой логике/стратегии.
Имхо, если стратегии рабочая, то она должна давать профит и в первом приближении. Бэктесты планируются к публикации какие-то? :-)
yurikon, Генерация изображения с графиком и его анализом уже готов как лет 15, с тех пор ничего не меняю. И вся инфраструктура чтоб код запускался и что-то выдавал тоже, я туда практически не лезу.
Сейчас вот встал вопрос, чтоб данные не подготовленные скармливать, а напрямую из терминала в реал-тайм, с этим мне поможет прогер знакомый. Там на самом деле не всё так просто именно для моего алго, но не буду об этом.
Это не мой случай))) У меня нет никакого первого приближения. Я не на индикаторах алго пишу, а пытаюсь формализовать то, как я анализирую график сам, исходя из наработанного опыта. Если закодить один какой-то конкретный фактор — то результатов не будет, т.к. на цену влияют и другие факторы, которые нуждаются в учёте. Прогноз вырисовывается из анализа совокупности всех факторов, типа, что перевешивает. А если вы на весы положите что-то одно, то оно ессно перевесит, но силы прогнозирования в этом никакого
Леха Майтрейд, здесь один фактор :-)
умерло :(
Раньше тоже пытался воплотить в коде все задумки, а сейчас основной инструмент для алго это Excel.
Всё. Это ловля тренда