当一个 AI 交易机器人一天亏掉 6%:我们复盘了它,然后把它拆了重装

> 这是一次真实的「模型自己做交易、自己写复盘、自己改参数」的实验记录。本文用第一手账本数据,讲清一个看似聪明的 AI 交易系统,是怎样在同一天里犯下三种「假」错误,以及我们如何用「真实撮合 + 概率点风控 + 有界自学习」把它救回来。

一、开局很美,结局很难看

我们搭了一个预测市场(Polymarket)的 AI 交易机器人(demo 模拟盘):真实行情、虚拟资金,让大模型独立判断每个二元市场(YES/NO)的公允概率,发现「模型概率 vs 市场价格」的差额(edge)就下单。

第一天收盘的账本是这样:

指标 数值
初始权益 $20,000,000
当前权益 **$18,802,834**
当日盈亏 **-$1,197,166(-5.99%)**
已实现盈亏 -$1,080,520
平仓笔数 2
胜率 **0%**

两笔平仓,两笔全亏。最狠的一单:一场 WTA 网球比赛,0.53 买入 → 0.08 出场,单笔 -85%,亏掉 $850,559。

看到这里你可能会说:「亏钱嘛,判断错了呗。」但我们复盘后的结论恰恰相反:

> 这次亏钱不是「判断错」,而是「系统错」——假滑点 + 假风控 + 假 edge,三个「假」叠在一起。

二、三个「假」,逐个拆

假 1:模拟撮合严重失真(最大元凶)

账本里有一笔 $1,000,000 的买单,成交价 0.0121,买了 8,290 万份。

问题来了:真实市场根本吃不下这个量。 那个市场的盘口深度可能只有几万美元,你一个百万大单砸进去,实际成交均价会被自己顶得面目全非。

而我们的 v1 引擎用的是固定 0.5% 滑点——一个美好的童话。于是账本上的「入场价」本身是虚构的,所有盈亏都建立在沙子上。

假 2:风控形同虚设

止损设的是 6%,但只在每天一次的循环里检查一次。

结果:一觉醒来,仓位已经从 -6% 跌到了 -85%。等它下一次睁眼,刀已经砍到底了。

更荒诞的是:有一个仓位 09:02 刚因止损卖出(-23%),同一分钟又买了回来 @0.08——白付一次价差,亏两遍。

假 3:edge 比交易成本还低

我们设的最小 edge 阈值是 0.02,而预测市场的实际买卖价差常常是 2%–5%。

也就是说,机器人系统性地买在「赚头抵不过摩擦成本」的地方——开局就输在起跑线上。

再加上大模型自报的「独立公允概率」被当成了真 alpha,机器人专挑 0.01、0.08、0.09 这种长尾彩票:赢 20 次都不够,输 1 次就清零。

三、把 v1 拆了,重装成 v2

针对上面每一处「假」,v2 都给了对偶的「真」:

v1 的病灶 v2 的修法 实测结果
固定 0.5% 滑点(假) **真实订单簿分层撮合**,逐档吃掉 ask/bid 请求买 $1M → 实际只成交 **$11,285** ✅
$1M 砸薄盘口 **深度上限**:单笔 ≤ 可见盘口 10% `depth_limited=True` ✅
价格 % 止损、一天查一次 **概率点(pp)止损**:-5pp 止损 / +8pp 止盈 已实现
卖了同分钟又买回 **6 小时冷却期** 已实现
专买 0.01/0.09 彩票 **只做 0.15–0.85 区间** 彩票单被拦
edge(0.02)< 价差 **min_edge 0.05 且必须 > 实际价差** 已实现
相关暴露叠一起 **主题敞口上限 10%**(伊朗、大选等归一类) 已实现
单次噪声就下单 **连续 2 轮信号确认**才开仓 已验证

几个设计细节值得单独说:

  • **为什么用「概率点(pp)」而不是「价格百分比」?** 一个 0.01 的合约,「6%」只有 0.0006 的绝对波动,纯属噪声;而概率点衡量的是「市场共识移动了多少」,才是真正有意义的量纲。
  • **为什么要「连续 2 轮确认」?** 单次行情抖动 + 单次模型输出,都是噪声。要求两轮同向,等于给信号加了一道低通滤波。
  • **为什么要「主题敞口上限」?** 伊朗 ×2、美国政治 ×2 这类相关仓位,一个宏观事件能同时打穿多个仓位。组合层面的相关性,比单笔风险更致命。

四、真正的杀手锏:让系统自己复盘、自己改

光修一版参数不够。真正的关键在于——每一笔交易都要能被复盘,而且复盘结论要能自动回流到策略。

我们做了两个东西:

① 每笔交易复盘引擎 review.py

对每个平仓单自动归因,标注失败模式:

  • `longshot_band` — 长尾彩票(买在了不该碰的极端价格带)
  • `stop_gap` — 止损穿太远(检查频率不够)
  • `gave_back_profit` — 盈利回吐(冲高后反转收跌)

拿 v1 的历史单实测,它精准命中了那两笔致命单:Buyukakcay = stop_gap,Balance of Power = longshot_band。

② 有界自改善闭环 loop.py

读复盘建议 → 自动调参 → 版本留痕 + 自动备份。关键是「有界」:每个参数都有硬上下限,机器人永远不可能把自己调飞。

实测它正确产出了建议:price_band → [0.2, 0.8](收紧价格带,避开刚亏过钱的极端区)。

五、每天自动跑一条龙

最后,把整条流水线接进每日任务(每天 09:00 JST):

安全交易 → 逐笔复盘 → 按复盘调参 → 发布报告

一个循环,四步,全自动。这才是「不断改善」该有的样子:不是人工时不时去改两行代码,而是系统每天自我复盘、自我微调。

六、给所有 AI 自动化项目的教训

这次复盘的价值,远超一个交易机器人本身。任何让 AI 驱动真实资源的系统,都该问自己四个问题:

  • **我的「成交/执行」模型,是真实的还是虚构的?**

固定滑点、理想延迟、无限深度——这些简化一旦被当成现实,账本就只是自我安慰。

  • **我的风控,是「写了」还是「生效」?**

检查频率、触发时机、平仓滑点,任何一环缺失,风控就是纸糊的。

  • **我的「信号/edge」,真的覆盖成本了吗?**

摩擦成本(价差、手续费、滑点)必须先被扣掉,剩下的才算 alpha。

  • **我有没有让系统「自己学到教训」的闭环?**

没有复盘回流,同一个坑会一直踩下去。

结语

第一天,它亏了 6%,两家「假账」看起来挺惨。

但换个角度:我们用一天、一次模拟盘的代价,换来了一套「真实撮合 + 概率点风控 + 有界自学习」的机制。 假的东西被拆掉了,真的东西被装上了,而且它现在每天自己复盘、自己进化。

> 亏钱不可怕,可怕的是亏完之后,系统还是昨天那个系统。

*(本文所述为 demo 模拟盘实验,真实行情、虚拟资金,不构成任何投资建议。)*

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注