用 7 个 AI 分析师做 A 股投研辩论(TradingAgents-Astock)

TradingAgents-Astock 是把 TauricResearch/TradingAgents 的多 Agent 投研辩论架构搬到 A 股的 Python 项目:7 位分析师、多空辩论、三方风险辩论,数据源全部免费直连。这篇文章讲清它的输入输出、可用功能、关键配置项、真实用户踩过的坑,以及它和同类 A 股数据工具、交易 Agent 的分工差别。

原版 TradingAgents 的多 Agent 辩论架构是按美股搭的:行情走 Yahoo Finance 和 Alpha Vantage,分析师角色里没有政策、游资、解禁这些概念,交易规则按 T+0、无涨跌停写。把它直接指向 A 股标的,数据取不到,辩论赖以成立的前提也不对。

TradingAgents-Astock 在这个架构上做了替换:数据层换成 mootdx、东方财富、新浪财经、同花顺这批国内接口,分析师从 4 位扩到 7 位,交易约束改写成 T+1、涨跌停、最小手数和交易时段。辩论与决策的流程骨架沿用上游,改动记录单独放在 CHANGES_FROM_UPSTREAM.md 里。

TradingAgents-Astock 是用 Python 写的 A 股多智能体投研框架,输入一个股票代码,7 位分析师分头取数写研报,经多空辩论与风险辩论后输出投资计划与评级。

TradingAgents-Astock 的多 Agent 投研架构示意

它不做什么

README 在显眼位置写了:本项目面向研究与教学,不构成任何投资建议,也不提供任何投资服务。它产出的是分析文本与评级,不接券商、不下单。

能分析的范围限于 A 股。数据源清单和 7 个分析师角色都围绕 A 股制度设计,仓库没有说明支持港股或美股。Issue 里出现过「什么时候可以加上港股分析」的需求,事实表没有给出该能力已经落地的说明。

它自身不是模型。每次完整分析要发起 30-50 次 LLM 调用,默认按 API Key 计费;不接 LLM 供应商,跑起来不会有任何输出。

部署上不依赖外部服务,装完即可用,Docker 只是可选的部署方式。仓库地址 https://github.com/simonlin1212/TradingAgents-astock ,采用 Apache License 2.0,主要语言 Python,语言占比 99.8%。

用之前先准备好什么

  • Python >= 3.10 的运行环境。
  • 至少一个 LLM 供应商的凭据,可选 MiniMax、DeepSeek、智谱 GLM、通义千问、OpenAI、Anthropic、Kimi,或任意 OpenAI 兼容网关。
  • 走 Kimi 时,ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL 两个都要设,只给 key 会把请求发到 Anthropic 官方并返回 401。ANTHROPIC_AUTH_TOKEN 不认,那是 Claude Code CLI 的写法,本项目走 langchain。
  • 要用 Google Gemini,需要额外装 langchain-google-genai、google-genai、httpx 三个包,仓库没有把它放进默认 extra。
  • 想让节点走个人 Claude Pro/Max 订阅额度,安装时要带 [agentsdk] extra。

