Игорь Градов
Игорь Градов
5 мин
ai

RAG, LLM и RandomForest на одной видеокарте выдают торговый сигнал с доказательствами

Разработчик новостного скрапера по российским акциям научил систему выдавать торговые сигналы с доказательствами, когда база выросла до 37 тысяч статей и обрабатывать всё подряд стало слишком дорого.

RAG, LLM и RandomForest на одной видеокарте выдают торговый сигнал с доказательствами
Почему это важно

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

В первой части цикла автор собрал RAG-систему (ИИ, который сначала ищет нужные документы в базе и только потом отвечает) с ИИ-агентом на LangGraph и локальных LLM. LLM расшифровывается как large language model, то есть большая языковая модель, вроде той, что стоит за чат-ботами. Вторая часть, «Как я скрестил RAG, LLM и RandomForest: архитектура торгового сигнала с доказательствами», описывает следующий шаг: от чтения новостей к предсказанию.

На выходе система выдаёт сигналы BUY, SELL или NEUTRAL (покупать, продавать, нейтрально). К каждому сигналу прилагаются доказательства, которые показывает Explainable UI, то есть интерфейс с объяснением, почему модель так решила.

Что понадобится для повторения?

  • Стек автора: Scikit-learn, Plotly, FastAPI, Streamlit, PostgreSQL, Ollama. Ollama нужна, чтобы запускать языковые модели на своём компьютере.
  • Видеокарта с 16 ГБ видеопамяти (VRAM). У автора Tesla P100.
  • Две модели в памяти одновременно: Qwen 14B для текста и BGE-M3 для эмбеддингов. Эмбеддинг переводит смысл текста в набор чисел, по которому удобно искать похожее.
  • Доступ к API Мосбиржи для словаря тикеров.
  • Новостная база. У автора 37 268 статей из 24 источников.

Пошаговая инструкция: от заголовка новости до сигнала

  1. Соберите единый конвейер. Раньше классификация, NER и обогащение шли тремя независимыми фоновыми задачами. Они мешали друг другу и по очереди грузили модели в видеопамять. Теперь каждая статья проходит одну цепочку: классификация, фильтр мусора, оценка влияния на рынок, NER, краткое изложение, эмбеддинг. NER означает извлечение сущностей: модель находит в тексте названия компаний.
  2. Отсекайте нерыночные новости. Спорт, культура и происшествия получают пометку skipped, и на них не тратятся ресурсы видеокарты. По словам автора, именно этот переход от «обрабатываем всё» к «обрабатываем только важное» позволил добавить ML-сигналы без взрыва нагрузки.
  3. Привяжите компании к тикерам. NER находит «Сбер» или «Лукойл», но не знает, что на бирже это SBER и LKOH. Эту задачу решает Entity Linking, то есть сопоставление названия с биржевым кодом. Для неё автор завёл словарь синонимов tickers.yaml, который сам пополняется из API Мосбиржи. Сейчас новости привязываются к 50+ ликвидным акциям.
  4. Посчитайте признаки за каждый день и тикер. Признаки здесь означают числа, по которым модель учится:
  5. market_pressure, сумма направлений новостей: плюс 1 за позитивную для акции, минус 1 за негативную;
  6. news_count, число новостей;
  7. has_summary, делалось ли краткое изложение, это косвенный признак важности новости;
  8. vol_5d и vol_20d, волатильность, то есть насколько сильно скачет цена;
  9. adv_20d, средний объём торгов за 20 дней.
  10. Заложите аномальный объём. Если дневной объём торгов втрое и больше превышает средний, это часто предшествует движению цены. Признак volume_ratio уже встроен в архитектуру, но на истории его пока не проверяли.
  11. Обучите RandomForest и настройте Ollama. RandomForest, или «случайный лес», это классический алгоритм, который принимает решение голосованием множества простых деревьев решений. Настройки Ollama, на которых остановился автор:
OLLAMA_MAX_LOADED_MODELS=2
OLLAMA_NUM_PARALLEL=6
OLLAMA_KEEP_ALIVE=-1
CUDA_VISIBLE_DEVICES=0

Значение 6 подобрали опытным путём. При 8 параллельных запросах видеокарта упиралась в потолок памяти, и запросы обрывались по таймауту.

