项目快照:TauricResearch/TradingAgents,约 98,464 个 Star,18,985 个 Fork;最新推送时间 2026-07-18T15:55:05Z。本文基于仓库公开资料撰写。

项目地址:https://github.com/TauricResearch/TradingAgents · https://arxiv.org/pdf/2412.20138

TradingAgents 从代码、运行环境到实践流程的项目封面
TradingAgents 的项目能力与实践流程示意。

项目速览(TL;DR)

TradingAgents 是一个使用大语言模型(Large Language Model,LLM)驱动多智能体协作的金融交易研究框架。项目用 Python 编写,默认分支为 main,采用 Apache-2.0 许可证;GitHub 仓库资料显示,该项目有 98464 个 Star 和 18985 个 Fork。

它把交易研究拆分为基本面、情绪、新闻、技术分析、看多研究、看空研究、交易决策、风险管理和投资组合管理等角色,再通过研究讨论和审批流程形成模拟交易决策。README 明确指出,框架面向研究用途,不构成金融、投资或交易建议。

  • 项目类型:多智能体大语言模型金融交易框架。
  • 主要语言:Python。
  • 当前资料中的包版本:0.3.1,来自 pyproject.toml
  • Python 要求:>=3.10;README 的安装示例使用 Python 3.12。
  • 许可证:Apache License 2.0。
  • 仓库地址:https://github.com/TauricResearch/TradingAgents

定位与目标用户

TradingAgents 的定位不是券商交易终端,也不是承诺收益的自动投资产品,而是把金融分析流程组织成可协作的智能体图。读者可以用它研究不同模型、分析角色、数据质量和交易周期对模拟决策的影响。

它面向需要把金融分析流程拆分、编排和复现的 Python 研究人员、量化研究团队以及希望评估多智能体工作流的工程师。项目资料没有提供生产交易牌照、实盘经纪商接口、收益率基准、延迟指标或服务等级承诺,因此不能据此把它当作实盘系统。

可验证的目标边界

  • 研究多角色协作如何汇总市场信息。
  • 比较不同 LLM 提供商、模型和参数对输出的影响。
  • 在模拟交易所中执行经过投资组合经理批准的订单流程。
  • 通过回测和持久化状态支持研究过程管理;具体回测指标和结果格式以仓库实现及最新 README 为准。

核心功能

核心能力集中在“分析—辩论—决策—风控—模拟执行”链路,而不是单个提示词调用。每类智能体承担不同输入和输出职责,最终由投资组合经理对交易提案作出批准或拒绝。

分析师团队

基本面分析师读取公司财务和业绩指标,用于识别内在价值与风险信号;技术分析师使用 MACD、RSI 等技术指标检测交易模式并预测价格走势。情绪分析师聚合新闻标题、StockTwits 和 Reddit 讨论,形成短期市场情绪判断;新闻分析师关注全球新闻和宏观经济指标,并解释事件对市场环境的影响。

这些角色的触发条件、输入数据来源和分析结果由框架的数据访问与智能体流程共同决定。资料没有给出每个智能体的完整函数签名、提示词模板、返回字段或单次调用成本,因此这些细节应以仓库当前源码为准。

研究员团队与结构化讨论

研究员团队由看多研究员和看空研究员组成。它们接收分析师团队的判断,从潜在收益和固有风险两个方向进行结构化辩论,输出供交易员使用的研究结论。

README 的环境变量示例包含 TRADINGAGENTS_MAX_DEBATE_ROUNDS,用于配置最大辩论轮数,示例值为 1。辩论轮数会影响流程调用次数和上下文内容,但项目资料没有提供与该参数对应的性能数据或效果基准。

交易员与组合决策

交易员负责组合分析师报告和研究员报告,并据此决定交易方向、时机和交易规模。其输出不是直接发往真实市场的订单;在 README 描述的流程中,交易提案还要经过风险管理团队和投资组合经理处理。

投资组合经理负责批准或拒绝交易提案。只有在批准后,订单才会发送到模拟交易所并执行,这一设计把“产生建议”和“批准执行”分成了不同步骤。

风险管理

风险管理团队持续评估市场波动性、流动性和其他风险因素,并向投资组合经理提供评估报告。该报告用于调整交易策略或拒绝风险不符合要求的提案。

资料未给出风险阈值、仓位限制、止损规则、流动性计算公式或组合约束配置。部署前不能把“风险管理”理解为已经覆盖特定监管制度或完整实盘风控要求。

系统架构与关键模块

