Daily Stock Analysis: AI-система, которая превращает список акций в ежедневный дашборд решений

daily_stock_analysis от ZhuLinsen — один из самых звездных AI-проектов про финансы прямо сейчас, #1 Python-репозиторий дня на Trendshift. Но интересно тут не число звезд. Интересно, что проект не делает вид, будто предсказывает цены. Он решает более узкую и куда более полезную задачу: каждый торговый день берет ваш список акций и формирует структурированный, объяснимый аналитический отчет — и доставляет его туда, где вы реально читаете, в мессенджер.
Дисклеймер автора проекта: только для обучения и исследований. Это не инвестиционная рекомендация. Рынок несет риск.
Главная идея: не бот, а ежедневный аналитик-репортер
Большинство репозиториев про AI-трейдинг гонятся за одной фантазией: данные на вход, сигнал на выход, прибыль вверх. daily_stock_analysis построен на более честной посылке — сложное в инвестировании не сгенерировать еще один сигнал, а собрать цельную, непротиворечивую картину по бумаге и записывать ее одинаково каждый день.
Поэтому система ведет себя как младший аналитик по расписанию. Пайплайн линейный и читаемый:
| Этап | Что происходит |
|---|---|
| Сбор данных | Котировки, дневные свечи, индикаторы, потоки капитала, фундамент, фишки |
| Технический анализ | Скользящие средние, RSI, объемы, отклонение, классификация тренда |
| Новости и разведка | Поиск свежих новостей, сообщений и настроений по тикеру |
| LLM-анализ | Сборка контекст-пакета и промпта, выдача JSON-дашборда решения |
| Рендер отчета | Markdown-отчет, при желании конвертируется в картинку |
| Уведомление | Пуш в WeCom, Feishu, Telegram, Discord, Slack или на почту |
По умолчанию запускается по расписанию (будни, после закрытия) и пропускает неторговые дни. Покрывает рынок Китая (A-акции), Гонконг, акции и ETF США, а японский и корейский рынки поддерживает в урезанном виде там, где не дотягиваются источники данных.
Тихо умная часть: отказоустойчивость данных

Самое крепкое инженерное решение в проекте — не LLM, а то, как он по умолчанию считает данные ненадежными.
Рыночные данные тянутся через приоритетную цепочку из шести провайдеров, каждый из которых подстраховывает предыдущий:
Efinance (P0) → Tencent (P0) → Akshare (P1) → Pytdx (P2) → Baostock (P3) → Yfinance (P4)
Когда анализируется американский тикер, система автоматически пропускает чисто китайские источники и уходит на Yahoo Finance. Если источник падает, отваливается по таймауту или отдает частичные данные, прогон деградирует только этот блок, а не роняет весь отчет. Промпту даже сообщается, какие блоки идут как fallback, partial или missing — поэтому модель обязана написать "данные недоступны", а не выдумать число.
Это правильный инстинкт для любой боевой системы: падение одного источника данных не должно ронять весь анализ. Относитесь к каждому фиду как к best-effort, нормализуйте поля и делайте пропуски видимыми, а не молча подставляйте значения.
Дашборд решения
LLM возвращает не прозу, а строгий JSON — дашборд решения, который отчет рендерит в единый макет:
- Ключевой вывод — одной фразой: покупать, держать или ждать, плюс срочность.
- Раздельный совет — разные указания для того, кто в позиции, и того, кто в кэше.
- Взгляд на данные — расположение средних, цена против поддержки/сопротивления, отклонение, чтение объема.
- Разведка — риск-алерты и позитивные катализаторы, каждый обязан нести дату.
- План действий — конкретные точки: идеальная покупка, стоп-лосс, цель, размер позиции.
- Чек-лист — каждое условие помечено ✅ / ⚠️ / ❌ (бычье построение, отклонение в норме, объем, отсутствие крупного негатива, оценка).
Дисциплина, зашитая в промпт, опинионированная и здравая: не догонять (отклонение более 5% выше MA5 — жесткое "не покупать"), торговать только бычье построение средних (MA5 > MA10 > MA20), предпочитать вход на откате с падающим объемом к поддержке и не прыгать между покупкой и продажей из-за движения одного дня.
Стратегии-агенты: задайте системе вопрос
Помимо ежедневного отчета, проект несет режим агента с 15 встроенными стратегическими сценариями, которые можно расспросить по тикеру:
| Семейство | Примеры |
|---|---|
| Тренд / средние | золотой крест MA, бычий тренд |
| Структурные теории | теория Чань, волны Эллиотта |
| Поведение / ликвидность | цикл эмоций, пробой на объеме, объем у дна, откат на сжатии |
| Катализатор / нарратив | горячая тема, событийная торговля, переоценка ожиданий |
| Качество / рост | качество роста |
Каждая стратегия — это YAML-файл со своими правилами, нужными инструментами и поправками к оценке, так что "интеллект" настраиваемый и проверяемый, а не спрятан внутри одного гигантского промпта.
Как читать это без самообмана
Любой такой проект легко переоценить. Честный чек-лист оценки:
- Качество источников новостей. Блок разведки хорош ровно настолько, насколько настроены ваши поисковые провайдеры — без них настроения и катализаторы пустеют, и отчет опирается только на технику.
- Недетерминированность. Выводы LLM плавают; один и тот же тикер может читаться чуть по-разному между прогонами. Дашборд — структурированное мнение, а не неизменная истина.
- Покрытие по рынкам. Глубина по A-акциям (потоки капитала, фишки, dragon-tiger) аккуратно деградирует до
not_supportedна рынках, где данных нет. - Свежесть данных. Следите за флагами
fallback/partial— деградировавший вход должен снижать вашу уверенность, ровно как требует промпт. - Бэктест ≠ прибыль. Отчет — это поддержка решения, а не подтвержденное преимущество.
Ограничения и честная оценка
Чем daily_stock_analysis не является:
- Не система исполнения. Анализирует и отчитывается; не выставляет заявки и не моделирует ликвидность.
- Зависит от модели. Качество вывода идет за тем LLM, на который вы его нацелили.
- Зависит от поиска. Без ключей к новостным API качественная половина отчета истончается.
- Недетерминированность. Одинаковый вход может давать слегка разные дашборды.
Ссылки
- 💻 GitHub: ZhuLinsen/daily_stock_analysis
- 📄 Лицензия: MIT
Вывод
daily_stock_analysis ценен не как оракул, а как повторяемая аналитическая привычка, поставленная на автомат:
- Стандартизировать, что значит "посмотреть на акцию", каждый день.
- Считать данные ненадежными и делать пропуски видимыми.
- Делать вывод объяснимым — оценка, уровни, чек-лист, риски.
- Отделять генерацию идей (15 стратегий) от дисциплинированной рамки решения.
Для обучения, ежедневного разбора и прототипа исследовательского процесса — сделано крепко. Для прода нужен следующий слой, тот же, что любой серьезной системе: валидированные данные, контроль дрейфа модели, реалистичное исполнение и риск-правила, которые живут в коде, а не только в промптах.
Авторы
Инженер торговых систем
Разработка торговых ботов с 2017 года: межбиржевой арбитраж (подключал до 30 бирж), парный арбитраж на коинтеграции между спотом и фьючерсами, скальпинг, фронтраннинг, торговля по новостям, сентиментный анализ, трендовые алгоритмы, а также алгоритмы управления и балансировки портфелей. Делает выставление ордеров до 1 мс, warehouse для big data, бэктестинг-движки, AI-агентов и интерфейсы для ботов (в т.ч. open-source profitmaker.cc). Стек: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, архитектура.