TradingAgents-Astock's seven analysts share the same news tool
An A-share multi-agent investment research framework adapted for A-share data sources (dragon-tiger lists, hot money, share lock-up releases, etc.), with 7 AI analysts debating under A-share-specific rules; a deep rework of TradingAgents for China's A-share market, featuring bull/bear debate and risk assessment.
At a glance
- What is it?
- A fork of a multi-agent investment research framework, specialised from the data layer up for the Chinese A-share market, with three added analyst roles and seven free data endpoints and no API keys. Its own documentation states it is a research reproduction and not investment advice, its architecture diagram stops before its third stage, and its dependency comments explain three of its pins by issue number.
- Who is it for?
- TradingAgents-Astock suits a researcher or student who wants to read a multi-agent debate structure applied to A-share rules, and who is willing to pay for thirty to fifty model calls per analysis or run a local model. It does not suit anyone treating its output as a trading signal, because the project itself says it is a research reproduction and not investment advice.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- simonlin1212/TradingAgents-astock3,979 ★ · +723
| Repository | 2026-09-10 | 2026-11-14 |
|---|---|---|
| simonlin1212/TradingAgents-astock | 3.3k | 4k |
723 Stars in the last 65 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The README states this is research, not advice
The most important line in the file is a disclaimer, and it sits directly under the title rather than at the foot. The project describes itself as an engineering implementation and a research reproduction of the framework described in the linked paper, aimed at research and teaching, and states in bold that it does not constitute investment advice and does not provide any investment service. That framing matters for reading everything else, because what the system produces is a set of arguments, not a position. The structure is a chain of agents: analysts each produce a report using their own tools, a bull researcher and a bear researcher then argue for a bounded number of rounds, and a risk stage follows. The file also states where the outputs go and in what language. Reports are written in Chinese, and the internal debate is deliberately kept in English, on the stated grounds that this preserves reasoning quality. The benchmark used to judge the result also changes: the original used a United States index fund, this one uses the CSI 300. None of that is a performance claim, and the file makes none.
The architecture diagram stops before its third stage
The overview is a box-drawing diagram with three horizontal bands, and the third band is empty. The first band shows the seven analysts in sequence, each annotated as carrying a tool loop. The second shows the bull and bear researchers pointing at each other, annotated as debating for at most a bounded number of rounds. Then a separator line opens the third band and the file ends, with no content between it and the close of the block. The prose around the diagram refers elsewhere to a three-way risk debate, so the missing band is not an empty stage in the design, it is a diagram that was cut off. Two smaller things are visible in the same block. The content lines are shorter than the borders they sit inside, so nothing lines up, and the arrow between the two researchers is drawn as a box-drawing character rather than as text. The cost-control mechanism that does survive is described in the text under the diagram, and it is the more useful part: two model slots, one fast model used by every analyst, researcher, trader and risk debater, and one deeper model used only by the research manager and the portfolio manager, on the stated grounds that those two need to synthesise global information before deciding.
Five of the seven analysts reach for the same news tool
The role tables list each analyst's responsibility and its tools, and reading them together shows that the tool access is heavily shared. The original four are a market analyst with price and indicator tools, a sentiment analyst with the news tool, a news analyst with news, global news and insider transaction tools, and a fundamentals analyst with four financial statement tools. The three added roles are a policy analyst reading regulatory and industrial policy, a hot-money tracker reading the exchange's daily leaderboard and capital flow, and a lockup monitor reading share unlocks, major-holder reductions and equity pledges. Count the tool names. The single news tool appears in five of the seven roles. Insider transactions appear in three. Global news appears in two. The two newest roles differ from each other by one tool. So the seven-way split is substantially a split in prompting and framing rather than in data access, which is worth knowing before you assume the seventh analyst sees something the fourth cannot. The file does give each added role a reason it exists, and the reasons are specific to the market rather than generic: policy as a direct driver of sector rotation, short-term capital as a core pricing force, and unlocks as a supply shock particular to that market.
One provider's ban thresholds are documented in detail
There is a section, tagged with a version number, that is the most technically honest part of the README and also the most important operationally. It sets out a routing rule: anything obtainable from the raw-TCP source or from the Tencent endpoint should come from there, and one provider is used only for the data nobody else carries. Then it documents that provider's risk control with measured thresholds, a ban arriving above five requests per second, at ten or more concurrent requests, or at two hundred in a minute. The mitigation is a single throttle entry point that serialises requests with a default gap of at least one second plus a random jitter of a fraction of a second, and reuses a keep-alive session, so that batch analysis across many agents no longer trips a temporary block. An environment variable is offered to slow it further for bulk work, and the section states explicitly that the throttle applies only to that one provider. Two things follow for anyone running this. Throughput against that source is capped by design, and the README is telling you the caps are enforced by the provider rather than by the tool.
The quickstart installs with pip and then runs with uv
The setup sequence mixes two tools, and the mismatch is in consecutive sections. Installation says to create a Python 3.10 or newer environment, clone the repository, change into it, and install the project in editable mode with pip. Then the run section tells you to create a Python file, paste a configuration dictionary into it, and execute it with a different tool's runner. A bare run command from one environment manager will resolve the project again in its own way, so the editable install you just did with pip is not necessarily the environment the run happens in. The file does helpfully point out that the repository already contains a runnable version of that example file, so nothing has to be created by hand. It also clarifies something that reads as a contradiction: the thing called config in the snippet is not a file in the repository but a dictionary passed into the graph constructor, where you set only what you want to override and everything else falls back to a defaults module. Six providers are listed for the environment file, one of them recommended for domestic reach.
git clone https://github.com/simonlin1212/tradingagents-astock.git
cd tradingagents-astock
pip install -e .Two optional installs sit beside that one, and both concern credentials rather than the library.
The Google extra was removed over an httpx version conflict
The dependency file explains three of its pins in comments attached to issue numbers, and the Google one is the interesting case. A comment states that there is deliberately no Google extra, and that the Google integration package requires a newer version of the HTTP client than one of the market-data packages allows, which means the two cannot be satisfied together. The market-data package pins that HTTP client below a given version, and the earlier version of it was released before the pandas release this project requires, so loosening the pin sends a resolver back through years of releases looking for a combination that does not exist, and it reports a conflict about the wrong package entirely. The fix was to raise the market-data package to the first version compatible with the required pandas release. That is why the quickstart installs the Google packages with dependency resolution switched off and then upgrades the HTTP client by hand. The subscription-quota extra has its own comment explaining that its chain deliberately avoids that HTTP client, so it does not collide, and that the conflict was verified with a lock rather than assumed.
Compose adds a local model path behind a profile
The compose file defines four services, and one of them exists so the project can run without a paid API at all. The first is the interactive command line, built from the Dockerfile, reading an environment file, with a named volume mounted at the application's data directory and both a pseudo-terminal and standard input kept open so it can prompt. The second is the web interface, which enters through a dedicated launcher rather than by naming a script file directly, and the comment beside it explains why: the launcher resolves the script by its own file path so it does not depend on the working directory, whereas the obvious command fails with a file-not-found error the moment the working directory is wrong. The web service also sets three server environment variables, with a comment that the container must listen on all interfaces or the published port does not reach it. The third and fourth services are a local model server and a second application service configured to use it, and both sit behind a profile name, so they start only when that profile is requested. Two named volumes hold the application data and the model store.
Three container fixes are documented by issue number
The Dockerfile is the best-engineered file in the repository and it explains itself in comments that name the bug each line prevents. The image installs two Chinese font families in the runtime stage, with a comment saying the slim base image ships no such font, so the PDF export path finds nothing to render a Chinese report with. That is tied to one issue. The next comment is longer and covers a subtler problem: the application runs as a dedicated unprivileged user, and a named volume mounted over a directory that does not exist in the image gets created owned by root, which leaves the application unable to write its own cache, logs and memory, surfacing as a permission error in a third issue. The fix is to pre-create those three directories in the image before the volume mounts, so ownership is inherited correctly, and then copy the application with matching ownership. The build is two stages on the same slim base, with a virtual environment created in the builder and copied wholesale into the runtime stage, and bytecode writing disabled in both. An attribution file sits at the root beside the licence.
Editorial conclusion
TradingAgents-Astock suits a researcher or student who wants to read a multi-agent debate structure applied to A-share rules, and who is willing to pay for thirty to fifty model calls per analysis or run a local model. It does not suit anyone treating its output as a trading signal, because the project itself says it is a research reproduction and not investment advice. Before running it, read the section on the EastMoney throttle, since it documents that provider's ban thresholds and the serialisation that avoids them, and that is the part that will shape your throughput. Decide which of the two model slots you can afford, and note that routing some nodes through a personal Claude subscription instead of an API account is a documented option whose terms are yours to check. Version 0.5.20 shipped on 2026-09-21 and the last push was on 2026-09-25.
Frequently asked questions
What is the TradingAgents: Multi-Agents LLM financial trading Framework?
The README presents this repository as an engineering implementation and research reproduction of that paper's framework, specialised for the Chinese A-share market. It adds three analyst roles to the original four, replaces the data sources, adopts A-share trading rules, and switches the benchmark index. The project states it is for research and teaching and is not investment advice.
What does TradingAgents-Astock add to the upstream project?
Three dimensions, by its own table. Data sources move from two Western providers to seven free Chinese endpoints. Analyst roles go from four to seven, adding policy analysis, hot-money tracking and lockup monitoring. Trading rules move from same-day settlement without price limits to next-day settlement with price limits, minimum lot sizes and session rules.
How many LLM calls does one TradingAgents-Astock analysis make?
The README states 30 to 50 calls per analysis. The work is split across two model slots: a quick model used by every analyst, researcher, trader and risk debater, and a deeper model used only by the research manager and the portfolio manager.
Does TradingAgents-Astock need paid data APIs?
No key and no credits, per the README. Seven sources are listed, one over a raw TCP port and six over HTTP, several of which are undocumented internal endpoints rather than published interfaces. One provider's ban thresholds are documented along with a built-in serialising throttle.
Can TradingAgents-Astock run without a paid model API?
Yes. The compose file defines a local model server and a second application service configured to use it, both behind a profile name so they start only when requested. Docker is otherwise optional, and a normal install needs no container at all.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/simonlin1212-tradingagents-astock)Star history chart for your README
[](https://hysenlabs.com/projects/simonlin1212-tradingagents-astock)Was this useful?