下一代AI量化交易决策框架TradingAgents-CN

简介

什么是 TradingAgents-CN ?

TradingAgents-CN 是一个基于多智能体大语言模型(LLM)的开源金融交易决策框架。它是对原项目 TradingAgents 的中文增强版,专为中文用户设计,旨在提供完整的A股、港股及美股市场的分析能力,并集成了多个国产大模型。

主要特点

  • 多智能体协作: 项目采用专业分工的智能体团队,包括基本面、技术面、新闻和社交媒体分析师,通过结构化辩论形成投资决策。
  • 全面的LLM支持: 集成了阿里百炼、DeepSeekGoogle AIOpenRouter等多个主流和国产大语言模型提供商,支持超过 60 种模型。
  • 中国市场优化: 专门支持 A 股和港股市场的数据,并提供完全中文化的界面和分析报告。
  • 强大的功能: 具备智能新闻分析、多级研究深度选择、实时分析进度跟踪、专业报告导出(支持 Markdown/Word/PDF )等功能。
  • 友好的用户界面: 提供基于 Streamlit 构建的现代化 Web 界面,可进行可视化操作、配置和结果展示。

应用场景

  • 量化策略研究: 训练、测试和评估基于AI 的金融交易策略。
  • 金融市场分析: 对特定股票(A 股/港股/美股)进行多维度(技术、基本面、新闻等)的综合分析,并生成专业报告。
  • AI金融教育: 作为学习和研究多智能体、LLM在金融领域应用的工具。

TradingAgents 框架将复杂交易任务分解为专业角色。这种设计确保系统采用稳健、可扩展的方法进行市场分析和决策制定。

准备

获取 TUSHARE_TOKEN

Tushare API Token 提供了专业的中国金融数据源,当然也可以只使用默认的 akshare

注意: 免费用户有调用频率限制,建议升级积分获得更高权限

获取地址: https://tushare.pro/register?reg=847217

进入个人中心 –> 获取 Token

获取 FINNHUB_API_KEY

FinnHub API Key 用于获取美股金融数据

注意: 免费账户每分钟 60 次请求,足够日常使用

获取地址: https://finnhub.io

注册一个账户就行

大模型

支持的大模型比较多,包括 OpenAIAnthropicGoogle 等,系统默认使用的是 阿里百炼,老苏还是习惯用 硅基流动

目前硅基流动(SiliconFlow),注册就送 2000Tokens,虽然不是免费,但也够用一阵子的

注册地址:

https://cloud.siliconflow.cn/i/NkUiXVhQ

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 0.1.3

对应的软件版本是最新的 cn-0.1.13-preview

env.txt

env.txt 是环境变量文件,只是为了方便编辑增加了 .txt 扩展名

源文件地址:https://github.com/hsliuping/TradingAgents-CN/blob/main/.env.example

将文件下载到本地后,按下面的进行修改

  1. 将获取的 Tushare API Token 替换 TUSHARE_TOKEN 后面的值,同时将 TUSHARE_ENABLED 设为 true
  2. 将获取的 FinnHub API Key 替换 FINNHUB_API_KEY 后面的值
  3. 选择对应的大模型,老苏用的硅基流动,所以替换 SILICONFLOW_API_KEY 后面的值即可,但 DASHSCOPE_API_KEY=your_dashscope_api_key_here 必须保留,否则会报 API密钥配置不完整

  1. MONGODB_HOST=localhost 后面的 localhost 改为 mongodb
  2. REDIS_HOST=localhost 后面的 localhost 改为 redis

其他的保持默认就可以了,或者删掉注释弄个简化版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
DASHSCOPE_API_KEY=your_dashscope_api_key_here
SILICONFLOW_API_KEY=<your_siliconflow_api_key_here>

FINNHUB_API_KEY=<your_finnhub_api_key_here>

TUSHARE_TOKEN=<your_tushare_token_here>
TUSHARE_ENABLED=true

DEFAULT_CHINA_DATA_SOURCE=akshare

TRADINGAGENTS_RESULTS_DIR=./results
TRADINGAGENTS_DATA_DIR=./data
TRADINGAGENTS_CACHE_DIR=./cache
TRADINGAGENTS_LOG_LEVEL=INFO
PYTHONDONTWRITEBYTECODE=1

MEMORY_ENABLED=true

MAX_WORKERS=4

MONGODB_ENABLED=true
REDIS_ENABLED=true

MONGODB_HOST=mongodb
MONGODB_PORT=27017
MONGODB_USERNAME=admin
MONGODB_PASSWORD=tradingagents123
MONGODB_DATABASE=tradingagents
MONGODB_AUTH_SOURCE=admin

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=tradingagents123
REDIS_DB=0

ENABLE_COST_TRACKING=true
COST_ALERT_THRESHOLD=100.0

MAX_USAGE_RECORDS=10000

USE_MONGODB_STORAGE=false

MONGODB_CONNECTION_STRING=mongodb://admin:tradingagents123@mongodb:27017/
MONGODB_DATABASE_NAME=tradingagents

mongo-init.js

这是数据库初始化脚本文件

源文件地址: https://github.com/hsliuping/TradingAgents-CN/blob/main/scripts/mongo-init.js

docker-compose.yml

