DepthFeed/Both venues·資料品質

Order Book 深度 vs 最後成交價:為何多數預測市場回測都在說謊

最後成交價只是一個數字;order book 才是這個數字底下所承載的流動性。建立在前者之上的回測,會悄悄地把每一項結果都灌水。

DepthFeed··6 min

最後成交價是最近一筆成交的價格;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 才是這個數字底下所承載的流動性。建立在前者之上的回測,會悄悄地把每一項結果都灌水。

免費開始

問題,一一解答。

用來畫圖、粗略追蹤機率,足夠。用來回測成交,不行:最後成交價無法告訴你 spread、可成交的數量,或一張真實單子要付的 slippage,所以任何建立在它之上的損益估算,都會樂觀一個未知、且往往很大的幅度。