订单簿深度 vs 最新成交价:为什么大多数预测市场回测都在撒谎
最新成交价只是一个数字。订单簿才是这个数字赖以存在的流动性。建立在前者之上的回测,会悄无声息地夸大每一个结果。
最新成交价是最近一笔成交的价格;订单簿深度则是买卖双方每一笔挂单的价格及其挂单量。基于最新成交价数据的回测,假设你以那个价格、零滑点完成了成交——但真实的成交会逐层吃掉订单簿,既要付出买卖价差,又要在越来越差的价位上消耗挂单量。正是这道鸿沟,让无视深度的回测系统性地高估了交易优势。
两者各自真正告诉你什么
| 问题 | 最新成交价 | 订单簿深度 |
|---|---|---|
| 最近一笔成交是什么? | 能 | 能(盘口 ± 成交) |
| 此刻的买卖价差是多少? | 否 | 能 |
| 在盘口能成交多少量? | 否 | 能 |
| 更大的订单会付出多少滑点? | 否 | 能 |
| 我的挂单会不会成交? | 否 | 能(结合排队建模) |
无视深度的回测如何夸大收益
假设某个市场显示最新成交价为 0.50。基于最新成交价的回测会让你的买单成交在 0.50,卖单也成交在 0.50。而现实中订单簿可能是 0.48 买 / 0.52 卖——于是一笔吃单买入要付 0.52,一笔吃单卖出只能收到 0.48。这四美分的来回价差,对于一份最高只赔付 1.00 的合约而言极为巨大,并且会在回测的每一笔交易上层层累积。
再加上更大订单的滑点——它们会越过盘口、扎进更稀薄的价位层级,情况只会更糟。没有订单簿,这一切都无从看见,于是无视深度的回测报出的优势,会在真正以实际规模交易的那一刻烟消云散。
在 Polymarket 和 Kalshi 上,故事如出一辙
在 Polymarket 上,CLOB 为每个结果维护着一份买卖订单簿;价差与挂单量恰恰就是一笔吃单要付出和消耗的东西。在 Kalshi 上,二元合约每一侧拥有最多 100 levels 的 yes/no 订单簿;同样的价差与滑点逻辑照样适用,而且价差往往会在临近结算时扩大。
无论哪种情形,纪律都完全一致:对照录得的订单簿做回测——买卖两侧、每一层级,而不是一笔最新成交。DepthFeed 以同一套 schema 为两个场馆提供这份完整深度,因此同一份回测代码可以读取任一市场。
Key takeaways
- 01最新成交价隐藏了价差、挂单量,以及真实订单的滑点。
- 02吃单订单会逐层吃掉订单簿,成交价比盘口更差;唯有订单簿才能让你看见这一点。
- 03无视深度的回测会高估优势,而且误差会在多笔交易间层层累积。
- 04同样的逻辑既适用于 Polymarket 的 CLOB,也适用于 Kalshi 的 yes/no 订单簿。
最新成交价只是一个数字。订单簿才是这个数字赖以存在的流动性。建立在前者之上的回测,会悄无声息地夸大每一个结果。
免费开始