슬리피지와 체결 품질: 평균가 계산부터 안전한 재주문까지

English version

TECH INSIGHT / EXPLAINED

체결 품질에는 기준 가격과 시간 순서가 필요합니다. 의사결정 가격과 수량 가중 평균 체결가의 차이를 구하고, 수수료와 미체결 수량은 따로 기록해야 합니다.

세 사람이 호가 깊이·가격 제한·확정된 부분 체결을 비교합니다.
AI로 제작한 설명용 일러스트. 세 사람이 호가 깊이·가격 제한·확정된 부분 체결을 비교합니다.

500주 예제에서 기준을 명확히 하기

300주가 10,000원, 200주가 10,005원에 체결되었다면 평균은 10,002원입니다. 판단 당시 기준 가격 10,000원 대비 불리한 차이는 0.02%, 즉 2bp이며 수수료는 제외했습니다. 이 호가창은 산술 설명용 가정이지 실제 체결 가능한 견적이 아닙니다.

from decimal import Decimal as D
fills = [(D('10000'), D('300')), (D('10005'), D('200'))]
qty = sum(q for _, q in fills)
average = sum(p*q for p, q in fills) / qty
slippage_bps = (average / D('10000') - 1) * 10000
assert average == D('10002')
assert slippage_bps == D('2')

보장 대신 제약을 선택하기

시장가 주문은 실행을 우선하지만 가격을 제한하지 않습니다. 매수 지정가는 허용 가격을 제한하지만 일부 또는 전부가 미체결로 남을 수 있습니다. 거래 정지·유동성 부족·거래소 보호 규칙이 실행에 영향을 줄 수 있습니다. 00·01 같은 주문 코드는 API마다 다릅니다.

보이는 최우선 잔량은 순간 스냅숏입니다. 주문 도착 전에 다른 거래나 취소가 발생할 수 있으므로 그 잔량 안에 주문이 들어간다고 슬리피지가 0이 되지는 않습니다. 분할 주문도 한 번의 크기를 줄이는 대신 이후 가격 변화에 더 오래 노출될 수 있습니다.

취소 확인과 체결 대조를 마친 뒤 재주문

목표 500주 중 300주가 체결된 시점에 취소를 요청했다고 합시다. 취소 확정 전에 50주가 추가 체결되면 잔여 목표는 150주입니다. 확인 없이 200주를 다시 주문하면 목표를 초과합니다.

취소의 최종 결과를 기다리거나 주문 상태를 조회하고, 고유 체결 기록을 대조한 다음 잔여량을 계산합니다. 상태가 불명확하면 자동 재주문을 멈추고 대조합니다. 타임아웃 뒤 원래 수량 전체를 시장가로 바꾸는 코드는 중복 노출을 만들 수 있습니다.

체결 일지에 남길 것

매수·매도, 기준 가격과 시각, 호가의 경과 시간, 주문·체결 수량, 평균가, 수수료, 거절 이유, 취소 결과를 기록합니다. 매수는 기준보다 높은 가격, 매도는 낮은 가격이 불리하다는 부호 규칙도 통일하세요. 백테스트와 실전의 차이는 미래 정보 사용·데이터 품질·과적합에서도 생깁니다. 슬리피지는 측정 가능한 원인 중 하나입니다.

미체결을 제외하면 좋은 평균가가 나쁜 결과를 숨긴다

가상으로 기준가 100에서 1,000개 매수를 계획했지만 400개는 100.05, 200개는 100.20에만 체결되었다고 합시다. 총 600개의 평균 체결가는 100.10이며 기준 대비 불리한 차이는 10bp입니다. 여기까지만 보면 주문 전체의 40%가 남았다는 사실이 빠집니다. 체결된 주문만 보고하는 시스템은 어려운 주문을 미체결로 남길수록 지표가 좋아 보일 수 있습니다.

실험 종료 가격을 미리 정한 관측 시점의 101로 놓으면, 처음에 전량을 기준가로 샀다는 가상 기준과 비교한 미체결 기회비용은 400 × (101 − 100) = 400입니다. 이는 계좌에서 빠져나간 현금 손실이 아니라 반사실적 기준과의 차이입니다. 종료 가격이 내려가면 이 항목은 유리하게 바뀔 수 있으므로 손실로 고정하거나 0 아래를 잘라내지 않습니다.

체결 차이·기회비용·수수료를 하나의 분모로 비교하기

체결된 600개가 기준보다 비싸게 산 금액은 60입니다. 가정한 수수료 0.05%를 체결대금 60,060에만 적용하면 30.03이므로, 전량 기준가 매수와 비교한 부족분은 60 + 400 + 30.03 = 490.03입니다. 계획 거래대금 100,000으로 나눈 값은 49.003bp입니다. 종료 시점에 매도했다고 가정한 계산이 아니므로 별도 매도 수수료는 넣지 않았습니다.

같은 계산을 체결대금으로 나누면 다른 질문의 지표가 됩니다. 보고서에는 계획 수량, 체결 수량, 분모와 평가 종료 시점을 고정해 표시합니다. Investor.gov의 주문 유형 설명은 지정가의 가격 조건과 미체결 가능성을 구분합니다. 이런 조건을 비교할 때 평균 체결가만 순위에 쓰지 않는 이유입니다.

지연 구간을 나누되 원인으로 단정하지 않기

판단 가격이 100, 주문 도착 시점의 기준이 100.04, 평균 체결가가 100.10이면 가격 차이를 두 구간으로 나눌 수 있습니다. 모두 판단 가격 100을 분모로 쓰면 도착 전 4bp와 도착 후 6bp가 합쳐져 10bp가 됩니다. 도착 후 부분만 100.04로 나누어 계산하고 그대로 더하면 동일한 분해가 아닙니다.

이 분해는 시간대별 차이의 장부이지 네트워크가 4bp를 일으켰다는 인과 증거가 아닙니다. 시장 이동, 자신의 주문 영향, 선택한 기준의 특성이 함께 섞입니다. 거래소 수신 시각이 없으면 로컬 전송 시각을 사용했다고 명시하고, 서로 다른 컴퓨터 시계를 빼서 얻은 지연을 측정값처럼 쓰지 않습니다.

완료된 주문뿐 아니라 주문 후보 전체를 남기기

비교 표본에는 전량체결·부분체결·거절·시간 만료를 모두 포함하고, 매수·매도와 수량 구간을 분리합니다. 관측 종료 시점은 결과를 본 뒤 유리하게 고르지 않습니다. 주문별 bp의 단순 평균과 거래대금 가중 평균도 구별해야 작은 주문이 많은 방식이 평가를 지배하지 않습니다. 위 평균가와 부족분은 Python Decimal로 오프라인 검산했습니다. 실제 시장 충격을 추정하거나 특정 주문 방식을 추천한 결과는 아닙니다.

공식 자료와 함께 읽기

Investor.gov order types · Order-book companion

내용·예제 검토: 2026-10-01

댓글