延迟套利回测为何在实盘失效:执行时间缺口详解
Cart 0



BJF TRADING GROUP  ·  SHARPTRADER OPTIMIZER

为什么延迟套利回测无法在生产环境中存活:执行时间缺口

大多数公开的延迟套利回测在纸面上看起来非常惊艳,但一旦上线运行就会崩溃。原因不是策略逻辑不好 — 而是标准零售回测器会悄悄А假设零延迟成交。本指南将精确拆解毫秒级执行时间如何改变数学结果,以及你的回测必须建模什么,才能产生你真正可以交易的结果。

2,500
10 个部分
~12 分钟 阅读
受众:套利交易者、量化开发者、经纪商技术团队



执行时间缺口,一段话说明

延迟套利的盈利能力存在于 50–200 毫秒的窗口内。 这通常是快速行情源与慢速经纪商之间的价格差异,在慢速经纪商报价更新之前保持开放的时间。如果你的实际往返执行时间 — 从信号检测到确认成交 — 消耗了这个窗口的大部分,你几乎就没有剩余空间。标准零售回测器假设订单会按显示价格即时成交,这会把整个问题从模拟中删除。结果就是:回测看起来像在印钞,而实盘部署在扣除点差后每笔交易都亏损。

本文量化这个缺口,拆解毫秒实际消耗在哪里,并解释如何在回测中建模执行时间,让你输出的数字与实盘账户中看到的数字相匹配。

50–200ms典型窗口
<5ms托管式套利
80–180ms标准 VPS
1.5–2x实盘回撤 vs 回测



观看:执行时间如何改变延迟套利回测 — 同一策略在 0 ms、50 ms 和 150 ms 执行延迟下,逐 tick 讲解。



“执行时间”在延迟套利中真正意味着什么

在延迟套利系统中,策略会比较两个价格源 — 一个快速行情源(通常是一级聚合器或 LP 行情源)和一个慢速行情源(你正在交易的经纪商)。当快速行情源领先慢速行情源的幅度超过点差加上设定阈值时,策略会在慢速一侧发出订单,预期慢速价格会收敛。

机会只存在于两个价格错位期间。一旦经纪商的报价引擎追上来 — 通常在 50 到 200 毫秒内 — 优势就会消失。你的订单必须在这之前进入市场。

在这个语境下,“执行时间”不是一个单一数字。它是一组延迟的叠加,每一项都会贡献若干毫秒:

对于在与经纪商不同数据中心的标准 VPS 上运行的策略,现实的往返时间很少低于 80–100ms。对于通过 cross-connect 与经纪商托管在一起运行的策略,它可以降至 1–5ms。这个数量级差异就是整个游戏。



50–200ms 窗口:为什么毫秒决定一切

想象一个干净的信号:快速行情源跳动 1.5 点。慢速经纪商尚未更新。平均而言,在慢速经纪商的报价引擎反映新价格之前,你大约有 80 到 150 毫秒。在这个窗口内,两件事同时发生:

  1. 其他延迟套利者(以及在经纪商端运行类似逻辑的任何做市商)也在争抢成交
  2. 经纪商的报价源正在持续向快速行情源收敛,而不是一次性跳动 — 因此优势会在整个窗口中线性流失

如果你的往返时间消耗 50ms,你到达时价差仍有约 ~70% 完好,你能捕获其中大部分。如果你的往返时间消耗 150ms,你到达时价差已经崩塌到约 ~10% — 扣除点差 + 滑点后,你很可能在亏损。

非线性

往返延迟与套利 PnL 之间的关系不是线性的。在执行窗口以内,盈利能力高且稳定。超过它,盈利能力会崩塌到零或负数。大多数零售交易者站在这道悬崖的错误一侧,却并不知道,因为他们的回测把它隐藏了。



四种执行时间场景 — 具体数字

下面是同一个理论上具有 1.5 点优势的延迟套利信号,在四种不同往返执行延迟下的模拟。以下数字是你在伦敦交易时段、正常流动性和 0.6–0.9 点点差下,在 EUR/USD 上通常会看到的情况。

往返执行 捕获的优势 入场滑点 每笔交易净 PnL 结论
~5ms(托管) 约信号的 ~95% 0.0–0.2 点 +0.6 到 +1.0 点 盈利
~50ms(近距离 VPS) 约信号的 ~70% 0.2–0.5 点 +0.2 到 +0.6 点 盈利,但更薄
~120ms(中等距离) 约信号的 ~30% 0.5–1.0 点 −0.3 到 +0.1 点 边缘 / 亏损
~200ms(长距离) 约信号的 ~10% 1.0–1.8 点 −1.0 到 −0.5 点 每笔都亏

