site logo

Marico's space

用一套多Agent系统模拟整个投资公司?UCLA这个框架有点东西

AI技术与应用 2026-04-28 15:09:09 5

TL;DR

UCLA Tauric Research 上周发布了 TradingAgents v0.2.4(2026-04-25)——一个基于 LangGraph 的多Agent LLM 框架,用五层、约十二个Agent模拟一整套投资公司。新版本带来了 Pydantic 类型化的结构化输出、LangGraph 检查点恢复、持久化决策记忆文件、五档评级,以及 10 家 LLM 提供商的集成。在 AAPL/GOOGL/AMZN 上的回测显示 23-27% 的累计收益。

⚠️ Disclaimer:仅为回测结果,不构成投资建议。真金白银操作之前,请先做模拟交易。

为什么这个框架值得关注——不只是"又一个交易机器人"

说实话,现在大多数 LLM 交易机器人就是一个大模型套了一个巨大的 prompt。它们的致命缺陷是确认偏见——一旦形成了初始判断,就会 cherry-pick 支持自己观点的证据。

TradingAgents 从结构上解决了这个问题:用五层明确角色分工的 Agent 互相辩论:

[分析师团队 x4] -> [多头 vs 空头辩论]\n        |\n        v\n   [交易员 (3档)]\n        |\n        v\n[风险管理:激进 vs 保守 vs 中性]\n        |\n        v\n   [投资组合经理 (5档)] -> 买入 / 超配 / 持有 / 减配 / 卖出

整个流程跑在 LangGraph 状态图上,节点之间有明确的交接。你可以直接替换任意节点、记录任意状态、从任意检查点恢复。这个设计对工程师非常友好。

v0.2.4 对开发者的亮点

1. 结构化输出决策Agent

Research Manager、Trader 和 Portfolio Manager 现在统一用 llm.with_structured_output(Schema) 配合 Pydantic schema,跨平台兼容:

  • OpenAI:json_schema
  • Google Gemini:response_schema
  • Anthropic Claude:tool-use
  • 其他模型:function-calling 回退方案

终于不用再写脆弱的文本解析来提取决策值了,这个改进很实在。

2. LangGraph 检查点恢复

加上 --checkpoint 参数就能开启逐节点状态持久化:

~/.tradingagents/cache/checkpoints/<TICKER>.db

假设你的运行在多空辩论结束、风险管理层之前崩了——直接从这个检查点恢复,不用重新跑完整流程。省 API 费用的利器。

3. 持久化决策记忆

~/.tradingagents/memory/trading_memory.md

每次运行都会往这个文件追加一条决策记录。下次跑同一个 ticker 时,框架会自动把以下内容注入 Portfolio Manager 的 prompt:

  • 上次的决策
  • 实际实现的收益(绝对收益 + 相对 SPY 的 alpha)
  • 一段总结回顾

这就是把交易日记变成上下文——框架会从自己的历史错误中学习。有点意思。

4. 五档评级系统

Portfolio Manager 现在输出五档:

评级含义
Buy强烈买入
Overweight加仓
Hold持有
Underweight减仓
Sell清仓

Trader 那层还是用三档(Buy/Hold/Sell),只有最终的 Portfolio Manager 才有更细的粒度。这个分层设计挺合理的。

5. 10 家 LLM 提供商支持

config["llm_provider"] = "anthropic"  # 或者:\n# openai, google, anthropic, xai, deepseek,\n# qwen, glm, openrouter, ollama, azure

如果不需要顶级推理能力,本地跑 Ollama 是控制成本的好选择。

快速上手

from tradingagents.graph.trading_graph import TradingAgentsGraph\nfrom tradingagents.default_config import DEFAULT_CONFIG\n\nconfig = DEFAULT_CONFIG.copy()\nconfig["llm_provider"] = "anthropic"\nconfig["deep_think_llm"] = "claude-opus-4-7"\nconfig["quick_think_llm"] = "claude-haiku-4-5"\nconfig["max_debate_rounds"] = 2\nconfig["checkpoint_enabled"] = True\n\nta = TradingAgentsGraph(debug=True, config=config)\n_, decision = ta.propagate("NVDA", "2026-01-15")\nprint(decision)

deep_think_llmquick_think_llm 的分工是成本优化的关键:

  • deep_think_llm——多空辩论、风险辩论、Portfolio Manager(重型推理)
  • quick_think_llm——分析师数据汇总(轻量级)

Claude 用户的话,Opus 4.7 + Haiku 4.5 是个很舒服的组合。

CLI 模式

tradingagents

交互式提示,输入 ticker、日期、LLM 提供商和研究深度。适合快速实验。

回测表现(论文数据)

在 AAPL / GOOGL / AMZN 上:

指标TradingAgents基准
累计收益23.21~26.62%更低
年化收益最高 30.5%更低
夏普比率提升基准
最大回撤改善基准

数据来源:arXiv 2412.20138 v7(Yijia Xiao 等)。

论文里没提到的

老实说局限不少:

  • 滑点没有建模
  • 税费没有扣除
  • 非 trivial 仓位的市场冲击被忽略
  • 回测里实时数据延迟假设为零
  • 所有数据仅限 AAPL/GOOGL/AMZN——大盘美股科技股,最简单的场景

结论:把它当研究框架用,别拿论文数据直接上真钱。

这个模式可以泛化

真正有意思的不是交易本身,而是多Agent辩论模式。同样的五层结构可以套到:

  • 内容生产(写手 + 编辑 + SEO + 审核 + 最终签发)
  • 营销活动(策略 + 文案 + 设计 + 效果衡量)
  • 招聘决策(技术评估 + 文化匹配 + 背景调查 + 最终拍板)
  • 定价决策(成本 + 市场 + 竞争 + 客户视角)

任何单个的人或单个 LLM 容易产生确认偏见的地方,2个以上的对抗性Agent之间的结构化辩论都有帮助。这个思路我觉得挺通用的。

最后感想

TradingAgents 不是一个"用 AI 赚钱"的工具包。它是一个研究框架,证明了多Agent范式在高风险领域是可行的。v0.2.4 的这些更新(结构化输出、检查点、持久化记忆)让它真正可用于严肃实验——而不只是 paper 友好的 demo。

值得 clone 下来读读 LangGraph 代码,把里面的设计模式偷用到自己的多Agent系统里。

链接

  • GitHub
  • arXiv paper v7
  • CHANGELOG
  • Project site with benchmarks

⚠️ Disclaimer:本文从技术角度分析 TradingAgents 框架,不构成投资建议。回测数据代表历史表现,不保证未来收益。真金白银之前请务必充分模拟交易。