307 lines
12 KiB
Markdown
307 lines
12 KiB
Markdown
---
|
||
created: "2026-03-21"
|
||
type: project
|
||
status: active
|
||
deadline: ""
|
||
tags: [trading, multi-agent, openclaw, openbb, architecture]
|
||
---
|
||
|
||
# Trading Agents 混合架构方案
|
||
|
||
## 目标
|
||
|
||
基于 [[TradingAgents 原始架构分析|TradingAgents]] 的多角色辩论架构,在现有 OpenClaw 环境上实现 AI 驱动的交易决策系统。数据层使用 [[openbb-invest-api]](133+ 端点,K8s 部署),通过 OpenClaw 的 `sessions_spawn` + `sessions_send` 混合架构实现多 Agent 辩论。
|
||
|
||
---
|
||
|
||
## 一、现有环境
|
||
|
||
| 组件 | 详情 |
|
||
|------|------|
|
||
| OpenClaw | v2026.2.13,`192.168.68.108`(yiukai-ubuntu),systemd 服务 |
|
||
| openbb-invest-api | K8s 集群,`invest-api.k8s.home`(`192.168.68.240:8000`) |
|
||
| 已有 Agent | 5 个 ds-* agent(主 Guild)+ 1 个 invest-analyst(Stock Guild) |
|
||
| 已有 Skill | `invest-api`(调用 openbb-invest-api) |
|
||
| 渠道 | Discord(6 bot)+ Telegram |
|
||
| 模型 | kimi-coding/k2p5(主),claude-opus-4-6-thinking(备选) |
|
||
| Agent 间通信 | ds-* 系列已启用,invest-analyst 独立 |
|
||
| Skill 开发 | 在本地 openbb-invest-api 仓库,deploy 脚本推送到远程 |
|
||
|
||
---
|
||
|
||
## 二、架构设计
|
||
|
||
### Agent 规划(新增 4 个 agent)
|
||
|
||
在现有 invest-analyst 基础上扩展,不影响 ds-* 系列:
|
||
|
||
| Agent ID | 角色 | 用途 | Discord 账户 |
|
||
|----------|------|------|-------------|
|
||
| `invest-analyst` (已有) | 编排者/裁判 | 调度分析、主持辩论、最终裁决 | invest-analyst (已有) |
|
||
| `invest-bull` (新) | 多方研究员 | 看多论证 | invest-bull (新 bot) |
|
||
| `invest-bear` (新) | 空方研究员 | 看空论证 | invest-bear (新 bot) |
|
||
| `invest-hawk` (新) | 激进风控 | 高风险高回报视角 | invest-hawk (新 bot) |
|
||
| `invest-dove` (新) | 保守风控 | 资产保护视角 | invest-dove (新 bot) |
|
||
|
||
> 复用 invest-analyst 作为编排者(已有 invest-api skill 和 Stock Guild 绑定)。
|
||
> 分析师做成 skill 而非独立 agent(省资源,数据采集不需要对话)。
|
||
> 只有需要"对话"的辩论角色才需要独立 agent。
|
||
|
||
### 通信模式
|
||
|
||
```
|
||
用户: /trade-analyze NVDA
|
||
│
|
||
v
|
||
invest-analyst (编排者)
|
||
│
|
||
├── 执行 4 个分析 skill(数据采集 + LLM 生成报告)
|
||
│ ├── /market-analysis NVDA → 技术分析报告
|
||
│ ├── /fundamental-analysis NVDA → 基本面报告
|
||
│ ├── /sentiment-analysis NVDA → 情感分析报告
|
||
│ └── /macro-analysis NVDA → 宏观环境报告
|
||
│
|
||
├── sessions_send → invest-bull(发送 4 份报告,要求出 bull case)
|
||
│ invest-bull ⇄ invest-bear(ping-pong 3-5 轮辩论)
|
||
│ invest-analyst 收到完整辩论记录(announce)
|
||
│
|
||
├── sessions_send → invest-hawk(发送交易方案,要求评估风险)
|
||
│ invest-hawk ⇄ invest-dove(ping-pong 2-3 轮辩论)
|
||
│ invest-analyst 收到风控辩论记录(announce)
|
||
│
|
||
└── 综合所有报告 + 辩论记录 → 最终 BUY/SELL/HOLD 决策
|
||
投递到 Stock Guild Discord 频道
|
||
```
|
||
|
||
### 为什么不用群聊辩论
|
||
|
||
OpenClaw Multi-Agent Group Chat [尚未实现](https://github.com/openclaw/openclaw/issues/18869)。即使实现了,`sessions_send` 方案也更优:
|
||
|
||
| 维度 | 群聊辩论 | sessions_send 辩论 |
|
||
|------|---------|-------------------|
|
||
| 流程控制 | 混乱,谁先说不确定 | 结构化,轮次可控 |
|
||
| 循环风险 | 高(可能死循环) | 无(maxPingPongTurns 硬限制) |
|
||
| 上下文 | 所有人共享一个上下文窗口 | 每个 agent 独立上下文,更专注 |
|
||
| Token 成本 | N 个 agent × 完整群聊历史 | 仅辩论双方共享必要上下文 |
|
||
| 当前可用性 | ❌ 未实现 | ✅ 已可用 |
|
||
|
||
### 学术依据
|
||
|
||
- [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 倍
|
||
|
||
---
|
||
|
||
## 三、openbb-invest-api 数据覆盖
|
||
|
||
> openbb-invest-api 已完全覆盖 TradingAgents 所有数据需求,且更丰富。
|
||
|
||
| TradingAgents 数据需求 | openbb-invest-api 端点 | 额外优势 |
|
||
|---|---|---|
|
||
| 股票行情 OHLCV | `/stock/{s}/historical` | ✅ |
|
||
| 技术指标 (RSI, MACD, BB, ATR) | `/stock/{s}/technical/*` | 14种 + Ichimoku, Fibonacci |
|
||
| 基本面 (财报、资产负债表) | `/stock/{s}/financials`, `/metrics` | ✅ |
|
||
| 公司新闻 | `/stock/{s}/news` | ✅ |
|
||
| 宏观新闻 | `/macro/overview`, `/economy/*` | CPI, GDP, FOMC 等 |
|
||
| 内幕交易 | `/stock/{s}/insider-trades` | ✅ |
|
||
| 情感分析 | `/stock/{s}/sentiment` | 多源复合 (Finnhub+AV+Reddit) |
|
||
|
||
### 独有数据(TradingAgents 没有)
|
||
|
||
- 做空数据 `/shorts/*` — 空头量、FTD、暗池
|
||
- 期权数据 `/market/options/*` — Greeks、IV
|
||
- 固收数据 `/fixed-income/*` — 收益率曲线、SOFR
|
||
- DeFi 数据 `/defi/*` — TVL、收益池
|
||
- A股/港股 `/cn/*` — 实时行情 + 历史
|
||
- 投资组合 `/portfolio/*` — HRP、风险平价、t-SNE 聚类
|
||
- 回测 `/backtest/*` — SMA/RSI/动量策略
|
||
|
||
---
|
||
|
||
## 四、实现步骤
|
||
|
||
### Phase 0:环境准备(SSH 远程操作)
|
||
|
||
1. **升级 OpenClaw**: `npm install -g openclaw@latest` (2026.2.13 → 2026.3.13)
|
||
2. **创建 4 个 Discord bot**: invest-bull, invest-bear, invest-hawk, invest-dove
|
||
- 加入 Stock Guild (`1479926167141355560`),开启 Message Content Intent
|
||
3. **创建 4 个 agent workspace**:
|
||
```bash
|
||
openclaw agents add invest-bull --workspace ~/.openclaw/workspace-invest-bull
|
||
openclaw agents add invest-bear --workspace ~/.openclaw/workspace-invest-bear
|
||
openclaw agents add invest-hawk --workspace ~/.openclaw/workspace-invest-hawk
|
||
openclaw agents add invest-dove --workspace ~/.openclaw/workspace-invest-dove
|
||
```
|
||
4. **更新 openclaw.json**: agent list、Discord accounts、bindings、agentToAgent allow、maxPingPongTurns: 5
|
||
|
||
### Phase 1:分析师 Skills
|
||
|
||
在 openbb-invest-api 仓库的 `openclaw-skills/` 目录开发,部署到 invest-analyst workspace。
|
||
|
||
| Skill | 调用的 API 端点 | 输出 |
|
||
|-------|----------------|------|
|
||
| market-analysis | `/stock/{s}/historical`, `/technical/composite`, `/technical/ichimoku` | 技术趋势、动量、波动率 |
|
||
| fundamental-analysis | `/stock/{s}/metrics`, `/financials`, `/price-targets`, `/upgrades` | 估值、成长性、分析师共识 |
|
||
| sentiment-analysis | `/stock/{s}/sentiment`, `/insider-trades`, `/reddit/trending` | 多源情感、内幕交易动向 |
|
||
| macro-analysis | `/macro/overview`, `/fixed-income/yield-curve`, `/economy/cpi`, `/shorts/volume` | 宏观环境、利率、做空压力 |
|
||
|
||
API 基础 URL: `http://invest-api.k8s.home:8000/api/v1`
|
||
|
||
### Phase 2:辩论者 SOUL.md
|
||
|
||
| Agent | 人格 | 行为 |
|
||
|-------|------|------|
|
||
| invest-bull | 坚定的价值发现者 | 引用数据看多,承认风险但强调上行空间 |
|
||
| invest-bear | 谨慎的风险猎手 | 引用数据看空,质疑乐观假设 |
|
||
| invest-hawk | 积极进取的交易者 | 更大仓位、更紧止损、积极入场 |
|
||
| invest-dove | 稳健的资产守护者 | 分批建仓、更宽止损、保守仓位 |
|
||
|
||
### Phase 3:编排 Skill(trade-analyze)
|
||
|
||
`trade-analyze/SKILL.md` 核心编排逻辑:
|
||
1. 执行 4 个分析 skill → 4 份报告
|
||
2. `sessions_send` → invest-bull,ping-pong 到 invest-bear(3-5 轮)
|
||
3. `sessions_send` → invest-hawk,ping-pong 到 invest-dove(2-3 轮)
|
||
4. 综合裁决 → BUY/SELL/HOLD + 仓位 + 止损 + 理由
|
||
5. 存入 `memory/YYYY-MM-DD.md`
|
||
|
||
### Phase 4:记忆 + 复盘
|
||
|
||
- 每次决策存 `memory/YYYY-MM-DD.md`(决策、置信度、价格、理由、辩论要点)
|
||
- `MEMORY.md` 持久存储(持仓、胜率、教训)
|
||
- 每周 cron 复盘:对比预期 vs 实际收益,更新教训
|
||
|
||
### Phase 5:优化 + 扩展
|
||
|
||
- 加入做空/期权/DeFi 数据
|
||
- 日报集成(纳入现有 daily-invest-briefing cron)
|
||
- 回测验证 agent 决策历史表现
|
||
|
||
---
|
||
|
||
## 五、配置变更清单
|
||
|
||
### openclaw.json 变更
|
||
|
||
```json5
|
||
{
|
||
agents: {
|
||
list: [
|
||
// ... 现有 6 个保持不变 ...
|
||
{ id: "invest-bull", workspace: "~/.openclaw/workspace-invest-bull" },
|
||
{ id: "invest-bear", workspace: "~/.openclaw/workspace-invest-bear" },
|
||
{ id: "invest-hawk", workspace: "~/.openclaw/workspace-invest-hawk" },
|
||
{ id: "invest-dove", workspace: "~/.openclaw/workspace-invest-dove" }
|
||
]
|
||
},
|
||
tools: {
|
||
agentToAgent: {
|
||
enabled: true,
|
||
allow: [
|
||
"ds-commander", "ds-strategist", "ds-builder", "ds-creator", "ds-guardian",
|
||
"invest-analyst", "invest-bull", "invest-bear", "invest-hawk", "invest-dove"
|
||
]
|
||
}
|
||
},
|
||
session: { agentToAgent: { maxPingPongTurns: 5 } },
|
||
channels: {
|
||
discord: {
|
||
accounts: {
|
||
// ... 现有 6 个保持不变 ...
|
||
"invest-bull": { token: "BOT_TOKEN_BULL" },
|
||
"invest-bear": { token: "BOT_TOKEN_BEAR" },
|
||
"invest-hawk": { token: "BOT_TOKEN_HAWK" },
|
||
"invest-dove": { token: "BOT_TOKEN_DOVE" }
|
||
}
|
||
}
|
||
},
|
||
bindings: [
|
||
// ... 现有保持不变 ...
|
||
{ agentId: "invest-bull", match: { channel: "discord", accountId: "invest-bull" } },
|
||
{ agentId: "invest-bear", match: { channel: "discord", accountId: "invest-bear" } },
|
||
{ agentId: "invest-hawk", match: { channel: "discord", accountId: "invest-hawk" } },
|
||
{ agentId: "invest-dove", match: { channel: "discord", accountId: "invest-dove" } }
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 六、文件清单
|
||
|
||
### 本地开发(openbb-invest-api 仓库)
|
||
|
||
```
|
||
openclaw-skills/
|
||
├── trade-analyze/SKILL.md # 主编排 skill
|
||
├── market-analysis/SKILL.md # 技术分析 skill
|
||
├── fundamental-analysis/SKILL.md # 基本面分析 skill
|
||
├── sentiment-analysis/SKILL.md # 情感分析 skill
|
||
├── macro-analysis/SKILL.md # 宏观环境分析 skill
|
||
├── souls/
|
||
│ ├── invest-bull.md # Bull SOUL.md
|
||
│ ├── invest-bear.md # Bear SOUL.md
|
||
│ ├── invest-hawk.md # Hawk SOUL.md
|
||
│ └── invest-dove.md # Dove SOUL.md
|
||
├── agents/
|
||
│ ├── invest-bull.md # Bull AGENTS.md
|
||
│ ├── invest-bear.md # Bear AGENTS.md
|
||
│ ├── invest-hawk.md # Hawk AGENTS.md
|
||
│ └── invest-dove.md # Dove AGENTS.md
|
||
└── deploy.sh # SCP 部署脚本
|
||
```
|
||
|
||
### 部署脚本
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
REMOTE="yiukai@192.168.68.108"
|
||
CLAW="~/.openclaw"
|
||
|
||
# Skills → invest-analyst workspace
|
||
for s in trade-analyze market-analysis fundamental-analysis sentiment-analysis macro-analysis; do
|
||
scp -r "openclaw-skills/$s" "$REMOTE:$CLAW/workspace-invest-analyst/skills/"
|
||
done
|
||
|
||
# SOUL.md + AGENTS.md → 各辩论 agent workspace
|
||
for a in invest-bull invest-bear invest-hawk invest-dove; do
|
||
scp "openclaw-skills/souls/$a.md" "$REMOTE:$CLAW/workspace-$a/SOUL.md"
|
||
scp "openclaw-skills/agents/$a.md" "$REMOTE:$CLAW/workspace-$a/AGENTS.md"
|
||
done
|
||
|
||
ssh $REMOTE "openclaw gateway restart"
|
||
```
|
||
|
||
---
|
||
|
||
## 七、验证方案
|
||
|
||
1. **网络连通**: SSH → `curl http://invest-api.k8s.home:8000/health`
|
||
2. **单个 Skill**: Discord `/market-analysis NVDA` → 技术分析报告
|
||
3. **辩论 Ping-Pong**: `sessions_send` invest-bull → ping-pong invest-bear
|
||
4. **完整流程**: `/trade-analyze AAPL` → 4 报告 + 辩论 + 裁决
|
||
5. **回归检查**: invest-analyst 日报 cron + ds-* agents 正常
|
||
|
||
---
|
||
|
||
## 八、与 TradingAgents 的差异
|
||
|
||
| 维度 | TradingAgents (LangGraph) | OpenClaw 混合架构 |
|
||
|------|---|---|
|
||
| 编排 | 显式状态机,条件路由 | sessions_spawn + sessions_send |
|
||
| 并行 | 4 分析师真并行 | Skill 串行(分析师不需要并行,数据采集很快) |
|
||
| 辩论 | 多轮循环,独立 LLM 调用 | ping-pong 机制,最多 5 轮 |
|
||
| 记忆 | 自建 BM25 | OpenClaw 内建(BM25 + 向量 + 时间衰减) |
|
||
| 数据 | yfinance 直调 | openbb-invest-api(133+ 端点) |
|
||
| 交互 | 纯 CLI/API | Discord/Telegram 直接对话 |
|
||
|
||
---
|
||
|
||
## Related
|
||
|
||
- [[TradingAgents 原始架构分析]]
|
||
- [[openbb-invest-api]]
|
||
- [[OpenClaw 部署配置分析]]
|
||
- [[OpenClaw Stock Agent 配置详情]]
|