オーダーブックの深さと最終価格:なぜ多くの予測市場バックテストは嘘をつくのか
最終価格は一つの数字にすぎない。オーダーブックは、その数字が乗っている流動性そのものだ。前者で組んだバックテストは、あらゆる結果をひそかに水増しする。
最終価格とは直近の約定の価格であり、オーダーブックの深さとは、両サイドに並ぶすべての指値の買い・売りとそのサイズのことです。最終価格データで組んだバックテストは、その価格でスリッページゼロで約定できたと仮定します——しかし現実の約定はオーダーブックを食い進み、スプレッドを払い、より不利な価格帯でサイズを消化していきます。この乖離こそ、板情報を見ないバックテストが体系的にエッジを過大評価する理由です。
それぞれが実際に何を教えてくれるのか
| 質問 | 最終価格 | オーダーブックの深さ |
|---|---|---|
| 直近の約定はいくらだったか? | はい | はい(板の最良気配 ± 約定) |
| 今のスプレッドはいくらか? | いいえ | はい |
| 最良気配でどれだけのサイズを約定できるか? | いいえ | はい |
| より大きな注文はどれだけのスリッページを払うか? | いいえ | はい |
| 自分の指値注文は約定していたか? | いいえ | はい(キュー・モデリングを併用) |
板情報を見ないバックテストがリターンを水増しする仕組み
あるマーケットの最終価格が0.50と表示されているとします。最終価格ベースのバックテストでは、買いも0.50、売りも0.50で約定したことにします。しかし実際の板は0.48の買い気配/0.52の売り気配かもしれず、成行に近い買いは0.52を払い、成行に近い売りは0.48しか受け取れません。最大でも1.00しか支払われない契約において、この往復4セントのスプレッドは極めて大きく、バックテスト内のすべての取引で積み重なっていきます。
さらに、より大きな注文は最良気配を超えて薄い価格帯へ食い込むため、スリッページが加わって状況はいっそう悪化します。これらは板情報なしには一切見えないため、板を見ないバックテストは、実際のサイズで取引した瞬間に消え去るエッジを報告してしまうのです。
PolymarketでもKalshiでも話は同じ
Polymarketでは、CLOBが各アウトカムごとに買い/売りのオーダーブックを持ちます。スプレッドと指値で並ぶサイズは、成行に近い注文が実際に払い、消化するものそのものです。Kalshiでは、バイナリ契約が片側あたり最大100レベル(100 levels)のyes/noブックを持ちます。同じスプレッドとスリッページの論理が当てはまり、スプレッドは決済(settlement)に向かって広がる傾向があります。
いずれにせよ、規律は同じです。最終価格の印字ではなく、記録されたオーダーブックの両サイド・全レベルに対してバックテストすること。DepthFeedは両ベニューのこの完全な深さを単一のスキーマで提供するため、同じバックテストコードでどちらのマーケットも読めます。
Key takeaways
- 01最終価格はスプレッド、指値で並ぶサイズ、そして実際の注文が被るスリッページを覆い隠す。
- 02成行に近い注文はオーダーブックを食い進み、最良気配より不利に約定する。それを可視化できるのは板情報だけだ。
- 03板情報を見ないバックテストはエッジを過大評価し、その誤差は取引ごとに積み重なる。
- 04同じ論理がPolymarketのCLOBにもKalshiのyes/noブックにも等しく当てはまる。
最終価格は一つの数字にすぎない。オーダーブックは、その数字が乗っている流動性そのものだ。前者で組んだバックテストは、あらゆる結果をひそかに水増しする。
無料で始める