오더북 뎁스 vs 마지막 체결가: 대부분의 예측시장 백테스트가 거짓말을 하는 이유
마지막 체결가는 숫자 하나일 뿐이다. 오더북은 그 숫자가 올라타 있는 유동성 그 자체다. 전자를 기반으로 만든 백테스트는 모든 결과를 조용히 부풀린다.
마지막 체결가(last price)는 가장 최근에 체결된 거래의 가격이고, 오더북 뎁스(order-book depth)는 양쪽에 걸려 있는 모든 매수·매도 호가를 그 수량과 함께 보여준다. 마지막 체결가 데이터로 만든 백테스트는 당신이 그 가격에 슬리피지 0으로 체결됐다고 가정한다. 하지만 실제 체결은 오더북을 따라 걸어 내려가며 스프레드를 지불하고, 점점 더 불리한 호가 레벨에서 수량을 소진한다. 바로 이 간극 때문에 뎁스를 보지 못하는 백테스트는 엣지를 체계적으로 과대평가한다.
각각이 실제로 알려주는 것
| 질문 | 마지막 체결가 | 오더북 뎁스 |
|---|---|---|
| 가장 최근 거래는 얼마였나? | 예 | 예 (호가 최상단 ± 체결) |
| 지금 스프레드는 얼마인가? | 아니오 | 예 |
| 최상단 호가(touch)에서 얼마나 체결할 수 있나? | 아니오 | 예 |
| 더 큰 주문은 얼마의 슬리피지를 지불하나? | 아니오 | 예 |
| 내 지정가 주문은 체결됐을까? | 아니오 | 예 (큐 모델링 포함) |
뎁스를 못 보는 백테스트가 수익률을 부풀리는 방식
어떤 마켓의 마지막 체결가가 0.50으로 표시된다고 하자. 마지막 체결가 기반 백테스트는 당신의 매수를 0.50에, 매도를 0.50에 체결시킨다. 하지만 실제 오더북은 0.48 매수 / 0.52 매도일 수 있다. 그러면 시장가 매수는 0.52를 지불하고, 시장가 매도는 0.48을 받는다. 최대 1.00을 지급하는 계약에서 이 4센트짜리 왕복 스프레드는 엄청나게 크며, 백테스트의 모든 거래마다 복리로 누적된다.
최상단 호가를 지나 더 얇은 레벨로 걸어 내려가는 큰 주문의 슬리피지까지 더하면 그림은 더 나빠진다. 이 가운데 어느 것도 오더북 없이는 보이지 않으므로, 뎁스를 못 보는 백테스트는 실제 사이즈로 거래하는 순간 증발해 버리는 엣지를 보고한다.
Polymarket이든 Kalshi든 이야기는 똑같다
Polymarket에서는 CLOB가 각 아웃컴마다 매수/매도 오더북을 보유한다. 스프레드와 걸려 있는 수량이 바로 시장가 주문이 지불하고 소진하는 값이다. Kalshi에서는 바이너리 계약이 한쪽당 최대 100 levels의 yes/no 오더북을 가진다. 동일한 스프레드·슬리피지 논리가 그대로 적용되며, 스프레드는 정산(settlement)에 가까워질수록 벌어지는 경향이 있다.
어느 쪽이든 원칙은 동일하다. 마지막 체결 기록이 아니라, 기록된 오더북 그 자체를, 양쪽 모든 레벨에 대해 백테스트하라는 것이다. DepthFeed는 두 거래소의 전체 뎁스를 하나의 스키마로 제공하므로, 동일한 백테스트 코드가 어느 마켓이든 읽어낸다.
Key takeaways
- 01마지막 체결가는 스프레드, 걸려 있는 수량, 그리고 실제 주문의 슬리피지를 가린다.
- 02시장가 주문은 오더북을 따라 걸어 내려가며 최상단 호가보다 불리하게 체결된다. 이를 볼 수 있는 유일한 방법은 오더북이다.
- 03뎁스를 못 보는 백테스트는 엣지를 과대평가하고, 그 오차는 거래마다 복리로 커진다.
- 04같은 논리가 Polymarket의 CLOB와 Kalshi의 yes/no 오더북에 동일하게 적용된다.
마지막 체결가는 숫자 하나일 뿐이다. 오더북은 그 숫자가 올라타 있는 유동성 그 자체다. 전자를 기반으로 만든 백테스트는 모든 결과를 조용히 부풀린다.
무료로 시작