从 README 和项目配置可以确认,TradingAgents 采用基于 LangGraph 的工作流编排,并将 LLM 接入、数据访问、检查点和命令行入口组合成可运行的 Python 包。架构图文件存在于仓库的 assets 目录,但本文不嵌入外部图片。

逻辑处理链

  1. 准备股票或市场研究所需的数据。
  2. 由多个分析师角色分别生成基本面、情绪、新闻和技术分析。
  3. 将分析报告交给看多与看空研究员进行讨论。
  4. 交易员汇总研究结论,形成交易提案。
  5. 风险管理团队评估波动性、流动性等风险。
  6. 投资组合经理批准或拒绝提案。
  7. 经批准的订单进入模拟交易所执行。

关键依赖的职责

模块或依赖 资料中可确认的用途 配置或边界
LangGraph 支持多智能体图式流程编排 langgraph>=0.4.8
LangChain Core 提供 LLM 应用的核心抽象 langchain-core>=0.3.81
Backtrader 项目依赖中的回测相关组件 backtrader>=1.9.78.123
pandas 表格数据处理依赖 pandas>=2.3.0
yfinance 项目依赖中的金融数据获取组件 yfinance>=1.4.1
LangGraph Checkpoint SQLite 为图流程提供 SQLite 检查点能力 langgraph-checkpoint-sqlite>=2.0.0
Redis 项目依赖中的状态或基础设施组件 redis>=6.2.0

依赖与运行环境

项目要求 Python 版本不低于 3.10,README 给出的 Conda 示例使用 Python 3.12。依赖由 pyproject.toml 管理,安装项目时会安装运行所需依赖;开发依赖通过 dev 可选组提供。

运行时需要为所选 LLM 提供商配置对应 API 密钥,数据提供商也可能要求额外密钥。资料列出了多家提供商环境变量,但没有在给定 README 片段中完整展示选择提供商后的交互流程和全部数据源要求。

安装依赖组

  • 基础安装:执行 pip install .
  • 开发依赖:项目定义了 dev 可选组,包含 Ruff、pytest 和 pytest-subtests。
  • Amazon Bedrock:项目定义了 bedrock 可选组,安装命令为 pip install "tradingagents[bedrock]"

快速开始

快速开始的最小闭环是:克隆仓库、创建 Python 3.12 虚拟环境、安装项目、配置一个 LLM 提供商,然后启动命令行入口。下面的命令仅针对本地或测试环境,不连接真实交易账户。

安装

Bash
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents

conda create -n tradingagents python=3.12
conda activate tradingagents

pip install .

配置测试用 API 密钥

Bash
export OPENAI_API_KEY=<你的-API-KEY>
export TRADINGAGENTS_LLM_PROVIDER=openai
tradingagents

<你的-API-KEY> 是占位符,不应替换为文章中的真实密钥。该命令会启动项目定义的 tradingagents 命令行入口;项目资料未给出非交互式参数、默认股票代码或完整交互菜单,因此实际提示内容应以当前版本 CLI 为准。

安装验证

Bash
python -c "import tradingagents; print('tradingagents import ok')"

上述验证只检查 Python 包是否能够导入,不代表 API 密钥有效、数据源可访问或研究流程已经成功完成。若要验证完整流程,应在授权的测试环境中运行 CLI,并检查程序输出及仓库生成的结果;资料未提供固定结果目录和输出文件格式。

配置说明

配置主要通过环境变量完成,项目提供了 .env.example 作为字段清单。以下表格只列出资料中明确出现的字段;“默认值”一栏在无法确认项目内部默认值时标记为未提供,示例值不等同于运行时最终值。

字段名 类型 默认值 作用
TRADINGAGENTS_LLM_PROVIDER 字符串 openai(示例值) 选择 LLM 提供商;设置后可跳过 CLI 中对应的交互选择。
TRADINGAGENTS_DEEP_THINK_LLM 字符串 gpt-5.4(示例值) 配置深度思考模型。
TRADINGAGENTS_QUICK_THINK_LLM 字符串 gpt-5.4-mini(示例值) 配置快速思考模型。
TRADINGAGENTS_OUTPUT_LANGUAGE 字符串 English(示例值) 配置输出语言。
TRADINGAGENTS_MAX_DEBATE_ROUNDS 整数 1(示例值) 配置研究员辩论的最大轮数。
TRADINGAGENTS_MAX_RISK_ROUNDS 整数 1(示例值) 配置风险评估的最大轮数。
TRADINGAGENTS_CHECKPOINT_ENABLED 布尔值 false(示例值) 控制检查点功能是否启用。
TRADINGAGENTS_TEMPERATURE 浮点数 0.0(示例值) 配置采样温度;注释说明并非所有模型都遵循该参数,且不能保证完全确定性。
TRADINGAGENTS_LLM_MAX_RETRIES 整数 6(示例值) 向各提供商 SDK 传递 LLM 重试预算。
OLLAMA_BASE_URL 字符串 URL http://localhost:11434/v1 配置本地或远程 Ollama 服务地址。
AWS_DEFAULT_REGION 字符串 us-west-2(示例值) 配置 Amazon Bedrock 区域。

