1 源码分析

|400
  • 标准版:https://github.com/TauricResearch/TradingAgents,18.2K star(2 个月前更新)
    • 为简化内容,本文仅介绍标准版。
  • 中文加强版:https://github.com/hsliuping/TradingAgents-CN,4.7K star(一周前更新)
    • 针对 A 股信息源进行调整
    • 加强了新闻功能的使用
    • 加强了 Docker 部署部分
    • Streamlit界面
    • 基于国内模型优化

1.1 数据来源

用法见:获取金融数据_总览

1.2 模型

实验中使用 o1-previewgpt-4o 分别作为深度思考与快速思考的大语言模型。但测试时建议使用 o4-minigpt-4.1-mini 以节省成本,框架会发起大量 API 调用。

1.3 代码

概览:该项目由 Python 语言编写,代码 3500+ 行,分为三个主要部分:

  1. agent:定义了每个组和组内各成员的功能及实现,请参见具体 Prompt。
  2. dataflow:实现各种工具功能,如新闻抓取、信息和数据采集,以及指标计算。
  3. graph:构建组与成员之间的关系框架,是系统的调用入口,包含以下组件:
    • ConditionalLogic:处理条件逻辑
    • GraphSetup:设置和配置图结构
    • Propagator:管理信息传播和状态
    • Reflector:负责反思机制和记忆更新
    • SignalProcessor:处理交易信号并生成最终决策
    • TradingAgentsGraph:核心功能入口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── assets 资源数据
│   └── cli
├── cli 与用户界面交互,实时跟踪各个 agent 的状态和执行流
│   └── static
└── tradingagents(下面详述)
├── agents
│   ├── analysts
│   ├── managers
│   ├── researchers
│   ├── risk_mgmt
│   ├── trader
│   └── utils
├── dataflows
└── graph
  • 使用的库接口都非常简便,极为用户友好,无需在细节上浪费过多时间,用起来轻松愉快。
  • 新闻来源包括:FinnHub、Google 新闻、Reddit,也尝试通过 OpenAI 获取新闻信息。处理方式是:将计算的指标和收集的信息提交给大模型,由其筛选出最重要的 topN 个指标并进行解释,最后提供建议。
  • 指标计算使用了 Python 的 StockStats 库。
  • 记忆存储使用 ChromaDB 管理,在思考过程中每个代理都会记录,并进行嵌入。
  • 接口大多与美股相关。尽管使用了 FinnHub 数据,但只是读取了之前下载的数据文件,没有真正从 FinnHub、SimFin 下载数据。调用 yfinance 库时频繁出现 429 错误,不过 GoogleNews_Utils 库依旧可用。实际使用时还需要修改。

2 依赖工具介绍

2.1 ChromaDB

ChromaDB (通常称为 Chroma )是一个开源的向量数据库,专注于存储、索引和查询向量数据,主要用于自然语言处理(NLP)和计算机视觉等领域。它提供轻量化数据存储方案,支持多模态嵌入检索,并可与大型语言模型(如 Llama3 )结合使用,实现精准文档查询。

基于 SQLite 数据库,无需复杂配置即可运行,适合中小型项目。

ChromaDB 支持这两种模式:

2.1.1 客户端 - 服务器模式(多客户端共享)

可以启动一个 ChromaDB 服务器,多个客户端连接:

# 启动 ChromaDB 服务器

1
chroma run --host localhost --port 8000

# 客户端连接到服务器

1
2
import chromadb
client = chromadb.HttpClient(host='localhost', port=8000)

2.1.2 嵌入式模式(单客户端,类似 SQLite)

就像当前代码中使用的方式,直接创建本地客户端:

当前代码使用的方式 - 嵌入式模式

1
client = chromadb.Client(Settings(allow_reset=True))

或者指定持久化路径

1
client = chromadb.PersistentClient(path="/path/to/chroma/data")

2.2 LangGraph

LangGraph 是一种基于 LangChain 构建的智能体编排框架,通过状态机驱动,将 Agent 系统设计为有向图流程图。