Блог им. Buybuy

Machine Learning против Deep Learning - честный спарринг )))

Доброй ночи, коллеги!

Как я писал в предыдущем посте, недавно я стал счастливым обладателем подписки ChatGPT Pro.
В связи с этим счастливым событием решил потестировать Canvas.
Если кто не в курсе — это такая крутая диалоговая штука, которая в числе прочего может писать программы и даже их компилировать в законченные приложения.

И вот я решил потренировать Canvas в написании кода для глубокого обучения нейронной сети прямого распространения (обычный Deep Learning, без этих всяких CNN, RNN, трансформеров и прочей ереси).

Написал промпт для генерации кода на Matlab (моя любимая энжина для математических расчетов и экспериментов, как говорят в МГИМО: whom how).
Смысл задачи — предсказание знака следующего приращения цены (по набору предыдущих приращений).
Canvas попыхтел минуту и выдал короткий код с использованием вызовов функций из Deep Learning Toolbox. Он сразу заработал.

Но мы не ищем легких путей. Модель o1 умеет рассуждать — пусть рассуждает.
И я дал ей задание написать код с нуля (без Toolboxes) — чисто метод сопряженных градиентов (adjusted gradients) и обратное распространение ошибки (back propagation). Пороговая функция tanh(x). Все по классике, короче.

Canvas попыхтел минуту и выдал длинный код, который… не заработал.
При этом код достаточно элегантный (с виду), там, где я использую 3-х мерный массив для набора матриц, эта эстетская шляпа построила cell array из матриц. Гораздо медленнее, но красивее визуально с т.зр. формул.

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

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

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

Все, что надо было сделать — это убрать активацию tanh(x) из выходного слоя. «Оно» накосячило в размерности и никак не реагировало на все мои указания исправить ошибку. Я плюнул через 25 итераций, когда понял, что это бесполезно. При этом каждый раз она писала в рассуждениях: «я нашла ошибку, я ее исправила, теперь я гарантирую, что все размерности соблюдены корректно».
(для тех, кому интересно — «оно» не сообразило, что в выходном слое 1 нейрон, а в скрытых слоях всегда больше, чем 1, и честно пыталась перемножить несовместимые по размерности матрицы).

Когда мне все надоело — я чутка переписал промпт (ну и очистил контекст, чтобы модель не галлюцинировала) и перегенерировал ответ. Бинго — всего после 2-х исправлений прога заработала!

КРАТКИЕ ВЫВОДЫ:

1. Canvas (Cursor, ...) очень полезна, когда надо создать код с библиотечными вызовами. Если кто не в курсе — справочник по функциям Matlab — это 16000 страниц, а справочник по Deep Learning Toolbox то ли 8000, то ли 9000 страниц (пишу по памяти, у меня электронные издания 2022 г.)
2. Canvas абсолютно бесполезна, если вы не понимаете, что за код она генерит. А код она генерит эстетский и замысловатый, так что править его достаточно трудно (хотя он хорошо откомментирован)
3. Если вы не понимаете, что за код она генерит, дальнейшие усилия по приведению кода в работоспособное состояние — это производственный Ад.

Как-то так


С уважением
★6
76 комментариев
ЛАЙК!) Ничего не ясно, но очень интересно!
Оля «Hare»… (заяц)..., если вкратце

Это про то, как ты объясняешь компу, какую прогу ему нужно написать, а он не только сам пишет, но еще и компилирует в готовое приложение.

Внешне все очень круто. Но если копнуть...

С уважением
Мальчик buybuy, все так, сказать что надо сделать, а потом думать, что машина сама это сделала.
avatar
Мальчик buybuy, встречный вопрос: можно сделать то что вы говорили самостоятельно, не поручая задачу Ии?!
Я тоже иногда дурью маюсь.))
avatar
3Qu, бинго!

Нас — двое!

С уважением
Мальчик buybuy, главное, чего у тебя нет, это плодотворной дебютной идеи.
А дебютная идея — это «Quasi una fantasia». Мы видим, что блондин играет хорошо, а брюнет играет плохо. И никакие ИИ не изменят этого соотношения сил,
avatar
3Qu, ну ты точно не знаешь, чем я занимаюсь )))

Т.к я уже 2 года об этом не пишу
И дебютные идеи у меня есть (4 шт. — 4 ветки исследований)
2 из них успешно работают и приносят бабло

Но писать об этом глупо
На SL я пытаюсь устроить дискуссии — безрезультатно

С уважением
Мальчик buybuy, о чем дискуссия-то? Я, видимо, чего-то не понял.)
avatar
3Qu, не в этом топике

Я еще иногда про рынок пишу )))

С уважением
Мальчик buybuy, а какая версия матлаб? и наверное финансовый тулбокс, или он бесполезен?
avatar
mr-x, r2024b

Finance не использую, Deep Learning пользую

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

