미결제약정 데이터: 해석 전에 품질 검증하기 · 3 / 5
이용 가능 시점과 레코드 버전으로 OI 관측 재현하기
레코드가 어느 시점을 설명하는지 나타내는 타임스탬프는 그 데이터를 언제 사용할 수 있었는지 증명하지 않습니다. 임계값 기반 판단을 재현하기 전에 이용 가능 시점과 정정 이력을 보존하세요.
Athenum8 분업데이트:
미래 참조 편향: 도착 전에 사용한 미결제약정 데이터
A의 새 값은 이용 가능하지만 B의 새 값은 아직 없습니다. A=110을 마지막 B=200과 짝지으면 측정 시점이 다른 값들의 합계 310이 나옵니다. 이는 관측 시점이 섞인 추정치이지 요구된 동시점 관측값 쌍이 아닙니다. 규칙의 입력값이 이용 불가한 것이며, 조건 미충족이 확인된 것은 아닙니다. 백테스트에서 B=230의 측정 시각 표시가 10:00이라는 이유로 사용하면 이 판단 시점보다 15초 뒤의 정보를 미리 본 셈입니다. 측정 시각만으로 정렬하면 이 오류가 가려집니다.
최초 데이터의 임계값 충족과 체결 가능한 거래의 차이
10:00의 최초 측정값 두 개가 모두 도착했습니다. 합계는 340이며 증가율은 40/300 = 13.333…%이므로 예시 임계값을 충족합니다. 그렇다고 이전 측정 시점의 가격으로 거래를 체결할 수 있었다는 뜻은 아닙니다. 체결 모형에는 이후 이용 가능한 호가, 수량, 비용 및 별도의 시점 가정이 필요합니다.
당시 관측 재현: 최초 버전과 정정 버전 함께 보관하기
이제 정정된 B 값을 이용할 수 있습니다. 정정된 관측값 쌍의 합계는 325이며 증가율은 25/300 = 8.333…%로 임계값보다 낮습니다. 최종 정정 레코드만 보관하는 데이터베이스는 이전에 켜졌던 검토 플래그를 사후적으로 지워 버립니다. 그러면 10:00:25에 수신한 정보와 일치했던 실시간 판단이 불가능했던 것처럼 보일 수 있습니다.
당시 관측된 상태를 재현하려면 두 버전 모두 이용 가능 시점과 함께 보관하세요. 최종 데이터 분석도 유효하지만 다른 질문에 답하는 것이므로 그렇게 표시해야 합니다. 당시 관측 데이터 기반 전략을 설명 없이 정정 데이터 기반 벤치마크와 비교하고 그 차이를 매매 실력으로 해석하지 마세요.
예시: 거래소 두 곳, 기준 OI 300, 임계값 330
측정값이 설명하는 시점과 연구 시스템이 이를 사용할 수 있었던 시점을 구분하세요. 이 가상의 두 거래소 예시는 비교 가능한 단측 수량 단위와 UTC 시계를 사용합니다. 도착 시각은 전체 레코드가 수신되어 의사결정 과정에서 사용할 수 있게 된 시각을 뜻합니다. 실제 재현에서는 추가 처리 지연이 있다면 그것도 더해야 합니다.
가상의 검토 규칙은 동시점인 10:00 관측값 쌍을 요구하며, 증가율이 최소 10%인지 동시점인 09:55 관측값 쌍과 비교하여 플래그를 켭니다. 이는 검토를 시작하는 조건이지 거래 지시나 예측 성능에 대한 주장이 아닙니다. 기준 OI는 300입니다. 수치 임계값은 330입니다.
| 거래소 | 측정 시각 | 이용 가능한 도착 시각 | OI | 버전 |
|---|---|---|---|---|
| A | 09:55:00 | 09:55:02 | 100 | 최초 |
| B | 09:55:00 | 09:55:03 | 200 | 최초 |
| A | 10:00:00 | 10:00:02 | 110 | 최초 |
| B | 10:00:00 | 10:00:20 | 230 | 최초 |
| B | 10:00:00 | 10:00:40 | 215 | 정정 |
도표 크게 보기- 10:00:05: 동시점 관측값 쌍 이용 불가
- 10:00:25: 최초 합계 340; 임계값 충족
- 10:00:45: 정정 합계 325; 임계값 미충족
가상의 UTC 측정·도착·정정 원장. 레코드가 도착하면서 판단 시점에 이용할 수 있는 정보가 바뀝니다. 예시 임계값은 330입니다. 이는 검토 결과이지 실제 체결 거래나 측정된 공급업체 지연 시간이 아닙니다.
가로축은 10:00:00 UTC 이후 이용 가능한 도착 시각을 초 단위로 나타냅니다. 새 레코드는 모두 같은 10:00 측정값을 설명합니다. 선은 이용 가능한 버전을 나타내며 연속적인 시장 경로가 아닙니다. 물음표는 동시점 입력값을 이용할 수 없다는 뜻이지, 0이나 임계값 미충족을 뜻하지 않습니다.
B = 230: 최초. B = 215: 정정.
- 10:00:05: 동시점 관측값 쌍 이용 불가
- 10:00:25: 최초 합계 340; 임계값 충족
- 10:00:45: 정정 합계 325; 임계값 미충족
흔한 실수: 값 이월, 소급 채우기, 정정 조기 적용
새 값이 도착하기 전에 B=200을 이월하면 값이 오래되었다는 사실을 숨기고, B=230을 도착 전에 소급해 채우면 미래 정보가 유입됩니다. 정정을 10:00:40 이전에 적용하면 이후 버전의 정보가 유입됩니다. 모두 타임스탬프 조인으로 구현되더라도 서로 다른 세 가지 오류입니다.
결정 전 확인사항
- 측정 시각과 이용 가능한 도착 시각을 별도로 보관하세요.
- 판단 시점까지 이용 가능했던 레코드만 선택하세요.
- 정정 이력과 신뢰할 수 있는 버전 순서를 보존하세요.
- 관측 시점이 섞인 추정치를 동시점 데이터라고 부르지 말고 명시적으로 표시하세요.
- 신호의 이용 가능 여부와 실제 체결 가능성에 대한 가정을 구분하세요.
이해도 확인
B의 최초 10:00 측정값 도착 시각만 10:00:50으로 바꾸고 정정 도착 시각은 10:00:40으로 유지하세요. 10:00:25와 10:00:45에는 무엇을 알 수 있나요? 이전 버전인 최초 레코드가 10:00:50에 도착하면 정정값을 덮어써야 하나요?
정답과 해설 보기
10:00:25에는 필요한 B 측정값을 아직 이용할 수 없습니다. 10:00:45에는 정정값 B=215가 제공되므로 동시점 합계는 325이며 플래그는 거짓입니다. 신뢰할 수 있는 버전 정보가 있는 정정값을 나중에 도착한 이전 버전으로 덮어쓰면 안 됩니다. 믿을 수 있는 버전·정정 순서 규약이 없다면 도착 순서로 어느 값을 사용해야 하는지 판단하지 말고 충돌 데이터를 격리하세요. 실제 공급업체의 필드와 정정 의미는 별도로 검증해야 합니다. 이 가상 원장은 Bybit가 정확히 이런 버전 필드나 도착 시각을 제공한다고 주장하지 않습니다.
출처 및 추가 자료
Athenum으로 더 알아보기
관련 수업
- 오더플로 선행·지연: 사건 시각과 도착 시각을 맞추기
지연된 체결 메시지를 미래 정보 누출 없이 재생합니다. 거래소 사건, 메시지 생성, 로컬 수신 시각을 나눕니다.
- 표본 외 검증: 미래 결과를 누출하지 않고 홀드아웃 고정하기
개발, 선택과 최종 평가를 분리합니다. 기간 경계를 넘는 거래, 전처리와 이미 본 시험 구간의 재사용을 점검합니다.