LLM 密钥字段包括 OPENAI_API_KEYGOOGLE_API_KEYANTHROPIC_API_KEYXAI_API_KEYDEEPSEEK_API_KEYDASHSCOPE_API_KEYZHIPU_API_KEYMINIMAX_API_KEYOPENROUTER_API_KEYMISTRAL_API_KEYMOONSHOT_API_KEYGROQ_API_KEYNVIDIA_API_KEY 等。未列出的具体提供商认证流程,官方仓库未提供该信息,建议以最新 README 为准。

多提供商与本地模型

项目依赖和环境变量表明,TradingAgents 可以对接多个 LLM 提供商,并支持 OpenAI 兼容端点和 Ollama。选择不同提供商时,必须按照对应环境变量配置认证信息或服务地址,不能把某一家提供商的密钥名称套用于另一家。

OpenAI 兼容端点

.env.example 提供了 OPENAI_COMPATIBLE_API_KEYTRADINGAGENTS_LLM_BACKEND_URL 字段,并说明可用于 vLLM、LM Studio、llama.cpp 或其他 OpenAI 兼容服务。项目资料没有给出这些服务的启动命令、模型名称约束或完整 URL 示例,因此这里只能确认配置方向,不能补写服务端参数。

Ollama 与 Docker Compose

Bash
cp .env.example .env
docker compose --profile ollama run --rm tradingagents-ollama

Compose 文件定义了 ollama 服务、tradingagents-ollama 服务和 ollama profile。项目通过 OLLAMA_BASE_URL=http://ollama:11434/v1 让容器内的 TradingAgents 访问 Ollama;端口号来自仓库 Compose 配置,不表示该服务已对宿主机发布端口。

Docker 部署与运行隔离

Dockerfile 使用 Python 3.12 slim 构建两个阶段的镜像,并在运行阶段以非 root 用户 appuser 启动命令。Docker Compose 为应用和 Ollama 分别配置持久化卷,适合把依赖安装和本地运行环境隔离开。

Text
FROM python:3.12-slim AS builder
RUN python -m venv /opt/venv
WORKDIR /build
COPY . .
RUN pip install --no-cache-dir .

FROM python:3.12-slim
COPY --from=builder /opt/venv /opt/venv
ENTRYPOINT ["tradingagents"]

这是根据仓库 Dockerfile 截取的结构示例。运行容器前需要准备 .env,其中包含所选 LLM 提供商密钥;密钥不应写入镜像、源码或公开日志。

Bash
cp .env.example .env
docker compose run --rm tradingagents

进阶用法

进阶使用的重点是控制模型、数据源、辩论轮数、风控轮数和检查点,而不是简单增加智能体数量。任何参数调整都应在固定数据区间和测试配置下记录,否则难以判断结果变化来自模型、数据还是流程设置。

检查点与持久化

依赖中包含 langgraph-checkpoint-sqlite,环境变量示例还提供 TRADINGAGENTS_CHECKPOINT_ENABLED。资料只能确认项目存在检查点配置入口,未提供数据库文件位置、恢复命令、状态兼容策略或并发访问约束,具体使用方式应查阅当前源码和 README。

模型与输出语言

可以通过 TRADINGAGENTS_DEEP_THINK_LLMTRADINGAGENTS_QUICK_THINK_LLMTRADINGAGENTS_OUTPUT_LANGUAGE 调整模型与输出语言。项目资料未提供模型能力排名、成本、上下文窗口或各模型兼容性表,因此不应据此推导性能优劣。

回测研究

pyproject.toml 声明了 Backtrader 依赖,README 的新闻记录提到回测日期准确性改进。资料没有给出回测入口命令、数据格式、交易成本、滑点、基准和结果字段;需要这些信息时,官方仓库未提供该信息,建议以最新 README 和源码为准。

可观测性与运维

