Order Book 深度 vs 最後成交價:為何多數預測市場回測都在說謊
最後成交價只是一個數字;order book 才是這個數字底下所承載的流動性。建立在前者之上的回測,會悄悄地把每一項結果都灌水。
最後成交價是最近一筆成交的價格;order-book 深度則是買賣兩側每一檔掛單的價格與數量。建立在最後成交價資料上的回測,假設你以該價格、零 slippage 成交——但真實的成交會「吃單」一路走過 order book,付出 spread 並在愈來愈差的檔位上消耗數量。正是這道落差,讓忽略深度的回測系統性地高估了優勢。
兩者各自真正告訴你什麼
| 問題 | 最後成交價 | Order-book 深度 |
|---|---|---|
| 最近一筆成交是多少? | 可以 | 可以(盤口頂端 ± 成交) |
| 現在的 spread 是多少? | 不行 | 可以 |
| 在盤口頂端我能成交多少數量? | 不行 | 可以 |
| 更大的單子要付出多少 slippage? | 不行 | 可以 |
| 我的掛單會不會成交? | 不行 | 可以(搭配排隊建模) |
忽略深度的回測如何灌水報酬
假設某市場顯示最後成交價為 0.50。以最後成交價為基礎的回測,會讓你的買單以 0.50 成交、賣單也以 0.50 成交。但現實中 order book 可能是 0.48 bid/0.52 ask——所以一張會立即成交的買單付出 0.52,會立即成交的賣單只收到 0.48。在一張最多賠付 1.00 的合約上,這四美分的來回 spread 相當可觀,而且它會在回測的每一筆交易上複利累積。
再加上更大單子的 slippage——它們會越過盤口頂端、走進更薄的檔位,情況只會更糟。沒有 order book,這一切都看不見,於是忽略深度的回測會回報出一個優勢,而這個優勢一旦真正下大單就會瞬間蒸發。
在 Polymarket 與 Kalshi 上是同一個故事
在 Polymarket 上,CLOB 為每個 outcome 維護一個 bid/ask 的 order book;spread 與掛單數量,正是一張立即成交的單子所要付出與消耗的。在 Kalshi 上,二元合約每側有最多 100 levels 的 yes/no order book;同樣的 spread 與 slippage 邏輯適用,而且 spread 往往會在臨近結算時擴大。
無論哪一邊,紀律都一樣:用紀錄下來的 order book 回測——買賣兩側、每一個檔位——而不是用一個最後成交價。DepthFeed 以同一套 schema 提供兩個 venue 的完整深度,因此同一份回測程式碼能讀取任一市場。
Key takeaways
- 01最後成交價隱藏了 spread、掛單數量,以及一張真實單子的 slippage。
- 02會立即成交的單子會吃單走過 order book,成交價比盤口頂端更差;order book 是唯一能看見這件事的方法。
- 03忽略深度的回測高估優勢,而且這個誤差會跨交易複利累積。
- 04同一套邏輯同樣適用於 Polymarket 的 CLOB 與 Kalshi 的 yes/no order book。
最後成交價只是一個數字;order book 才是這個數字底下所承載的流動性。建立在前者之上的回測,會悄悄地把每一項結果都灌水。
免費開始