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

Мои результаты, о них ниже
Инструмент эксперимента — модель distilbert‑base‑uncased с Hugging Face и это облегчённая, быстрая версия BERT для понимания языка. Мне показалось это практичным выбором для прототипа — позволяет быстро проверять разные способы текстовой разметки без гигантских ресурсов. Цель была чёткая: по текстовому описанию недавней истории торгов предсказать рост цены на следующий день.
Но это исследование моя попытка представления рыночных данных как языка, а не попытка сразу создать алгоритм для автотрейдинга. Ещё важно: это мой личный эксперимент, проведённый одним человеком и выполненный однократно. Результаты дали интересные наблюдения.
Расскажу, как происходила разметка графиков в текст, какие шаблоны сработали лучше и какие метрики использовались. Также отмечу ограничения подхода и идеи для повторных экспериментов.
А ещё весь код уже на GitHub.
Для трейдеров и аналитиков: суть и результатыДля модели котировки это просто цифры без контекста. Она не знает, что вверх — хорошо, а вниз тревожный сигнал. Я переводил ряды котировок в текст. Каждые 10 дней торгов превращались в короткое описание, как если бы трейдер рассказывал что-то своему коллеге.
В основе лежали три признака:
Краткосрочный тренд (3 дня) — рост, падение или боковик;
Среднесрочный контекст (7 дней) — подтверждает ли он текущее движение;
Моментум и объём — поддерживают ли рост деньги: идёт ли рост на растущих объёмах или затухает.
Если цена три дня растёт, объёмы увеличиваются, и цена близка к сопротивлению, строка выглядела так:
price rising strongly, volume increasing, near resistance.
Эти описания читала модель DistilBERT. Модель не видела графиков, только текст — и должна был сказать, приведёт ли ситуация к росту или падению. Так модель «училась понимать» то, что трейдеры выражают словами.

Как измерить, понимает ли она рынок
Простая точность (accuracy) ничего не говорит: можно всё время предсказывать падение и быть правым на 60%.
Поэтому я использовал AUC (Area Under Curve) — показывает, насколько хорошо модель отличает ситуации, после которых цена действительно росла, от тех, после которых она падала:
AUC = 1.0: идеальная модель, которая никогда не ошибается.
AUC = 0.5: бесполезная модель, ее предсказания равносильны подбрасыванию монетки.
AUC > 0.5: модель работает лучше, чем случайное угадывание. Чем ближе к 1.0, тем лучше.
AUC < 0.5: модель работает хуже случайного угадывания.
Эксперимент на всех акциях Московской биржи

Я протестировал более 200 акций с Московской биржи. Средний результат по всем бумагам — AUC ≈ 0.53, что немного лучше случайного угадывания.
Лучшие случаи:
AFLT — 0.72
RTSB — 0.70
PIKK — 0.70
CHGZ — 0.67
AFKS — 0.66
Худшие:
PLZL — 0.33
VJGZP — 0.33
CHMF — 0.36
ETLN — 0.38
LSNG — 0.39
Разброс большой: одни бумаги ведут себя предсказуемо, другие — как шум.
Что это значит для трейдера
С практической стороны — торговать по такой схеме нельзя. Даже при AUC 0.6 предсказательная сила слишком слаба, чтобы покрыть комиссии. Однако сам факт, что модель хоть немного «чувствует» структуру графика без чисел и свечей, уже интересен.
Эксперимент показал: график можно описать словами, и языковая модель способна уловить логику движения — пусть пока не точно.
Нагрузка на GPUПроблемы и их решение
Изначально паттерны кодировались вымышленными словами («Кибас», «Гапот»), чтобы модель не опиралась на предобученные знания. Но это превращало BERT в обычный классификатор на случайных токенах. Решением стал переход на естественные фразы price rising strongly, near resistance. Модель теперь задействует понимание финансовой терминологии.
Моя RTX 5060 Ti (архитектура Blackwell, SM_120) оказалась слишком новой для стабильных PyTorch. Ошибка «no kernel image available» блокировала вычисления. Решением стал Docker‑образ с CUDA 12.8 и nightly‑сборкой PyTorch.