Ну допустим, если вы настаиваете...
Слышал, что если с нейросетью говорить вежливо, т.е. писать «будьте любезны», «пожалуйста», «спасибо», то качество её работу улучшается.
Попробуйте 😉
avatar
Ну всё, теперь ты миллиардер ))
avatar
Makstrade, нет

Я вроде в декабре писал, что нейросети отвратительно решают задачу предсказания будущих приращений цен (или их знака).

Мои кастомные методы работают значительно лучше.

С уважением
Мальчик buybuy,  Смотря чему обучать нейросеть… )
avatar
Мальчик buybuy, я, вот, не понимаю, на фига тебе эти " предсказания приращения цен или знака"?
Чтобы только окупить комиссию и получить хоть какую-то мизерную прибыль нужно поиметь от 4 до 40 пунктов, в зависимости от инструмента. На 4-40 пунктов ты уже вряд ли что предскажешь, тем более, надо в сделке получить минимум 8-100 п, иначе и в сделку идти не стоит. Имхо, это все пустое, на 8-100 п это полный бесполезняк.
avatar
3Qu, так мне они нах не нужны

Лично я эквити предсказываю, а не цены
Но не на котиках же сетку тренировать?!

С уважением
Мальчик buybuy, ина сколько ты ее предсказываешь? На минуту, полчаса, сутки?
avatar
3Qu, по разному

1. Для маркетных моделей с комиссией — на 5-6 минутных баров
2. Для лимитных с маркапами на 30-40 ( но там очень тяжелые расчеты, я их 8 мес. ускорял до разумного тайминга).

А так повторяю — я предсказываю не цену, а эквити (финрез)

С уважением
Мальчик buybuy, 
я предсказываю не цену, а эквити (финрез)
Этого я не понимаю. Чтобы знать фин результат нужно знать дельту цены. Или финрезультат= f(дельта цены).
avatar
3Qu, надо, но это не все

1. Для маркетной эквити с комиссиями достаточно хорошо предсказать приращение цены (просто знака недостаточно)
2. А вот для лимитной эквити нужно еще хорошо предсказать high и low (вернее, некие функции от них)

С уважением

P.S. Конечно финрез не равен приращению цены. А если вдруг равен, то это не модель, а сферический конь в вакууме
Мальчик buybuy, ну, я понял, цену ты все-таки предсказываешь.))
Ну, эт мы все предсказываем.) Иначе как в сделку входить, если неизвестно куда оно ломанется.)
Но я тебе по секрету скажу — рынок прост как ящик. Из этого следует, что ни фига ты толком там не предскажешь.) Ни простыми методами, ни сложными. Простые даже надежнее.
avatar
3Qu, ну такое

 «Блаженны нищие духом, ибо их есть Царство Небесное»

С уважением
Крутяк!)
__rtx, хммм

У меня — нет

 С уважением
__rtx, ЧС, это инструмент. У меня даже Мальчик некоторое время был в ЧС, при всем моем к нему уважении.
avatar
__rtx, а если я не хочу искать истину в какой-либо дискуссии? В ЧС, и дело к стороне, а там видно будет.
avatar
__rtx, долго

За 2024 я сократил расчет с 280 дней до 8 часов (280 дней я не считал, конечно, это оценка). Это на ryzen 7945hx 64gb RAM и 4080

Но у меня сложные модели

С уважением
__rtx, не понял, что принять?
avatar
3Qu, удаляй

Не верю в эквити без просадок
От слова совсем
Более того могу (статистически) доказать, что такого не бывает
Если только подглядывать в будущее...

С уважением
Мальчик buybuy, мы не в церкви, верить необязательно. ) Это ничего не меняет.
avatar
3Qu, это да

«Блаженны нищие духом, ибо их есть Царство Небесное»

С уважением

P.S. С баблом у них все сильно хуже, конечно…
3Qu, кажется я понял, бро

Ты вообще ничего не считаешь
Ты даже не умеешь считать аналитически — исполнится твой тейк (или лосс) на конкретном баре или нет?

Ты просто придумываешь некую фишку, обвязываешь ее TP и SL, а потом моделируешь.
Это так не летает.
Заработаешь хотя бы $1 mio — заходи в гости, поболтаем (в оффлайне)

С уважением
Мальчик buybuy, 
Ты вообще ничего не считаешь
Ты у нас математик, ты и считай.)
Но кое что посчитать я все же могу. Например:
Заработаешь хотя бы $1 mio — заходи в гости, поболтаем (в оффлайне)
Считается легко. Это не случится никогда.)
Спасибо за приглашение.)
avatar
__rtx, долго объяснять

