Искусственный интеллект, Разработка | Олег Брагинский, Марина Строева
Основатель «Школы траблшутеров» Олег Брагинский и ученица Марина Строева разберут создание ИИ-агента, который анализирует российский фондовый рынок и криптовалюты. Объединяет технический анализ и парсинг новостей из открытых источников, умеет обходить ограничения платных сервисов и формировать удобные прикладные интерактивные отчёты.
В проекте ИИ-агент выступил в роли финансового аналитика. Мы реализовали математические модели для расчёта индикаторов, настроили сбор данных с Московской биржи (MOEX) и CoinGecko, разработали систему скоринга, которая предсказывает вероятность роста или падения актива.
Работа началась с предоставления агенту базового примера кода на Python, который берет свечи и объёмы из MOEX ISS API, считает RSI, MACD, momentum, волатильность, сохраняет историю сигналов в CSV, ранжирует 10 российских акций по вероятности роста и падения.
Промпт №1
«Нужно сделать систему анализа российского фондового рынка по этому примеру...»
Агент проанализировал код, исправил критическую ошибку в точке входа (if __name__ == "__main__":) и предложил структуру полноценного инвестиционного агента, включающую:
- портфельный модуль: расчёт размера позиции
- сигнальный модуль: прогноз вероятности
- риск-модуль: стоп-лоссы и лимиты.
Для теста упростили задачу до рабочего MVP, чтобы объединить графики с новостями.
Промпт №2:
«Сделай скрипт для анализа 10 акций РФ: анализирует рынок (новости, графики), генерирует идеи, простой (LLM + данные), предсказывает вероятность роста и падения»:
Агент разработал скрипт analyze_ru_market.py, который:
- Считает метрики: доходность за 5 и 20 дней, волатильность, тренд относительно SMA20.
- Подтягивает цены: использует API MOEX для акций и CoinGecko для BTC, ETH, TON.
- Анализирует новости: интегрирован поиск через NewsAPI.
Одной из главных задач стала минимизация зависимости от платных ключей. Мы полностью удалили интеграцию с NewsAPI и перешли на прямой парсинг RSS-лент ведущих финансовых агентств: РБК, Интерфакс, Коммерсант, Прайм, ProFinance.
Промпт №3:
«Используй источники новостей без API-ключей»:
Агент интегрировал библиотеку feedparser и подключил прямые RSS-каналы крупнейших агентств: РБК, Интерфакс, ТАСС, Коммерсант, Прайм и новости ЦБ РФ. Но на этом этапе столкнулись с шумом в новостях, по тикерам ТОН и ПОЛЮС приходило много нерелевантного контента:
Но поиск новостей только по тикеру часто пропускал важные события, где компания упоминалась полным именем. Внедрили справочник метаданных ASSET_META.
Промпт №4:
«Добавь поиск в новостях не только по тикеру, но и по названию компании и сфере деятельности (нефть, газ, золото). В таблицу отчёта добавь колонки "Компания" и "Сфера"»:
Агент токенизирует название компании: из «ПАО Лукойл» извлекает «лукойл». К списку поиска добавляются отраслевые маркеры: для нефтегаза – «нефть», «газ», «спг»; для банков – «ипотека», «кредит», «ставка».
Но широкие слова вроде «нефть» всё ещё могут давать шум. Добавляем в систему фильтр финансового контекста. Новость считается релевантной, только если имеет и отраслевое слово, и маркеры рынка (дивиденды, биржа, прибыль).
Для источников информации вводим расчёт весов: новости от Интерфакса или ЦБ имеют больший коэффициент влияния на итоговый прогноз, чем общие ленты.
Промт №5
«Добавь все новые данные в HTML-файл, сделай удобную и красивую вёрстку с графиками, диаграммами и таблицами. Добавь мини-график цены по каждому активу».
Агент проработал dashboard в темной теме, KPI-карточки с общим количеством идей и средней вероятностью роста. Графики Chart.js, включая столбчатые диаграммы вероятностей и линейные графики доходности.
В таблицу встроены мини-графики за последние 30 дней. Если цена выросла – график зелёный, если упала – красный. Добавлен краткий текстовый вывод по каждой компании:
При создании HTML-отчёта столкнулись с проблемами вёрстки таблиц. Chart.js по умолчанию растягивал спарклайны (мини-графики цен) на всю высоту строки, GPT-сводки деформировали таблицу по вертикали. При фиксированной вёрстке колонки «наезжали» друг на друга…
Чтобы этого избежать:
- обернули графики в контейнеры spark-wrap с жёстким ограничением 112x28px, отключили responsive: true для этого типа диаграмм
- расширили колонку сводки до 520px, добавили внутренний контейнер с max-height и overflow-y: auto; длинный текст не раздувает строку, а аккуратно прокручивается внутри ячейки
- переход на table-layout: auto в сочетании с width: max-content. Каждой из 16 колонок задали min-width через nth-child; таблица получила горизонтальный скролл, данные всегда читаемы.
Трудности, с которыми столкнулись:
- Таймауты API: при одновременном запросе данных по 20+ тикерам MOEX может временно блокировать запросы. Решение – добавление time.sleep(0.2) между вызовами.
- Ложные срабатывания фильтров: слишком строгий фильтр (Алиас + Контекст) приводил к тому, что новостей было 0. Агент ослабил правила, разрешив проход новостей при точном совпадении названия компании.
- Отсутствие библиотек: для работы RSS потребовалась установка feedparser, которую агент сам добавил в requirements.txt.
Результат: готовый инвестиционный дашборд в файле market_report.html, который содержит:
- интерактивные диаграммы распределения активов и волатильности
- отраслевую аналитику и юридические названия компаний
- мини-графики (спарклайны) за 30 дней
- сводку новостей (с GPT или без)
- топ-идей с вероятностью роста.
Финальный стек технологий оказался таким: Backend: Python (requests, feedparser, statistics); Frontend: HTML5, CSS3 (Flexbox/Grid), Chart.js 4; AI: GPT-4o-mini (опционально). Математическая модель оценки вероятности роста на основе семи факторов.
Автоматическое сохранение истории сигналов в CSV для бэктеста. Система сбора новостей из 6+ бесплатных RSS-источников. HTML-отчёт с графиками и спарклайнами. Автономный скрипт analyze_ru_market.py.
Весь процесс – от обсуждения логики до финального отчёта с графиками – занял 45 минут (с 17:08 до 17:53).
Итоги в цифрах:
- В тестовом прогоне система сформировала 10 инвестиционных идей, из которых 7 показали положительную динамику в течение следующих 5 торговых дней (тестовая выборка).
- Полный цикл анализа 10 активов — от загрузки данных до генерации HTML-отчёта — занимает менее 60 секунд без использования платных API.
- На исторических данных точность определения направления движения (рост/падение) составила 65–70% на выборке из 50+ сигналов (бэктест).
- Агент стабильно обрабатывает 20+ тикеров с учётом ограничений MOEX API благодаря управлению частотой запросов и очереди обработки.
- Система автоматически отбирает 3–4 приоритетные идеи с вероятностью роста выше 60%, сокращая время ручного анализа рынка в 3–5 раз.
- Система агрегирует и обрабатывает до 50 новостей в день по каждому активу из 6+ открытых RSS-источников.
- История сигналов автоматически сохраняется и накапливается для последующего бэктеста и улучшения модели.
Пример: по акции «Лукойл» система зафиксировала рост моментума и положительный новостной фон, связанный с дивидендами и динамикой цен на нефть, присвоив активу вероятность роста 68%. В течение четырёх торговых дней цена выросла на 3,2%, что подтвердило направление сигнала.
ИИ-агент позволяет собрать профессиональный терминал для анализа рынка быстрее, чем успеете допить кофе. Главное – итерационный подход: сначала запустить расчёты, затем добавить бесплатные новости, и в конце «навести красоту» в отчётах.
Результаты работы агента являются исследовательским сигналом и не являются индивидуальной инвестиционной рекомендацией.