Как это сработало на практике

Сначала новости про «Альфа-банк» привязывались к тикеру SVCB, то есть к Совкомбанку. Разбор показал, что NER корректно нашёл в тексте оба банка. Ошибка была в другом: в словаре просто не оказалось Альфа-банка. Автор добавил фиктивный тикер ALFAMOCK. Новости о банке копятся уже сейчас, а когда он выйдет на биржу, заглушку заменят реальным тикером. В западных разборах такого кейса не найти.

Частые ошибки

Не усложняйте модель на малых данных. Автор ввёл затухание по времени, чтобы свежие новости весили больше. Давление рынка стало дробным, например 0,85 вместо 1, и точность (accuracy, доля верных прогнозов) упала с 0,52 до 0,36. На 55 записях это добавило шум, а не сигнал. Внедрение отложили до 200+ записей.

Не раскидывайте модели по двум картам. Когда модели не хватает 16 ГБ, Ollama делит её слои между видеокартами. Данные начинают ходить по шине PCIe, которая соединяет карты с материнской платой, и скорость падает от 3 до 5 раз. Поэтому автор работает на одной карте из двух и держит запас около 6,3 ГБ памяти.

После настройки пайплайн ускорился от 1,5 до 2 раз, и система стабильно работает на одной карте. Автор отдельно признаёт, что выборка пока мала. Поэтому цифры точности здесь говорят о методе, а не о готовой торговой стратегии.

Что делать с этим прямо сейчас, по ролям

Автору Дзена про финансы: забирайте сам принцип «сигнал плюс доказательство». Разбор акции, где каждый вывод подкреплён конкретными новостями, вызывает больше доверия, чем голое «покупайте».

Маркетологу: фильтр мусора до дорогой обработки годится для мониторинга упоминаний бренда. Сначала отсеять нерелевантное, потом тратить ресурсы на анализ оставшегося.

Предпринимателю в РФ и СНГ: весь стек работает локально и не зависит от зарубежных облаков. Если нужен облачный вариант для текстовой части, из доступных в РФ есть YandexGPT и GigaChat.

Совет редакции dzen.guru

На мой взгляд, главная ценность проекта не в сигнале, а в дисциплине. Автор режет нагрузку, не трогает вторую видеокарту без нужды и откладывает красивые идеи, пока не накопятся данные.

Честная оговорка: точность 0,52 на 55 записях почти не отличается от подброшенной монетки. Используйте такую систему как помощника для чтения новостного фона, а не как кнопку «заработать». Торговать по ней живыми деньгами я бы не стал, пока выборка не вырастет хотя бы до тех 200 записей, о которых пишет сам автор.

Хотите собрать свою ИИ-систему без лишних трат?

На dzen.guru разбираем нейросети на практике: что запускать локально, что брать в облаке и как применять это в контенте.

Перейти на dzen.guru

Начните с самого дешёвого шага, фильтра мусора. Он один экономит больше ресурсов видеокарты, чем любая тонкая настройка модели.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Экс-техдиректор Rockstar: неофициальный ИИ-порт GTA 6 может ускорить версию для ПК
ai

Экс-техдиректор Rockstar: неофициальный ИИ-порт GTA 6 может ускорить версию для ПК

Бывший технический директор Rockstar Обби Вермей накануне скорого релиза GTA 6 заявил, что угроза неофициального ИИ-порта на ПК может заставить студию быстрее…

4 мин
ИИ-обвязка рабочего места аналитика: 14 бизнес-требований за 8 дней вместо двух недель
ai

ИИ-обвязка рабочего места аналитика: 14 бизнес-требований за 8 дней вместо двух недель

Архитектор ИИ-систем Николай Карпов показал рабочее место аналитика, на котором после обновления регуляторных источников 14 бизнес-требований к платёжному…

5 мин
Muse от Meta собирает мини-приложения по описанию, а Meta AI научится помнить контекст
ai

Muse от Meta собирает мини-приложения по описанию, а Meta AI научится помнить контекст

Meta открыла всем пользователям приложения Muse функцию «пространства», в которой ИИ-ассистент по одному описанию собирает мини-приложение под задачу и сам…

4 мин