主要功能

  • 7 位分析师分工出研报。市场分析师负责 K 线形态、技术指标与量价,工具是 get_stock_data、get_indicators;舆情分析师看散户讨论热度;新闻分析师看行业新闻、公告与宏观事件;基本面分析师看财报三表与估值。此外新增三位 A 股特化角色:政策分析师(监管与产业政策)、游资追踪师(龙虎榜、大单流向、主力资金)、解禁监控师(限售股解禁、大股东减持、股权质押)。每位分析师的报告都会流入后续辩论。
  • 多空辩论与研究经理研判。Bull Researcher 与 Bear Researcher 按配置的轮数对辩,之后由 Research Manager 综合成投资计划。
  • A 股约束下的交易方案。Trader 节点在 T+1、涨跌停、最小手数的框架里给出方案。
  • 三方风险辩论与最终决策。Aggressive、Conservative、Neutral 三方辩论后,Portfolio Manager 输出评级与理由。
  • 双 LLM 分工。quick_think_llm 承担所有 Analyst、Researcher、Trader 和风险辩手;deep_think_llm 只给需要综合全局信息的 Research Manager 和 Portfolio Manager。
  • 免费数据源直连。mootdx 走 TCP 7709 提供 OHLCV K 线、财务快照和 F10 文本;腾讯财经 qt.gtimg.cn 给实时 PE/PB/市值/换手率;东方财富提供龙虎榜、限售解禁、板块行情、个股信息;新浪财经给 K 线历史和财报三表;同花顺给 EPS 一致预期;财联社给全球财经快讯;百度股市通给概念板块分类和资金流向。全部不需要 API Key。
  • 东财节流。所有东财请求统一走 _em_get(),串行限流默认间隔 ≥1s 再加 0.1~0.5s 随机抖动,复用 Keep-Alive 会话。README 里给出的东财风控实测阈值是每秒超过 5 次、并发不低于 10、一分钟超过 200 次会触发封禁;mootdx、腾讯、新浪、同花顺、财联社、百度不受这套限流影响。
  • Web UI 记住 LLM 配置。从 v0.5.17 起,侧栏选的供应商、快速/深度模型、API Base URL、订阅覆盖、自定义模型 ID 会在点「开始分析」时写入 ~/.tradingagents/llm_config.json,页面加载时恢复;写盘失败只记 warning,不打断分析。

安装与最短示例

# Python >= 3.10
git clone https://github.com/simonlin1212/tradingagents-astock.git
cd tradingagents-astock
pip install -e .

在项目根目录建一个 .env,按你选的供应商填 key,例如 MiniMax:

MINIMAX_API_KEY=sk-xxx

然后在根目录跑:

uv run python main.py

根目录自带的 main.py 就是一个最小可运行示例,内部构造 TradingAgentsGraph(config=...) 并跑一次完整分析。Web 界面用 streamlit run web/app.py 启动,命令行入口是 tradingagents。README 里提示 config 不是仓库里的某个配置文件,而是传给 TradingAgentsGraph 的字典,只写要覆盖的项,其余取 tradingagents/default_config.py 里的默认值。

关键参数

  • llm_provider、quick_think_llm、deep_think_llm、output_language:README 的快速开始示例里出现的四个键,分别控制供应商、快速模型、深度模型和报告语言。
  • llm_timeout:v0.5.19 新增,默认 150 秒,覆盖所有走 LangChain 客户端的 provider,以及订阅撞额度后的降级客户端。单轮按配置值计时,内部工具循环按允许轮数换算总预算。
  • backend_url:指定端点,也可以改 Web 侧栏的 Base URL;glm 和 qwen 的默认端点在 v0.5.18 统一到国内站。
  • data_cache_dir:数据缓存目录,TradingAgentsGraph.__init__ 会用它建目录。
  • EM_MIN_INTERVAL:环境变量,批量场景设成 1.5~2 可以进一步降低东财请求频率,只影响东财。

结果在哪里看

  • Web UI 页面里呈现分析过程与最终结论。
  • CLI 方式在终端输出。
  • PDF 报告。仓库里没有说明 PDF 具体落在哪个目录。
  • data_cache_dir 指定的目录存放抓到的数据缓存。
  • Web UI 的 LLM 配置存在 ~/.tradingagents/llm_config.json。

