DepthFeed/Both venues·데이터 품질

오더북 뎁스 vs 마지막 체결가: 대부분의 예측시장 백테스트가 거짓말을 하는 이유

마지막 체결가는 숫자 하나일 뿐이다. 오더북은 그 숫자가 올라타 있는 유동성 그 자체다. 전자를 기반으로 만든 백테스트는 모든 결과를 조용히 부풀린다.

DepthFeed··6 min

마지막 체결가(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 오더북에 동일하게 적용된다.

마지막 체결가는 숫자 하나일 뿐이다. 오더북은 그 숫자가 올라타 있는 유동성 그 자체다. 전자를 기반으로 만든 백테스트는 모든 결과를 조용히 부풀린다.

무료로 시작

궁금한 점, 답해 드립니다.

차트 표시와 대략적인 확률 추적에는 충분하다. 하지만 체결을 백테스트하는 데는 부족하다. 마지막 체결가는 스프레드, 가용 수량, 실제 주문이 지불할 슬리피지를 알려주지 못하므로, 이를 기반으로 산출한 손익(P&L) 추정치는 알 수 없고 종종 큰 폭으로 낙관적이다.