Twelve roles turn market inputs into one five-level rating
TradingAgents builds a default graph with 12 decision roles. Four analysts cover technical data, social sentiment, news and macro events, and company fundamentals. Bull and bear researchers argue over those reports before a research manager picks a direction. A trader writes the proposal, then three risk voices debate it before the portfolio manager returns a rating. Each handoff appears in the saved report.
The final scale has 5 choices: Buy, Overweight, Hold, Underweight, and Sell. The research manager, trader, and portfolio manager use typed outputs, while a parser returns REVIEW if the last rating cannot be read. Both debate loops default to 1 round. Generated prose still passes between stages, so typed endpoints do not make the reasoning chain deterministic.
Version 0.4.0 stops at a simulated exchange
TradingAgents v0.4.0 produces a portfolio decision, then the README describes sending an approved transaction to a simulated exchange. There is no documented broker execution path. Open issue 1225 proposes an interface and recommends starting with paper trading. Anyone connecting the output to real money must add authorization code for position, loss, exposure, duplicate-order, and liquidity rules.
Open issue 119 asks which engine and timeframe produced the paper's simulation because that code is absent from the documented package. Issue 137 separately asks for its baselines and evaluation metrics. The dependency list includes Backtrader and the data layer has historical-date guards. Even so, the repository does not present a ready command that reproduces the paper's tables.
What happened when we ran it
Our run of commit a33fd4c installed 130 packages in 60 seconds and occupied 352 MB in a fresh Debian container. The build completed in 10 seconds. Tests then succeeded in 135 seconds on the same 3-CPU, 8 GB sandbox. Those results cover installation and repository checks without hiding a failing step, and they make the project reasonable to evaluate before buying any model API usage.
The checkout measured 4.5 MB across 160 files and roughly 16,800 lines of source. We found 1 CI workflow, a Dockerfile, a Compose file, and a tests directory. Pip-audit reported 0 known vulnerabilities in the installed environment. The clean security result is specific to the dependency set resolved for our a33fd4c run; it does not audit prompts, market data accuracy, or the safety of a downstream trading integration.
A 60-second install leaves provider and data work
The package declares Python 3.10 or newer, and the README's environment example uses Python 3.12. You can install with pip or build the supplied container. A live run also needs a hosted language-model credential or a reachable Ollama or OpenAI-compatible server. The default stock, technical, fundamental, and news provider is Yahoo Finance; FRED macro data needs its own key, while Polymarket is documented as keyless.
Our sandbox had no secrets, so the 135-second test result does not measure the duration or price of a completed ticker analysis. The default graph makes many model calls across its 12 roles, and issue 291 reports that five raw news articles alone produced 6 to 7k input tokens for one user. Set model choices, debate rounds, retry limits, and the output-token cap deliberately before letting unattended jobs run.
Version 0.4.0 repaired several historical-data leaks
The August 31 v0.4.0 release pinned FRED requests to the historical data vintage, trimmed social data to the analysis window, prevented future decision-log lessons from entering older runs, and stopped silently dropping the latest OHLCV bar when its close was NaN. It also changed an unreadable portfolio rating from a tradeable Hold to an explicit REVIEW. These recent corrections should influence how much confidence you place in results produced by older tags.
Data-window fixes cannot remove future knowledge already stored in a language model. In open issue 805, the maintainer says the data-level leak was fixed while model-level contamination remains a separate limitation. A model trained after the period being studied may know the later outcome even when every fetched article and price bar respects the simulated date. The README likewise warns that published backtest figures are not guaranteed to repeat across models, dates, temperatures, or data snapshots.
Five report groups still omit exact source windows
The report writer can save 5 stage groups plus one combined markdown file: analyst reports, research debate, trader plan, risk debate, and portfolio decision. Open issue 1197 points out that these files do not record each tool's exact query window, article count, indicator lookback, or fundamental period. That omission makes a surprising rating harder to audit because the finished report cannot show precisely which market evidence each analyst received.
Version 0.4.0 does constrain the three main decision outputs with schemas, which is better than parsing every recommendation from free text. It does not yet prove that a stop price, entry, time restriction, and executive summary agree across stages. Issue 1168 asks for deterministic checks for those conflicts. Until such a layer exists, applications should treat the final markdown as a proposal and validate every numeric instruction before displaying or acting on it.
September activity is high, while version 0.4.0 is still young
GitHub showed more than 103,000 stars, 172 open issues, and 192 open pull requests on September 9, 2026. The last push was September 7, and issue discussions were updated on September 8. Release v0.4.0 arrived on August 31. That combination points to active maintenance and an enormous review queue; the combined repository count of 364 includes both issues and pull requests, so it should not be read as a defect total.
Apache-2.0 licensing, working tests, Docker support, and wide provider coverage make TradingAgents a credible base for experiments. Its clearest fit is a developer who wants to inspect or change a multi-agent investment discussion. A team seeking a trading system still has to supply reproducible evaluation, data lineage, deterministic risk checks, and broker execution, which is why Qlib, Freqtrade, or LEAN may be the better starting point.

