vault: add Trading Agents project - hybrid architecture plan and original analysis

This commit is contained in:
Yaojia Wang
2026-03-21 12:05:13 +01:00
parent cdba2497a7
commit ec6373a577
2 changed files with 487 additions and 0 deletions

View File

@@ -0,0 +1,308 @@
---
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]]