AI 交易系统:每笔单子都要过辩论关
AI 交易系统:每笔单子都要过辩论关
TL;DR:一个纸上交易系统,每次下单前两个 AI Agent 先互相撕——Bull 论证为什么该买,Bear 反驳风险,仲裁者最终裁决。基于 Alpaca 纸上交易,理论依据来自 ArXiv 量化金融论文。
为什么做这个
大多数散户交易系统是单线程的:信号触发,订单出去。风平浪静时没问题,出问题的时候就出大问题。
我想要一个能够质疑自己决策的系统——类似投资委员会的运作方式:你必须在动用资金之前,先把你的逻辑摆出来让人攻击。
另一个动力来自学术研究:ArXiv 的一篇论文(2602.23330)证明,细粒度多 Agent 对抗系统在交易决策上显著优于单 Agent 方案。这值得实验一下。
系统架构
三层结构:
[ 信号层 ] 技术指标 + 聪明钱 + 新闻
↓
[ 辩论层 ] Bull ↔ Bear 对抗辩论
↓
[ 执行层 ] 仲裁裁决 → Alpaca 下单 + 止损信号层
三个子系统独立产生信号:
技术面(短线,每2小时)
- RSI、MACD、ATR 趋势跟踪,标的:SPY/QQQ/NVDA/AAPL/TSLA
- 只在 RSI 穿越 30/70 或 MACD 交叉时触发
聪明钱(每日盘前)
- 13F 持仓:伯克希尔、桥水、文艺复兴、城堡、Two Sigma
- 国会议员交易记录(QuiverQuant)
- Form 4 内部人买入:只追 CEO/CFO/President,P 类开市场买入,$10万+
新闻驱动(中线,收盘后)
- Alpaca 新闻 API 板块轮动信号
- 与当前持仓交叉比对
辩论层
每个候选交易都经过三 Agent 流程:
Bull Agent — 论证为什么该做。必须给出具体的技术面和基本面理由,不允许泛泛而谈。
Bear Agent — 读完 Bull 的论点后开始攻击。找最薄弱的假设,指出可能出错的地方。
仲裁者 — 综合双方,检查:
- 风险收益比(最低 1:2)
- 仓位是否超限(单票硬上限 15%)
- 数据完整性(价格为零不交易)
- 输出
GO/NO-GO+ 置信度分数
测试中真实出现的一个 NO-GO:
⚖️ 裁决: ❌ NO-GO(置信度 95%)
理由: 空头论点决定性——当前价格显示 $0.00,RSI N/A。
多头声称 RSI=29,但数据源无法验证。数据破损不交易。
风险标志:
- DATA_INTEGRITY_FAILURE: 价格 $0.00
- UNVERIFIABLE_THESIS: RSI 与数据源不一致
- MOMENTUM_TRAP_RISK: TSLA 是动量股,不适用均值回归系统检测到数据管道故障,拒绝了交易。这正是你想要的行为。
仓位控制
基于 ArXiv 论文 2603.01298 的自适应波动率控制方案,仓位大小由 ATR 驱动:
position_pct = (risk_per_trade_pct) / (atr_pct * atr_multiplier)实际效果:
- SPY(ATR ~1.3%)→ 最大 77% 仓位(受 15% 上限约束)
- NVDA(ATR ~3.6%)→ 最大 28% 仓位
- TSLA(ATR ~3.7%)→ 最大 27% 仓位
波动大 = 仓位小。简单,但有效。
回测结果
部署之前,我跑了 SPY 的五年回测(2020–2025)来选策略:
| 策略 | 年化收益 | Sharpe | vs 买入持有 |
|---|---|---|---|
| ATR 趋势跟踪 | 113% | 0.68 | +14pp |
| RSI 均值回归 | 67% | 0.41 | -32pp |
| MACD 动量 | 71% | 0.44 | -28pp |
| 买入持有 SPY | 99% | 0.61 | 基准 |
只有 ATR 趋势跟踪在五年里跑赢了被动持有。RSI 和 MACD——散户最常用的两个指标——都不如什么都不做。
基于这个结果的推荐配置:
- 40% 核心买入持有(SPY/QQQ)
- 40% ATR 趋势策略
- 20% 现金(机会仓 + 聪明钱跟单)
技术栈
- 交易 API:Alpaca(纸上交易,$10万虚拟资金)
- 数据:yfinance 历史数据,Alpaca data API 实时 bar
- 分析:pandas、numpy、ta
- 回测:vectorbt、backtrader
- LLM 辩论:Claude CLI(不可用时降级为规则引擎)
- 基础设施:OpenClaw 定时任务,Discord 频道通知
- 语言:Python 3.11(mamba conda 环境)
踩过的坑
数据完整性优先于一切。 系统在第一次模拟交易时因为价格返回 $0 而拒绝下单。这是特性,不是 bug。永远不要让坏数据管道移动真实的钱。
RSI 对动量股没什么用。 TSLA 的 RSI 到 29 不代表它要反弹——它可能只是刚开始真正的下跌趋势。回测证实了这点:RSI 均值回归一直跑输基准。
辩论增加延迟,但能抓住问题。 每笔交易前跑两个 LLM 调用大约多 10 秒。换来的是每个决策的书面记录——为什么做这笔交易,理由是什么。对于纸上交易实验来说,这很有价值。
13F 和国会议员记录是最干净的信号。 Form 4 噪音很大(太多期权行权和 RSU 归属)。国会议员的交易记录很奇怪,但是真实的——美国国会议员历史上跑赢市场的幅度相当显著。自己理解。
下一步
源码暂时不开放——后续可能开源非交易逻辑的部分。
