Files
knowledge-base/2 - Projects/Trading-Agents/Trading Agents 混合架构方案.md

309 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
created: "2026-03-21"
type: project
status: active
deadline: ""
tags: [trading, multi-agent, openclaw, openbb, architecture]
---
# Trading Agents 混合架构方案
## 目标
基于 [[openbb-invest-api]] 的数据层,在 OpenClaw 上实现类似 [TradingAgents](https://github.com/TauricResearch/TradingAgents) 的多角色交易决策系统。核心是**辩论驱动的投资决策**。
---
## 一、TradingAgents 原始架构分析
### 5 大模块
| 模块 | 角色 | 职责 |
|------|------|------|
| **Analyst Team** | 市场/社媒/新闻/基本面 4个分析师 | 并行抓数据,各写分析报告 |
| **Researcher Team** | Bull + Bear + 裁判 | 多空辩论 N 轮,裁判出投资方案 |
| **Trader** | 交易员 | 根据投资方案做 BUY/SELL/HOLD 决策 |
| **Risk Mgmt Team** | 激进/保守/中性 + 裁判 | 三方辩论风险,裁判修正决策 |
| **Memory System** | BM25 相似度检索 | 记住历史情况和教训,下次决策参考 |
### 执行流程LangGraph 状态机)
```
START → [Market/Social/News/Fundamentals Analysts 并行]
→ Bull Researcher ⇄ Bear Researcher (N轮辩论)
→ Research Manager (裁判裁决)
→ Trader (交易决策)
→ Aggressive ⇄ Conservative ⇄ Neutral (风控三方辩论)
→ Risk Manager (最终裁决)
→ END (BUY/SELL/HOLD)
```
### 技术栈
- **编排**LangGraph (StateGraph + 条件路由)
- **LLM**:支持 OpenAI/Anthropic/Google/xAI/Ollama
- **数据**yfinance + Alpha Vantage
- **记忆**BM25 (rank-bm25) 离线相似度检索
- **辩论**:可配置轮次 (`max_debate_rounds`, `max_risk_discuss_rounds`)
---
## 二、openbb-invest-api 数据覆盖映射
> **结论openbb-invest-api 已完全覆盖 TradingAgents 所有数据需求,且更丰富。**
| TradingAgents 数据需求 | openbb-invest-api 端点 | 额外优势 |
|---|---|---|
| 股票行情 OHLCV | `/stock/{symbol}/historical` | ✅ |
| 技术指标 (RSI, MACD, BB, ATR) | `/stock/{symbol}/technical/*` | 14种指标 + Ichimoku, Fibonacci 等 |
| 基本面 (财报、资产负债表) | `/stock/{symbol}/financials`, `/metrics` | ✅ |
| 公司新闻 | `/stock/{symbol}/news` | ✅ |
| 宏观新闻 | `/macro/overview`, `/economy/*` | CPI, GDP, 就业, FOMC 等 |
| 内幕交易 | `/stock/{symbol}/insider-trades` | ✅ |
| 情感分析 | `/stock/{symbol}/sentiment` | 多源复合评分 (Finnhub + AV + Reddit) |
### openbb-invest-api 独有数据TradingAgents 没有的)
- 做空数据 (`/shorts/*`)空头量、FTD、暗池
- 期权数据 (`/market/options/*`)期权链、Greeks、IV
- 固收数据 (`/fixed-income/*`)收益率曲线、国债、SOFR
- DeFi 数据 (`/defi/*`)TVL、收益池、DEX 交易量
- A 股/港股 (`/cn/*`):实时行情 + 历史数据
- 投资组合分析 (`/portfolio/*`)HRP 优化、风险平价、t-SNE 聚类
- 回测引擎 (`/backtest/*`)SMA/RSI/动量策略回测
---
## 三、混合架构设计
### 核心思路
**并行的地方用 `sessions_spawn`,需要对话的地方用 `sessions_send`。**
### 架构图
```
┌─────────────────────────────────────────────┐
│ Orchestrator Agent (Judge/PM) │
│ Model: Claude Opus (深度推理) │
│ SOUL.md: 客观裁判,综合决策 │
├─────────────────────────────────────────────┤
│ │
│ Phase 1: 数据收集 (sessions_spawn 并行) │
│ ┌───────────┐ ┌─────────────┐ │
│ │ Market │ │ Fundamen- │ │
│ │ Analyst │ │ tals │ │
│ │ (Sonnet) │ │ (Sonnet) │ │
│ └───────────┘ └─────────────┘ │
│ ┌───────────┐ ┌─────────────┐ │
│ │ Sentiment │ │ News │ │
│ │ Analyst │ │ Analyst │ │
│ │ (Haiku) │ │ (Haiku) │ │
│ └───────────┘ └─────────────┘ │
│ │
│ Phase 2: 多空辩论 (sessions_send ping-pong) │
│ ┌───────────┐ 3-5 轮 ┌───────────┐ │
│ │ Bull │◄────────►│ Bear │ │
│ │ Researcher│ │ Researcher│ │
│ │ (Opus) │ │ (Opus) │ │
│ └───────────┘ └───────────┘ │
│ │
│ Phase 3: 风控辩论 (sessions_send ping-pong) │
│ ┌───────────┐ 2-3 轮 ┌───────────┐ │
│ │ Aggressive│◄────────►│ Conserva- │ │
│ │ (Sonnet) │ │ tive │ │
│ └───────────┘ │ (Sonnet) │ │
│ └───────────┘ │
│ │
│ Phase 4: Orchestrator 综合裁决 │
│ → 输出 BUY/SELL/HOLD + 完整推理 │
└─────────────────────────────────────────────┘
```
### 为什么不用群聊辩论
OpenClaw 的 Multi-Agent Group Chat [尚未实现](https://github.com/openclaw/openclaw/issues/18869)Issue #18869PR 未合并)。即使实现了,`sessions_send` 方案也更优:
| 维度 | 群聊辩论 | sessions_send 辩论 |
|------|---------|-------------------|
| 流程控制 | 混乱,谁先说不确定 | 结构化,轮次可控 |
| 循环风险 | 高(可能死循环) | 无maxPingPongTurns 硬限制) |
| 上下文 | 所有人共享一个上下文窗口 | 每个 agent 独立上下文,更专注 |
| Token 成本 | N 个 agent × 完整群聊历史 | 仅辩论双方共享必要上下文 |
| 可观测性 | 难以追踪谁说了什么 | 完整的 session 记录 |
| 当前可用性 | ❌ 未实现 | ✅ 已可用 |
### 学术依据
- [ICLR 2025 MAD 研究](https://d2jud02ci9yv69.cloudfront.net/2025-04-28-mad-159/blog/mad/)**异构 agent + 结构化拓扑**效果最好
- [Adaptive HMAD](https://link.springer.com/article/10.1007/s44443-025-00353-3):异构辩论比同构辩论准确率高 4-6%,事实错误减少 30%+
- 无结构多 agent 网络会**放大错误达 17.2 倍**
---
## 四、OpenClaw 配置详情
### Agent Workspace 结构
```
~/.openclaw/
├── openclaw.json # 主配置
├── workspace-orchestrator/ # 编排者
│ ├── AGENTS.md
│ ├── SOUL.md # 客观裁判人格
│ ├── MEMORY.md
│ ├── skills/
│ │ └── trade-analyze/SKILL.md # 主入口 skill
│ └── memory/
├── workspace-market-analyst/ # 技术分析师
│ ├── SOUL.md # 专注技术指标
│ └── skills/
│ └── analyze/SKILL.md # 调用 /technical/* 端点
├── workspace-fundamentals-analyst/ # 基本面分析师
│ ├── SOUL.md
│ └── skills/
│ └── analyze/SKILL.md # 调用 /metrics, /financials
├── workspace-sentiment-analyst/ # 情感分析师
│ ├── SOUL.md
│ └── skills/
│ └── analyze/SKILL.md # 调用 /sentiment, /insider-trades
├── workspace-news-analyst/ # 新闻分析师
│ ├── SOUL.md
│ └── skills/
│ └── analyze/SKILL.md # 调用 /macro/overview, /economy/*
├── workspace-bull/ # 多方研究员
│ ├── SOUL.md # 坚定看多,寻找增长机会
│ └── MEMORY.md # 历史成功案例
├── workspace-bear/ # 空方研究员
│ ├── SOUL.md # 谨慎看空,揭示风险
│ └── MEMORY.md # 历史失败教训
├── workspace-aggressive/ # 激进风控
│ └── SOUL.md # 高风险高回报
└── workspace-conservative/ # 保守风控
└── SOUL.md # 资产保护优先
```
### 核心配置openclaw.json
```json5
{
agents: {
list: [
{ id: "orchestrator", workspace: "~/.openclaw/workspace-orchestrator" },
{ id: "market-analyst", workspace: "~/.openclaw/workspace-market-analyst" },
{ id: "fundamentals-analyst", workspace: "~/.openclaw/workspace-fundamentals-analyst" },
{ id: "sentiment-analyst", workspace: "~/.openclaw/workspace-sentiment-analyst" },
{ id: "news-analyst", workspace: "~/.openclaw/workspace-news-analyst" },
{ id: "bull", workspace: "~/.openclaw/workspace-bull" },
{ id: "bear", workspace: "~/.openclaw/workspace-bear" },
{ id: "aggressive", workspace: "~/.openclaw/workspace-aggressive" },
{ id: "conservative", workspace: "~/.openclaw/workspace-conservative" }
]
},
tools: {
agentToAgent: {
enabled: true,
allow: ["orchestrator", "bull", "bear", "aggressive", "conservative"]
}
},
session: {
agentToAgent: {
maxPingPongTurns: 5 // Bull/Bear 辩论最多 5 轮
}
}
}
```
### sessions_spawn vs sessions_send 用法
**Phase 1 — 并行数据收集sessions_spawn**
Orchestrator 同时 spawn 4 个分析师:
```
sessions_spawn → market-analyst (task: "分析 NVDA 技术面")
sessions_spawn → fundamentals-analyst (task: "分析 NVDA 基本面")
sessions_spawn → sentiment-analyst (task: "分析 NVDA 市场情绪")
sessions_spawn → news-analyst (task: "分析 NVDA 宏观环境")
```
每个 spawn 独立执行,完成后 announce 结果回 Orchestrator。
**Phase 2 — 多空辩论sessions_send ping-pong**
```
Orchestrator ──sessions_send(报告摘要)──► Bull Agent
Bull Agent 回复 bull case
──自动 ping-pong──► Bear Agent 反驳
──ping-pong──► Bull 再反驳
...(最多 5 轮,或 agent 回复 REPLY_SKIP 结束)
Orchestrator 收到完整辩论记录announce step
```
**Phase 3 — 风控辩论sessions_send ping-pong**
同理Aggressive ⇄ Conservative 2-3 轮。
**Phase 4 — 最终裁决:**
Orchestrator 综合所有报告 + 辩论记录,输出 BUY/SELL/HOLD。
---
## 五、实现路线图
### Phase 1基础设施1-2 天)
- [ ] 确保 openbb-invest-api 在 localhost:8000 运行
- [ ] 安装 OpenClaw`openclaw onboard`
- [ ] 创建 9 个 agent workspace
- [ ] 编写各 agent 的 SOUL.md人格定义
### Phase 24 个分析师 Skills2-3 天)
- [ ] market-analyst skill调用 `/technical/composite`, `/historical`
- [ ] fundamentals-analyst skill调用 `/metrics`, `/financials`
- [ ] sentiment-analyst skill调用 `/sentiment`, `/insider-trades`, `/reddit/trending`
- [ ] news-analyst skill调用 `/macro/overview`, `/economy/*`, `/fixed-income/yield-curve`
- [ ] 每个 skill 用 `exec` 调用 curl 或封装 Python 脚本
### Phase 3辩论 + 风控1-2 天)
- [ ] 配置 `agentToAgent.enabled: true`
- [ ] 测试 Bull ⇄ Bear `sessions_send` ping-pong
- [ ] 测试 Aggressive ⇄ Conservative ping-pong
- [ ] Orchestrator 的 trade-analyze skill 编排完整流程
### Phase 4记忆 + 复盘1 天)
- [ ] 利用 OpenClaw 内建 memory 系统
- [ ] 每次决策存入 `memory/YYYY-MM-DD.md`
- [ ]`memory_search` 在辩论时检索相似历史
- [ ] 实现 reflect 机制:对比实际收益,更新记忆
### Phase 5通道对接 + 优化1 天)
- [ ] 绑定 Telegram/WhatsApp直接聊天触发分析
- [ ] 优化 prompt减少 token 消耗)
- [ ] 添加 openbb-invest-api 独有数据源做空、期权、DeFi
---
## 六、与 TradingAgents 的差异对比
| 维度 | TradingAgents (LangGraph) | OpenClaw 混合架构 |
|------|---|---|
| 编排 | 显式状态机,条件路由 | sessions_spawn + sessions_send |
| 并行 | 4 分析师真并行 | sessions_spawn 并行 |
| 辩论 | 多轮循环,独立 LLM 调用 | ping-pong 机制,最多 5 轮 |
| 记忆 | 自建 BM25 | OpenClaw 内建BM25 + 向量 + 时间衰减) |
| 数据 | yfinance 直调 | openbb-invest-api133+ 端点) |
| 交互 | 纯 CLI/API | WhatsApp/Telegram/Discord 直接对话 |
| 部署 | 需要自托管 | OpenClaw 本地运行,开箱即用 |
---
## Related
- [[openbb-invest-api]]
- [[OpenClaw]]