세 줄 요약
- 2호가에 미리 건 지정가(P2)는 최우선 맨 뒤 지정가(P1)보다 주문당 0.153틱 비쌌다. 확인 구간 25일 모두 음이고, 수량, 시한, 취소 가정, 지연을 바꾼 격자 72칸도 모두 음이다.
- 원인은 3선 2호가 대기열이 이미 1,200계약 안팎으로 길다는 데 있다. 그 칸이 최우선이 되는 순간 우리 뒤에 붙은 물량은 중앙 6계약뿐이라 미리 줄 서도 앞자리를 얻지 못한다.
- 판정은 폐기(H900 ~ H902 미지지)다. 대기열이 열 배 짧은 10선(탐색)에서도 g 는 음이었다. 부산물로 P1 은 3분 대기에서 시장가보다 0.18틱 아꼈고, 다음 길은 P1 의 시한 조절과 새 가격 칸의 첫 자리 잡기다.
가설과 결론
- 가설
- 앞선 지정가 연구에서 3년 국채선물 최우선 호가 맨 뒤에 낸 지정가는 큐 길이가 길어 잘 채워지지 않았고, 큐 맨 앞에 있다고 가정할 때만 큰 절감이 나왔다. 그래서 이 실험은 «한 틱 불리한 2호가에 미리 서 두면, 가격이 그 칸으로 왔을 때 그 뒤에 들어온 주문보다 앞에 선다» 는 생각을 검정했다. 확증 가설은 셋이다. H900: 같은 목표 수량과 시한에서 2호가 선배치(P2)의 주문당 실행 비용이 최우선 맨 뒤 지정가(P1)보다 0.05틱 이상 낮다. H901: P2 로 체결된 몫의 30초 마크아웃은 P1 체결 몫보다 나쁘다(역선택). H902: P2 의 이득은 1호가 잔량이 큰 장중에 크고 개장 직후와 마감 전에는 작다. 확증 칸은 50계약, 시한 3분, 취소가 우리 뒤에서 빠진다는 보수 가정, 지연 1초로 미리 정했다.
- 결론
- 2호가 선배치는 최우선 맨 뒤 지정가보다 주문당 0.153틱 비싸고, H900 은 반대 방향으로 분명하게 기각된다. 확인 구간 3,730 주문에서 이득 g 의 평균은 −0.153틱(90% 구간 −0.169 ~ −0.138), 날 블록 부트스트랩 한쪽 p 는 1.00 이다. 25거래일 가운데 이득이 양인 날은 하나도 없었다. 역선택 차(H901)는 −0.023틱으로 부호는 예측대로지만 유의하지 않고(p 0.31), 장중 대 개장과 마감의 차(H902)는 +0.047틱으로 단독 p 0.045 였으나 Holm 보정 뒤 0.135 다. 판정은 폐기다.
이 결론은 시장가와의 비교에서도 같은 그림이다. 도착 시점 시장가 비용은 주문당 0.509틱이고, P1 은 이것을 0.181틱 줄였지만 P2 는 0.028틱만 줄였다. P2 가 시장가보다 조금이라도 나은 것은 가격이 한 칸을 관통한 6% 의 주문에서 정확히 1틱을 번 덕분이다. 나머지 대부분의 경우 P2 는 아무것도 채우지 못한 채 시한에 시장가로 쫓아간다.
용어와 기호
- 3선
- 3년 국채선물 근월물. 그날 체결량이 가장 많은 종목을 근월물로 본다.
- 틱
- 3선 호가 단위 0.01포인트. 이 리포트의 모든 비용과 이득은 틱 단위다.
- 1호가, 2호가
- 매수 쪽이면 가장 높은 매수 호가가 1호가(b1), 그보다 한 칸 낮은 가격이 2호가(b2)다. 매도 쪽은 대칭이다. 이 표본에서 2호가는 98.8% 이상 1호가와 정확히 한 틱 떨어져 있다.
- M0
- 진입 시점 t0 의 중간가, 곧 (최우선 매도 호가 + 최우선 매수 호가) / 2. 모든 비용의 기준이다.
- 실행 비용 c
- side × (체결 평균가 − M0) / 0.01. side 는 매수 +1, 매도 −1. 작을수록 좋고 음이면 중간가보다 유리하게 체결했다는 뜻이다.
- MKT
- 지연 L 뒤의 호가로 목표 수량 전부를 시장가로 사는 정책. 반대편 1 ~ 5단을 차례로 먹는다.
- P1
- 최우선 호가 맨 뒤에 목표 수량 지정가를 내고, 시한까지 못 채운 몫은 그때 시장가로 채우는 정책. 앞선 실험의 기본 지정가 정책이다.
- P2
- 최우선에서 한 틱 불리한 2호가 맨 뒤에 같은 지정가를 내는 정책(2호가 선배치). 시한 처리는 P1 과 같다.
- P2nq
- P2 와 같은 가격이지만, 그 가격이 최우선이 되는 순간의 표시 잔량 맨 뒤에 선다고 가정한 대조. P2 와 P2nq 의 차가 «미리 줄 선 값» 이다.
- 앞 대기열 A
- 같은 가격에서 우리 주문보다 먼저 체결될 다른 참가자의 수량. 우리 가격의 체결이 A 를 먼저 줄이고, A 가 0 이 된 뒤의 체결이 우리를 채운다.
- 이득 g
- c(P1) − c(P2). 양이면 P2 가 더 싸다. H900 은 g 평균이 0.05틱보다 큰지를 묻는다.
- mk30
- 지정가로 체결된 몫마다 side × (체결 30초 뒤 중간가 − 체결가)를 수량 가중 평균한 마크아웃. 음이면 체결 뒤 가격이 우리에게 불리하게 갔다는 뜻(역선택)이다.
- cons, prop, trade
- 취소 위치 가정 셋. cons 는 취소가 모두 우리 뒤에서 빠지되 앞 대기열이 표시 잔량을 넘지 못한다는 보수 가정, prop 은 취소가 대기열 전체에 고르게 빠진다는 가정, trade 는 취소를 전혀 세지 않고 체결로만 대기열이 준다는 가정이다.
- 지연 L
- 결정 시점 t0 에서 주문이 거래소에 닿기까지의 시간. 0, 0.5, 1, 5초 격자를 쓰고 비용 기준은 언제나 t0 의 중간가다.
- 시한 H
- 지정가를 기다리는 최대 시간. 3분과 10분 둘이다.
- 오라클
- 주문마다 사후에 MKT, P1, P2 중 가장 싼 것을 고른 가상의 상한.
- 관통
- 우리 가격보다 불리한 쪽(매수면 더 낮은 가격)에서 체결이 찍히거나 반대편 최우선이 우리 가격까지 온 경우. 가격 시간 우선 원칙상 우리 주문은 그때 전부 채워진다.
자료
자료는 코스콤 선물 시세를 자체 수집한 두 표다. 호가 표는 3선 근월물의 매수와 매도 1 ~ 5단 가격과 잔량을 거래소 시각(마이크로초)으로 담고, 체결 표는 체결 가격, 수량, 누적 거래량을 담는다. 2026-09-08 부터 11-06 까지 39거래일을 썼다. 09-22 와 10-05 는 원천에 없고 나머지 빈 날은 휴장이다. 중복 행은 (시각, 1 ~ 5단 가격과 잔량) 또는 (시각, 가격, 수량, 누적거래량)이 같으면 하나만 남겼다. 체결 표의 공격 방향 필드는 결함이 있어(상수이거나 빈 값) 쓰지 않았다. 큐 재생에는 체결 가격과 수량만 필요하다.
지표를 보기 전에 날마다 점검했다. 39일 모두 5단 깊이가 빈 칸 없이 있고, 스프레드가 1틱인 시간 비율은 95 ~ 99% 다. 연속 거래 중 90초가 넘는 호가 공백은 09-10, 10-30, 11-04, 11-06 에 하나씩 있어 그 구간에 걸치는 주문은 버렸다. 11-04 부터는 다른 미러에서 받아 호가 행이 세 배 촘촘하다(체결 뒤 다음 호가 행까지 중앙 1 ~ 2ms, 그 전 날들은 60 ~ 200ms). 앞선 날들의 호가는 여러 사건을 합친 스냅숏이라는 뜻이고, 이 점은 한계 절에서 다시 다룬다. 시각은 거래소 시각만 쓴다. 국채선물 연속 거래는 08:45 에 시작해 15:35 에 끝나고, 그 뒤 10분은 종가 단일가다.
| 자료 | 기간 | 해상도 | 하루 행 수 | 쓰임 |
|---|---|---|---|---|
| 코스콤 선물 호가 5단 | 2026-09-08 ~ 11-06 | 거래소 시각 마이크로초 | 13,824 ~ 69,168 | 앞 대기열, 취소 추정, 시장가 체결 |
| 코스콤 선물 체결 | 같은 기간 | 마이크로초 | 2,765 ~ 7,847 | 우리 가격의 체결 수량, 관통 |
| 발견 구간 | 2026-09-08 ~ 09-30 | 14거래일 | 주문 2,154 | 보고만(고르는 값 없음) |
| 확인 구간 | 2026-10-01 ~ 11-06 | 25거래일 | 주문 3,730 | 판정 |
방법
진입 시점. 매일 08:50 부터 15:20 까지 5분 칸 78개마다 칸 안에서 균등 난수 시각 하나를 뽑았다(seed 는 254 에 날짜 정수를 더한 값). 시각마다 매수와 매도 가상 주문을 하나씩 만든다. 이렇게 하면 주문 방향과 시장 움직임이 독립이라, 정책 차이가 방향 예측이 아니라 큐 동학에서만 나온다. 마지막 시각을 15:20 으로 둔 것은 10분 시한과 5초 지연을 더해도 연속 거래가 끝나는 15:35 전에 끝나게 하려는 것이다. 진입 전 60초부터 시한 뒤까지 호가 공백이 있으면 그 시각을 버렸다.
큐 재생. 주문은 t0 + L 의 호가를 보고 그 가격의 표시 잔량 맨 뒤에 선다. 그 뒤 체결과 호가 행을 시간 순으로 처리한다. 우리 가격에서 체결이 x 계약 찍히면 앞 대기열 A 를 먼저 줄이고, 남은 몫이 우리 주문을 같은 가격으로 채운다. 우리 가격보다 불리한 쪽에서 체결이 찍히거나 반대편 최우선이 우리 가격까지 오면 남은 몫 전부가 채워진다. 호가 행이 오면 우리 가격 칸의 새 표시 잔량과, 직전 표시 잔량에서 그 사이 체결을 뺀 값을 비교해 줄어든 몫을 취소로 본다. 그 취소가 우리 앞에서 빠졌는지는 알 수 없으므로 세 가정(cons, prop, trade)으로 범위를 준다. 우리 가격이 5단 밖으로 밀려나면 취소 정보를 갱신하지 않고, 우리 가격 칸이 비어 최우선보다 좋은 쪽이 되면 A 를 0 으로 둔다.
시한과 비용. 시한까지 못 채운 몫은 그 순간 호가로 반대편 1 ~ 5단을 차례로 먹는 시장가로 채운다(5단을 넘는 몫은 5단 가격에 1틱을 더 얹었다). 비용은 체결 평균가와 t0 중간가의 차를 틱으로 잰다. 그래서 지연 동안 가격이 움직인 손해와 시한에 가격이 달아난 손해가 모두 비용에 들어간다. 우리 주문은 시장에 없었다고 본다. 곧 다른 참가자는 우리 주문이 있든 없든 같은 행동을 한다.
검정. 확증 칸은 50계약, 3분, cons, 지연 1초다. 확인 구간 25거래일을 복원 추출하는 날 블록 부트스트랩 10,000회로 평균의 분포를 만들고, 귀무 경계(H900 은 0.05틱, H901 과 H902 는 0) 반대편에 떨어진 비율을 한쪽 p 로 썼다. H901 은 양쪽 정책 모두 체결 몫이 있는 날만 쓴다. 세 p 에 Holm 보정을 했다. 판정은 H900 이 정한다. 학습하거나 고르는 값이 없으므로 선택 편향을 다시 재는 순열 귀무는 필요 없고, 발견 구간은 같은 수치를 보고만 한다. 모든 계획은 결과를 보기 전에 사전등록 문서로 잠갔고 수정은 없다.
격자와 진단. 사전등록한 격자는 수량 셋(10, 50, 100계약), 시한 둘(3분, 10분), 취소 가정 셋, 지연 넷(0, 0.5, 1, 5초)으로 72칸이다. 그 밖에 30분 칸별, 1호가와 2호가 잔량 5분위별, 3분 뒤 중간가가 움직인 방향별 이득을 냈다. 실패 원인을 보려고 P2 주문마다 그 가격이 최우선이 되는 순간의 앞 대기열과 표시 잔량, 체결 경로(큐 소진인가 관통인가)를 따로 기록했다.
결과
확증 가설
확증 칸에서 P2 는 P1 보다 주문당 0.153틱 비쌌다. 부트스트랩 90% 구간이 −0.169 ~ −0.138 로 0 에서 멀리 떨어져 있어, 문턱 0.05틱은커녕 0 을 넘을 확률도 없다(한쪽 p 1.00). 날별로 보면 25일 모두 음이고 가장 덜 나쁜 날도 −0.058틱이다. 발견 구간 14일에서도 −0.136틱, 금통위가 열린 10-22 를 빼도 −0.156틱이다. H900 은 예측과 반대 부호로 기각되며, 이 결론은 표본의 어느 부분집합에서도 바뀌지 않는다.
H901 의 역선택은 예측한 부호다. P2 체결 몫의 30초 마크아웃은 −0.113틱, P1 체결 몫은 −0.090틱으로 차가 −0.023틱이다. 하지만 90% 구간이 −0.094 ~ +0.044 로 0 을 넓게 걸쳐 유의하지 않다(p 0.31). P2 는 가격이 한 칸을 관통할 때 주로 채워지므로 역선택이 더 클 것이라 봤으나, P2 가 조금이라도 체결된 주문이 확인 구간 234건뿐이라 차를 가를 힘이 모자랐다. H902 는 장중 g 가 −0.144틱, 개장 직후 −0.210틱, 마감 전 −0.173틱이라 장중이 «덜 나쁜» 것은 맞지만, Holm 보정 뒤 p 0.135 로 지지하지 않는다. 무엇보다 세 구간 모두 음이라, 큐 위치 이득이 장중에 있다는 원래 주장과는 거리가 멀다.
| 가설 | 검정량 | 값 (틱) | 90% 구간 | 한쪽 p | Holm p |
|---|---|---|---|---|---|
| H900 | g 평균 > 0.05 | −0.153 | −0.169 ~ −0.138 | 1.00 | 1.00 |
| H901 | mk30(P2) − mk30(P1) < 0 | −0.023 | −0.094 ~ +0.044 | 0.31 | 0.62 |
| H902 | 장중 g − (개장, 마감) g > 0 | +0.047 | +0.001 ~ +0.095 | 0.045 | 0.135 |
기준선 비교
정책 일곱을 같은 주문에 적용해 비교했다. 시장가는 주문당 0.509틱으로, 반 스프레드(0.5틱)에 50계약이 1단을 넘는 드문 경우가 조금 더해진 값이다. P1 은 0.328틱으로 시장가보다 0.181틱 아낀다. 3분 안에 다 채워지는 비율이 40.8% 이고, 채워지면 중간가보다 반 틱 유리하게 사기 때문이다. 앞선 연구의 큐 길이 규칙(1호가 잔량이 678계약 미만일 때만 지정가)은 0.345틱으로 오히려 P1 보다 조금 나쁘다. 3분 시한에서는 긴 큐에서도 지정가를 내는 편이 낫다는 뜻이다.
P2 는 0.481틱이다. 다 채워지는 비율이 6.1% 에 그쳐 시장가와 거의 같은 비용을 낸다. P2nq 는 P2 와 소수 셋째 자리까지 같다. 이 일치가 이 실험의 핵심 진단인데, 아래 «왜 큐 자리를 못 얻나» 에서 풀어 쓴다. 노트의 아이디어처럼 수량을 둘로 나눠 반은 P1, 반은 P2 에 두는 분할 배치는 0.401틱으로 두 정책의 평균에 가깝다. 사후에 가장 싼 정책을 고르는 오라클은 0.030틱이지만, 이것은 미래를 아는 상한일 뿐 실행할 수 있는 값이 아니다.
| 정책 | 확인 비용 | 시장가 대비 절감 | 완전 체결률 | mk30 | 발견 비용 | 금통위 제외 |
|---|---|---|---|---|---|---|
| MKT 시장가 | 0.509 | 0 | 0.512 | 0.509 | ||
| P1 최우선 맨 뒤 | 0.328 | +0.181 | 40.8% | −0.090 | 0.357 | 0.328 |
| P1q 큐 짧을 때만 | 0.345 | +0.164 | 0.360 | 0.349 | ||
| P2 2호가 선배치 | 0.481 | +0.028 | 6.1% | −0.113 | 0.493 | 0.484 |
| P2nq 큐 자리 없는 대조 | 0.481 | +0.028 | 6.1% | −0.114 | 0.493 | 0.484 |
| 분할(반 P1, 반 P2) | 0.401 | +0.108 | 0.422 | 0.402 | ||
| 오라클 | 0.030 | +0.479 | 0.021 | 0.043 |
강건성 격자
사전등록한 72칸 모두에서 g 가 음이다. 범위는 −0.209 ~ −0.138틱이고 모든 칸의 90% 구간 상한이 0 아래다. 수량은 거의 영향이 없다(같은 시한과 가정에서 10, 50, 100계약의 차가 0.015틱 안). 시한을 3분에서 10분으로 늘리면 P1 의 시장가 대비 절감이 0.18틱에서 0.30틱으로, P2 의 절감도 0.03틱에서 0.12틱으로 커지지만 둘의 차는 오히려 벌어진다. 취소를 비례로 나누는 prop 가정은 P1 을 더 빨리 앞으로 보내 P1 에 더 유리하고, 체결만 세는 trade 가정은 양쪽을 다 느리게 해 차가 가장 작다. 지연은 0 에서 5초까지 g 를 0.005틱 안에서만 움직인다.
비용 규약으로 환산하면, 진입과 청산 두 번 모두 P2 를 쓸 때 왕복 0.31틱을 더 낸다. 이는 판정에 쓰는 왕복 1틱 비용 가정의 31%, 보고용 2틱의 15% 에 해당하는 손해다. 어떤 수량, 시한, 취소 가정, 지연에서도 2호가 선배치는 최우선 맨 뒤 지정가를 이기지 못한다.
| 시한 | 취소 가정 | 10계약 | 50계약 | 100계약 | P1 절감(50) | P2 절감(50) |
|---|---|---|---|---|---|---|
| 3분 | cons | −0.156 | −0.153 | −0.152 | 0.181 | 0.028 |
| 3분 | prop | −0.175 | −0.170 | −0.166 | 0.201 | 0.031 |
| 3분 | trade | −0.141 | −0.141 | −0.141 | 0.163 | 0.023 |
| 10분 | cons | −0.179 | −0.179 | −0.179 | 0.303 | 0.124 |
| 10분 | prop | −0.207 | −0.197 | −0.193 | 0.347 | 0.151 |
| 10분 | trade | −0.172 | −0.172 | −0.172 | 0.280 | 0.108 |
손실의 출처
주문을 세 상태로 나누면 손실이 어디서 오는지 정확히 보인다. 첫째, P2 가 다 채워진 주문(6.1%)은 정의상 P1 도 채워졌다. P2 가격에서 체결이 찍혔다는 것은 P1 가격 칸이 관통되었다는 뜻이기 때문이다. 이때 P2 는 정확히 1틱 싸게 샀으므로 이득이 +1.000틱이고, 전체 평균에 +0.061틱을 보탠다. 둘째, P1 은 다 채워졌지만 P2 는 못 채운 주문(34.6%)이다. 가격이 1호가까지 와서 그 칸 대기열을 먹었지만 한 칸을 더 내려가지 않은 경우다. P1 은 중간가보다 반 틱 싸게 샀는데 P2 는 시한에 시장가로 쫓아가므로 평균 0.606틱을 잃고, 전체 평균에 −0.210틱을 보탠다. 셋째, 둘 다 못 채운 59.2% 는 같은 시장가를 내므로 차가 거의 없다(−0.005).
그러니 P2 가 P1 을 이기려면 «한 칸 더 내려가는 경우» 가 «1호가까지만 오는 경우» 의 약 60% 는 되어야 한다(0.606 대 1.000). 실제로는 6.1 대 34.6, 곧 18% 다. 3선 가격은 대부분의 3분 창에서 1틱 안에 머물고, 1호가 대기열을 다 먹고 다음 칸까지 관통하는 일은 드물다. P2 의 손실은 거의 전부 P1 이 채웠을 기회를 놓치고 시장가로 쫓아가는 데서 나온다.
왜 큐 자리를 못 얻나
이 실험의 전제는 2호가에 미리 서면 그 칸이 최우선이 될 때까지 뒤에 새 주문이 쌓여, 우리가 상대적으로 앞에 서게 된다는 것이었다. 재생 결과는 이 전제가 3선에서 성립하지 않음을 보여 준다. 확인 구간에서 3분 안에 2호가가 최우선이 된 주문은 39% 이고, 그때까지 걸린 시간은 중앙 55초다. 그 순간 우리 앞 대기열은 그 칸 표시 잔량의 중앙 99.5% 였다. 수로는 앞에 1,131계약, 뒤에 6계약이다. 진입 시점의 2호가 잔량이 중앙 1,212계약으로 1호가(719계약)보다 이미 길게 쌓여 있고, 최우선이 되기 전까지 그 뒤로 새로 붙는 물량은 거의 없다.
그래서 P2 의 체결은 큐를 먹어서가 아니라 대부분 관통으로 일어난다. P2 체결 6.3% 가운데 대기열을 다 먹고 채워진 것은 2.0%, 가격이 그 칸을 지나가서 채워진 것이 4.2% 다. 큐 자리를 쓰지 않는 대조(P2nq)가 P2 와 비용이 같은 것도 같은 이유다. 미리 선 값은 0.000틱이고 부트스트랩 구간도 0 ~ 0 이다. 노트의 원 논문은 시뮬레이션 시장에서 여러 가격대 주문의 이점을 보였지만, 그 시뮬레이터는 대기열이 매 순간의 주문 흐름으로 새로 쌓이는 시장이다. 3선 호가는 그와 달리 깊은 대기열이 여러 칸에 미리 쌓인 시장이다.
시간대, 대기열, 방향
30분 칸별로 보면 g 는 모든 칸에서 음이고(−0.28 ~ −0.10), 12시 칸이 가장 덜 나쁘다. P1 의 시장가 대비 절감은 개장 직후와 오후 2시 반에 크고 점심 시간에 작다. 1호가 잔량 5분위로 나누면 대기열이 가장 짧은 분위(중앙 293계약)에서 P1 이 시장가보다 0.54틱이나 아끼고 g 는 −0.260 으로 가장 나쁘다. 대기열이 가장 긴 분위(중앙 1,332계약)에서는 P1 도 시장가보다 0.05틱 나빠지고 g 는 −0.097 로 가장 덜 나쁘지만 여전히 음이다. 2호가 잔량 5분위로 나누면 g 는 −0.17 ~ −0.14 로 평평하다.
방향을 조건으로 보면, 3분 뒤 중간가가 우리 쪽으로 온 표본(23%)에서는 P2 가 +0.213틱 이기고, 달아난 표본(23%)에서 −0.285, 그대로인 표본(54%)에서 −0.255 를 진다. 가격이 그대로인 경우가 이미 크게 음이므로, 방향을 아는 신호가 «가격이 우리 쪽으로 온다» 고 100% 맞힌다 해도 재가중 g 는 −0.037틱으로 0 을 넘지 못한다. 되돌림 신호처럼 가격이 다가올 것을 기대하는 경우에도 P2 는 답이 아니다.
살려 보려 한 변형
폐기를 확인한 뒤 탐색으로 변형 넷을 돌렸다. 판정에는 쓰지 않는다. 첫째, 실제 신호 시각에 맞춘 주문이다. 08:46(연속 거래 첫 분) 76건에서 g 는 −0.044, 15:30 78건에서 −0.238 이다. 15:30 에는 P1 이 시장가보다 0.37틱 아끼는데 P2 는 0.14틱뿐이다. 둘째, 상시 대기 주문이다. 신호 30, 120, 300초 전에 그때 2호가 맨 뒤에 미리 서 두고, 신호 때 그 가격이 최우선이면 쌓인 자리로 P1 처럼 쓰고 아니면 취소한 뒤 P1 을 낸다. 이득은 +0.0003, +0.0008, +0.0014틱으로 0 과 다를 바 없다. 신호 때 그 가격이 최우선인 경우가 9 ~ 19% 이고, 그때도 앞 대기열이 875 ~ 1,005계약으로 1호가 잔량과 거의 같다. 300초 전에 걸면 13% 가 신호 전에 원치 않게 체결된다.
셋째, 1호가 대기열이 길 때만 P2 를 쓰는 조건부 선배치다. 문턱을 발견 구간 80분위(978계약)로 두면 확인 구간 주문의 27% 에서 P2 를 쓰게 되고, P1 대비 −0.026틱(90% 구간 −0.033 ~ −0.019)이다. 넷째, 분할 배치는 P1 보다 0.073틱 나쁘다. 어느 변형도 P1 을 넘지 못했다.
| 변형 | 표본 | P1 대비 이득 (틱) | 비고 |
|---|---|---|---|
| 신호 시각 08:46 의 P2 | 76 | −0.044 | 개장 직후 1호가 잔량 중앙 250.5 |
| 신호 시각 15:30 의 P2 | 78 | −0.238 | P1 절감 0.37 |
| 상시 대기 30초 전 | 3,730 | +0.0003 | 최우선 도달 9% |
| 상시 대기 120초 전 | 3,730 | +0.0008 | 최우선 도달 17%, 사전 체결 4% |
| 상시 대기 300초 전 | 3,730 | +0.0014 | 최우선 도달 19%, 사전 체결 13% |
| 긴 큐에서만 P2 | 3,730 | −0.026 | P2 사용 27% |
| 분할 배치 | 3,730 | −0.073 | 반 P1, 반 P2 |
지연, 10선, 주별
결과를 본 뒤 깊이를 더하려고 세 가지를 탐색으로 더 돌렸다. 판정에는 쓰지 않는다. 먼저 진입 지연이다. 주문이 결정 1분 뒤나 5분 뒤에 들어가도 비용 기준은 결정 시점 중간가로 두었다. 이득 g 는 1분 지연과 3분 시한에서 −0.157틱, 1분 지연과 10분 시한에서 −0.198틱, 5분 지연과 3분 시한에서 −0.156틱이다. 지연은 두 정책에 같은 가격 이동을 더할 뿐이라 둘의 차는 거의 그대로다.
다음은 10년 국채선물이다. 10선은 1호가 잔량이 중앙 63계약, 2호가가 97계약으로 3선의 열 분의 일이라, «대기열이 짧으면 한 칸 뒤에 서는 것이 의미가 있다» 는 반론을 시험하기 좋다. 같은 39일, 같은 진입 시각, 같은 재생기로 돌린 결과 2호가가 3분 안에 최우선이 되는 비율은 75%(중앙 22초)로 3선의 두 배였고, P2 가 다 채워지는 비율도 44% 로 높았다. 그런데도 그 순간 우리 앞 대기열은 그 칸 표시 잔량의 중앙 100%, 하위 25% 분위에서도 93% 였다. 대기열이 짧은 10선에서도 한 칸 뒤 칸은 최우선이 되기 전에 뒤로 새 물량이 붙지 않는다. 그래서 50계약 3분 칸의 g 는 −0.151틱(90% 구간 −0.183 ~ −0.119)이고, 10분 시한에서도 −0.051틱으로 음이다.
마지막으로 3선 확증 칸을 주별로 나누면 9주 모두 음이고 범위는 −0.18 ~ −0.11틱이다. 비용 규약으로 환산하면 진입과 청산 모두에 P2 를 쓸 때 왕복 0.5틱 가정의 61%, 1틱 가정의 31%, 2틱 가정의 15% 를 더 내게 된다. 표본이 두 달이라 연도별 결과는 낼 수 없고, 충격 구간 제외는 금통위일 제외로 대신했다. 이 실험은 실행 정책이라 기존 전략과의 손익 상관은 볼 대상이 없다. 기존 검증 전략들은 개장과 종가 단일가로 체결하므로 연속 거래 지정가 정책과 겹치지도 않는다.
| 설정 | 시장가 비용 | P1 비용 | P2 비용 | g | 90% 구간 | P2 완전 체결 |
|---|---|---|---|---|---|---|
| 3선 50계약, 지연 60초, 3분 | 0.508 | 0.330 | 0.487 | −0.157 | −0.173 ~ −0.141 | 6.0% |
| 3선 50계약, 지연 60초, 10분 | 0.508 | 0.216 | 0.414 | −0.198 | −0.224 ~ −0.172 | 24.1% |
| 3선 50계약, 지연 300초, 3분 | 0.509 | 0.326 | 0.481 | −0.156 | −0.167 ~ −0.144 | 6.4% |
| 10선 50계약, 지연 1초, 3분 | 0.685 | 0.259 | 0.409 | −0.151 | −0.183 ~ −0.119 | 43.9% |
| 10선 50계약, 지연 1초, 10분 | 0.685 | 0.199 | 0.250 | −0.051 | −0.089 ~ −0.013 | 68.2% |
| 10선 10계약, 지연 1초, 3분 | 0.550 | 0.184 | 0.307 | −0.124 | −0.157 ~ −0.090 | 45.0% |
해석
큐 앞자리는 가격 칸을 한 칸 물려서 얻을 수 있는 것이 아니다. 3선 호가에서 1호가 뒤의 칸들은 이미 1,000계약 넘는 대기열이 쌓여 있고, 그 칸이 최우선으로 올라오는 동안 뒤에 새로 붙는 물량은 수 계약뿐이다. 그래서 2호가에 미리 서는 것은 큐의 앞이 아니라 «더 긴 큐의 맨 뒤» 에 서는 것과 같다. 남는 효과는 가격 한 틱 유리함뿐인데, 그 대가로 가격이 1호가에서 멈출 때마다 P1 이 얻었을 체결을 놓친다. 3선 가격은 3분 안에 대개 1틱 안에서 머물기 때문에, 이 교환은 크게 손해다.
원 논문의 다층 주문 아이디어가 틀렸다는 뜻은 아니다. 그 결과는 대기열이 주문 흐름에 따라 늘 새로 형성되는 시뮬레이션 시장에서 나온 것이다. 3선처럼 여러 칸에 깊은 대기열이 이미 쌓여 있는 시장에서는 «먼저 서는 것» 의 가치가 칸을 옮기는 행동으로는 생기지 않는다. 큐 앞자리의 가치는 새 가격 칸이 막 생길 때(스프레드가 2틱으로 벌어졌다가 좁혀지는 순간) 그 칸에 처음 서는 데서 나올 가능성이 크다. 이 실험의 재생 틀은 그런 순간을 따로 노리지 않았다.
부산물로 얻은 것이 하나 있다. 같은 재생에서 P1 은 3분 시한일 때 시장가보다 0.18틱, 10분이면 0.30틱을 아꼈다. 무작위 방향 주문 기준이라 방향을 맞히는 신호에서는 줄지만, 지정가를 기다리는 시간이 실행 비용의 가장 큰 손잡이라는 점은 분명하다. 실행 쪽에서 남은 길은 큐 앞자리 사냥이 아니라 P1 을 얼마나 오래, 언제 기다릴지 정하는 문제다.
한계
표본 크기. 확인 구간은 25거래일이고 시장 국면은 하나뿐이다. 날별 이득이 25일 모두 음이라 부호는 흔들리지 않지만, 변동성이 매우 큰 국면(예를 들어 가격이 3분 안에 여러 틱씩 움직이는 시기)에서는 관통 비율이 올라 P2 의 손실이 줄 수 있다. H901 은 P2 체결 표본이 적어 검정력이 낮다. 역선택이 없다는 뜻으로 읽으면 안 된다.
취소 위치와 호가 해상도. 세 가정이 모두 같은 결론을 내지만, 어느 것도 실제 대기열 속 순서를 본 것은 아니다. 2호가 앞쪽 참가자가 그 칸이 최우선이 되기 직전에 대거 취소하는 패턴이 있다면 실제 앞 대기열은 더 짧을 수 있다. 11-03 이전 호가는 사건을 합친 스냅숏(체결 뒤 다음 행까지 60 ~ 200ms)이라 그런 깜박임을 볼 수 없다. 체결과 호가가 서로 다른 표라 같은 순간의 순서를 알 수 없어 체결이 먼저 찍힌다고 가정했다. 반대라면 cons 가정에서 앞 대기열이 두 번 줄어 P1 과 P2 모두 조금 낙관적이다. 같은 방향의 편향이라 둘의 차에는 작게 작용한다.
시장 영향과 비용 가정. 우리 주문은 시장에 없었다고 본다. 100계약 주문은 실제로 다른 참가자의 행동을 바꿀 수 있다. 비용은 도착 중간가 대비 실행 가격이고 수수료, 주문 취소 비용, 지연 분포는 넣지 않았다. 10선은 탐색에서 같은 방향이었지만 확증 검정은 3선 하나이고, 30선은 재지 않았다. 지연, 10선, 주별 분석은 결과를 본 뒤 더한 탐색이다.
결과를 본 뒤 고친 것. 첫 분석 실행에서 진입 시각대 분류의 시간 단위 버그(시각대 칸이 비어 H902 와 시간대 표가 틀림)와 신호 시각 표의 필터 버그(빈 표)를 찾아 고친 뒤 같은 시뮬레이션 장표로 다시 계산했다. 시뮬레이터, 가설, 문턱, 판정 규칙은 바꾸지 않았고 H900 수치는 두 실행에서 같다. 무작위 방향 표본은 실제 전략 주문과 다르며, 실제 신호 시각 분석은 표본이 작아 기술 통계뿐이다.
다음에 해 볼 것
P1 의 시한 조절. 이 재생에서 P1 은 3분 대기로 0.18틱, 10분 대기로 0.30틱을 아꼈다. 실제로 쓰는 신호(15:30 신호, 장중 되돌림)의 방향 적중을 넣어, 신호 강도와 남은 시간에 따라 시한을 고르는 규칙을 발견 구간에서 정하고 확인 구간에서 검정한다. 가격이 달아날 때의 손실을 줄이는 중간 재판정(30초마다 큐 위치와 중간가를 보고 시장가로 넘기기)을 함께 본다.
새 가격 칸의 첫 자리 잡기. 3선과 10선 모두 한 칸 뒤 대기열은 이미 차 있어 큐 자리를 주지 않았다. 큐 맨 앞은 가격 칸이 새로 생기는 순간(최우선 칸이 비어 반대편 가격이 새 최우선이 되거나 스프레드가 2틱으로 벌어짐)에만 비어 있다. 부록 A 의 발췌가 그런 순간이다. 그 사건이 났을 때 1초 안에 새 칸에 서는 정책을 같은 재생기로 재고, 신호와 같은 방향의 칸 생성이 하루 몇 번인지, 그 자리의 3분 비용이 P1 보다 얼마나 낮은지를 본다.
산출물
모든 수치는 아래 정본 런에서 나왔고, 그림은 같은 런에서 다시 그린다. 시뮬레이션 장표(주문 42만 행)는 크기 때문에 실험 폴더 밖 캐시에 두며 같은 명령으로 다시 만들 수 있다.
- 사전등록
protocol.md - 분석과 판정
analysis.md - 자료 캐시와 점검
code/data.py - 큐 재생 시뮬레이터
code/s1_sim.py - 검정과 표
code/s2_main.py - 탐색 진단
code/d1_explore.py - 깊이 보강 탐색
code/d2_depth.py - 그림
code/render_figures.py - 정본 런
results/20261109T192311_main/ - 재현
uv run python code/data.py; uv run python code/s1_sim.py 6; uv run python code/s2_main.py; uv run python code/d1_explore.py results/20261109T192311_main; uv run python code/d2_depth.py results/20261109T192311_main; uv run python code/render_figures.py
Appendix
A. 데이터셋 실물
시뮬레이터가 읽는 정리된 호가 행과 체결 행을 캐시 파일에서 그대로 옮겼다(2026-10-14 근월물, 10:31:00 직후). 가격은 포인트, 잔량과 수량은 계약이다. 실제 행은 1 ~ 5단을 모두 담지만 여기서는 2단까지만 싣는다.
| 시각 | b1 | bq1 | b2 | bq2 | a1 | aq1 | a2 | aq2 |
|---|---|---|---|---|---|---|---|---|
| 10:31:00.516819 | 102.92 | 1,250 | 102.91 | 1,169 | 102.93 | 859 | 102.94 | 1,226 |
| 10:31:00.632266 | 102.92 | 1,270 | 102.91 | 1,169 | 102.93 | 34 | 102.94 | 1,226 |
| 10:31:00.690364 | 102.93 | 19 | 102.92 | 1,277 | 102.94 | 1,216 | 102.95 | 1,556 |
| 시각 | 가격 p | 수량 q | 누적 거래량 |
|---|---|---|---|
| 10:31:00.622656 | 102.93 | 500 | 57,043 |
| 10:31:00.623850 | 102.93 | 1 | 57,044 |
| 10:31:00.623967 | 102.93 | 11 | 57,079 |
이 발췌는 재생기가 다루는 상황을 그대로 보여 준다. 102.93 매도 1호가 859계약에 500계약 이상의 매수가 들어와 잔량이 34계약으로 줄었고, 다음 행에서 그 칸이 비면서 102.93 이 새 매수 1호가(19계약)가 되었다. 이때 102.93 에 처음 선 19계약이 바로 «새 가격 칸의 큐 맨 앞» 이다. 반면 그 아래 102.92 매수 칸은 이미 1,277계약이 쌓여 있다. 2호가 선배치가 얻는 자리는 앞의 것이 아니라 뒤의 것이다.
B. 모델 입출력 실물
이 실험은 학습한 모델이 없고 규칙 기반 재생기가 있다. 재생기 한 번의 입력은 그날 호가 배열, 체결 배열, 주문 시각 t0 + L, 방향, 가격, 수량, 취소 가정, 시한 목록이고, 출력은 시한마다 (비용, 지정가 체결 수량, 마크아웃 합)이다. 아래는 2026-10-14 확증 칸 설정(50계약, 3분, cons, 지연 1초)의 실제 주문 셋이 만든 출력을 주문 장표에서 그대로 옮긴 것이다. M0 는 틱 단위(포인트 × 100)다.
| t0 | 방향 | M0 | bq1 | bq2 | c_MKT | c_P1 | f_P1 | c_P2 | f_P2 | mk_P2 | c_P2nq |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 08:58:30.70 | 매도 | 10292.5 | 267 | 568 | 0.5 | −0.5 | 50 | −1.5 | 50 | −25 | −1.5 |
| 08:51:49.41 | 매도 | 10291.5 | 378 | 453 | 0.5 | −0.5 | 50 | −0.5 | 0 | 0 | −0.5 |
| 08:51:49.41 | 매수 | 10291.5 | 240 | 539 | 0.5 | 1.5 | 0 | 1.5 | 0 | 0 | 1.5 |
첫 행은 가격이 두 칸 올라 P2 까지 관통된 경우다. P1 은 중간가보다 반 틱, P2 는 한 틱 반 유리하게 팔았고 P2nq 도 같은 값이다(관통 체결이라 큐 자리가 상관없다). 둘째 행은 P1 만 채워지고 P2 는 못 채워 시한에 시장가로 판 경우인데, 그 사이 가격이 한 틱 올라 시장가도 −0.5 가 되어 이 주문에서는 차가 0 이다. 셋째 행은 같은 시각의 매수 주문으로, 가격이 달아나 둘 다 못 채우고 시한에 1.5틱을 냈다.
C. 실험 설정
| 항목 | 값 |
|---|---|
| 진입 시각 | 08:50 ~ 15:20 5분 칸 78개마다 난수 하나, 매수와 매도 |
| 수량 | 10, 50, 100계약 |
| 시한 | 3분, 10분 |
| 취소 가정 | cons, prop, trade |
| 지연 | 0, 0.5, 1, 5초 |
| 시장가 체결 | 반대편 1 ~ 5단 순서대로, 넘치면 5단 + 1틱 |
| 마크아웃 지평 | 체결 뒤 30초 |
| 검정 | 날 블록 부트스트랩 10,000회(격자 2,000회), seed 254, Holm 세 가설 |
| 판정 문턱 | H900 g > 0.05틱, Holm p < 0.05 |
| 분할 | 발견 09-08 ~ 09-30, 확인 10-01 ~ 11-06 |
| 제외 | 90초 넘는 호가 공백에 걸친 시각 |