如何在 2026 年上线之前对 MEV 策略进行回测
**简短回答** — 有用的 MEV 回测通过分叉节点重播真实的历史区块,根据实时搜索者面临的相同条件运行策略代码,并报告每次尝试的损益净值。任何缺少的东西——损益电子表格、纯价格模拟、“平均机会”模型——都会产生在生产中消失的幻想回报。在投入资金之前至少花两周的时间进行回测。成本是廉价的 RPC 调用;另一种选择是真金白银。 ## 为什么大多数 ME

简短回答 — 有用的 MEV 回测通过分叉节点重播真实的历史区块,根据实时搜索者面临的相同条件运行策略代码,并报告每次尝试的损益净值。任何缺少的东西——损益电子表格、纯价格模拟、“平均机会”模型——都会产生在生产中消失的幻想回报。在投入资金之前至少花两周的时间进行回测。成本是廉价的 RPC 调用;另一种选择是真金白银。
为什么大多数 MEV“回测”都没用
五种最常见的回测错觉:
- 最佳填充假设。 “我会抓住每一个套利” - 不,你会因为更快的搜索者而损失约 70%。
- 没有 Gas 建模。 计算毛利润,忽略每个区块的 Gas 状态。
- 静态矿池状态。 假设一个区块的矿池深度/价格适用于相邻区块。
- 无延迟损失。 将您的策略视为针对实时流的即时策略。
- 幸存者偏差。 仅在您记忆良好的几个月内进行回测。
所有五项回报均高估了 3-10 倍。 “每月应该赚 5 万美元”的实时部署通常会赚 4 万美元或零。
回测的三个层次
第 1 层 — 电子表格重播(不要相信这一点)提取历史机会数据,乘以捕获率。可用于确定餐巾纸尺寸,但不适用于“走/不走”。
第 2 层 — 每个机会分叉模拟(可接受)通过在相关区块分叉 Reth 或 Geth 节点并模拟您的交易来重放每个机会。捕获Gas、滑点、恢复路径。
第 3 层 — 使用延迟模型进行连续重放(真实情况)重放连续的区块范围,模拟与历史竞争对手交易并行执行的策略,模型延迟损失和包含概率。输出真实的每次填充捕获率。
大多数机构 MEV 公司都运行 Tier 3。FRB Agent 提供 Tier 3 重放引擎;配置您的策略并选择块范围。
第 3 层循环的解释
For each historical block in [start, end]:
fork = fork_node(block_number = block - 1)
state = fork.get_pool_state(target_pools)
competitor_txs = block.transactions // what actually happened
for each potential opportunity in state:
your_tx = your_strategy.build(state)
if your_tx is None: continue
landing_block = simulate_inclusion(
your_tx,
competitor_txs,
latency_ms = your_measured_latency,
bid = your_bid_function(opportunity)
)
if landing_block:
pnl = simulate_pnl(fork, your_tx, landing_block)
log(pnl)
该循环针对几周或几个月的历史运行。输出是损益分布,而不是平均值。
选择正确的块范围
至少回测:
- 最近 8 周的历史。 最近的历史足以使竞争格局和池深度相似。
- 牛市和斩波制度。 纯牛市回测具有误导性。
- **一周中的所有天。**周末 MEV 与工作日不同。
避免:
- 简短、精心挑选的“看起来不错”的范围
- 跨越重大市场结构变化的时期(例如分叉或主要 DEX 部署)
- 剧烈波动的几周,除非这些是您的目标状态
延迟校准
这是最常被跳过的步骤。您的实际延迟 = mempool_observe_to_signed_tx + network_to_relay + relay_to_proposer。测量所有三个:
- 观察到签名:从 WSS 待处理事件到您签名的交易的时间戳。典型值:8–40 毫秒。
- 网络到中继:对您的中继端点执行 ping 操作。典型值:4–60 毫秒。
- 中继到提议者:不受您的控制,~20–60ms。
总计:2026 年为 30–160 毫秒。在模拟器中使用您测量的数字,而不是充满希望的数字。
Gas状态建模
回测期间的 Gas 并不是接下来 8 周直播期间的 Gas。解决方案:
- 对每个重放的区块使用区块实际Gas价格。回测反映了历史政权。
- 通过充气 1.5 倍、2 倍、3 倍进行压力测试,以模拟不利的状态。
- 对出价分位数变化进行压力测试(您的出价从第 60 个百分位数移动到第 75 个百分位数)。
如果您的策略在 2 倍Gas状态下保持不变,那么它就有余量。
模拟失败的尝试
真实搜索者体验:
- 捆绑包恢复(捆绑包中的其他交易在块中更改池状态)
- 滑点违规(上限保护您免受有利可图但有风险的补仓)
- 未选择的捆绑包(拍卖失败)
回测必须包括这些故障模式。投标模拟应解决:
- 包含:出价>边际
- 输给竞争对手:模拟竞争对手的出价 > 您的出价
- 自我恢复:状态在块中改变
回测显示 100% 包含被破坏。
“好的”输出是什么样的
运行良好的第 3 层回测会产生:
- 盈亏分布直方图(不是单个数字)
- 按机会大小划分的纳入率
- 一段时间内的回撤曲线
- 延迟敏感度表(+20ms、+50ms 时会损失多少)
- Gas敏感度表(+50% Gas时您会损失多少)
- 类夏普比率(平均回报/标准差)
远离任何只显示绿线上升的“回测”。这是营销材料,而不是回溯测试。
向前验证
回测看起来不错后,运行前向验证:
- 在第 1-6 周调整策略。
- 锁定参数。
- 在第 7-8 周运行,无需进一步调整。
- 比较结果。
如果第 7-8 周的表现比第 1-6 周低 30% 以上,则表明您已过度拟合。调整策略抽象,而不是策略参数。
从回测到上线:桥梁
搬家分三步走:
- 生产中的纸面交易 - 机器人根据实时数据运行,构建交易,但不签名/提交。将纸质损益表与实时内存池结果进行比较。
- 小额资本活体 — 预期资金的 5-10%,真实提交。运行 7-14 天。
- 全面部署 — 一旦纸质和小额资本指标与回溯测试一致,即可扩大规模以达到目标资金规模。
如果纸质或小额资本的回测表现不佳 > 40%,请勿扩展。先诊断一下。
常见的诊断失败
当实时表现低于回测时,典型原因(按顺序):
- 实际延迟高于校准延迟。再次测量。
- 竞争对手数量增加。回测期间搜索者较少。
- 矿池深度落在您的目标货币对上。重新选择目标。
- 出现了你看不到的新私人订单流。检查构建器/中继文档。
- Gas 机制发生变化。重新出价。
根据我们的经验,60% 以上的表现不佳可归因于 (1) 和 (2)。
工装
2026 年,有用的回测工具:
- Foundry 使用
forge进行分叉模拟 - Reth 在存档模式下运行以进行历史状态访问
- 砧座用于快速分叉
- TheGraph 用于索引历史池状态
- FRB Agent 的重播引擎,用于端到端第 3 层重播(内置)
真实回测的成本
实际资源成本:
- 存档 RPC:50-200 美元/月用于回测级访问(或自托管存档节点)
- 计算:2–8 个 vCPU + 32–64GB RAM
- 存储:4–12TB 用于完整存档(如果使用托管则更少)
- 时间:目标链上每次回测运行 4-24 小时
一次性预算 500-2000 美元用于安装,每月 100-300 美元用于持续安装。相对于防损来说便宜。
常问问题
我可以在没有存档节点的情况下进行回测吗?
有限的。托管档案(Alchemy、QuickNode)可以工作,但在高请求量时会变得昂贵。对于严肃的工作,请自行托管 Reth 存档节点。
我的回测期应该是多长?
至少 6 周; 12 周以上更好。少于 4 周没有统计学意义。
我应该在测试网上进行回测吗?
不会。测试网有不同的竞争、Gas 动态和矿池状态。主网历史回测。
FRB Agent 会帮我进行回测吗?
是的——适用于内置策略模块(原子套利、清算、JIT、狙击)。自定义策略需要您自己运行重放引擎。
如果我的回测显示巨大的回报怎么办?
保持怀疑。验证第 3 层属性(延迟模型、Gas建模、尝试失败模拟)。大多数“巨额回报”回测都在这些维度之一上被打破。
相关阅读
本文描述了工程实践。回测结果不能保证实时结果。不是财务建议。
相关文章
延伸阅读与工具
讨论
暂无笔记。添加第一条观察,或在以下平台与团队分享链接 X (@MCFRB).