1. Если финрез единичной сделки это будущее приращение цены, то это т.н. маркетная эквити (все ордера маркетные). В этом случае на коротком таймфрейме надо обязательно использовать комиссии. Более того, практически на всех рынках на ТФ 1m комиссия в деньгах практически равна СКО приращения цены (на бирже дураков нет), так что это суперважно. На старших ТФ удельный вес комиссии меньше, но и доходности оптимальных стратегий сильно проседают. Построение идеальной маркетной эквити с учетом комиссий на малых ТФ — это очень сложная задача, лично я научился решать ее только в 2024
2. Если мы работаем лимитными ордерами, то комиссий вроде нет (это не так — см. мой конкурс на 50000 руб. по расчету «скрытых» комиссий при работе лимитками). При этом сама формула для лимитной эквити занимает половину листа формата A4 (я тут пытался помочь одному форумчанину выписать ее явно — до финиша он не дошел вроде, хотя и очень старался), у нее есть 3 канонические формы, и они важны для разных сценариев оптимизации. Ну и вообще, для лимиток математика в высшей степени нетривиальна (даже просто потому, что мы учитываем в ценах не только Close, но High, Low, Close). Более того, если для простой маркетной эквити для заработка достаточно просто предсказывать знак будущего приращения цены (это не так, но для вводного разговора пойдет), то для лимитной эквити задача ее максимизации решается очень нетривиально даже при полностью известном будущем. В частности, знание знака приращения цены на следующем баре — это очень плохая стратегия, в разы проигрывающая оптимальной.

Как-то так

С уважением

P.S. Любая оптимальная стратегия (неважно, маркетная или лимитная) старается делать мало сделок. Много сделок = корм для брокера/биржи
Программы писать пока мазохизм. Хотя вон Маск хвастается своим Гроком 3, типа он круто игры пишет и симуляции разные.

Я пока использую эти ИИ как справочник — гораздо удобнее чем штудировать мануалы. Вот это их реальная ценность — статистически обрабатывать информацию. «Размышляют» они пока плохо.
avatar
__rtx, ну, допустим, Ок

1. При маркетном исполнении набежит большая комиссия
2. Лимитки (кроме меня) никто готовить не умеет (чистое IMHO)
3. Если лимитный ордер перевыставляется на каждом баре, то набегает огромное скрытое проскальзывание (ордер может тупо не исполняться несколько баров, а цена уходит), которое в среднем превышает комиссии при маркетном исполнении

И?

С уважением
На Хабре себя почувствовал 🤪
Так сетки на матлабе мало кто пишет, поэтому у модельки при обучении не было достаточно данных и она их тоже плохо пишет. Попробуйте на питоне, там сильно больше датасет был. А идея предсказывать случайную величину классная. Особенно еще когда закона ее распределения нет как такового. Ммм, песня))
avatar
__rtx, имхо. лимитки и высокочастотный трейдинг, трейдинг по стакану не совместимы. По моей статистике выходило, чем больше рыночных ордеров тем больше прибыли. т.е. больше агрессии — больше прибыль.
avatar
если что-то не выходит, обязательно посоветуйся с маэстро, он тут иногда бывает. он подскажет.
avatar
Пусть справедливо утверждение, что прогноз знака следующего приращения вернее прогноза значения приращения.
Т.к. это приращение вычисляется от текущего Close, то прибавив ко Close некую Delta, получится прогнозирование не знака приращения, а значения приращаения — выше или ниже Delta.
Строя прогнозы для пары значений Delta, получаем прогноз интервала для значения приращения.
Кто-нибудь знает, что генерация компьютерного кода без программирования известна десятки лет назад?
Но только не с «естественного языка», потому что это чревато неполнотой и неоднозначностью техзадания. И, соответственно, сюрпризами в результирующем коде.
Для постановщиков, понимающих чего они хотят, давно изобретён графический язык Unified Modeling Language (UML). Генераторы кода из UML были доступны ещё в Borland-Delphi, затем Microsoft-Visual.
Rostislav Kudryashov, генерация кода их всяких dsl уже лет 50 существует — тот же defmacro в common-lisp 
avatar
Ну с инструментами всегда так — важно, что именно ты делаешь и как. Пальцами гвоздь из доски не вытащишь, гвоздодером — изи, но если ты не понимаешь, как его использовать, или понимаешь, но навыка ещё нет или силы или чего-то — тоже не выйдет. В общем нужно эти тулы задействовать в правильных сценариях и… правильно задействовать.
Replikant_mih, 13:58 Вытаскивать гвозди из доски лучше именно гвоздодёром, а не подъёмным краном.
Хотя кран гораздо мощнее.
Rostislav Kudryashov, По современным LLM не все понимают сходу это гвоздодер или подъёмный кран. Думаю, тот кто лучше это сделает и выиграет гонку, если не в гонке с ИИ против ИИ, то хотя бы выиграет у остальных кожаных мешков.
ага, хотели на халяву ярды поднять?)) не получится!

теги блога Мальчик buybuy

....все тэги



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