TradingAgents: мультиагентный AI-фреймворк для торговли, который моделирует хедж-фонд

Большинство AI-торговых проектов — это один LLM, которому скормили данные и попросили «принять решение». TradingAgents (GitHub, arXiv: 2412.20138) идёт другим путём: вместо одного агента — целый штат трейдинговой фирмы, где каждая роль выполнена отдельным LLM-агентом со своими инструментами, данными и промптом.
Фреймворк построен на LangGraph — state machine для оркестрации графов LLM-агентов. Результат: система, которая не просто «смотрит на данные», а спорит сама с собой, прежде чем принять решение.
Архитектура: от данных до решения

Весь пайплайн — это направленный ациклический граф (DAG) из 12 узлов, через которые последовательно проходит состояние торговой сессии:
Analyst Team → Research Debate → Trader → Risk Debate → Portfolio Manager → BUY/HOLD/SELL
Каждый узел — отдельный LLM-агент с доступом к специфическим инструментам. Граф компилируется и исполняется через LangGraph.StateGraph.
Команда аналитиков: четыре специализации
Первый слой системы — четыре аналитика, каждый со своим набором инструментов и фокусом.
1. Fundamentals Analyst
Оценивает фундаментальные показатели компании:
| Инструмент | Что делает |
|---|---|
get_fundamentals |
P/E, P/B, дивидендная доходность, ROE |
get_balance_sheet |
Активы, обязательства, equity |
get_cashflow |
Операционный и свободный денежный поток |
get_income_statement |
Выручка, прибыль, маржинальность |
Агент ищет несоответствия между рыночной ценой и внутренней стоимостью. Источник данных — yFinance или Alpha Vantage (переключается через конфиг).
2. Sentiment Analyst
Агрегирует настроения из трёх источников:
- Yahoo Finance News — институциональный фрейминг, факт-ориентированный сигнал
- StockTwits — розничные трейдеры, сообщения с тегами Bullish/Bearish
- Reddit — r/wallstreetbets, r/stocks, r/investing
Критическая деталь: агент предварительно загружает все данные и инжектит в промпт как структурированные блоки. Нет tool-calling — нет галлюцинаций. LLM видит реальные данные с первого токена.
3. News Analyst
Мониторит:
- Тикер-специфичные новости
- Глобальные/макроэкономические новости (ФРС, геополитика, commodities)
- Инсайдерские транзакции (
get_insider_transactions)
Макро-запросы настраиваются в конфиге (global_news_queries): ФРС, S&P 500, геополитика, центробанки, энергетика.
4. Technical/Market Analyst
Работает с техническими индикаторами:
get_stock_data— OHLCV-данныеget_indicators— MACD, RSI, Bollinger Bands, скользящие средние
Использует tool-calling: LLM сам решает, какие индикаторы запросить, на основе текущего контекста.
Исследовательские дебаты: Bull vs Bear

