Публикация Школы траблшутеров

Как автоматизировать поиск инвестиционных идей

Время чтения: 8 мин 20 сек
30 марта 2026 г. Просмотров: 116

Искусственный интеллект, Разработка | Олег БрагинскийМарина Строева

Основатель «Школы траблшутеров» Олег Брагинский и ученица Марина Строева разберут создание ИИ-агента, который анализирует российский фондовый рынок и криптовалюты. Объединяет технический анализ и парсинг новостей из открытых источников, умеет обходить ограничения платных сервисов и формировать удобные прикладные интерактивные отчёты.

В проекте ИИ-агент выступил в роли финансового аналитика. Мы реализовали математические модели для расчёта индикаторов, настроили сбор данных с Московской биржи (MOEX) и CoinGecko, разработали систему скоринга, которая предсказывает вероятность роста или падения актива.

Работа началась с предоставления агенту базового примера кода на Python, который берет свечи и объёмы из MOEX ISS API, считает RSI, MACD, momentum, волатильность, сохраняет историю сигналов в CSV, ранжирует 10 российских акций по вероятности роста и падения.

Промпт №1

«Нужно сделать систему анализа российского фондового рынка по этому примеру...»

Агент проанализировал код, исправил критическую ошибку в точке входа (if __name__ == "__main__":) и предложил структуру полноценного инвестиционного агента, включающую:

  • портфельный модуль: расчёт размера позиции
  • сигнальный модуль: прогноз вероятности
  • риск-модуль: стоп-лоссы и лимиты.

Для теста упростили задачу до рабочего MVP, чтобы объединить графики с новостями.

Промпт №2:

«Сделай скрипт для анализа 10 акций РФ: анализирует рынок (новости, графики), генерирует идеи, простой (LLM + данные), предсказывает вероятность роста и падения»:

Агент разработал скрипт analyze_ru_market.py, который:

  1. Считает метрики: доходность за 5 и 20 дней, волатильность, тренд относительно SMA20.
  2. Подтягивает цены: использует API MOEX для акций и CoinGecko для BTC, ETH, TON.
  3. Анализирует новости: интегрирован поиск через 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; таблица получила горизонтальный скролл, данные всегда читаемы.

Трудности, с которыми столкнулись:

  1. Таймауты API: при одновременном запросе данных по 20+ тикерам MOEX может временно блокировать запросы. Решение – добавление time.sleep(0.2) между вызовами.
  2. Ложные срабатывания фильтров: слишком строгий фильтр (Алиас + Контекст) приводил к тому, что новостей было 0. Агент ослабил правила, разрешив проход новостей при точном совпадении названия компании.
  3. Отсутствие библиотек: для работы 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).

Итоги в цифрах:

  1. В тестовом прогоне система сформировала 10 инвестиционных идей, из которых 7 показали положительную динамику в течение следующих 5 торговых дней (тестовая выборка).
  2. Полный цикл анализа 10 активов — от загрузки данных до генерации HTML-отчёта — занимает менее 60 секунд без использования платных API.
  3. На исторических данных точность определения направления движения (рост/падение) составила 65–70% на выборке из 50+ сигналов (бэктест).
  4. Агент стабильно обрабатывает 20+ тикеров с учётом ограничений MOEX API благодаря управлению частотой запросов и очереди обработки.
  5. Система автоматически отбирает 3–4 приоритетные идеи с вероятностью роста выше 60%, сокращая время ручного анализа рынка в 3–5 раз.
  6. Система агрегирует и обрабатывает до 50 новостей в день по каждому активу из 6+ открытых RSS-источников.
  7. История сигналов автоматически сохраняется и накапливается для последующего бэктеста и улучшения модели.

Пример: по акции «Лукойл» система зафиксировала рост моментума и положительный новостной фон, связанный с дивидендами и динамикой цен на нефть, присвоив активу вероятность роста 68%. В течение четырёх торговых дней цена выросла на 3,2%, что подтвердило направление сигнала.

ИИ-агент позволяет собрать профессиональный терминал для анализа рынка быстрее, чем успеете допить кофе. Главное – итерационный подход: сначала запустить расчёты, затем добавить бесплатные новости, и в конце «навести красоту» в отчётах.

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