A 5 MB codebase coordinates 7 A-share analysts
Our measured checkout was only 5 MB, yet the workflow assigns work to 7 analyst roles. Four cover market action, sentiment, news, and fundamentals. Three additions focus on Chinese policy, hot-money activity, and restricted-share unlocks. Their reports feed a bull and bear debate, a research manager, a trader, three risk positions, and a portfolio manager. Separate quick and deep model settings let the aggregation roles use a different model from the reporting roles.
The roughly 20,365 lines also encode A-share rules that the upstream US-market project does not assume: T+1 settlement, price limits, minimum lots, trading hours, and a CSI 300 comparison. The output is a rating and rationale, not an executable order. That distinction matters because a fluent report can still contain a bad data point or model error. The README presents the software as a research and teaching implementation and explicitly rejects the role of investment adviser.
What happened when we ran it
Our sandbox installed 151 packages in 39 seconds and used 633 MB on disk. The build completed in 1 second. We ran commit f1bd10f in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The checked-out repository contained 156 files and about 20,365 source lines. Those numbers make the package straightforward to reproduce compared with many local AI projects, although they do not measure report accuracy or market-data quality.
Pytest finished in 57 seconds with 377 passed, 0 failed, and 15 skipped of 377. Pip-audit reported 0 known vulnerabilities in the installed environment. The repository had a Dockerfile, a compose file, and a tests directory, but our scan found 0 CI workflow files. A passing local suite is useful; the missing visible CI configuration means a maintainer or adopter must decide where those same checks are enforced for incoming changes.
The 151-package install still needs model credentials and live data
Python 3.10 or newer, pip install -e ., and one command can start either the CLI or Streamlit interface. The application then needs an LLM route. The README documents MiniMax, DeepSeek, Qwen, GLM, OpenAI, Anthropic, Kimi, xAI, OpenRouter, Ollama, and custom OpenAI-compatible endpoints. Most routes need their own environment variable, and each analysis is described as 30 to 50 LLM calls, so provider price and quota belong in the trial budget.
One 633 MB environment cannot satisfy every optional path cleanly. The project removed its Google extra in v0.3.1 because supported Google packages require httpx 0.28.1 or newer while mootdx pins a version below 0.26. The docs tell Gemini users to install packages manually, accept the bump, or use another environment. A separate Agent SDK extra, added in v0.4.0, can use a personal Claude subscription for selected roles and fall back to a paid provider when quota is exhausted.
Seven free data sources create several failure points
Inside our 5 MB checkout, the README lists 7 public data sources: mootdx, Tencent Finance, East Money, Sina Finance, Tonghuashun, Cailianshe, and Baidu Stock Market. They cover prices, statements, news, sector data, lockups, and fund flows without a dedicated market-data API key. Mootdx uses TCP 7709 while the others rely mainly on public web endpoints. That breadth helps fill an A-share report, but it also makes the output depend on several changing services outside the repository's control.
Issue 102 shows what that dependence looks like. The reporter recorded failed mootdx handshakes, Cailianshe parsing trouble, a closed East Money connection, and a Tonghuashun response handled as a missing file in the same analysis. Fallbacks kept parts of the run moving, but missing evidence can still leave an analyst section empty. The README says empty reports are omitted from the interface. Users should record which sources answered and refuse to interpret a partial report as complete coverage.
Performance summaries do not turn decisions into a backtest
Version v0.5.2 added a command that revisits saved decisions after later prices arrive. It reports direction accuracy against CSI 300 alpha, groups outcomes by rating and symbol, and checks whether average alpha falls from Buy to Sell. The README warns that fewer than 20 directional samples are noise. This is a sensible feedback loop for research prompts because it forces ratings to meet later data rather than disappearing after generation.
The same documentation says the 377-test application has no position sizing, overlapping-window control, transaction costs, impact costs, or trade execution. It does not produce entry, stop-loss, or target prices. Open issue 105 records a deeper backtest available only through an HTTP endpoint, missing interface access, incomplete alert conditions, and duplicate screening implementations. Those are stated product gaps, not promised delivery dates. A performance command can expose weak judgments without proving a deployable strategy.
Version v0.5.17 is active, while the English setup text needs repair
Version v0.5.17 was released on September 5, 2026, the same date as the last repository push. GitHub showed 3,298 stars, 5 open issues, and 6 open pull requests. The release saves LLM provider, model, endpoint, and subscription choices under ~/.tradingagents/llm_config.json. That cadence and small queue look healthy for a repository created in May, though a young finance tool still deserves pinned revisions and its own data-quality checks.
The primary 36 KB README is Simplified Chinese, and a similarly detailed English version exists. The English quick start still says subscription plans cannot be used, while its later configuration section refers to the Claude Agent SDK subscription override. The Chinese README documents that override directly. English-only users should cross-check provider setup against the package manifest and current release until the contradiction is removed. The 39-second installation is easier than choosing a trustworthy model, data route, and evaluation method.