在官方的基础上做了微调,将下面的内容保存为 docker-compose.yml 文件,保存时记得采用 UTF-8 格式

源文件地址: https://github.com/hsliuping/TradingAgents-CN/blob/main/docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
version: '3.8'

services:
# Streamlit Web 应用服务
web:
image: birdxs/tradingagents-cn:latest
container_name: tradingagents-web
ports:
- "8501:8501"
volumes:
- ./env.txt:/app/.env
env_file:
- env.txt
environment:
PYTHONUNBUFFERED: 1
PYTHONDONTWRITEBYTECODE: 1
# 时区配置
TZ: "Asia/Shanghai"
# 日志配置
TRADINGAGENTS_LOG_LEVEL: "INFO"
TRADINGAGENTS_LOG_DIR: "/app/logs"
TRADINGAGENTS_LOG_FILE: "/app/logs/tradingagents.log"
TRADINGAGENTS_LOG_MAX_SIZE: "100MB"
TRADINGAGENTS_LOG_BACKUP_COUNT: "5"
# Docker专用数据库配置(覆盖.env中的本地配置)
TRADINGAGENTS_MONGODB_URL: mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin
TRADINGAGENTS_REDIS_URL: redis://:tradingagents123@redis:6379
TRADINGAGENTS_CACHE_TYPE: redis
# Docker环境标识和PDF支持
DOCKER_CONTAINER: "true"
DISPLAY: ":99"
command: /usr/local/bin/start-xvfb.sh python -m streamlit run web/app.py --server.address=0.0.0.0 --server.port=8501
depends_on:
- mongodb
- redis
# 健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8501/_stcore/health"]
interval: 30s
timeout:10s
retries: 3
start_period: 60s
# 重启策略
restart: unless-stopped
# 日志配置
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"

# MongoDB数据库服务
mongodb:
image: mongo:4.4
container_name: tradingagents-mongodb
restart: unless-stopped
# ports:
# - "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: tradingagents123
MONGO_INITDB_DATABASE: tradingagents
volumes:
- ./data:/data/db
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

# Redis缓存服务
redis:
image: redis:latest
container_name: tradingagents-redis
restart: unless-stopped
# ports:
# - "6379:6379"
command: redis-server --appendonly yes --requirepass tradingagents123
volumes:
- ./redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s

# Redis Commander管理界面
redis-commander:
image: ghcr.io/joeferner/redis-commander:latest
container_name: tradingagents-redis-commander
restart: unless-stopped
# ports:
# - "8081:8081"
environment:
- REDIS_HOSTS=local:redis:6379:0:tradingagents123
depends_on:
- redis
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8081"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s

# Mongo Express管理界面 (可选)
mongo-express:
image: mongo-express:latest
container_name: tradingagents-mongo-express
restart: unless-stopped
# ports:
# - "8082:8081"
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: tradingagents123
ME_CONFIG_MONGODB_URL: mongodb://admin:tradingagents123@mongodb:27017/
ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: tradingagents123
depends_on:
- mongodb
profiles:
- management # 使用 --profile management 启动

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 tradingagents 和 子目录
mkdir -p /volume1/docker/tradingagents/{data,redis_data}

# 进入 tradingagents 目录
cd /volume1/docker/tradingagents

# 将 docker-compose.yml、mongo-init.js 和 env.txt 放入当前目录

# 一键启动(未启用 profile)
docker-compose --env-file env.txt up -d

运行

服务启动成功后,在浏览器中输入 http://群晖IP:8501

需要等项目完成启动后,才能看到项目的 Web 界面,开始您的 AI 量化分析之旅

左侧虽然显示 阿里百炼: your_das... (格式异常),但可以选择我们设置了 API Key硅基流动

输入股票代码,选择分析师团队

  • 基本面分析师:评估公司财务和业绩指标,识别内在价值和潜在风险信号
  • 社交媒体分析师:运用情绪评分算法分析社交媒体和公众情绪,研判短期市场情绪
  • 新闻分析师:监测全球新闻和宏观经济指标,解读事件对市场状况的影响
  • 市场分析师:运用 MACDRSI 等技术指标识别交易模式并预测价格走势

开始分析

用了差不多 10 分钟才出结果。如果选 4 个分析师,一般需要 20 分钟

分析结果

也有 技术分析

最后还能 导出报告

有时候会遇到错误

看起来像是访问 硅基流动 的接口有问题,不确定是不是 bug,毕竟也是才增加的 LLM

1
2
tradingagents-web  | 2025-08-21 11:59:20,568 | INFO     | httpx | HTTP Request: POST https://api.siliconflow.cn/v1/chat/completions "HTTP/1.1 400 Bad Request"
tradingagents-web | 2025-08-21 11:59:20,569 | ERROR | default | ❌ [市场分析师] 工具执行或分析生成失败: Error code: 400 - {'code': 20015, 'message': '"messages" in request are illegal.', 'data': None}

有条件的,最好还是使用官方推荐的阿里百炼吧

参考文档

hsliuping/TradingAgents-CN: 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版
地址:https://github.com/hsliuping/TradingAgents-CN

TradingAgents-CN/docs/usage/web-interface-detailed-guide.md at main · hsliuping/TradingAgents-CN
地址:https://github.com/hsliuping/TradingAgents-CN/blob/main/docs/usage/web-interface-detailed-guide.md