Блог им. empenoso
Меня иногда упрекают, что я пишу не про трейдинг, а про какие‑то «технические игрушки». Но на самом деле все эти проекты — из одной экосистемы. Ведь алгоритмический трейдинг начинается не с покупки кнопки «BUY», а с умений собирать, очищать и анализировать данные.
Эта история как раз про это — про парсинг, обработку и анализ больших объёмов текстов локальной языковой моделью. Просто вместо новостей или отчётов компаний я анализировал комментарии к своим публикациям. Подход тот же самый, что и в работе с финансовыми новостями: собираем данные, структурируем, прогоняем через модель, выделяем позитив и негатив. В трейдинге это может стать элементом новостного сканера или инструмента для оценки тональности рынка. А в моём случае — это просто удобный способ собрать добрые слова, за которые я всем благодарен.
LynxReport: учёт публикаций 📚 [Node.js] ✅Недавно передо мной встала задача собрать все положительные комментарии к моим статьям. Веду их учёт в таблице, и там уже вполне серьёзные цифры — больше 300 строк и свыше 10 тысяч комментариев. Основные площадки, где я публикуюсь, выглядят так:
Хабр — 4 497 комментариев
Т‑Ж — 4 186
Смартлаб — 1 998
Пикабу — 726
Вручную искать в этом массиве текста слова поддержки — долго и нудно, а главное — совершенно не масштабируется. Так родилась идея: поручить всё локальной нейросети для анализа тональности. Заодно я хотел на практике разобраться с моделями на основе BERT.
Для этой цели у меня был, как мне казалось, идеальный инструмент: компьютер с Ubuntu 24 LTS, Docker и мощной NVIDIA GeForce RTX 5060 Ti на 16 ГБ. Казалось, что с RTX 5060 Ti на 16 ГБ анализ пройдёт молниеносно. Но на деле именно GPU стал главной точкой отказа — пришлось всё считать на CPU.
Код на GitHub.
https://github.com/empenoso/comment-sentiment-analyzer/Прежде чем бросаться в бой с CUDA, нужно было подготовить данные. Комментарии разбросаны по разным сайтам без возможности экспорта, поэтому я написал несколько парсеров, которые собирают тексты в единый JSON‑формат — один файл на статью.
JSON ХабрПарсеры я оставил приватными, так как они заточены под мои задачи, но ядро системы выложил на GitHub.
Скрипт sentiment_analyzer.py берёт JSON‑файлы, подготовленные на первом этапе, и пропускает текст каждого комментария через предварительно обученную нейросетевую модель cointegrated/rubert‑tiny‑sentiment‑balanced. Модель определяет эмоциональную окраску текста — позитивную, негативную или нейтральную.
Скрипт задуман как универсальный инструмент, поэтому основные параметры вынесены в config.env.
MODEL_NAME: можно указать любую другую модель с Hugging Face.
DEVICE: позволяет выбрать, на чём производить вычисления — на cpu или cuda (GPU).
POSITIVE_THRESHOLD: порог уверенности модели, чтобы отнести комментарий к позитивным.
EXCLUDE_AUTHORS: список авторов, чьи комментарии нужно игнорировать (например, мои собственные ответы).
MIN_COMMENT_LENGTH: отсеивает слишком короткие и неинформативные комментарии.
Оркестрация с помощью Docker и Shell
Для удобства запуска и настройки я написал два shell-скрипта:
sentiment_analysis_setup.sh: этот скрипт — для первоначальной настройки. Он проверяет систему, устанавливает Docker и NVIDIA Container Toolkit, создаёт необходимые папки и конфигурационный файл. Запустив его один раз, вы подготавливаете окружение для дальнейшей работы.
run_analysis.sh: простой скрипт для запуска анализа. Он читает конфигурацию из config.env и запускает Docker-контейнер с нужными параметрами.
На практике это сводится к трём шагам: подготовка системы через setup-скрипт, сбор комментариев парсерами и запуск анализа через run_analysis.sh.

Все найденные позитивные комментарии скрипт аккуратно складывает в текстовые файлы.
После череды падений с CUDA и финальной ошибки «No kernel image» пришлось смириться: GPU в проекте не будет. Я открыл config.env, поменял DEVICE=cuda на DEVICE=cpu и нажал save.

