매수 주도 체결은 공격적 매수 주문이 ask 쪽 유동성을 가져간 거래이고, 매도 주도는 bid 쪽을 가져간 거래입니다. maker side와 aggressor side는 반대입니다. 거래소가 maker side를 주면 반대쪽이 aggressor입니다. 필드가 없으면 체결가를 직전 정상 midpoint와 비교하는 quote rule을 쓰고, midpoint와 같으면 직전 가격 변화 부호를 잇는 tick rule을 보조로 쓸 수 있습니다. 이는 추정이므로 직접 플래그 표본과 대조해 정확도·미분류율을 보고해야 합니다. event time과 quote sequence가 맞지 않으면 실제보다 늦은 호가를 붙여 방향을 거꾸로 분류할 수 있습니다. 변동성·spread·체결 위치별 정확도를 따로 내고, 직접 플래그가 없는 시장에서는 결과를 관측된 주문 흐름 추정치로 제한합니다.
거래소 side 필드의 관점을 먼저 읽습니다
Coinbase product trades 문서는 side가 maker order side라고 설명합니다. side=buy는 매수 maker가 대기했고 공격적 매도가 그 주문을 체결했다는 뜻입니다. 이를 매수 주도라고 읽으면 부호가 반대로 됩니다.
Binance trade stream의 `m`은 buyer가 maker인지 나타냅니다. `m=true`면 buyer maker, 따라서 sell aggressor입니다. 제공값을 내부 표준 `aggressor=buy|sell`로 변환하고 원 필드를 보존합니다.
체결의 buy·sell 표시는 누가 샀는지가 아니라 어느 쪽이 유동성을 가져갔는지 확인해야 합니다.
JOBCOIN 해설

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.
- 거래소 side 필드의 관점을 먼저 읽습니다
Coinbase product trades 문서는 side가 maker order side라고 설명합니다.
- quote rule은 직전 호가와 체결가를 맞춥니다
가상 bid 99, ask 101, midpoint 100에서 체결가 100.
- tick rule은 midpoint 체결의 보조 규칙입니다
직전 체결이 100, 현재 100.1이면 uptick으로 매수 주도, 99.
AI로 제작한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.
quote rule은 직전 호가와 체결가를 맞춥니다
가상 bid 99, ask 101, midpoint 100에서 체결가 100.8은 매수 주도, 99.2는 매도 주도로 추정합니다. 정확히 100이면 quote rule만으로는 방향을 정할 수 없습니다. 이 숫자는 산식 검산용입니다.
체결 시각 이후 호가를 쓰면 체결이 이미 주문서를 바꾼 결과를 기준으로 분류하는 look-ahead 오류가 생깁니다. 같은 sequence 또는 체결 직전의 최신 정상 quote를 사용합니다.
| 입력 | 조건 | 분류 | 한계 |
|---|---|---|---|
| maker side | maker=buy | sell aggressor | 필드 정의 확인 |
| quote rule | price>mid | buy aggressor | 호가 시각 민감 |
| quote rule | price<mid | sell aggressor | 호가 시각 민감 |
| tick rule | price=mid | 마지막 가격 변화 부호 | 동일가 연속 취약 |
tick rule은 midpoint 체결의 보조 규칙입니다
직전 체결이 100, 현재 100.1이면 uptick으로 매수 주도, 99.9면 downtick으로 매도 주도로 추정합니다. 가격이 같으면 마지막 비제로 변화 부호를 이어가는 방식이 있지만 긴 동일가 연속에서는 오래된 방향이 전파됩니다.
midpoint 체결을 억지로 전부 분류하지 말고 unknown 비율을 보고하는 선택도 가능합니다. 분석 목적에 따라 quote-only와 quote+tick 결과를 나란히 둡니다.
- 공식 side가 maker인지 taker인지 확인합니다.
- 체결 직전 quote sequence를 연결합니다.
- midpoint tolerance와 tick 동률 규칙을 버전으로 둡니다.
- 직접 플래그 표본으로 confusion matrix를 계산합니다.
- spread 구간별 오분류율을 나눠 계산합니다.
- unknown 수량과 건수를 전체 거래량 옆에 둡니다.
- 호가 지연 표본은 정상 구간과 분리합니다.
가상 표본으로 오차를 검산합니다
직접 라벨 100건 중 buy 55, sell 45이고 추정이 buy 50건·sell 40건을 맞혔으며 10건 unknown이면 전체 정확도는 90%, 분류된 표본 정확도는 100%입니다. unknown을 빼고 100%만 보고하면 적용 범위를 숨깁니다.
반대로 100건을 모두 분류해 82건이 맞으면 정확도 82%입니다. buy precision·recall과 sell precision·recall을 따로 봐 한 방향 편향을 확인합니다.
호가 지연과 여러 venue를 섞지 않습니다
체결은 A 거래소인데 midpoint는 집계 지수나 B 거래소를 쓰면 차익거래 시 방향이 달라질 수 있습니다. 동일 venue·동일 상품 호가를 우선합니다. sequence gap, crossed book, 재연결 구간은 제외합니다.
timestamp 정밀도가 낮아 같은 시각 호가가 여러 개면 순번이나 수신 순서만으로 실제 선후를 확정하지 않습니다. ambiguous 상태를 보존합니다.
순매수 흐름은 분류 불확실성과 함께 냅니다
signed volume은 buy aggressor 수량을 +, sell을 -로 합칩니다. unknown을 0으로 넣으면 방향 없는 거래가 없었던 것처럼 보입니다. 총 거래량, 분류 거래량, unknown 거래량을 함께 보고합니다.
분류 결과는 주문 흐름 요약이며 미래 가격 예측이나 행위자의 의도를 보장하지 않습니다. 원시 trade ID, quote ID와 알고리즘 버전을 남깁니다.
자주 묻는 질문
trade side=buy면 매수 주도인가요?
API에 따라 maker side일 수 있습니다. Coinbase Exchange에서는 buy maker이므로 aggressor는 sell입니다.
midpoint 체결은 어떻게 분류하나요?
tick rule을 보조로 쓰거나 unknown으로 남길 수 있습니다. 규칙과 미분류율을 공개하세요.
정확도 90%면 충분한가요?
시장·기간·unknown 비율과 방향별 오차에 따라 다릅니다. 직접 플래그 표본에서 재검증해야 합니다.
더 깊이 읽기
본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.



