在DeFi中运行交易机器人:回测为何不可信——CoW DAO

CowSwap 发布于 2026-07-01 阅读 15

本文揭示了DeFi交易机器人回测结果与现实执行之间的巨大差距。回测假设订单以中间价成交、无Gas费用、无滑点和价格影响、无MEV攻击,但实际DEX交易中这些成本真实存在。MEV机器人在以太坊上一年内提取了18万ETH,导致策略回测盈利而实盘亏损。文章详细分析了滑点、价格冲击、Gas、MEV和交易失败等隐性成本,并介绍了基于意图的执行系统(如CoW Protocol)如何通过批量拍卖、脱离公共内存池、求解者竞争等机制,使实际执行更接近回测假设,从而缩小差异。

在 DeFi 中运行交易机器人:为什么回测会撒谎

你运行了 18 个月的回测数据。夏普比率超过 2。回撤看起来可控。在纸面上,你有了一个值得投入资金的策略。然后你部署了真实资金,第一周盈亏就变成了负数。

关于那个回测,关键在于:它从未衡量你的策略表现如何。它衡量的是在一个无摩擦的幻想世界中的表现。它以中间价定价每一笔成交,忽略了 Gas 费用,并假设每笔交易都能成功落地——就好像没有其他机器人能在你的订单结算前看到它们一样。在真实的 DEX 上,这些都不成立,这就是为什么那些漂亮的夏普比率数字只属于宣传材料,而不是真实的盈亏。

本文详细分析了回测与实盘差距的具体来源——滑点、价格影响、Gas、MEV 和失败交易——以及基于意图的执行如何弥合这一差距。如果你的模拟优势在生产环境中消失,这里是你首先需要检查的地方。

太长不看

  • 回测以中间价定价成交。实盘 DEX 交易则需要支付滑点、Gas 和 MEV。
  • 价格影响随你的订单规模扩大,在每个回测中都被视为零。
  • MEV 提取者在不到一年的时间里从以太坊交易者手中拿走了 180,000 ETH
  • 基于意图的执行通过批量拍卖、在公共内存池之外完成交易结算——因此没有东西可被抢跑。
  • 如果你的回测盈利但实盘亏损,在修改策略之前,先审计执行层。

回测假设了什么 vs. 实盘交易支付了什么

回测模拟了一个不存在的市场。订单以中间价成交,而没有任何 DEX 会以中间价报价。Gas 为零,尽管每笔链上交易都有成本。成交率为 100%,尽管交易会被回滚。订单簿保持静止,尽管流动性在大额订单落地的那一刻就会移动。

时机使情况更糟。机会窗口持续 100 到 500 毫秒,即使是一个快速的机器人也需要 50 到 200 毫秒来行动。这种压力在模拟中永远不会显现。

大多数量化分析师通过每笔交易固定削减一个百分比来修补这个问题:一个滑点估计值,一个固定的 Gas 费用。但静态的削减是一个平均值,而实盘滑点是动态的。它取决于你的订单规模、你交易时池子的深度以及波动性——而波动性恰恰在你的策略说“执行”时达到峰值。这个削减在尾部从来不够保守。尾部正是资金流失的地方。

回测遗漏的成本:滑点、价格影响和 Gas

滑点 是你预期价格与实际成交价格之间的差距。在 DEX 上,它会随着流动性不足和高波动性而增大。一个猛烈追击价格变动的机器人,实际上是在以最差的价差进行交易——而回测却以中间价定价。

价格影响 则不同。它是市场对你自身订单规模的反应。在 AMM 上,一笔大额买入会根据你的规模相对于池子深度来使价格对你产生不利变动。在浅池中,一笔 50,000 美元的订单可能会使你的执行价格变动几个百分点。在回测中,该订单以交易前的价格成交。但在生产中,你的订单本身就是导致价格变动的原因。

Gas 并非固定项目。它会随着网络拥堵而上升,而拥堵又与波动性同时达到峰值——因为触发你策略的事件也会触发其他人的策略。你静态的 Gas 估计值正在与那些每区块重新定价其费用报价的系统竞争。一个 0.5% 的理论优势,可能在一次拥堵高峰中仅仅因为 Gas 费用就变成负数。