注意这个模式:从 5ms 到 50ms,盈利能力只是温和下降。从 50ms 到 120ms,它会跌下悬崖。超过 150ms 后,策略在成本之后就变成负期望的抛硬币。对于假设即时成交的回测器来说,这道悬崖是不可见的。



为什么标准回测器会假设零延迟成交

标准零售回测器是为趋势跟随和指标型系统构建的 — 这些策略的持仓周期从几分钟到几天不等,几秒钟的执行滑点只是四舍五入误差。它们的架构反映了这一点:

对于持仓数小时的策略来说,这没问题 — 这些简化的成本远低于 PnL 的 1%。但对于每笔交易赚 1–3 点、在 100ms 窗口内生死攸关的延迟套利策略,每一项简化都是致命的

PROBLEM 01

K 线回放隐藏信号

100ms 的价格差异在 M1 K 线内是不可见的 — K 线显示 OHLC,而不是 K 线内部的 tick 流。K 线回放回测器甚至无法正确检测延迟套利信号。

PROBLEM 02

即时成交删除悬崖

如果订单在发送瞬间按显示价格成交,整个 50–200ms 执行窗口就会坍缩为零。回测每次都捕获每个信号的 100%。现实中,根据基础设施不同,只能捕获 30%–95%。

PROBLEM 03

固定点差是虚构的

真实套利机会集中在新闻、展期和流动性稀薄窗口附近 — 正是点差扩大 3–5 倍的时候。固定点差回测会统计在真实条件下根本不存在的利润。

PROBLEM 04

没有平仓侧建模

延迟套利开仓有多快,平仓就有多快。标准回测器要么完全忽略平仓侧滑点,要么应用相同的固定点差,从而加倍不现实的乐观。



真实回测必须建模的四个延迟组成部分

要生成能经受实盘经纪商检验的回测,模拟器必须明确建模往返过程的每一段。严肃的延迟套利回测需要以下拆解:

组成部分 典型范围 代表什么
1. 信号到发送延迟 0.5–20 ms 从接收触发 tick 到发出订单的时间。取决于语言、代码路径和 CPU。编译型 C++ <1ms;高级脚本 5–20ms。
2. 网络往返(去程) 1–80 ms 从你的交易主机到经纪商的传输时间。托管 = 1–3ms;同一都市区 = 5–15ms;跨区域 = 30–80ms。
3. 经纪商撮合延迟 3–100 ms 在经纪商订单管理和撮合引擎内部花费的时间。一级 ECN 经纪商:3–15ms。标准零售经纪商:30–100ms。带人工处理的 STP 经纪商:100ms+。
4. 确认往返(返回) 1–80 ms 反映出站网络段。在你收到成交确认之前,你并不知道成交价格 — 这与风险管理和平仓侧时机有关。

对于通过标准零售经纪商、从通用 VPS 部署的典型零售延迟套利而言,四个组成部分合计大约 80–180ms — 正好位于信号捕获率跌破 50% 的危险区。对于通过快速 ECN 经纪商进行托管部署,同样的组成部分合计为5–20ms — 远低于悬崖。

任何诚实的延迟套利策略回测都应该允许交易者配置这些延迟并查看影响。SharpTrader Optimizer 将执行延迟建模为单个可配置参数(以毫秒为单位),在模拟时应用于每个订单,并基于真实历史 tick 数据。



如何在回测中正确建模执行时间

必须具备三件事。每一项都是必要的;单独任何一项都不充分。

1. 真实历史 tick — 不是 K 线插值

标准零售回测器通过在 K 线 OHLC 值之间插值来填充“tick”数据。它们生成的合成 tick 会在 K 线内随机点触及最高和最低点,并在开盘与收盘之间平滑移动。真实市场不是这样运动的 — 它们会跳动。你试图捕获的 1.5 点延迟套利信号本身就是一个跳动,而插值 tick 数据会把它平滑到不存在。

严肃的回测会回放从经纪商撮合引擎实际记录的 bid/ask tick(或像伦敦来源机构数据这样的干净参考行情源)。每个 tick 都有时间戳、bid 和 ask。策略会以与实盘部署相同的顺序和相同的时机看到它们。

2. 可配置执行时间 — 按订单应用

交易者配置他们预计实盘会看到的往返执行时间 T(毫秒)。当策略发出订单时,模拟器会将时钟推进请求段部分 — 通常是 T/2,因为只有信号与经纪商侧撮合之间的时间会影响成交价格(响应段只是告诉策略已经发生的事情)。如果 T = 80ms,模拟器会查看信号后 40ms 的 tick 流,并使用那个 tick 的 bid/ask — 而不是触发信号的 tick — 作为成交价格。

这一项改变 — 在信号与成交之间推进时钟 — 会在现实延迟下重现悬崖。它还会让回测具有确定性:同一策略在同一 tick 流上,以 T = 50ms 和 T = 150ms 运行,会产生可测量的不同结果,交易者可以准确看到策略在哪里停止工作。