RuBERT‑tiny справился за полторы минуты — все 10 000 комментариев были разобраны. Вся похвала и поддержка оказались в аккуратных текстовых файлах.
На финишной прямой я переписал логику сохранения. Вместо сотен мелких JSON теперь формируется один аккуратный текстовый файл для каждой площадки. Структура вывода проста:
Автор: Андрей Мищенко
Дата: 2025-06-06T11:24:20.551316+03:00
Текст: Полезные формулы, спасибо!
Ссылка: t‑j.ru/guide/excel‑kotirovki/#c2857460
Автор: Whalerman
Дата: 2025-09-09T07:40:00.000Z
Текст: Михаил, спасибо! Хорошие и полезные посты!
Ссылка: smart‑lab.ru/blog/1202442.php#comment18571129
Автор: DashBerlin
Дата: 2025-08-23T00:18:43.000Z
Текст: Впервые решил заглянуть в подобный обзор, порадовала позиция количество закладок, интересено, после эти публикации читаются. Я подписан на автора, он пачками сохраняет статьи в закладки, какой процент он потом перечитывает из этого. Спасибо за обзор ))
Ссылка: habr.com/ru/articles/933806/comments/#comment_28742672
Каждый комментарий — отдельный блок, удобно читать и анализировать.
Я ожидал, что GPU будет обрабатывать тысячи комментариев в секунду, но реальность оказалась прагматичнее — CPU выдал скорость около 110 комментариев в секунду.
Этот опыт наглядно показал: локальный AI на процессоре — отличное решение для задач исследователя‑одиночки. Но если бы у меня был миллиард строк, этот подход бы провалился. Это инструмент для прототипирования и персональных проектов, а не для Big Data.
Эта история с видеокартой преподала мне два важных урока.
Во‑первых, самое новое оборудование — не всегда самое лучшее. Моя RTX 5060 Ti с передовой архитектурой Blackwell оказалась настолько свежей, что стабильный PyTorch просто не умел с ней работать. В погоне за технологиями легко обогнать экосистему и остаться с мощным, но бесполезным инструментом (я знаю про обходной путь). Иногда проверенная карта предыдущего поколения — более разумный выбор.
Во‑вторых, Docker — это не просто среда для запуска, а настоящая страховка. Он позволил мне безболезненно переключаться между конфигурациями и быстро откатиться на CPU, когда GPU подвёл. Именно изоляция в контейнере спасла проект, позволив проиграть «битву за CUDA», но всё равно выиграть войну.
В итоге, мой проект заработал не благодаря дорогой видеокарте, а вопреки ей. Процессор решил задачу быстрее, чем я успел допить чай. Это доказывает, что локальный AI — не удел облачных гигантов. Он вполне доступен на обычных ПК, если подходить к делу прагматично и помнить, что иногда самое простое решение — самое верное.
Автор:
Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»
7 октября 2025
Кстати, в этом месяце я снова прилетаю в Москву — 25 октября на конференцию Smart‑Lab Conf 2025. Мое выступление состоится в зале № 7 («Спекуляции») в 12:00. Буду рад видеть всех, кто интересуется автоматизацией и новыми подходами к работе с финансовыми данными. До встречи!
В статьях делюсь тем, что мне самому интересно — в первую очередь, опытом автоматизации, анализа данных и подходом к системности.
Публичного портфеля у меня нет и не вижу в этом смысла — пишу не ради демонстрации доходности, а ради обмена опытом и идеями.
А так — молодец)
Отзывы тоже для вполне практической цели были — в сети начали выходить заказные статьи с негативными «отзывами» обо мне. Их цель проста — использовать мое имя как приманку, а затем перенаправить читателей на сомнительные криптовалютные проекты smart-lab.ru/blog/1206745.php
Мне надо было для SEO собрать на сайт-визитку что пишут читатели — вручную не вариант, но этими скриптами всё сделал.
Все кто зантмается аи сейчас — это чтоб ПРОДАТЬ свои наработки тем кто хочет это купить.
Как я вижу целью всего этого аи будет готовое решение, которое можно продать конечному покупателю на завод или в офис. Стоить оно будет недорого.
По мне так тебе надо не трейдингом заниматься а идти работать на дядю. Дядя хотя бы направит твой труд в нужное русло а не в воздух
AP, тема локального ИИ для меня нова, поэтому и прошёл путь сам — с ошибками, зато руками.
GPU в итоге и не понадобился: CPU справился за полторы минуты, задача решена.
А какие, кстати, версии Linux+версия Python+версия CUDA+версия PyTorch считаете рабочими?
FROM pytorch/pytorch:2.7.0-cuda12.8-cudnn9-develдля RTX 5060Ti 16GB
для RTX 5060Ti 16GB
И комменты в статьях были примерно точно такие же, насколько помню
мне после второй статьи пошли предложения поработать за еду.
а после третьей статьи я уже летел в Мск на собеседования в три места. А в те годы найти работу, сидя в регионе, это не как сейчас. Все было не так и не просто.
с тех пор, получается уже 10 лет, я не частный трейдер, а наемный ) За эти годы получилось прийти к партнерским условиям. В принципе за этим и идут программисты в трейдинг — за опционом доли в будущей прибыли )
Все это имело бы какой-то смысл сейчас, если бы Вы использовали «нечеловеческие» данные, т.е. данные, которых не видели нынешние LLM. Но Вы то используете «человеческие» комментарии.
Повод был: в сети начали появляться заказные тексты с негативными «отзывами» обо мне. Их цель проста — использовать имя как приманку, а затем перенаправить читателей на сомнительные криптовалютные проекты — типа черное SEO и в них не только моё имя, но и множество других. Бизнес видимо так устроен.
В итоге получился вполне рабочий инструмент для мониторинга репутации и анализа тональности — миссия выполнена.
А то что выглядит как костыль — свою работу выполняет.
А что мешало эту конкретную цель с помощью современной LLM достичь?
Без скриптов, но с агентами (к примеру).
Автор не новости читает, а комментарии на свои публикации. Finbert там не нужен.
Смотрел на ноутбучные Ryzen AI (эти кристаллы затыкают за пояс любую видеокарту, в топовом Ryzen AI 395+ max можно выделить 112 Гб RAM), там тоже все печально. Хоть какой-то софт есть только для Windows, для Linux нет вообще ничего.
Именно по теме статьи у меня была очень конкретная задача провести анализ 12 000 комментариев к в моим статьям. При помощи этой пусть и старой модели 2022 года я смог задачу выполнить