研究文章
N / 260926

同一个 BTC 策略,为什么用 Binance 回测和用 OKX 执行会得到不同结果?

同一套 BTC 5分钟交易信号,在 Binance 现货价格与 OKX 永续价格上执行时,为什么会出现不同的回撤、退出路径和资金曲线?本文记录一次 Binance 信号 + OKX 执行的跨市场回放研究。

很多 BTC 自动交易研究都会默认一个前提:

只要都是 BTC,同一时刻的 Binance 和 OKX 价格应该足够接近,所以策略信号在哪个平台生成、在哪个平台执行,结果不会差太多。

从方向上看,这个假设往往没错。

但从实际交易路径看,它并不成立。

最近我做了一次完整的跨市场回放:

  • Binance BTCUSDT 现货 5 分钟 K 线负责生成信号;
  • OKX BTC-USDT-SWAP 永续合约负责实际执行;
  • 信号仍然严格在 Binance 5 分钟 K 线正式收盘后确定;
  • 信号产生后立即进入执行,不额外等待下一根完整 K 线;
  • 入场、止损、动态保护和最终盈亏全部使用 OKX 合约价格。

结果并不是“完全一样”。

更有意思的是:

策略本身并没有明显失效,但回撤和资金路径确实发生了变化。

这说明一个很重要的问题:

信号市场和执行市场,不能在回测里被简单视为同一个市场。


1. 先把时序问题排除掉

跨交易所回放最容易出现的第一个问题,是时间对齐错误。

例如:

  • Binance 这一根 K 线实际上还没收完;
  • OKX 却已经使用了下一分钟甚至下一根 K 的价格;
  • 或者两边时间戳定义不同,看起来只差一点,实际却错了一整个周期。

所以第一步不是比较收益,而是先机械审计时间。

本次研究中:

  • Binance 信号 K 在 5 分钟边界前正式收盘;
  • 信号随即确定;
  • OKX 在同一个 UTC 5 分钟边界进入新的 K 线;
  • 研究回放用这个边界之后的首个可用 OKX 价格作为即时成交代理。

这里有一个容易误解的地方。

研究中经常会写成:

“使用 OKX 下一根 5 分钟 K 的开盘价入场。”

这并不代表实盘要再等 5 分钟。

它只是因为历史 K 线数据中,信号确认后的第一个可观测价格,恰好就是新 K 线的开盘价。

实盘逻辑仍然应该是:

Binance 收盘确认 → 信号生成 → 立即向 OKX 发单。


2. 数据并没有错位

为了确认差异不是数据质量造成的,我把 Binance 和 OKX 的重叠数据重新做了一次对齐检查。

结果:

  • 约 65 万根重叠 5 分钟 K 可以一一对应;
  • OKX 1 分钟执行数据连续、无重复;
  • 研究期内所有需要映射的 Binance 信号都能找到对应的 OKX 执行时间;
  • Binance 与 OKX 的非平盘 5 分钟 K,方向一致率约为 96.06%。

也就是说,从宏观方向看,两边当然非常接近。

但 96% 的方向一致,并不等于价格路径相同。

这正是后面差异出现的原因。


3. 入场时,两边通常只差几个基点

在实际完成的交易样本中,OKX 相对 Binance 的入场价格差并不大。

统计结果大致为:

  • 平均价差:约 -0.75 bp
  • 中位数:约 -0.61 bp
  • 90% 的样本落在约 -5.34 bp 到 +4.87 bp
  • 极端样本大约在 -13 bp 到 +17 bp

单看这些数字,很容易得出一个结论:

“这点差距应该无所谓。”

如果策略只是“买入后固定持有到某个时间”,也许确实影响有限。

但如果策略包含:

  • 固定止损;
  • 盈利后动态保护;
  • 跟踪退出;
  • 账户回撤保护;
  • 动态杠杆;

那么几个基点的差异,可能会改变后续整个交易路径。


4. 我做了一个严格对照:只换执行价格

为了隔离影响,我没有改信号,也没有改策略结构。

只做一件事:

同一组信号,一组使用 Binance 价格执行,另一组使用 OKX 价格执行。

结果如下:

杠杆上限 Binance 执行 PF OKX 执行 PF Binance 最大回撤 OKX 最大回撤
5x 4.56 4.58 -20.11% -22.86%
10x 5.63 5.63 -28.70% -32.44%
20x 6.96 7.02 -39.26% -41.60%

这里最值得注意的不是 PF。

因为 PF 基本没有恶化。

真正发生变化的是:

资金路径和回撤。

换句话说,策略的总体方向质量依然存在,但执行市场改变了部分交易的路径,从而改变了账户曲线。


5. 同一组信号,为什么会出现不同退出?

逐笔对照后:

  • OKX 结果更好:62 笔
  • OKX 结果更差:20 笔
  • 完全相同:53 笔
  • 盈亏状态发生翻转:5 笔

整体来看,OKX 执行相对 Binance 执行的累计差异约为:

-725.76 bp

平均每笔约:

-5.38 bp

这并不是因为每笔交易都变差了。

相反,大多数交易要么一样,要么 OKX 更好。