Детали конфигурации и обучения
Конфигурация признаков: short_window=3, medium_window=7, long_window=14. Валидация: train_size=252, test_size=21, step_size=21.
Гиперпараметры: learning_rate=2e-5, batch_size=32, epochs=2, weight_decay=0.01, fp16=True. EarlyStoppingCallback(patience=2) останавливает обучение при стагнации лосса.
Оценка — усреднение метрик по 3 фолдам на тикер. Для каждого фолда: accuracy, precision, recall, F1, AUC‑ROC. Финальный результат — среднее и стандартное отклонение AUC.
Эксперимент подтвердил: идея семантического кодирования рыночных данных — рабочая и перспективная, но в текущей реализации она не дала статистически значимого результата. Модель действительно различала рыночные ситуации, но слабо — AUC в среднем по полной выборке составил около 0.53. Это слишком мало, чтобы использовать прогнозы в торговле, но достаточно, чтобы признать: языковая модель способна уловить элементарные закономерности, если данные поданы в привычной ей форме — в виде текста.
Главная ценность проекта не в точности предсказаний, а в том, что удалось пройти весь путь от сырого CSV с котировками до работающего ML‑конвейера, полностью воспроизводимого в Docker. Каждый этап — от векторизации признаков до скользящей валидации — отлажен и готов к повторным экспериментам. Это не «ещё одна нейросетка для трейдинга», а инженерный прототип, на котором можно проверять новые идеи: другие схемы описания графиков, языковые модели большего масштаба, мультимодальные подходы.
Фактически проект стал мини‑лабораторией по исследованию того, как LLM «видит» рынок. И если заменить DistilBERT на современные архитектуры вроде LLaMA или Mistral с дообучением на финансовых текстах, потенциал подхода может проявиться гораздо сильнее.
Повторите мой путь: код на GitHub
Я специально оформил всё так, чтобы любой мог запустить эксперимент у себя. Достаточно скачать архив котировок, собрать контейнер и запустить run.sh — среда поднимется автоматически с нужными версиями библиотек и CUDA.
Проект открыт:
👉 github.com/empenoso
Если вы хотите повторить эксперимент, улучшить разметку или попробовать другую модель — все инструменты уже готовы. Мой результат — это не финальный ответ, а отправная точка для следующего шага: сделать так, чтобы языковая модель действительно читала графики, а не просто угадывала направление.
Автор:
Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»
14 октября 2025
📅 25 октября я прилетаю в Москву на Smart-Lab Conf 2025 — главный ежегодный сбор частных инвесторов, трейдеров и всех, кто живёт рынком.
Один день, восемь залов и десятки спикеров — от ветеранов Смартлаба до корпоративных представителей и фондов.
🕛 В 12:00 я сам выступаю в зале №7 («Спекуляции») — расскажу про автоматизацию и новые подходы к работе с финансовыми данными.
Если вам близки темы Python, Excel, API и эксперименты с ML / LLM — буду рад личному знакомству после своего выступления.
Кроме того, я готовлю подробный репортаж о конференции — не просто «понравилось / не понравилось», а именно что полезного можно вынести из каждого доклада.
Что то навеялло ...
А значит для биржи, как инструмента рыночного ценообразования на основе спроса и предложения, уже в самом ближайшем будущем места не будет вообще.
Иное дело, если ИИ применять для прогнозирования развития технологий, где он мог бы рекомендовать, куда вкладывать деньги рядовому инвестору. Но это еще более сложная задача, это уже уровень AGI+ с компьютом потребляющим гигаватты электроэнергии. Боюсь тут авторская NVidia 5060 всего лишь детская погремушка.
Тренд, рост, падение или боковик — эти абстракции существуют и живут лишь в голове человека, в реальности их не существуют. Если трейдер уверен в существовании «тренда» роста или падения, то пусть попробует поставить на это свои деньги))
К сожалению ИИ не достаточно умен, не обладает интеллектом чтобы сразу показать ошибки. Но деликатно, в очередной миллионный раз, доказал что словарь трейдера (бред) очень сильно оторван от реальности))
Очень к сожалению ИИ не может объяснить почему так вышло, или не может с самого начала предупредить юзера о заблуждении.