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

13 KiB
Raw Blame History

created, type, status, deadline, tags
created type status deadline tags
2026-03-21 project active
trading
multi-agent
openclaw
openbb
architecture

Trading Agents 混合架构方案

目标

基于 openbb-invest-api 的数据层,在 OpenClaw 上实现类似 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 尚未实现Issue #18869PR 未合并)。即使实现了,sessions_send 方案也更优:

维度 群聊辩论 sessions_send 辩论
流程控制 混乱,谁先说不确定 结构化,轮次可控
循环风险 高(可能死循环) maxPingPongTurns 硬限制)
上下文 所有人共享一个上下文窗口 每个 agent 独立上下文,更专注
Token 成本 N 个 agent × 完整群聊历史 仅辩论双方共享必要上下文
可观测性 难以追踪谁说了什么 完整的 session 记录
当前可用性 未实现 已可用

学术依据

  • ICLR 2025 MAD 研究异构 agent + 结构化拓扑效果最好
  • Adaptive HMAD:异构辩论比同构辩论准确率高 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

{
  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 运行
  • 安装 OpenClawopenclaw 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 本地运行,开箱即用