TradingAgents: Multi-Agent LLM Trading Framework
TradingAgents is an open-source Python framework that routes a trading decision through a pipeline of specialized LLM agents: analysts, bull/bear researchers, a trader, and a risk/portfolio manager. Reach for it if you want a working multi-agent research scaffold to study or extend; skip it if you want a production trading bot, since the README's disclaimer frames this as research, not financial or investment advice.
What TradingAgents Is
TradingAgents is a multi-agent framework that mirrors a trading firm's internal structure: Fundamentals, Sentiment, News, and Technical analysts each read a different data slice, bullish and bearish researchers debate their findings, a Trader agent turns that debate into a decision, and a Risk Management team plus a Portfolio Manager approve or reject it before it reaches a simulated exchange.
How the Multi-Agent System Works
- ✓Analyst Team: Fundamentals Analyst reads company financials, Sentiment Analyst aggregates news headlines, StockTwits, and Reddit chatter, News Analyst tracks macro events, and Technical Analyst runs indicators like MACD and RSI.
- ✓Researcher Team: bullish and bearish researchers run a structured debate over the Analyst Team's output before it reaches a decision.
- ✓Trader Agent composes the analyst reports and researcher debate into a decision on trade timing and size.
- ✓Risk Management team assesses volatility and liquidity, then reports to a Portfolio Manager who approves or rejects the order before it's sent to the simulated exchange.
- ✓Built on LangGraph, with graph-shape-aware checkpoint resume (added in v0.3.1) so a crashed multi-agent run can pick back up instead of restarting.
- ✓A decision log at ~/.tradingagents/memory/trading_memory.md that's always on: each run's realized return (raw and alpha vs SPY) and a one-paragraph reflection get injected into the next run's Portfolio Manager prompt.
Setting Up TradingAgents
Clone the repo (git clone https://github.com/TauricResearch/TradingAgents.git), create a Python 3.12 environment (conda create -n tradingagents python=3.12 && conda activate tradingagents), then run pip install . from inside the project directory. The Docker path skips the local environment: copy .env.example to .env, add your API keys, then docker compose run --rm tradingagents (or docker compose --profile ollama run --rm tradingagents-ollama for local models). Either way you need at least one LLM provider key set — OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY, the DashScope/Zhipu/MiniMax international-or-China key pairs, or OPENROUTER_API_KEY — plus ALPHA_VANTAGE_API_KEY for market data. AWS Bedrock needs the pip install ".[bedrock]" extra plus AWS credentials and a Bedrock model ID; Azure OpenAI needs a copied .env.enterprise; Ollama and any OpenAI-compatible server (vLLM, LM Studio, llama.cpp) need no API key at all.
Running TradingAgents
The interactive path is the CLI: run tradingagents (or python -m cli.main from source) and pick a ticker, analysis date, LLM provider, and research depth from the prompts, then watch the agent team's progress in the terminal. Tickers resolve against whatever market Yahoo Finance covers, using exchange suffixes like 0700.HK, 7203.T, AZN.L, RELIANCE.NS, 600519.SS, or BTC-USD. From Python, import TradingAgentsGraph, copy DEFAULT_CONFIG, and call ta.propagate("NVDA", "2026-01-15") to get a decision back; the same config dict sets llm_provider, deep_think_llm, quick_think_llm, and max_debate_rounds. Add --checkpoint to a CLI run (or checkpoint_enabled: True in config) to persist LangGraph state per ticker in a SQLite database, so a crashed run resumes instead of restarting; --clear-checkpoints resets that state.
Key Advantages
- ✓The analyst/researcher/trader/risk split is real running code, not a single prompt pretending to be a team — each role reads a different data slice before the Trader agent sees any of it.
- ✓Provider coverage is wide: OpenAI, Google, Anthropic, xAI, DeepSeek, Qwen, GLM, MiniMax, OpenRouter, Azure OpenAI, AWS Bedrock, Ollama, and any OpenAI-compatible endpoint, so you're not locked to one vendor's API.
- ✓The decision log carries realized return and a reflection from one run into the next run's Portfolio Manager prompt, instead of every run starting with zero memory of past outcomes.
- ✓Checkpoint resume persists LangGraph state per ticker, so a multi-agent run that crashes partway through doesn't have to restart from the first analyst.
- ✓Works across markets Yahoo Finance covers — US, Hong Kong, Tokyo, London, India, Canada, Australia, China A-shares, and crypto — via exchange-suffixed tickers, not just US equities.
- ✓Actively versioned: the README's News section documents six releases from v0.2.0 through v0.3.1, each with named fixes and additions rather than a single research drop.
Understanding Reproducibility and Disclaimers
- △The README's own disclaimer states TradingAgents is designed for research purposes and is not intended as financial, investment, or trading advice; no track record or return figure is claimed.
- △Two runs of the same ticker and date can produce different decisions: live news, StockTwits, and Reddit sentiment sources reflect "now" even when the price and indicator window is pinned to a historical date.
- △The default GPT-5.x family and other reasoning/thinking-mode models largely ignore the temperature setting, so tighter reproducibility means switching to a non-reasoning model via the Custom model ID option rather than getting deterministic output by default.
- △No live broker integration is documented — an approved trade is sent to "the simulated exchange," not a real brokerage account.
- △Backtest results are explicitly not guaranteed to match any published figure; the README frames the framework as a research scaffold, not a strategy with a fixed, replicable return.
- △Cost and latency scale with the number of agents and debate rounds in the pipeline, and the README doesn't quantify either for any given configuration.
Comparing Financial LLM Frameworks
Common Questions
TradingAgents is a research framework for studying how a team of specialized LLM agents — analysts, bull/bear researchers, a trader, and a risk/portfolio manager — arrives at a trading decision, not a plug-and-play trading bot.
TradingAgents supports OpenAI, Google, Anthropic, xAI, DeepSeek, Qwen (Alibaba DashScope, international and China endpoints), GLM via Zhipu, MiniMax (global and China), OpenRouter, Azure OpenAI, AWS Bedrock, local Ollama models, and any OpenAI-compatible endpoint such as vLLM or LM Studio.
TradingAgents sends an approved order to a simulated exchange, not a live brokerage, and the README's own disclaimer says the framework is for research and is not financial, investment, or trading advice.
Production readiness isn't clearly documented. The README instead documents reproducibility caveats — non-deterministic LLM sampling and live news/sentiment inputs — and frames TradingAgents as a research scaffold, not a strategy with a guaranteed, replicable return.
You pass a ticker and analysis date to TradingAgentsGraph.propagate(), and the market analyst grounds price and indicator claims in a verified data snapshot pinned to that date, with vendors like Alpha Vantage (look-ahead filtering added in v0.3.1) and FRED/Polymarket supplying the underlying feeds.
TradingAgents is released under the Apache-2.0 license, an OSI-approved permissive open-source license, per the repo's license file.
The problem it solves
Testing whether splitting a trading call across specialized roles — a fundamentals read, a sentiment read, a technical read, a bull/bear debate, then a risk sign-off — changes the outcome versus one LLM prompted to just decide, normally means wiring four or five agents and a debate loop yourself. TradingAgents ships that decomposition as running code: the analyst/researcher/trader/risk split from a trading desk, already built on LangGraph.
Best use cases
- •Studying how decomposing a trading call across specialized LLM roles (analyst debate, bull/bear research, risk sign-off) changes the outcome versus a single-prompt approach.
- •Running a decision pipeline against a fixed ticker-and-date pair, e.g. ta.propagate("NVDA", "2026-01-15"), while the price and indicator window stays pinned to that date.
- •Comparing how different LLM providers and models — GPT-5.x, Gemini, Claude, DeepSeek, Qwen, or a local Ollama model — perform inside the same multi-agent pipeline via the config's llm_provider switch.
- •Investigating reproducibility and non-determinism in LLM-driven financial decision systems using the documented temperature setting and checkpoint controls.
- •Running the whole pipeline against a local or self-hosted model (Ollama, vLLM, LM Studio, llama.cpp) instead of a hosted API, for teams that don't want trading data leaving their infrastructure.
Who should try it — and who should skip
Reach for TradingAgents if you're a developer or researcher who wants a working multi-agent pipeline to study how specialized LLM roles debate a trading decision, or a documented multi-provider agent framework to extend. Skip it if you want a production trading bot, live broker execution, or a system with a proven return — the README's disclaimer says this is a research tool, not financial or investment advice, and backtest results aren't guaranteed to match any published figure.
Related repositories
Want a second opinion on TradingAgents?
Ask an AI that can read this page — one click and you get its take on TradingAgents.