После того как аналитики сформировали отчёты, начинается структурированная дискуссия:
- Bull Researcher — строит бычий тезис на основе отчётов аналитиков
- Bear Researcher — строит медвежий контртезис
- Они спорят в несколько раундов (настраивается через
max_debate_rounds) - Research Manager (deep thinking LLM) — выносит вердикт, синтезируя обе позиции
Это ключевое архитектурное решение: вместо того чтобы один LLM «решал» (confirmation bias), система формализует adversarial thinking. Bull видит возможности, Bear видит риски, Manager взвешивает.
Трейдер: синтез в решение
Trader Agent получает:
- Четыре отчёта аналитиков
- Вердикт Research Manager
И формирует конкретное торговое предложение: BUY / HOLD / SELL, с обоснованием и sizing.
Риск-менеджмент: тройной фильтр
Предложение трейдера проходит через трёх риск-менеджеров, которые тоже дебатируют между собой:
| Агент | Профиль |
|---|---|
| Aggressive Analyst | Высокий risk tolerance, фокус на потенциале |
| Neutral Analyst | Балансирует risk/reward |
| Conservative Analyst | Низкий risk tolerance, фокус на downside protection |
Дебаты проходят в несколько раундов (max_risk_discuss_rounds). Каждый оценивает предложение через свою линзу.
Portfolio Manager: финальное решение
Portfolio Manager (deep thinking LLM) получает:
- Предложение трейдера
- Результаты риск-дебатов
- Память прошлых решений — рефлексия по предыдущим сделкам с этим тикером
И выносит финальное решение: одобрить, отклонить или скорректировать сделку.
Рефлексивная память
Система ведёт decision log (~/.tradingagents/memory/trading_memory.md). На каждом следующем запуске для того же тикера:
- Загружает реализованную доходность (raw return + alpha vs SPY)
- Генерирует рефлексию: что сработало, что нет
- Инжектит историю в промпт Portfolio Manager
Это создаёт обучение на собственных ошибках без файн-тюнинга.
Технический стек
| Компонент | Технология |
|---|---|
| Оркестрация | LangGraph (StateGraph, checkpoints) |
| LLM-провайдеры | OpenAI, Google, Anthropic, xAI, DeepSeek, Qwen, GLM, MiniMax, Ollama, Azure |
| Данные рынка | yFinance, Alpha Vantage |
| Социальные данные | StockTwits API, Reddit API |
| Язык | Python 3.13+ |
| Persistence | SQLite checkpoints, Markdown decision log |
Два уровня LLM:
- Deep thinking (GPT-5.4, Claude 4.x, Gemini 3.x) — для Research Manager и Portfolio Manager
- Quick thinking (GPT-5.4-mini) — для аналитиков, трейдера, риск-менеджеров
Быстрый старт
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
conda create -n tradingagents python=3.13
conda activate tradingagents
pip install .
export OPENAI_API_KEY=...
tradingagents
Или через Python:
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["deep_think_llm"] = "gpt-5.4"
config["quick_think_llm"] = "gpt-5.4-mini"
config["max_debate_rounds"] = 2
ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-01-15")
print(decision)
Чем это отличается от одиночного LLM
| Аспект | Один LLM | TradingAgents |
|---|---|---|
| Confirmation bias | Высокий | Снижен через adversarial debate |
| Специализация | Generalist | 4 аналитика + 3 риск-менеджера |
| Данные | Что подали на вход | Каждый агент подтягивает свои |
| Рефлексия | Нет | Decision log + alpha tracking |
| Масштабирование | Линейное | Модульное (добавляй агентов) |
| Checkpoint | Нет | LangGraph SQLite resume |
Ограничения
-
Стоимость. 12 LLM-вызовов за один тикер × несколько раундов дебатов = десятки тысяч токенов. На GPT-5.4 это ≈$0.50–2.00 за один анализ.
-
Только акции. Текущий data layer (yFinance/Alpha Vantage) работает с equities. Крипто, форекс, опционы — нет.
-
Не real-time. Система анализирует конкретную дату, не потоковые данные. Подходит для дневных/недельных решений.
-
Research disclaimer. Авторы подчёркивают: это исследовательский фреймворк, не готовое торговое решение.
Ссылки
- 💻 GitHub: tauricresearch/tradingagents
- 📄 Статья (arXiv): 2412.20138 — TradingAgents: Multi-Agents LLM Financial Trading Framework
- 🎬 Демо: YouTube
- 🌐 Tauric Research: tauric.ai
Вывод
TradingAgents — наиболее зрелая open-source реализация мультиагентного торгового фреймворка. Ключевая идея — не «один умный LLM», а формализованный процесс принятия решений, где adversarial debate между агентами снижает confirmation bias, а рефлексивная память создаёт петлю обратной связи без файн-тюнинга.
Для практического применения основной вопрос — стоимость inference и ограничение на equities. Но как архитектурный паттерн для AI-driven торговли это эталонная реализация.
MarketMaker.cc Team
Количественные исследования и стратегии