详细 文档

全面了解 TradingAgents-CN 的架构、功能和配置选项,帮助您充分利用这一多智能体金融分析框架。

概述

TradingAgents-CN 是一个基于多智能体系统和大语言模型的金融交易决策框架。该框架模拟专业的交易团队,通过多个专业分析师智能体协作,提供全面的股票分析和投资建议。

核心特性

  • 多智能体协作: 模拟专业交易团队,各智能体分工协作
  • 大语言模型: 集成主流LLM,支持复杂金融场景理解
  • 实时分析: 整合多源数据,实现对市场的实时监控
  • 风险管控: 内置风险管理机制,控制投资风险

快速开始

前置要求

系统要求

  • • 操作系统: Windows 10+, macOS 10.15+, Linux
  • • Python: 3.10 或更高版本
  • • 内存: 至少 4GB RAM (推荐 8GB+)
  • • 存储: 至少 2GB 可用空间

API 密钥

  • • 阿里百炼 API Key (推荐)
  • • FinnHub API Key (必需)
  • • Google AI API Key (推荐)
  • • Tushare Token (A股数据)

安装步骤

# 1. 克隆项目
git clone https://github.com/hsliuping/TradingAgents-CN.git
cd TradingAgents-CN

# 2. 创建虚拟环境
python -m venv tradingagents
source tradingagents/bin/activate  # Linux/macOS
# tradingagents\Scripts\activate  # Windows

# 3. 安装依赖
pip install -r requirements.txt

# 4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入API密钥

运行方式

Web界面 (推荐)

streamlit run web/app.py

提供直观的股票分析界面、API密钥管理、实时进度显示和Token使用统计等功能。

命令行界面

python -m cli.main

适合偏好命令行操作的用户,提供完整的功能支持。

系统架构

TradingAgents-CN 采用多智能体系统架构,通过专业分工和协作,实现全面的股票分析。

架构组件

数据源管理层

统一管理多个数据源,包括美股、A股、港股数据,支持在线和离线模式。

分析师团队

由多个专业分析师组成,分别负责基本面、技术面、新闻和社交媒体分析。

研究员团队

对分析师报告进行深入研究,形成投资观点并进行辩论。

交易决策层

综合各方观点,做出最终的交易决策。

数据流架构

1 获取股票数据和市场信息
2 各分析师并行分析,生成专业报告
3 研究员团队辩论,形成投资观点
4 风险管理团队评估风险
5 生成最终投资决策

分析师团队

分析师团队是 TradingAgents-CN 框架的核心分析组件,负责从不同维度对股票进行专业分析。

分析师类型

市场分析师

负责技术指标分析、价格趋势识别、支撑阻力位分析等技术面分析。

  • • 技术指标分析(RSI、MACD、布林带等)
  • • 价格趋势和图表模式识别
  • • 成交量分析和价格动量评估

基本面分析师

分析公司财务数据和基本面指标,评估公司估值和财务健康度。

  • • 公司财务数据和基本面指标分析
  • • 公司估值和财务健康度评估
  • • 基于财务数据的投资建议

新闻分析师

分析新闻事件影响、宏观经济数据、政策影响和行业动态。

  • • 新闻事件影响分析
  • • 宏观经济数据解读
  • • 政策影响评估

社交媒体分析师

进行社交媒体情绪分析、投资者情绪监测、舆论趋势识别等。

  • • 社交媒体情绪分析
  • • 投资者情绪监测
  • • 舆论趋势识别

智能体状态管理

class AgentState:
    company_of_interest: str      # 股票代码
    trade_date: str              # 交易日期
    fundamentals_report: str     # 基本面报告
    market_report: str           # 市场分析报告
    news_report: str             # 新闻分析报告
    sentiment_report: str        # 情绪分析报告
    messages: List              # 消息历史

配置指南

TradingAgents-CN 提供了灵活的配置系统,通过 .env 文件管理所有配置选项。

主要配置项

LLM 配置

  • llm_provider: 模型提供商 (openai/anthropic/google)
  • deep_think_llm: 深度思考模型 (如 gpt-4o)
  • quick_think_llm: 快速思考模型 (如 gpt-4o-mini)
  • DEEPSEEK_API_KEY: DeepSeek V3 API密钥

分析配置

  • max_debate_rounds: 辩论最大轮次 (默认 1)
  • online_tools: 使用在线数据 (默认 true)
  • results_dir: 结果存储目录
  • FINNHUB_API_KEY: FinnHub API密钥

示例配置文件

# LLM 配置
DEEPSEEK_API_KEY=your_deepseek_api_key
DASHSCOPE_API_KEY=your_dashscope_api_key
GOOGLE_API_KEY=your_google_api_key

# 数据源配置
FINNHUB_API_KEY=your_finnhub_api_key
TUSHARE_TOKEN=your_tushare_token

# 分析配置
TRADINGAGENTS_RESULTS_DIR=./results
ONLINE_TOOLS=true
MAX_DEBATE_ROUNDS=2

Docker容器化部署

TradingAgents-CN 提供完整的 Docker 容器化部署方案,支持一键启动完整的分析环境。

容器化架构

Web应用

Streamlit界面

MongoDB

数据存储

Redis

缓存系统

一键部署

# 1. 克隆项目
git clone https://github.com/hsliuping/TradingAgents-CN.git
cd TradingAgents-CN

# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入API密钥

# 3. 构建并启动所有服务
docker-compose up -d --build

# 4. 访问服务
# 主应用: http://localhost:8501
# 数据库管理: http://localhost:8081
# 缓存管理: http://localhost:8082

服务访问

🌐 主应用

http://localhost:8501

📊 数据库管理

http://localhost:8081

🎛️ 缓存管理

http://localhost:8082

报告导出功能

TradingAgents-CN 提供强大的报告导出功能,支持多种专业格式,方便用户保存、分享和进一步分析。

支持的格式

📝 Markdown

轻量级、可编辑、支持版本控制,适合开发者和技术文档。

📄 Word文档

专业格式、易于编辑、广泛兼容,适合商业报告和正式文档。

📊 PDF文档

格式固定、跨平台兼容、专业外观,适合正式发布和打印。

报告内容结构

  • 📈 股票基本信息 - 股票代码、价格、市场信息
  • 🎯 投资决策摘要 - 投资建议、置信度、风险评分
  • 📊 详细分析报告 - 技术、基本面、情绪、新闻分析
  • 🔬 专家辩论记录 - 看涨/看跌观点、辩论过程
  • ⚠️ 风险提示 - 市场风险、投资建议免责声明
  • 📝 技术信息 - 使用的LLM模型、数据源信息

智能新闻分析

TradingAgents-CN 实现了高效的新闻过滤机制,解决低质量、不相关新闻的问题,提高新闻分析师的分析质量。

新闻过滤策略

基于规则的过滤器

实现简单、执行速度快、可解释性强,通过关键词匹配和相关性评分过滤新闻。

语义相似度过滤

使用sentence-transformers进行语义相似度计算,更精准地识别相关新闻。

过滤算法示例

class NewsRelevanceFilter:
    def calculate_relevance_score(self, title: str, content: str) -> float:
        score = 0
        # 直接提及公司 (+40分)
        if self.company_name in title:
            score += 40
        elif self.company_name in content:
            score += 20
        # 直接提及股票代码 (+30分)
        if self.stock_code in title:
            score += 30
        elif self.stock_code in content:
            score += 15
        return max(0, min(100, score))