每次成交的实际滑点就是 tick walk 产生的结果 — 它是模拟的输出,不是交易者必须猜测的数字。有些成交会有利(正滑点),有些会更差(负滑点),其幅度会跟随这些毫秒内的实际 tick 波动。这就是每个标准零售回测器都缺失的真实分布。

3. 入场和出场两侧的 tick 级滑点

延迟套利开仓很快,平仓也同样快。出场发生在入场后 200–800ms,面对的是正在收敛的价格。如果模拟器对入场和出场应用相同的固定点差,就会漏掉两件事:(1) 延迟窗口导致的入场滑点,(2) 平仓侧往返期间价格回漂导致的出场滑点。真实模型允许你独立配置开仓和平仓的执行时间 — 反映现实经纪商行为,即出场通常会经过更慢的路由路径 — 并自动从 tick 流中解析每一段的滑点。

实际中它是什么样子

  • tick 回放引擎,按原始时间戳处理真实记录的 bid/ask tick
  • 执行时间参数(ms),可按每次回测运行配置,应用于信号与成交之间
  • 直接从 tick 流读取可变点差 — 没有固定点差的虚构
  • 实际滑点从 tick walk 中推导 — 不是用户设定;引擎按配置执行时间的请求段部分向前移动,结果 tick 的 bid/ask 成为成交价格(正滑点或负滑点会自然出现,且幅度真实)
  • 订单开仓和平仓的独立执行时间配置 — 反映现实经纪商行为,即出场通常经过比入场更慢的路由路径
  • 跨执行时间设置进行多核心网格优化,让你看到 PnL 是一个曲面,而不是单点



示例:同一策略,三种延迟配置

下面是一个 SharpTrader 延迟套利策略的代表性结果:在 30 天 EUR/USD tick 数据上回测,参数相同,但采用三种不同的执行延迟配置。这些数字是我们在 BJF Feed(London / Tokyo / NY)回测中经常看到的典型结果。

指标 0ms(虚构) 50ms(近距离 VPS) 150ms(长距离)
触发信号 2,847 2,847 2,847
在优势处成交的信号 2,847 (100%) 1,983 (70%) 854 (30%)
平均捕获点数 1.42 0.98 0.21
入场实际滑点(tick-walk 输出) 0.0 点 0.3 点 0.9 点
每笔交易净 PnL +0.82 点 +0.48 点 −0.31 点
月回报(1 手) +233% +137% −88%

0ms 列是标准工具产生的“回测幻想”。50ms 列是部署良好的延迟套利策略在现实中的样子。150ms 列是大多数零售交易者在通用 VPS 上启动策略并通过标准经纪商交易时,在不知道自己往返时间位于悬崖何处的情况下,意外运行出来的结果。

同一策略可能极其盈利、勉强盈利,或必然亏损 — 只取决于一个标准回测器不会建模的数字。



为什么执行时间、可变点差和 walk-forward 必须结合

执行延迟是零售延迟套利回测中最缺乏建模的变量,但它不是唯一变量。可信的回测会结合三件事,并且每一项都会放大其他项的作用:

A

执行延迟建模

揭示悬崖。告诉你策略实际需要什么基础设施才能盈利,以及优势会在什么点消失。

B

可变点差(逐 tick)

捕捉这样一个事实:套利机会恰恰集中在点差扩大的时候。固定点差回测会统计那些在这些时刻物理上不可能存在的利润。

C

Walk-forward 分区

捕捉那些 in-sample 看起来很好、但只是优化器找到了一组适配样本内噪声参数的策略。没有 walk-forward,你的回测只是回头看的简历。

D

两侧滑点

一笔延迟套利交易有两个滑点事件 — 开仓和平仓。大多数回测只建模一个(或零个),并把乐观程度加倍。

当四项都具备时,回测就不再是营销工具,而是预测工具。它生成的数字不再与实盘结果相差 50–200%,而是开始落在 10–20% 以内 — 足够接近,让风险规模、资金分配和经纪商选择决策真正可以基于回测来做出。

1.5–2x 规则

行业经验法则:预计实盘回撤将是回测回撤的 1.5x 到 2x。 对于运行在标准回测器上的延迟套利策略,这个比例更接近 5x 到 10x — 因为回测没有建模执行延迟、可变点差或双侧滑点。一旦这些因素被纳入,1.5–2x 规则适用;在纳入之前,回测完全没有预测价值。



常见问题

如果我还不知道自己的实盘基础设施,回测中应该假设什么往返延迟?

