DepthFeed/Polymarket·回测

如何基于订单簿回测 Polymarket 策略

每小时只采样一次的最新成交价,根本无法告诉你订单到底能不能成交。本文讲解如何基于策略真正会面对的那本订单簿来回测 Polymarket。

DepthFeed··8 min

要正确回测一个 Polymarket 策略,你需要回放该策略真正会面对的历史订单簿——每一次变动时完整的买卖盘挂单阶梯——并依照当时真实驻留的流动性来计算成交量。只用最新成交价或单一中间价回测,会系统性地高估你的优势,因为它掩盖了真实订单要承受的买卖价差和滑点。

为什么最新成交价的回测会骗人

大多数可免费获取的 Polymarket 数据都是最新成交价,而且往往每小时才采样一次。这只够画一张图,仅此而已。回测要回答的是一个更难的问题:如果我的订单在那一刻已经挂在盘上(或者已经跨过价差吃单),它能不能成交?能成交多少?成交价是多少?

要回答这些问题,需要的是订单簿——买卖双方每一笔带着挂单量的驻留挂单——而不是一个单一的数字。一个用中间价回测的策略,等于假设自己永远以中间价、零滑点成交,而这从来都不成立。在临近结算时价差会迅速扩大的短期加密货币市场上,这个假设足以把一个亏损策略翻转成表面上的盈利策略。

第 1 步——获取全深度订单簿数据

要从一开始就使用记录了买卖双方完整订单簿、并且在每一次变动时(而非按固定时钟)抓取的数据。DepthFeed 直接从 CLOB websocket 以事件驱动方式抓取 Polymarket,因此每一个订单簿事件和价格变动事件都连同完整的买卖盘挂单阶梯一起被记录下来——而不是那种每小时或每分钟一次、会跳过一个五分钟市场整个生命周期的采样。

通过 REST API 拉取你想要的市场:先用 GET /v3/{coin}/markets 发现市场,再从 /v3/{coin}/markets/{id}/snapshots 拉取深度。每个快照都带有买卖价和挂单量数组,以及以 epoch-millis 表示的交易所时间戳和接收时间戳。

第 2 步——重建每一时刻的订单簿

按时间戳顺序回放这些快照,即可重建任意瞬间的订单簿状态。由于数据是事件驱动的,事件与事件之间的重建是精确的——没有任何插值上的猜测。这正是你的策略所要响应的状态:最优买价、最优卖价、各档背后的深度,以及价差。

第 3 步——依照真实深度模拟成交

现在要诚实地模拟撮合。一笔可成交订单会逐档吃单:先吃最优档,再吃下一档,直到把自身数量耗尽——所以一旦它吃掉的量超过最顶档,其平均成交价就会比触及价更差。一笔驻留挂单则会加入排队,只有当市场以足够的成交量穿过它的价格时才会成交。

依照所记录的挂单阶梯来计算成交量,正是整件事的关键所在:它给你的是真实的滑点和成交概率,而不是那种你永远以中间价成交的虚构。

第 4 步——关联标的价格

Polymarket 的加密货币涨跌市场由标的资产的现货走势驱动。每一个 DepthFeed 快照都通过 epoch-millis 时间戳关联到一个高频的 Binance 参考价格,这样你就能把订单簿状态与那段为合约重新定价的现货走势对齐——这对任何交易加密价格与市场隐含概率之间关系的策略来说都不可或缺。

第 5 步——用同一套代码上线实盘

历史 REST API 与实时 WebSocket 流发出的是完全相同的 JSON 快照对象。这意味着你为回放历史所写的那个加载器,无需改动就能读取实时数据流——从研究到生产之间不必重写。先回测、再验证,然后把同一套代码指向 wss://api.depthfeed.com/v3/stream,开始交易。

常见陷阱

  • 使用最新成交价数据:掩盖价差与滑点;虚高回测收益。
  • 固定间隔的快照:每小时或每分钟一次的采样会错过一个 5 分钟市场的大部分生命周期。
  • 忽略排队位置:假设驻留挂单总能成交,会高估被动策略的表现。
  • 前视偏差:只对接收时间戳早于或等于你决策时刻的数据做出反应。
  • 跳过标的:加密货币涨跌的优势通常藏在现货与概率之间的关系里。

Key takeaways

  • 01针对订单簿回测,而非最新成交价——决定成交的是深度。
  • 02使用事件驱动数据:固定间隔的采样会错过短期市场的生命周期。
  • 03对可成交订单建模为逐档吃单,对驻留挂单建模为在队列中等待。
  • 04关联标的加密价格,以捕捉现货与概率之间的关系。
  • 05选择历史数据与实时数据流共用同一种格式的数据源,这样你实盘运行的就是你回测过的那套代码。

每小时只采样一次的最新成交价,根本无法告诉你订单到底能不能成交。本文讲解如何基于策略真正会面对的那本订单簿来回测 Polymarket。

免费开始

你的疑问,已解答。

只能部分实现。Polymarket 的公开 API 暴露了当前市场、成交记录和一个价格历史端点,但它不提供历史订单簿快照——因此你无法回放某个策略真正会面对的那本驻留订单簿。这种历史深度数据,正是第三方订单簿数据所填补的特定空白。