TradingAgents-AStock A股多Agent投研系统
Overview
TradingAgents-AStock 是基于 TauricResearch/TradingAgents(65K⭐)的 A 股深度特化 fork,Apache 2.0 开源。用 LLM 模拟一家投研公司:7 位分析师(含 A 股特化的政策/游资/解禁监控)并行生成研报 → 多空研究员辩论 → 研究经理综合研判 → 交易员出方案 → 激进/保守/中立三方风控辩论 → 基金经理最终决策(评级+理由)。
数据层全免费直连:mootdx(通达信 TCP)+ 腾讯财经 + 东方财富 + 新浪 + 同花顺 + 财联社 + 百度股市通,零 API Key、零积分墙、零外部服务。
本项目为研究与教学用途,不构成投资建议。
本地部署(Windows,参照 AUGUR 处理方式)
项目源码已部署在 D:\TradingAgents-AStock,虚拟环境 D:\TradingAgents-AStock\venv。
首次部署(新机器)
# 1. 克隆项目
git clone https://github.com/simonlin1212/TradingAgents-astock.git D:\TradingAgents-AStock
cd D:\TradingAgents-AStock
# 2. 创建虚拟环境并安装(Python >= 3.10)
python -m venv venv
.\venv\Scripts\python.exe -m pip install --upgrade pip
.\venv\Scripts\python.exe -m pip install -e .
# 可选:如需 Gemini 模型,见 README「Gemini / langchain-google-genai」
# 3. 配置 LLM API Key(项目根目录建 .env)
配置 .env(LLM)
在 D:\TradingAgents-AStock\.env 中按实际使用的供应商填写(用各自的环境变量,不是 OPENAI_API_KEY):
# 方案A:MiniMax(推荐,国内直连,性价比高)
MINIMAX_API_KEY=sk-xxx
# 方案B:DeepSeek
DEEPSEEK_API_KEY=sk-xxx
# 方案C:智谱 GLM
ZHIPU_API_KEY=xxx
# 方案D:通义千问 Qwen
DASHSCOPE_API_KEY=sk-xxx
# 方案H:任意 OpenAI 兼容网关(9Router / AI Router / 自建代理)
OPENAI_COMPATIBLE_API_KEY=sk-xxx
BACKEND_URL=https://your-relay.example/v1
启停脚本(Windows)
| 脚本 | 作用 |
|---|---|
scripts/StartTradingAgents-AStock.ps1 |
启动 Web UI(Streamlit,端口 8501)并打开浏览器 |
scripts/StopTradingAgents-AStock.ps1 |
结束 streamlit 进程 |
脚本为 PowerShell 格式(.ps1),右键「用 PowerShell 运行」即可,或命令行执行:
powershell -ExecutionPolicy Bypass -File scripts/StartTradingAgents-AStock.ps1
也可以手动运行:
cd D:\TradingAgents-AStock
.\venv\Scripts\tradingagents-web.exe # 方式一:Web UI(推荐)
.\venv\Scripts\streamlit.exe run web/app.py # 方式二
打开浏览器访问 http://localhost:8501。
使用方式
1. Web UI(适合不写代码的用户)
侧边栏选择 LLM 供应商和模型(支持 MiniMax/DeepSeek/Qwen/GLM/OpenAI/Anthropic/Google/xAI/OpenRouter/Ollama + OpenAI 兼容自定义 base_url),输入 6 位 A 股代码 + 分析日期,点击「开始分析」。12 阶段 pipeline 实时显示进度,完成后可查看信号卡片(Buy/Hold/Sell)、7 份分析师报告、多空辩论、风控评估,并可导出 Markdown/PDF。
⚠️ Web UI 默认供应商是 MiniMax,不读 .env:即使 .env 中配了 DEEPSEEK_API_KEY 或 ZHIPU_API_KEY,Web UI 侧边栏仍默认 MiniMax。必须手动展开「⚙️ 模型配置」→ 切换 LLM 供应商下拉框为实际使用的供应商,否则会报 "未找到 minimax 的 API Key"。切换后选择会持久化到
~/.tradingagents/llm_config.json,重启后保持。
启动时序:Streamlit 需约 30 秒才能监听 8501 端口。健康检查
Invoke-WebRequest http://localhost:8501 -UseBasicParsing返回 200 即就绪。tradingagents-web命令内部调用python -m streamlit run web/app.py。
2. Python 脚本方式
项目根目录自带 main.py,或参考 examples/run_cases.py:
from tradingagents.graph.trading_graph import TradingAgentsGraph
config = {
"llm_provider": "deepseek",
"deep_think_llm": "deepseek-chat",
"quick_think_llm": "deepseek-chat",
"output_language": "Chinese",
}
ta = TradingAgentsGraph(debug=True, config=config)
final_state, decision = ta.propagate("688017", "2026-05-12")
print(decision)
3. CLI 方式
tradingagents # 交互式 CLI
tradingagents analyze # 分析
tradingagents performance # 决策绩效统计(方向正确率等)
4. 批量分析多只股票
cd D:\TradingAgents-AStock
.\venv\Scripts\python.exe examples\run_cases.py 688017 # 单只
配置要点
| 参数 | 默认值 | 说明 |
|---|---|---|
llm_provider |
"minimax" |
minimax/deepseek/qwen/glm/openai/anthropic/google/xai/ollama/openai_compatible |
deep_think_llm |
MiniMax-M2.7 | Research Manager + Portfolio Manager 用模型 |
quick_think_llm |
MiniMax-M2.7-highspeed | 所有 Analyst / Researcher / Trader 用模型 |
backend_url |
None | 自定义 API 端点 / 第三方中转网关 |
output_language |
"Chinese" | 报告输出语言 |
max_tokens |
None | 单次回复最大输出 token(报告中断先调这个) |
完整配置见 tradingagents/default_config.py 与 README「配置说明」章节。
常见问题排错
| 问题 | 解决 |
|---|---|
报 OpenAIError: api_key client option must be set |
用各自供应商的环境变量(DEEPSEEK_API_KEY / DASHSCOPE_API_KEY / ZHIPU_API_KEY / MINIMAX_API_KEY),配后重启程序 |
接 Kimi 报 401 invalid x-api-key |
光给 key 没给端点,ANTHROPIC_API_KEY+ANTHROPIC_BASE_URL=https://api.kimi.com/coding/ 两个都要设 |
| 报告写到一半断 | 输出上限,config 设 max_tokens: 16000 或环境变量 TRADINGAGENTS_MAX_TOKENS=16000 |
| 部分分析师报告空白 | 模型 tool-call 能力弱,换 deepseek-chat/通义/GLM-4/Claude/GPT 等 tool-call 稳的模型 |
导出 PDF 报 UnicodeEncodeError latin-1 |
装了旧版 fpdf(pyfpdf)冲突,pip uninstall -y fpdf && pip install "fpdf2>=2.8.6" |
| 东财数据被封 IP | 内置 _em_get() 串行限流(默认 ≥1s+随机抖动),批量场景设 EM_MIN_INTERVAL=1.5~2 |
| 企业内网防火墙拦截数据源 | 天融信/深信服等安全设备常拦截 mootdx TCP 7709、东财/财联社/新浪 HTTPS 请求。表现为分析师阶段卡住 5-10 分钟、游资追踪/解禁监控报告为空。系统有超时跳过机制,但整体分析从 3-5 分钟延长至 20-30 分钟。无法根治,可接受降级结果或换外网环境运行 |
| API Key 认证失败(401) | 启动分析前先直接调 API 验证 Key 有效性(见下方「API Key 预检」),避免分析跑到一半才报 401。常见原因:Key 含星号遮蔽、粘贴截断、Key 已过期 |
| .env 编辑后 Key 位置错误 | 用户用记事本编辑 .env 时常把 Key 粘到首行注释上方而非 XXX_API_KEY= 后面。编辑后务必读取 .env 确认 XXX_API_KEY=<非空值> 格式正确再重启 |
Docker 报 File does not exist: web/app.py |
用 docker compose up web 或本地跑用 tradingagents-web(按 __file__ 解析路径) |
API Key 预检(启动分析前必做)
直接用 PowerShell 调供应商 API 验证 Key,避免分析跑到一半才报 401:
# 智谱 GLM
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$headers = @{ 'Authorization' = 'Bearer YOUR_KEY'; 'Content-Type' = 'application/json' }
$body = '{"model":"glm-4-flash","messages":[{"role":"user","content":"hi"}]}'
Invoke-RestMethod -Uri 'https://open.bigmodel.cn/api/paas/v4/chat/completions' -Method Post -Headers $headers -Body $body -TimeoutSec 20
# DeepSeek
$headers = @{ 'Authorization' = 'Bearer YOUR_KEY'; 'Content-Type' = 'application/json' }
$body = '{"model":"deepseek-chat","messages":[{"role":"user","content":"hi"}]}'
Invoke-RestMethod -Uri 'https://api.deepseek.com/v1/chat/completions' -Method Post -Headers $headers -Body $body -TimeoutSec 20
返回正常回复即 Key 有效;返回 401 则 Key 无效或过期,需重新申请。
项目信息
- GitHub 上游: https://github.com/simonlin1212/TradingAgents-astock(Apache 2.0)
- 论文: TradingAgents: Multi-Agents LLM Financial Trading Framework
- Python: >= 3.10 | 本地路径:
D:\TradingAgents-AStock - 数据源: mootdx(TCP)/腾讯/东财/新浪/同花顺/财联社/百度股市通(全免费直连)
本项目仅用于研究与教学,不构成投资建议;投资决策请咨询持牌专业机构。股市有风险,投资需谨慎。