真正拉开结果的是少数长持仓、动态保护路径不同的交易。


6. 小价差为什么会被放大?

原因在于:

交易策略不是只由入场价决定,而是由整条价格路径决定。

假设 Binance 和 OKX 的入场价格只差 3 bp。

如果后续两个市场的高低点路径也略有差异,那么可能出现:

  • Binance 先触发某个动态保护;
  • OKX 没有触发;
  • 或者 OKX 更早触发止损;
  • 或者某个市场的最佳价格更高,使后续保护线位置不同。

一旦退出价格不同,这一笔交易的结果就不同。

如果系统还有账户级风险管理,那么影响会继续向后传播:

本笔盈亏变化
→ 账户权益变化
→ 后续实际杠杆变化
→ 后续回撤保护状态变化
→ 后续资金曲线继续分叉

这就是典型的路径依赖。

所以:

几个基点的市场价差,本身不一定重要;
但几个基点引起的状态变化,可能很重要。


7. 这是 1 分钟回放造成的吗?

为了排除另一个可能,我还比较了:

  • OKX 5 分钟执行回放;
  • OKX 1 分钟执行回放。

结果是:

135 笔完成交易中,只有 6 笔 的退出收益出现差异。

而且 1 分钟路径整体并没有让结果变差。

这说明:

Binance 与 OKX 的差异,主要不是由 1 分钟重建方式造成的。

真正的来源仍然是:

现货市场与永续合约市场本身的价格路径不同。


8. 为什么执行研究应该尽量使用真实交易市场的数据?

这次研究之后,我对合约策略回测有一个更明确的原则:

信号可以来自一个市场,但执行必须尽量使用真正准备交易的市场数据。

例如:

  • 可以用 Binance 的数据研究方向;
  • 可以用 Binance 的成交量、主动成交等信息构建信号;
  • 但如果最终是在 OKX 永续上交易,那么入场、止损、动态保护和盈亏最好都用 OKX 合约价格重新回放。

否则很容易得到一种“方向逻辑正确,但执行路径被理想化”的结果。

这并不意味着 Binance 回测没有价值。

它仍然可以很好地回答:

这个信号结构是否有长期信息?

但它无法完整回答:

这个信号放到另一个实际交易市场后,账户会怎么走?

这是两个不同的问题。


9. 信号层和执行层应该分开

现在我更倾向于把一个 BTC 合约交易机器人拆成至少两个独立层:

Signal Layer

负责回答:

现在是否出现了值得交易的方向机会?

它可以使用一个数据质量高、历史完整、研究生态成熟的市场。

Execution Layer

负责回答:

如果要交易,现在实际能以什么价格成交?
止损在哪里触发?
动态保护什么时候更新?
最终真实盈亏是多少?

它必须围绕真正下单的交易所设计。

这种职责分离的好处是:

  • 不需要为了迁移交易所而重写全部信号研究;
  • 可以单独审计执行差异;
  • 可以明确区分“预测问题”和“交易问题”。

10. 为什么我没有直接改成 OKX 原生信号?

一个自然的问题是:

既然最终要在 OKX 交易,为什么不直接全部用 OKX 数据重新研究?

我确实做过这个方向的尝试。

但在几轮研究中,虽然可以找到一些历史表现不错的组合,整体的跨年份延续性、周期稳定性和参数稳定性并不理想。

继续调整下去,越来越像是在适配已经发生过的历史。

所以我最终选择的是:

保留相对稳定的信号研究层,再把执行层切换到真实交易市场重新验证。

这比为了“数据源一致”而重新构造一套不够稳定的信号逻辑,更符合目前的研究目标。


11. 这次研究没有解决什么?

这次跨市场回放仍然不是实盘。

它还没有完整解决:

  • 真实 FAK 成交滑点;
  • 盘口深度与容量;
  • 部分成交;
  • 网络延迟;
  • API 延迟;
  • 资金费率;
  • 交易所强平梯度;
  • 极端行情中的保护单成交质量;
  • 实际手续费。

因此,这次研究能说明的是:

把执行价格从 Binance 代理切换到 OKX 真实历史价格后,策略结构仍然保持有效,但风险路径会发生可观察的变化。

它不能说明:

实盘一定会复制这条历史资金曲线。

这是两件完全不同的事。


12. 最后

这次研究最重要的结论,对我来说不是:

Binance 更好,还是 OKX 更好。

而是:

同一个 BTC 策略,在不同市场上执行,本质上已经不是完全相同的交易系统。

即使:

  • 信号完全相同;
  • 两个市场绝大多数 5 分钟 K 方向一致;
  • 入场平均只差几个基点;

只要执行路径、止损触发和动态保护存在差异,账户结果就可能逐渐分叉。

所以一个更完整的自动交易研究流程应该是:

Signal Research
→ Target Market Replay
→ Execution Path Validation
→ Cost / Slippage Stress Test
→ Live Observation

而不是:

Backtest on Market A
→ Trade on Market B

中间那一层执行研究,不能省掉。


本文记录的是历史研究过程,不构成投资、交易或财务建议。文中历史回放结果不代表未来表现,也不等同于真实可实现收益。