至少在三种延迟配置上运行优化:10ms(最佳情况下的托管)、50ms(近距离 VPS)和 150ms(通用 VPS,远距离经纪商)。如果策略只在 10ms 下盈利,你有部署问题 — 在交易它之前需要托管计划。如果它在 50ms 盈利但在 150ms 不盈利,VPS 选择和经纪商选择就变成整个游戏。

如何测量我自己的真实执行延迟?

三层:(1) 从你的交易主机 ping 经纪商的订单入口端点 — 这给出原始网络往返时间;(2) 在安静时段发送小额测试订单,并记录信号发出与成交确认的时间戳 — 差值包含经纪商撮合延迟;(3) 在多个交易时段重复 — 延迟会随经纪商负载、时间和路由变化。你部署的现实数字是多次测量的中位数,不是最佳 ping。

这也适用于新闻交易吗?

是的 — 而且窗口更紧。新闻交易窗口可能只有 10–50ms 宽。执行时间缺口问题是相同的,只是被压缩进更小的窗口。需要同样的回测基础设施(真实 tick、可配置执行延迟、可变点差),而且对延迟的容忍度更低。

为什么套利信号出现的时刻点差会扩大?

两种现象有相同原因:流动性提供者对价格变得不确定并撤回报价。当快速行情源跳动时,向慢速经纪商提供流动性的 LP 会短暂扩大报价,以防止被“打掉”。因此,价差打开的瞬间,也正是捕获它所需点差扩大的瞬间。固定点差回测看不到这一点,会高估净优势 30–50%。

2026 年延迟套利真的需要托管吗?

对于面向一级 ECN 经纪商的机构级延迟套利,是的 — 竞争场已经移至低于 5ms 的往返时间,这需要 cross-connect 或 proximity hosting。对于面向较慢零售经纪商的零售式延迟套利,不一定 — 30–80ms 往返仍可能产生优势,因为慢速经纪商的窗口更宽。正确问题不是“是否需要托管”,而是“我的往返时间是否落在我所交易经纪商的窗口内”。这正是执行延迟感知回测要回答的问题。

这与普通外汇回测有什么不同?

对于持仓数小时或数天的趋势跟随策略,几百毫秒执行延迟只是四舍五入误差。对于延迟套利,这些毫秒就是整个信号。普通外汇回测基础设施是为前一种情况设计的,对于后一种情况会悄悄产生无用结果。这就是为什么专门的套利回测工具会作为独立类别存在。

反套利经纪商插件会让这个分析失效吗?

它们改变的是最优策略,而不是分析。运行反套利插件(延迟执行、last-look、盈利时 requote、hold-then-fill)的经纪商,实际上是在自然延迟之上引入人为执行延迟。带可配置执行延迟的回测可以让你模拟经纪商的反套利行为,并判断策略对该经纪商是否仍然可行 — 或者你是否需要更换交易场所。

优化中应该测试多少参数组合?

对于具有 5–8 个参数的延迟套利策略,典型网格是 30,000–100,000 个组合 — 包括 3–5 个执行时间设置作为扫描维度之一。目标是找到盈利集群 — 策略在许多参数值范围内都能盈利的区域,而不是单个“幸运”尖峰。单峰是曲线拟合;集群才是稳健性。以典型零售工作站为现实基准,在 4 核 CPU 上对 1 周 XAUUSD tick 数据运行 30,000 组合网格,大约 12 小时完成;同一网格在 16 核上约 3 小时完成。SharpTrader Optimizer 可在多核心硬件上每次运行处理 100,000+ 个组合。

“实盘回撤 vs 回测回撤 1.5–2x” 规则来自哪里?

这是机构算法交易中的经验观察:即使建模良好的回测,也会因某些现实摩擦(经纪商拒单、周末跳空、市场状态变化)无法干净建模,而低估实盘回撤约 50–100%。该规则假设回测已经包含现实的执行延迟、可变点差和双侧滑点。如果这些缺失,倍数会高得多 — 对延迟套利而言尤其是 5x 到 10x。

同样方法适用于加密货币套利吗?

概念上完全相同。加密货币跨交易所套利的执行时间窗口通常是 200ms–2s(比外汇更慢,因为交易所距离更远,订单簿更深但更新更慢)。同样三项要素 — tick 回放、可配置执行延迟、可变点差 — 会产生诚实的回测。BJF 的 crypto arbitrage 工具使用相同架构,并针对交易所 API 和订单簿深度进行了适配。



在你自己的策略中测试执行延迟

SharpTrader Optimizer 是唯一面向零售可用的回测器,能够建模可配置执行时间、真实 tick 回放、逐 tick 可变点差,以及开平仓两侧的 tick 级滑点 — 这四个变量决定一套延迟套利策略是真实还是虚构。跨 100,000+ 参数组合的多核心网格优化可在数小时内完成,而不是数天。

探索 SharpTrader Optimizer — $595