백테스트는 종종 “신호가 나왔으니 이 가격에 샀다”고 간단히 처리합니다. 하지만 실제 거래에서는 그 가격에 물량이 남아 있는지, 내 주문 앞에 얼마나 많은 주문이 있는지, 주문이 거래소에 도착할 때 시장이 어디로 움직였는지가 결과를 바꿉니다.
보이는 호가는 내 체결 가격을 보장하지 않습니다
최우선 매도호가가 100원이라고 해도 그 가격의 잔량이 내 주문보다 작으면 나머지는 더 비싼 가격에서 체결될 수 있습니다. 지정가 주문은 가격을 정할 수 있지만 그 대신 순번 때문에 체결되지 않거나 일부만 체결될 수 있습니다.
지연시간은 “몇 ms 느리다”보다 순서 문제입니다
중요한 것은 신호가 만들어진 시각, 주문 결정 시각, 거래소 도착 시각의 순서를 정확히 구분하는 것입니다. 백테스트가 주문 시점 이후에 생긴 호가 정보를 사용하면 체결 모델이 아무리 정교해도 이미 미래 정보를 본 결과가 됩니다.
체결 모델은 확정값이 아니라 가정입니다
Market-by-order 데이터가 없으면 실제 대기열 순번을 완벽하게 복원하기 어렵습니다. 따라서 보수적 모델과 확률적 모델을 나눠 결과 민감도를 보는 편이 한 가지 체결 가정을 사실처럼 고정하는 것보다 안전합니다.
우리가 공개할 때는 체결 가정도 결과의 일부입니다
수익률 그래프만 보여주면 체결이 얼마나 현실적으로 가정됐는지 알 수 없습니다. 주문 방식, 비용, 슬리피지, 부분체결 처리, 지연시간 가정을 함께 남겨야 같은 결과를 다시 검토할 수 있습니다.