세 줄 요약
- 3년과 10년 국채선물 근월의 호가창에서 매수1호가 잔량과 매도1호가 잔량의 불균형(OBI₁)을 보고 그 방향으로 1계약을 사고파는 규칙을, 신호를 본 뒤 주문까지 걸리는 지연 L(0~180초)과 보유 시간 h(10~900초)를 바꿔 가며 실제 호가로 모의했다. 방향은 잘 맞지만(|OBI₁| > 0.6 에서 3선 0.815, 10선 0.769, 43일 모두 0.70 초과) 지연 0초에서도 미드 기준 총손익이 계약당 최대 0.42틱으로 왕복 비용 약 1틱의 절반에 못 미친다.
- 상품당 75칸, 모두 150칸 가운데 순손익이 0 을 넘는 칸은 없다.
- 같은 신호로 1호가에 줄을 서는 수동 진입은 공격 진입보다 덜 잃지만, 체결되는 순간 가격이 이미 불리하게 움직여 있어(역선택) 체결당 손익은 여전히 음수다. OBI 를 혼자 매매하는 전략은 접고, 다른 전략의 진입 시점을 고르는 필터로만 쓴다.
질문과 결론
이 저장소의 장중 시그널은 외부망에서 계산해 파일로 내부망에 보낸다. 그래서 신호를 본 순간과 주문이 거래소에 닿는 순간 사이에 지연이 생긴다. 호가 불균형 같은 초단기 신호는 그 지연을 견디는가? 이 실험은 그 질문을 세 가설로 나눴다.
| 번호 | 가설 | 판정 | 핵심 수치 |
|---|---|---|---|
| H107 | |OBI₁| > 0.6 이면 다음 미드 변화 방향 적중률이 날마다 0.70 을 넘는다 | 지지 | 3선 0.815 [0.805, 0.825] · 10선 0.769 [0.763, 0.776] · 0.70 넘은 날 43/43 |
| H108 | 지연 L 뒤 공격 진입·h 뒤 공격 청산의 순손익이 0 을 넘는 칸이 있다 | 미지지 | 150칸 중 양수 0칸 · 최선 3선 −0.58틱, 10선 −0.66틱 |
| H109 | 같은 신호에서 수동 진입이 공격 진입보다 신호당 순손익이 높다 | 지지(상대 비교만) | L 30초에서 h 다섯 칸 모두 차이 양수, Holm p ≤ 0.028 · 수동의 체결당 손익도 음수 |
| 트랙 판정 | OBI 단독 매매 폐기 | L = 30초 열이 전부 음수 — 계획에 적어 둔 접는 기준 |
용어와 기호
| 기호·용어 | 뜻 |
|---|---|
| 틱 | 국채선물 가격의 최소 단위, 0.01 포인트. 손익은 모두 1계약당 틱으로 적는다 |
| 1호가, 매도1호가·매수1호가 | 지금 가장 싸게 팔겠다는 가격(매도1호가)과 가장 비싸게 사겠다는 가격(매수1호가). 그 가격에 쌓인 수량이 잔량이다 |
| 스프레드 | 매도1호가 − 매수1호가. 이 표본에서 3선은 거의 항상 1틱, 10선은 대부분 1틱이다 |
| 미드 | (매도1호가 + 매수1호가)/2. 거래가 가능한 가격이 아니라 기준점이다 |
| OBI₁ | 1호가 잔량 불균형 = (매수1호가 잔량 − 매도1호가 잔량)/(두 잔량의 합). −1~+1, 양수면 사려는 쪽이 두텁다 |
| OBI₅ | 1~5호가 잔량을 가중치 1/k(k = 호가 순번)로 더해 같은 식으로 만든 불균형. 2~5호가 잔량이 있는 21일만 |
| DP₅ | 잔량 소진 압력 = [(매수1호가 잔량의 5초 변화) − (매도1호가 잔량의 5초 변화)]/(지금 두 잔량의 합). 두 1호가 가격이 5초 동안 그대로일 때만 값이 있다 |
| θ | 신호 문턱. |OBI₁| ≥ θ 이면 신호, 방향은 OBI₁ 의 부호 |
| L | 지연. 신호를 본 시각에서 주문이 체결 가능한 시각까지 걸린 초. 0, 5, 30, 60, 180 |
| h | 보유 시간. 진입(또는 수동 체결)에서 청산까지 초. 10, 30, 60, 300, 900 |
| 공격 진입·청산 | 살 때 매도1호가로, 팔 때 매수1호가로 바로 체결. 스프레드를 낸다 |
| 수동 진입 | 매수 신호면 매수1호가에, 매도 신호면 매도1호가에 주문을 걸고 기다린다. 체결되면 반 스프레드를 받는 자리이지만 언제 체결될지 모른다 |
| 총손익·순손익 | 총손익 = 진입 시각 미드에서 청산 시각 미드까지 우리 방향 변화. 순손익 = 실제 체결 가격 기준(스프레드 차감) |
| 역선택 | 수동 주문이 체결되는 순간이 대개 가격이 우리에게 불리하게 움직이는 순간이라는 현상 |
| IC | 정보 계수. 신호와 h 초 뒤 미드 변화의 스피어만 순위 상관을 하루에 하나 잰 값 |
| 날짜 블록 부트스트랩 | 날을 단위로 복원 추출해(2,000회) 신뢰구간을 만드는 방법. 하루 안의 신호가 서로 독립이 아니므로 날을 표본 단위로 삼는다 |
| Newey–West t | 날짜 계열의 자기상관을 감안한 평균의 t 값(시차 5일) |
| Holm 보정 | 여러 칸을 동시에 검정할 때 우연히 하나가 유의해 보이는 것을 막는 단계적 p 값 보정 |
| 순환 이동 귀무 | 하루 안에서 신호 계열을 30분 이상 무작위로 돌려 가격과의 짝을 끊은 뒤 같은 격자를 다시 돌려 최댓값을 취하는 것. «격자에서 제일 좋은 칸을 고르면 우연으로 얼마나 좋아 보이나» 의 기준 |
자료
| 항목 | 값 |
|---|---|
| 상품 | 3년 국채선물 근월(2026-09-14 부터 12월물), 10년 국채선물 근월(2026-09-15 부터 12월물). 그날 거래량이 가장 많은 계약 |
| 기간·표본 | 2026-07-10 ~ 2026-10-07, 상품마다 43거래일. 그중 2~5호가 잔량이 있는 날 21일 |
| 내용 | 호가 틱(1~5호가 가격·잔량, 거래소 시각 마이크로초) · 체결 틱(가격·수량). 체결의 매수·매도 방향은 체결 직전 호가와 비교해 정했다(직전 매도1호가 이상이면 매수 주도) |
| 시각 | 거래소 시각만 쓴다. 수신 PC 시각은 날마다 ±0.7초 어긋나 있어 쓰지 않는다 |
| 세션 | 연속 거래 08:45~15:35 만. 신호 09:00~15:20, 모든 청산 15:34:59 이전. 시가·종가 단일가는 뺀다 |
| 하루 규모(중앙) | 호가 갱신 3선 19,804 · 10선 26,673, 체결 3선 4,335 · 10선 9,433 |
| 뺀 날 — 수집 공백 | 반나절만 받았거나 09:00~15:30 사이 300초 넘게 비는 날: 07-08, 07-09, 07-15, 07-21, 07-29, 08-20, 08-28, 09-04, 09-08, 09-10 |
| 뺀 날 — 품질 규칙 | 2026-07-31. 그날 원천에 같은 흐름이 두 벌 섞여 호가 행의 8% 가 완전 중복이고, 체결의 43%(3선)·52%(10선)가 직전 미드에서 2틱 넘게 떨어져 있었다. 규칙(체결 어긋남 2% 초과 또는 중복 1% 초과)은 자료의 어긋남으로 정했고 그날 하나만 걸린다 |
규칙과 모의 방법
학습하는 모델은 없다. 문턱 하나와 부호 하나로 된 규칙을 실제 호가 위에서 굴린다. 그래서 이 리포트에는 모델 구조도가 없다.
| 갈래 | 무엇을 하나 | 설정 |
|---|---|---|
| 방향 적중 (H107) | 호가가 갱신될 때마다 OBI₁ 을 재고, 그 뒤 처음 미드가 바뀌는 방향과 부호가 같으면 적중 | 09:00~15:30, 1호가가 비거나 교차한 갱신과 OBI₁ = 0 은 뺀다. |OBI₁| 다섯 구간과 >0.6 |
| IC | 1초 격자에서 그 초에 유효한 신호와 h 초 뒤 미드 변화의 순위 상관 | h = 1, 5, 10, 30, 60, 300초. 신호 OBI₁·OBI₅·DP₅, OBI₅ 가 OBI₁ 에 더하는 몫 |
| 공격 매매 (H108) | 1초 격자에서 |OBI₁| ≥ θ 가 되면 신호. L 초 뒤의 반대편 1호가로 진입, 그로부터 h 초 뒤의 반대편 1호가로 청산 | θ = 0.4, 0.6, 0.8 · L = 0, 5, 30, 60, 180 · h = 10, 30, 60, 300, 900 → 상품당 75칸. 한 번에 1계약, 청산 전에는 새 신호를 받지 않는다 |
| 수동 진입 (H109) | L 초 뒤 같은 편 1호가에 그 가격의 잔량 뒤로 1계약을 건다. h 초 안에 체결되면 체결 + h 초에 반대편 1호가로 청산, 아니면 취소(손익 0) | 체결 판정 세 갈래 — 줄 서기(주): 그 가격에 상대편 주도 체결량이 앞 잔량 + 1계약을 채우면 · 가격 통과만(하한): 우리 가격 너머로 체결되거나 반대 호가가 닿으면 · 맨 앞(상한): 앞 잔량이 없다고 치고 상대편 주도 체결 1계약이면 |
| 기준선 | 직전 60초 미드 변화가 1틱 이상이면 그 방향(모멘텀) 또는 반대 방향(되돌림)으로 같은 기계를 돌린다 | L·h 격자 25칸씩. 무정보 기준선은 0 |
줄 서기 모형은 개별 주문이 보이지 않는 데서 나온 타협이다. 앞에 선 주문이 취소돼 우리 순번이 당겨지는 것을 인정하지 않으므로 체결을 실제보다 늦게 본다. 그래서 하한과 상한을 함께 낸다.
검정
- 표본 단위는 날이다. 하루 안의 신호는 서로 겹치고 이어지므로 독립 표본이 아니다. 신뢰구간은 날짜 블록 부트스트랩(2,000회, 시드 27).
- 칸별 p 값은 날짜별 순손익 합의 평균이 0 이하라는 귀무에 대한 단측 t 다. 두 상품 150칸에 Holm 보정을 한다.
- 선택 편향은 순환 이동 귀무 200회로 잰다. 관측 최댓값이 그 분포의 어디에 있는지가 «격자에서 고른 값이 우연 이상인가» 의 답이다.
- H109는 L = 30초, θ = 0.6 의 h 다섯 칸에서 날짜마다 (수동 신호당 순손익 − 공격 거래당 순손익)을 내고 단측 t 검정과 Holm 보정으로 본다.
- 지연 예산은 θ = 0.6 에서 총손익이 L = 0 값의 절반 아래로 처음 떨어지는 L 이다.
결과: 방향 적중
| 상품 | 날 | 날짜 평균 | 95% 구간 | 0.70 넘은 날 | 최저·최고 | 다음 미드 변화까지(중앙) |
|---|---|---|---|---|---|---|
| 3년 국채선물 | 43 | 0.815 | 0.805 ~ 0.825 | 43/43 | 0.727 · 0.879 | 25.6초 |
| 10년 국채선물 | 43 | 0.769 | 0.763 ~ 0.776 | 43/43 | 0.731 · 0.822 | 5.5초 |
3선은 하루 미드 변화가 400번 안팎이라 신호가 맞아도 그 변화가 오기까지 오래 기다린다. 10선은 1호가 잔량이 3선의 10분의 1 수준(60계약 안팎)이라 훨씬 자주 움직인다.
결과: 지평별 IC
| 상품 | h 1초 | 5초 | 10초 | 30초 | 60초 | 300초 |
|---|---|---|---|---|---|---|
| 3년 IC | 0.137 | 0.234 | 0.273 | 0.309 | 0.294 | 0.183 |
| 3년 t | 51.9 | 80.5 | 82.9 | 49.8 | 36.2 | 17.2 |
| 10년 IC | 0.214 | 0.277 | 0.263 | 0.191 | 0.143 | 0.058 |
| 10년 t | 70.6 | 72.6 | 70.5 | 53.0 | 41.5 | 12.1 |
DP₅(잔량 소진 압력)의 IC 는 3선 0.07~0.11, 10선 0.13~0.15(h 1~10초)로 OBI₁ 의 절반 수준이다. 예측력은 의심할 여지 없이 있다. 남은 질문은 그 예측력이 돈이 되느냐다.
결과: 공격 매매와 지연
| 상품 · L | h 10초 | 30초 | 60초 | 300초 | 900초 |
|---|---|---|---|---|---|
| 3년 · 0초 | −0.80 | −0.70 | −0.66 | −0.65 | −0.64 |
| 3년 · 5초 | −0.94 | −0.89 | −0.87 | −0.86 | −0.87 |
| 3년 · 30초 | −0.99 | −0.98 | −0.99 | −0.98 | −0.91 |
| 3년 · 60초 | −1.02 | −1.01 | −1.00 | −1.03 | −0.93 |
| 3년 · 180초 | −1.01 | −1.00 | −1.01 | −0.97 | −0.96 |
| 10년 · 0초 | −0.75 | −0.71 | −0.70 | −0.78 | −0.93 |
| 10년 · 5초 | −1.02 | −1.01 | −1.01 | −1.15 | −1.40 |
| 10년 · 30초 | −1.05 | −1.04 | −1.04 | −1.11 | −1.06 |
| 10년 · 60초 | −1.06 | −1.07 | −1.07 | −1.02 | −1.24 |
| 10년 · 180초 | −1.06 | −1.08 | −1.09 | −1.16 | −1.25 |
| 상품 | 최선 칸 (θ·L·h) | 하루 거래 | 총손익 | 순손익 [95%] | 양수 칸 | 귀무 최댓값 95백분위 | 관측 최댓값의 귀무 백분위 |
|---|---|---|---|---|---|---|---|
| 3년 | 0.8 · 0초 · 300초 | 46.3 | +0.42 | −0.58 [−0.62, −0.54] | 0/75 | −0.85 | 100% |
| 10년 | 0.8 · 0초 · 30초 | 330.1 | +0.37 | −0.66 [−0.68, −0.64] | 0/75 | −0.67 | 95% |
문턱을 올리면 조금 낫다(최선 순손익: 3선은 θ 0.4, 0.6, 0.8 에서 −0.74, −0.64, −0.58, 10선은 −0.78, −0.70, −0.66). 그러나 어느 칸도 0 근처에 가지 못한다. 지연 예산은 모든 h 에서 5초 미만이다. 3선 h 60초의 총손익이 0.35(지연 0) → 0.15(5초) → 0.03(30초), 10선은 0.33 → 0.06 → 0.02 틱이다.
결과: 수동 진입
| 상품 | 체결 판정 | h | 하루 신호 | 체결률 | 신호당 | 체결당 | 체결 순간 미드 대비 |
|---|---|---|---|---|---|---|---|
| 3년 | 줄 서기 | 10 | 188 | 0.059 | −0.04 | −0.65 | −0.31 |
| 3년 | 줄 서기 | 60 | 115 | 0.214 | −0.14 | −0.64 | −0.33 |
| 3년 | 줄 서기 | 300 | 46 | 0.496 | −0.31 | −0.63 | −0.30 |
| 3년 | 가격 통과만(하한) | 60 | 115 | 0.204 | −0.14 | −0.66 | −0.43 |
| 3년 | 맨 앞(상한) | 60 | 113 | 0.643 | −0.09 | −0.13 | +0.40 |
| 10년 | 줄 서기 | 10 | 385 | 0.221 | −0.16 | −0.72 | −0.30 |
| 10년 | 줄 서기 | 60 | 190 | 0.549 | −0.40 | −0.73 | −0.31 |
| 10년 | 줄 서기 | 300 | 59 | 0.786 | −0.65 | −0.83 | −0.30 |
| 10년 | 가격 통과만(하한) | 60 | 190 | 0.520 | −0.42 | −0.80 | −0.42 |
| 10년 | 맨 앞(상한) | 60 | 190 | 0.787 | −0.26 | −0.33 | +0.25 |
| 상품 | h | 수동 신호당 | 공격 거래당 | 차이 | t | Holm p |
|---|---|---|---|---|---|---|
| 3년 | 10 | −0.039 | −0.994 | +0.956 | 282.4 | < 10⁻¹⁰ |
| 3년 | 60 | −0.136 | −0.986 | +0.850 | 122.6 | < 10⁻¹⁰ |
| 3년 | 900 | −0.343 | −0.911 | +0.569 | 10.5 | < 10⁻¹⁰ |
| 10년 | 10 | −0.159 | −1.054 | +0.894 | 164.5 | < 10⁻¹⁰ |
| 10년 | 60 | −0.399 | −1.041 | +0.642 | 33.4 | < 10⁻¹⁰ |
| 10년 | 900 | −0.685 | −1.066 | +0.380 | 1.97 | 0.028 |
수동이 덜 잃는 이유는 두 가지다. 신호의 상당수가 체결되지 않아 손익 0 으로 끝나고, 체결되면 반 스프레드를 내는 대신 받는 자리에 선다. 그러나 줄 서기 모형에서 체결된 순간의 미드는 이미 우리 가격보다 0.30틱 불리하다. 3선 1호가에는 수백 계약이 줄 서 있어서, 우리 차례가 오는 것은 대개 그 줄이 다 팔려 가격이 우리 주문을 넘어갈 때다. 이 실험 전체에서 양수가 나온 값은 하나뿐이다. 맨 앞 상한, θ 0.8, 지연 0, h 900초에서 3선 신호당 +0.12틱이다. 지연이 없고 줄의 맨 앞에 선다는 두 비현실적 가정을 함께 둔 상한이다.
기준선
같은 기계로 직전 60초 미드 변화(1틱 이상)를 따르는 모멘텀과 반대로 가는 되돌림을 돌렸다. 지연 0의 총손익은 모멘텀이 3선 −0.38~−0.45틱, 10선 −0.28~−0.41틱이고, 되돌림이 그 부호를 뒤집은 값이다. 초~분 지평의 미드는 1틱 진동을 되돌린다. 최선 순손익은 3선 되돌림(지연 0, h 300초) −0.71, 10선 되돌림(지연 180, h 900초) −0.67이고, 모멘텀은 −1.00틱과 −1.04틱이다. OBI 의 최선(−0.58, −0.66)이 두 기준선보다 낫지만 셋 모두 비용을 넘지 못한다. 무정보 기준선은 0 이다.
왜 스프레드를 못 넘나
산수가 결과를 정한다. |OBI₁| > 0.6 일 때 다음 미드 변화가 맞을 확률을 p, 그 변화의 크기를 대개 반 틱(한쪽 1호가만 움직여 스프레드가 2틱이 되는 경우)이라 하면 기대 미드 이동은 (2p − 1) × 0.5틱이다. p = 0.8 이면 0.3틱이고, 관측한 지연 0 총손익 0.2~0.4틱과 맞는다.
공격 주문은 매도1호가에 사고 매수1호가에 팔아 왕복으로 스프레드 1틱을 낸다. 맞혀서 버는 몫보다 내는 비용이 세 배 크다. 지연이 붙으면 신호가 가리키던 미드 변화가 이미 지나간 뒤라(3선은 25.6초, 10선은 5.5초 안에 대부분 일어난다) 그 0.3틱마저 사라진다. 수동 주문은 비용을 받는 쪽으로 돌리지만 역선택이 그 몫을 가져간다.
한계
43거래일은 짧다. 하루 안의 신호는 독립이 아니라 유효 표본은 날 수에 가깝다. 다만 판정은 «작은 양수를 못 찾았다» 가 아니라 «지연 0 의 총손익이 비용의 절반도 안 된다» 이므로 표본이 늘어도 뒤집히기 어렵다.
1초 격자다. 지연 0 칸은 신호를 본 바로 그 초의 호가로 체결된다고 가정한 상한이다. 수동 체결은 개별 주문을 볼 수 없어 범위로만 쟀고, 줄 서기 모형은 앞 주문의 취소로 순번이 당겨지는 것을 인정하지 않는다. 우리 1계약의 시장 충격은 무시했다. 2~5호가 잔량은 21일만 있어 깊이 신호의 판단은 그 21일에 한정된다.
코스콤 체결 표는 거래소 누적거래량의 약 68%만 담는다. 줄 서기 모형은 우리 가격에서 소진된 거래량을 덜 세므로 수동 체결률이 낮게 나왔을 수 있다. 앞 잔량을 0.68배로 줄이는 보정으로도 3분 체결 확률은 3선 0.404 에서 0.420, 10선 0.734 에서 0.748 로만 올라 수동 진입의 결론(체결당 음수)은 바뀌지 않는다.
이 결론을 뒤집는 조건: 끝에서 끝 지연이 1초 아래이고 줄의 앞쪽에 설 수 있는 실행 경로가 생기면 수동 진입의 맨 앞 상한(체결당 −0.13~+0.14틱) 쪽으로 다가갈 수 있다. 파일로 시그널을 보내는 지금 경로에서는 해당하지 않는다.
산출물
- 계획
experiments/0027_obi_latency/protocol.md - 분석과 판정
experiments/0027_obi_latency/analysis.md - 정본 런
results/20261007_161224_obi/ - 계산
code/run.py,code/sim.py - 검정과 표
code/summarize.py - 그림
code/figures.py