实际使用中的坑

  • 没配 API Key 就运行,报 The api_key client option must be set either by passing,分析直接失败。这条 Issue 有 21 条评论,是目前反馈最多的一个,状态已解决。
  • 用中文股票名当 ticker 会失败,报 ticker contains characters not allowed in a filesystem path: '福晶科技'。原因是标的会被拼进文件系统路径,中文名不合规,得用股票代码。该 Issue 11 条评论,已解决。
  • 在 Ubuntu 上执行 pip install -e . 时依赖解析进入死循环,用户怀疑是 pyproject.toml 里的 dependencies 有问题。这条 4 条评论,已解决。
  • 生成 PDF 报告时中文字符渲染失败,报 fpdf.errors.FPDFUnicodeEncodingException: Character "股" … outside the range of characters supported by the font used: "helvetica",需要换 Unicode 字体。相关反馈还有 fpdf.errors.FPDFException: Not enough horizontal space to render a single character,都在 7 条评论前后,状态已解决。

横向对照

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
TradingAgents-Astock想用 LLM 跑 A 股投研链路、并且接受自己配模型和 key 的研究型用户pip install -e . 安装,Docker 可选依赖外部 LLM 供应商,每次分析 30-50 次调用;只覆盖 A 股;东财接口有节流,批量分析会变慢你需要的是从数据抓取一路到评级输出的完整辩论链路时TradingAgents-Astock
simonlin1212/a-stock-data只要 A 股原始数据、自己写策略或喂给别的模型的量化研究者未逐一核实从仓库描述看它提供的是行情、财务、研报、资金面等数据类内容,不含多分析师辩论与决策链你需要的是行情、逐笔、龙虎榜这些原始数据,不需要 LLM 辩论给出的结论时simonlin1212/a-stock-data
HKUDS/Vibe-Trading想用自然语言操作交易 Agent、不限定 A 股市场的个人用户未逐一核实仓库描述只有一句话,未列出 A 股制度适配(T+1、涨跌停)与政策、游资、解禁这三类 A 股特色角色,未逐一核实其具体能力边界你关注的是通用的个人交易 Agent 形态,而不是 A 股制度下的投研辩论链路时HKUDS/Vibe-Trading

只要数据、不要结论的话,a-stock-data 这类数据工具包比本项目省事:本项目把数据抓取和 LLM 辩论绑在一起,装完还得配 key,跑 30-50 次调用才出结果。反过来,如果你要的是一条从原始数据到评级、并且把 A 股交易制度写进决策流程的链路,纯数据工具包不提供后半段。

合规与授权边界

这个项目的数据来自第三方财经站点的公开接口,走 HTTP 或 TCP 直连,包括东方财富、新浪财经、腾讯财经、同花顺、财联社和百度股市通。项目侧做了节流处理,但那只是降低触发风控的概率,不代表上游站点授权了批量抓取。使用前请自行确认各数据源的服务条款,把请求频率控制在对方允许的范围内。

项目本身定位是研究与教学,输出不构成投资建议。如果要把它的结果用于任何真实的资金决策,风险和合规责任在使用者一侧。

适合谁

适合想研究多 Agent 辩论架构怎么落到具体市场的人,适合需要一条从 A 股数据抓取到评级输出完整链路的研究者,也适合已经把 LLM 供应商和 key 准备好、愿意照着 config 字典改参数的人。

不适合想直接拿到买卖信号的人,不适合不愿意配 API Key 或不愿承担每次 30-50 次调用成本的人,也不适合需要港美股覆盖的场景——这个仓库的数据源和角色都围绕 A 股设计。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.4 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)7.5 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)10.0 / 10
发布节奏(权重 10%)9.7 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

TradingAgents-Astock 把美股的多 Agent 辩论框架改写为 A 股版本,值得留存的地方在于它把 T+1、涨跌停、政策、游资、解禁这些制度变量真正写进决策链路,并交代了免费数据源、关键配置与东财节流口径。适合已有 LLM key、愿意照着 config 字典改参数的研究者。

文中功能、参数、版本号、东财节流阈值等来自作者 README 与仓库公开披露,诀.com 未独立验证;焚评分数由焚.com 授权引用,随其页面指标刷新;Issue 内容与状态来自 GitHub 公开数据。无独立实测,结果不保证复现。

项目来源与说明

开源项目:simonlin1212(simonlin1212)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库