MEV 机器人抢跑并夹击你的成交

抢跑在实盘 DEX 上如何运作

你广播到公共内存池的每一笔交易在结算前都是可见的。抢跑之所以有效,是因为机器人持续监控着那个内存池。当发现一笔待处理的大额掉期交易时,它会以更高的 Gas 费用提交自己的交易,以便验证者先处理它。等到你的交易运行时,价格已经朝着不利于你的方向变动了。

这并非通常意义上的漏洞。正如 Chainlink 的研究所指出的,机器人使用的是公共数据和 Gas 费用机制,完全符合协议的定义。你的交易仍然会落地——只是价格更差,而提取者则保留了价差。

三明治攻击

三明治攻击增加了第二笔交易。攻击者在你交易之前买入,并在你交易之后卖出,从而夹住你的成交。你在入场时推高了价格;他们则利用你刚刚创造的流动性退出。整个往返成本都来自你的成交。

规模是真实的。在以太坊于 2022 年 9 月转向权益证明之前,通过 MEV 提取了 440,000 ETH。在之后几个月里,仅到 2023 年 5 月,提取者又拿走了 180,000 ETH。这些价值直接从普通交易者——包括未受保护的机器人——转移到了提取者手中。而执行此操作的基础设施是有组织的:研究人员已经在以太坊上绘制了 7 个主要机器人类别和 24 个子类别

你的回测没有模拟其中的任何一项。

为什么暴露于内存池是隐性税

在 AMM 上交易的机器人运行在一个由提取者组成的平行经济体中,这些提取者的收入依赖于你的成交结果比应有的更差。MEV 不会作为一个单独的项目出现。它表现为相对于回测的持续表现不佳,而在策略逻辑中找不到明显原因。这就是为什么它很容易被误诊为糟糕的 Alpha。

失败交易如何影响你的净回报

在链上,交易会被回滚——而回滚不会退还你的 Gas 费用。计算已经执行,所以你必须为此付费。在高竞争时期,当所有自动化系统同时触发时,回滚率和 Gas 价格会一起上升。

大多数机器人运行所使用的热钱包设置增加了另一个风险。快速执行需要可访问的资金,这意味着私钥存在于联网系统中。热钱包泄露在 2023 和 2024 两年间给行业造成了超过 40 亿美元的损失( Cobo)。一次凭据泄露就可能抹去策略赚取的所有收益。

一个在生产环境中失败率为 10% 的机器人,其成本结构在回测中被视为零。

基于意图的执行如何弥合回测与实盘的差距

它将你的交易移出内存池

基于意图的交易改变了执行发生的地点。你签署一个意图,表明你想要的结果——代币对和你愿意接受的最低价格。求解者(相互竞争以完成你订单的质押第三方)在链下找到最佳路径。你的交易永远不会停留在公共内存池中等待被夹击。

CoW Swap 的批量拍卖在设计上就能抵抗 MEV,EigenPhi 的研究 也证实了这一点。交易在触及链上流动性之前就在链下完成匹配,因此三明治攻击无处可夹。抢跑者利用的 Gas 竞价竞赛永远不会开始,因为没有竞赛可以参与。上述关于内存池的成本,对于一笔从未进入内存池的交易来说根本不适用。

一个统一清算价格,盈余返还给你

批量拍卖将交易分组到短时间窗口内。同一批次中针对同一代币对的每笔交易,都以单一的统一清算价格结算,因此没有机器人可以在批次内出价超过你。并且,如果求解者找到的任何盈余超过你签署的最低价格,盈余会返还给你,而不是协议。

无 Gas 的挂单和撤单消除了失败交易的成本。你只需签署一次意图。如果条件未满足,不会消耗任何东西——这既解决了回滚时消耗 Gas 的问题,也解决了传统 keeper 机器人上悄悄消耗费用的轮询循环问题。

建立在无法低于你签署价格成交的求解器上

程序化订单框架 允许智能合约根据链上条件持续下订单。你签署一次;当条件满足时,求解者会执行。无需后端轮询链,每次触发也无需手动干预。

