오더플로 측정: 초기화, 단위, 정보 시각 · 4 / 5
오더플로 선행·지연: 사건 시각과 도착 시각을 맞춘다
거래가 가격 변화 전에 발생해도 시스템에는 변화 뒤에 도착할 수 있다. 다운로드 자료를 거래소 시각으로 정렬하면 실시간으로는 없던 선행 신호가 생길 수 있다. 결정 평가에는 사건과 도착 시각을 모두 보관한다.
Athenum7 분업데이트:
서로 다른 세 시각을 보존한다
사건 시각은 거래소가 체결이 일어났다고 밝힌 때, 메시지 생성은 업데이트를 구성한 때, 로컬 수신은 수집기가 받은 때다. 묶음 전송, 네트워크, 재연결, 시계 오차로 달라질 수 있다.
짧은 필드 이름으로 추정하지 말고 거래소의 정의를 따른다. Bybit 공개 거래 문서는 체결 시각과 메시지 생성 시각을 구분한다. 어느 것도 자동으로 자신의 수신 시각은 아니다. 수집 시 로컬 시각과 시간대, 정밀도, 동기화 정보를 함께 기록한다.
결정 당시 도착한 정보로 재생한다
로컬 t의 결정에는 t까지 받은 관측만 포함하고 일반적인 처리 지연을 더한다. 나중 정정은 과거 차트를 개선해도 이전에 알 수 있었던 내용을 바꾸지 않는다. 최초 기록과 후속 버전을 보존하고 덮어쓰지 않는다.
거래소 간 선행 추정에는 시계 오차 범위도 필요하다. 시계가 100ms 다를 수 있다면 20ms 선행은 설득력이 약하다. 시간적 선후가 정확해도 인과성 또는 비용·지연·체결 불확실성 이후 실행 기회를 증명하지 않는다.
계산 예: 100ms 선행한 사건이 비교 사건보다 200ms 늦게 도착한다
가상 시간선에서 A 체결은 12:00:00.100에 일어나 .400에 도착한다. B 가격 갱신은 .200에 일어나 .220에 온다. 사건 순서로는 A가 100ms 먼저지만 실제 앱은 B를 A보다 180ms 먼저 받는다.
.250의 결정은 B만 볼 수 있고 A는 쓸 수 없다. A를 사건 행 .100에 결합해 .250에 거래하는 백테스트는 정보를 누출한다. A의 첫 사용은 .400에 처리·주문 지연을 더한 이후다. 그때는 기회와 체결가격이 달라졌을 수 있다.
| 관측 | 사건 시각 | 로컬 도착 | .250에 사용 가능? |
|---|---|---|---|
| 체결 A | 12:00:00.100 | 12:00:00.400 | 아니오 |
| 가격 B | 12:00:00.200 | 12:00:00.220 | 예 |
도표 크게 보기- .100: A 체결 발생
- .220: B 가격 도착
- .250: 결정은 B만 봄
- .400: A가 뒤늦게 도착
재연결 재생은 새 거래 폭증이 아니다
재연결 후 버퍼 메시지가 몰려와도 오래된 체결일 수 있다. 수신 빈도 급증이 시장 활성화가 아니라 네트워크 복구일 수 있다. ID를 보존하고 올바른 거래 식별자로 중복을 제거하며 사건 시각 분포를 본다. 메시지나 순번 필드가 같다는 이유로 다른 체결을 지우지 않는다.
결정 전 확인사항
- 사건·메시지·로컬 수신 시각을 보관한다.
- 판단 시한까지 수신한 자료로 재생한다.
- 늦은 도착과 정정을 이전 지식으로 옮기지 않는다.
- 선행 폭을 시계 오차와 실행 지연에 비교한다.
이해도 확인
X는 사건 .120, 도착 .310이고 Y 가격은 사건 .180, 도착 .210이다. .250 결정이 X로 Y를 예측할 수 있는가?
정답과 해설 보기
아니다. X는 60ms 먼저 일어났지만 Y보다 100ms, 결정보다 60ms 늦게 도착한다. .250에서는 Y만 안다. 사건 순서와 무관하게 X를 쓰는 것은 가용성 오류다.