TradingAgents 架构分析
TradingAgents 是一个基于LangChain的金融交易框架,是一个使用了大语言模型(LLMs)的多 Agent 项目。
cli
目录中的 typer 依赖项提供了用户界面。setup.py
是项目的安装配置文件,其中配置了命令行入口,注册 tradingagents 命令,从 cli/main.py
启动应用程序。
核心组件
TradingAgentsGraph
:中央协调者,这个类位于 tradingagents/graph/trading_graph.py 中,定义并管理整个 Agent 工作流程。它为每个 Agent 初始化语言模型(LLMs)、工具和内存,然后使用 LangGraph 将它们组装成一个计算图。main.py
和cli/main.py
:该项目有两个主要入口点。main.py 提供了一个基本的命令行界面,用于运行单个分析,而 cli/main.py 则使用 Typer 和 Rich 库提供了丰富的交互体验。这个 cli 引导用户选择股票代码、分析日期和其他参数,然后实时可视化 Agent 的进展和报告。langgraph
:这个库是框架的核心,能够创建一个有状态的基于图的工作流程。Agent 之间的交互被建模为一系列节点和边,允许复杂的条件逻辑和循环。例如,牛市和熊市研究者之间的“辩论”是图中的一个循环,持续进行直到达成共识或达到最大轮次。
Agent 团队与工作流程:
该框架围绕专业 Agent 团队构建,每个团队在分析过程中扮演着独特的角色:
- 分析师团队:该团队收集初步数据,并从多个角度提供基础分析:
市场分析师
:分析价格和交易量数据。社交分析师
:从社交媒体中评估市场情绪。新闻分析师
:从金融新闻中提取见解。基本面分析师
:检查公司财务和内部交易情况。
- 研究团队:该团队通过结构化辩论深化分析:
看涨研究员
:支持对股票的积极展望。看跌研究员
:提出对股票的负面展望。研究经理
:主持辩论并做出最终判断,形成全面的投资论点。
- 交易团队:
交易员
:根据研究团队的论点制定具体的可操作交易计划。
- 风险管理团队:该团队从不同风险角度审查交易计划:
激进型
、保守型
和中立型辩论者
:各自从分配的风险承受能力出发辩论计划。风险经理
:类似于研究经理,该 Agent 将风险辩论综合成最终的风险调整交易决策。
数据和存储
dataflows/
: 该目录包含从各种来源获取数据的逻辑,包括 Yahoo Finance (yfinance) , Reddit (praw) , Finnhub和Google News。它抽象了数据检索过程,为代理提供了一个干净的接口。FinancialSituationMemory
: 每个代理都配备了记忆模块,使其能够保留过去分析的信息。这对于reflect_and_remember过程至关重要,该过程使系统能够从其过去交易的结果中学习,从而提高未来的表现。
配置和扩展性
default_config.py
:该文件集中管理所有关键配置参数,例如使用哪些 LLM 模型、最大辩论轮数以及是否使用在线或缓存数据。这使得在不修改核心代码的情况下,轻松自定义框架的行为。模块化设计:该项目高度模块化。可以通过创建新类并将其集成到TradingAgentsGraph中,添加新的代理、数据源或甚至整个团队。使用 LangGraph 中的 ToolNode 使得为代理配备新工具和能力变得简单明了。