项目提供命令行入口、Rich、tqdm、Redis 和 SQLite 检查点相关依赖,说明运行过程具备命令行交互和状态处理组件。资料没有给出日志级别、结构化日志格式、指标端点、追踪系统、告警规则或 SLA,因此不能将这些依赖等同于完整的生产可观测性方案。

运行记录建议

  • 记录代码版本、Python 版本、所选模型、输出语言和关键环境变量,但不要记录 API 密钥。
  • 记录研究区间、数据源、辩论轮数和风险轮数,以便复核流程输入。
  • 将模型原始输出、最终交易提案和模拟执行结果分离保存,并限制敏感数据访问权限。
  • 在启用检查点前确认本地持久化目录的权限和备份策略。

以上记录策略属于根据本文作者的经验判断,并非仓库声明的内置运维功能。

安全与合规边界

该项目涉及金融数据分析和交易决策模拟,安全边界应设在授权的研究数据、测试账户和模拟交易环境内。README 已明确声明项目不是金融、投资或交易建议,实际使用仍需遵守所在地的金融监管、数据许可、隐私保护和组织审批要求。

密钥与数据保护

  • 使用 .env 保存本地测试配置时,应避免将其提交到版本控制系统。
  • API 密钥只应通过环境变量或受控密钥管理方式提供,不能写入提示词、结果文件和日志。
  • 新闻、论坛内容、公司财务数据和内部研究资料可能受授权、版权或隐私约束,数据使用范围应由数据提供方和组织政策确定。
  • 不要把模拟订单流程改造成面向未授权市场账户的自动下单流程;资料没有提供真实经纪商接入,也没有授予此类权限。

项目资料未提供安全审计报告、漏洞响应承诺、隐私政策、金融牌照或合规认证。上述内容缺失时,不能据此宣称系统满足特定监管标准。

许可证与商用条款

仓库 LICENSE 文件是 Apache License 2.0。该许可证授予使用者在许可证条件下复制、修改、公开展示、公开执行、再许可和分发源代码或目标代码的版权许可,并包含贡献者专利许可条款。

分发时需要关注的事项

  • 向其他接收者分发项目或衍生作品时,应同时提供许可证副本。
  • 修改文件时,应保留清晰的修改说明。
  • 分发源代码形式的衍生作品时,应保留原始版权、专利、商标和归属声明中适用的部分。
  • Apache-2.0 不等于授予项目名称、商标或服务标志的使用许可;商标相关事项应以许可证原文为准。
  • 许可证允许的商用范围、第三方数据服务条款、模型提供商条款和金融监管义务是不同层面的要求,需要分别核查。

是否能够在具体产品中商用,取决于 Apache-2.0 的履行、第三方依赖和数据服务许可,以及部署地的法律要求;不能仅依据仓库许可证替代法律审查。具体权利义务以仓库 LICENSE 为准。

局限性与已知限制

项目 README 已将研究用途、模型选择、温度、交易周期、数据质量和非确定性列为影响因素。因而,单次运行的交易判断不能被视为稳定的投资结论,跨配置比较也需要明确控制变量。

  • 资料没有提供收益率、最大回撤、胜率、夏普比率或延迟等性能数据。
  • 资料没有提供真实交易执行、经纪商认证或订单生命周期接口。
  • 资料没有完整列出每个智能体的输入输出协议、提示词和错误处理策略。
  • 资料没有给出数据源覆盖范围、数据许可、更新频率和缺失数据处理规则的完整说明。
  • LLM 输出受模型、温度、数据、交易周期和非确定性影响;环境变量注释也明确指出,设置温度不能使输出完全确定。
  • 项目新闻记录包含未来日期版本信息,但本文不据此推断当前运行环境或外部服务的实际可用性。

如果需要生产级风控、审计、权限、灾备、数据血缘或合规报告,官方仓库未提供该信息,建议以最新 README、源码和组织内部控制要求为准。

适合谁

以下信号表明团队可以把 TradingAgents 纳入研究或原型评估范围,但仍应保持模拟环境和人工审查边界。

  • 团队已有 Python 开发能力,并能够维护 Conda、pip 或 Docker 运行环境。
  • 研究任务需要把基本面、情绪、新闻、技术指标和风险判断拆成独立角色。
  • 团队希望比较多个 LLM 提供商,或需要接入 OpenAI 兼容端点、Ollama 等模型服务。
  • 已有授权的金融数据源,并能够对数据质量、时间范围和使用许可负责。
  • 目标是回测、模拟交易、流程实验或多智能体研究,而不是未经审批的实盘自动下单。

不适合谁