与 Yearn Finance 共同构建的 Milkman 合约,解决了治理策略经常遇到的一个问题:延迟执行。DAO 投票可能需要几天才能结束,而提案开启时设定的价格在结算时已经过时。Milkman 在执行时刻检查链上预言机,因此交易会在落地时的实际价格成交。

CoW Hooks 将交换前和交换后的操作捆绑到一个原子交易中——领取奖励以资助交易、交换后桥接代币、或作为成交的一部分解包 WETH。通常需要分开交易并带有各自失败点的步骤,现在合并为一个单元。

对于开发,Trading SDK(TypeScript,支持 Viem 和 Ethers v5/v6 版本)负责处理报价获取、订单签署和订单管理。求解者被质押并相互竞争以完成你的订单,并且他们不能以低于你签署的价格成交。这个保证正是你的回测对执行质量所假设的。大多数 DEX 无法提供这一点。

为什么 CoW Protocol 的执行符合你的模型假设

弥合回测与实盘的差距,不是通过改进策略逻辑来实现的。而是通过改变执行环境——从一个为原始速度构建的环境,转变为一个为结果完整性构建的环境。

CoW Protocol 逐项攻击这些差距。你的订单是意图,由相互竞争的求解者在批量拍卖中结算——因此你不需要通过内存池与其他机器人竞速。关于 MEV,批次中的订单以统一的清算价格结算,这消除了夹击或抢跑你的获利空间;你的回测暗自假设的“好像没人能看到我的订单”这种情况,变得更接近现实。

关于失败交易,你签署一个意图,由求解者负责执行,因此你不会为未落地的订单支付 Gas——那些在你的回测从未建模的情况下悄然消耗盈亏的回滚交易,不再对你造成冲击。关于滑点和价格影响,求解者相互竞争,在可用流动性中路由你的订单,并在可能的情况下与反向流匹配,因此成交结果取决于谁能为你找到最佳结果,而不是谁更快。

它不会让无摩擦的幻想变成现实——规模带来的价格影响仍然是物理定律。但它会停止向你收取那些幼稚回测忘记包含的成本。

开发者快速入门程序化订单文档 是具体的起点。

因此,如果你的策略在回测中表现出色但在生产中亏损,Alpha 很可能没问题——去审计执行层吧。你正在支付的这些成本——滑点、价格影响、Gas 峰值、MEV、失败交易——在每一次实盘运行中都存在。只是回测从未向你收取过而已。

关于在 DeFi 中运行交易机器人的常见问题

如何在回测中模拟滑点和价格影响?

静态削减很少能匹配现实,因为价格影响取决于你具体的订单规模和池子深度。为你目标的实际池子模拟恒定乘积公式(x * y = k),这样你就可以计算你自己的交易如何影响市场。研究指出,忽视这些动态成本是那些优势薄弱的策略在生产中失败的主要原因之一。

对于高频策略来说,MEV 和 Gas 哪个成本更高?

通常是 MEV 成本更高,因为它随你的交易量而非网络拥堵程度而增加。Gas 是可观的费用;MEV 是一种隐性税,在不到一年的时间里从以太坊交易者手中拿走了 180,000 ETH。没有 MEV 保护的高频机器人,常常在三明治攻击中损失的金额超过它们支付的优先级费用。

如果求解者无法完成我的订单会怎样?

如果市场变动使得没有求解者能满足你签署的最低价格,订单就不会执行。与那些在回滚交易上消耗 Gas 的传统机器人不同,基于意图的订单在结算之前是免 Gas 的。你的订单将保持开放,直到价格回到你的限价或订单过期。

Milkman 如何处理延迟的 DAO 国库交换?

Milkman 在执行时刻检查链上预言机,因此在投票开启时设定的价格不会在三天的治理延迟期间变得过时。交易在 公平市场价格 下成交,保护大型国库再平衡不被抢跑。

如何使用 CoW Protocol Trading SDK 部署机器人?

Trading SDK 与 Viem 或 Ethers 等 TypeScript 库集成。你的机器人可以获取报价、签署意图和管理订单,而无需维护用于内存池监控的后端。由于执行委托给了求解者,你可以跳过运行高性能节点或私有 RPC 连接的开销。

分享

复制

  • 原文链接: cow.fi/learn/running-tra...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论