以下信号说明该项目不应直接作为现成生产交易系统使用。判断依据来自仓库声明和资料中缺失的生产能力,不代表对项目源码之外功能的断言。

  • 需要立即接入真实经纪商、真实账户或支付流程,并要求仓库提供正式订单执行保证的团队。
  • 要求明确 SLA、审计报告、CVE 响应流程、监管认证或金融牌照的机构。
  • 没有授权金融数据、新闻内容或论坛数据,却希望直接抓取并用于商业决策的团队。
  • 需要高并发、低延迟、严格确定性和可证明风险上限,而没有能力自行补充基础设施与验证体系的团队。
  • 只接受固定模型、固定输出协议和固定基准结果,不愿承担 LLM 非确定性与数据差异的项目。

常见问题与排查(FAQ / Troubleshooting)

排查时应先区分安装问题、认证问题、数据访问问题和模型输出问题。项目资料没有提供统一错误码,因此下面只给出基于已知配置和命令的检查路径。

为什么执行 tradingagents 后无法完成研究?

先确认项目已通过 pip install . 安装,并确认所选提供商的环境变量已经设置。若涉及数据供应商,还需要按其要求配置额外密钥;完整必需字段未在给定资料中全部列出时,官方仓库未提供该信息,建议以最新 README 为准。

如何判断是 Python 包没有安装?

执行导入验证命令。如果 import tradingagents 失败,检查当前终端是否激活了创建的 tradingagents 环境,并重新执行安装命令;不要仅通过仓库目录名称判断安装是否成功。

如何使用 Ollama?

可以使用 Compose 的 ollama profile,并运行 tradingagents-ollama 服务。Compose 文件将服务地址配置为 http://ollama:11434/v1;模型下载、模型名称和 Ollama 服务初始化步骤未在给定资料中说明,官方仓库未提供该信息,建议以最新 README 为准。

为何设置了温度仍然无法复现完全相同的结果?

.env.example 的注释明确说明,温度设置不能使 LLM 输出完全确定。复现实验还需要固定代码版本、模型、输入数据、交易周期、轮数和外部服务配置,但项目资料没有提供官方复现实验协议。

Bedrock 安装失败如何处理?

Amazon Bedrock 是可选依赖,项目定义的安装方式为 pip install "tradingagents[bedrock]"。认证可以使用 AWS_BEARER_TOKEN_BEDROCK 或 AWS 凭证链,并设置 AWS_DEFAULT_REGION;具体权限策略和账户配置不在资料中。

测试、开发与贡献

项目的开发配置位于 pyproject.toml,开发可选依赖包含 Ruff、pytest 和 pytest-subtests。pytest 配置将测试路径设为 tests,并定义了 unitintegrationsmoke 三类标记。

Bash
pip install "tradingagents[dev]"
pytest

Ruff 的目标 Python 版本为 py310,配置启用了 E、W、F、I、B、UP、C4、SIM 规则,并将行长度规则 E501 排除。仓库资料未给出完整贡献流程、分支策略和发布审批规则,贡献前应阅读仓库中的最新贡献文档。

项目结构与交付形态

资料能够确认的打包入口和文件关系如下。由于没有提供完整目录树,下面只列出配置文件中明确出现的包和文件,不把未展示的源码路径写成确定事实。

路径或名称 用途 来源
tradingagents* 由 setuptools 包发现配置包含的 Python 包范围 pyproject.toml
cli* 命令行包范围 pyproject.toml
cli/static/* 作为包数据包含的静态文件 pyproject.toml
tests pytest 测试路径 pyproject.toml
Dockerfile 构建 Python 3.12 slim 镜像 仓库资料
docker-compose.yml 定义应用与 Ollama 服务 仓库资料
.env.example 环境变量示例 仓库资料

事实依据与阅读提示

项目功能、免责声明、安装方式和角色划分主要依据 README;包版本、Python 约束、依赖、命令行入口、测试配置和许可证可选依赖分别依据 pyproject.toml、Docker 配置、环境变量示例和 LICENSE 文件。仓库资料中的 Star 与 Fork 数量是用户提供的 GitHub 元信息,随仓库变化而变化。

“TradingAgents is a multi-agent trading framework that mirrors the dynamics of real-world trading firms.”
来源:README

上面的原文描述强调了框架的组织方式,即模拟交易公司的多角色协作关系;它不等价于对交易收益、决策准确率或真实市场适用性的承诺。

项目地址与资源

以下链接均来自仓库资料或 README 中出现的官方页面,适合用于核对源码、论文、免责声明和社区信息。