실제 발표와 실제 가격을 사용하는 백테스트도 전략에 당시 알 수 없던 정보를 줄 수 있습니다. 성과를 계산하기도 전에 시각이나 데이터 버전에서 오류가 생기는 경우입니다.

이번 시장 반응 읽기에서는 나중 정보를 이전 결정에 사용하는 미래 정보 참조 편향(look-ahead bias) 없이 뉴스 기반 결정을 재구성하는 방법을 살펴봅니다. 뉴스와 기술적 매매 비교에서 두 접근을 설명했습니다. 여기서 뉴스 매매는 발표나 촉매에 반응하는 매매이며, 합병 차익거래 같은 기관의 이벤트 드리븐 전략을 뜻하지 않습니다.

그때의 발표 버전을 보관한다

오늘 내려받은 수치가 처음 발표된 수치와 다를 수 있습니다. 미국 노동통계국은 나중에 들어온 보고서와 기타 갱신을 반영하는 수정 과정을 설명합니다. 수정된 데이터는 경제 연구에 적합할 수 있지만 최초 발표 당시 트레이더가 이용할 수 있었던 것은 아닙니다.

세인트루이스 연준의 ALFRED 설명은 서로 다른 날짜에 해당하는 과거 데이터 버전인 빈티지를 소개합니다. 실시간 기간 문서는 오늘 아는 정보와 과거 특정 기간에 알던 정보를 구분합니다. 다만 날짜 단위 기록만으로 자신의 피드가 어느 밀리초에 메시지를 받았는지 증명할 수는 없습니다. 별도 증거가 필요합니다.

가상 예시를 보겠습니다. 가상의 경제 지표가 처음 3.2%로 발표되었고, 발표 전에 저장한 전망치는 3.0%입니다. 테스트는 이를 전망보다 +0.2%포인트 높은 값으로 분류합니다. 나중 수정값 2.9%를 과거 행에 대신 넣으면 −0.1%포인트가 됩니다. 당시 알고 있던 사실을 바로잡은 것이 아니라, 나중 정보가 유입되어 분류가 뒤집힌 것입니다.

전망치의 출처, 수집 시각과 정의도 보관하세요. 서프라이즈는 그 기록된 기준과의 차이이지, 자동으로 토큰에 좋은 뉴스이거나 가격 방향 예측인 것은 아닙니다. 수정된 헤드라인은 원문을 덮어쓰지 말고 새 버전으로 저장하세요.

발표와 수신, 행동 시각을 구분한다

가상의 거래일, USD로 호가되는 가상의 토큰과 가상의 현물 거래소로 예시를 이어 가겠습니다. 시점 설명만을 위해, 최초 발표값이 저장한 전망치를 엄격히 초과하면 토큰 두 개를 사는 규칙을 미리 정했다고 가정합니다. 교육용 규칙이지 경제적 판단에 따른 추천이 아닙니다. 아래의 모든 시계는 UTC로 동기화되었다고 가정합니다.

가상의 시간 순서입니다. 소수점 아래 초는 실제 피드의 측정치가 아닌 가정입니다.
UTC 시각사건
12:00:00.000자료 발표
12:00:02.000수집기가 수신
12:00:02.100결정 완료
12:00:02.300주문이 거래소 도착

가정한 지연은 전달 2.000초, 처리 0.100초, 주문 전송 0.200초로, 발표부터 주문 도착까지 2.300초입니다. 과거 일정에 발표 시각이 적혀 있다는 이유만으로 이 주문을 발표 순간에 낼 수는 없습니다.

실제 연구에서는 시계 오차, 시간대 변환, 타임스탬프 정밀도와 각 필드가 발표·수신·후속 수정 중 무엇을 뜻하는지 기록하세요. 수신 로그가 없다면 지연 시나리오를 명시하고 한계를 표시하세요. 증거가 없다는 사실이 지연이 없다는 증거는 아닙니다.

주문 도착 이후에 가능한 가격을 사용한다

발표 전인 11:59:59.900의 최우선 매도호가는 100.00 USD였다고 하겠습니다. 모델의 도착 시각 12:00:02.300에는 주문이 접근 가능한 100.60 매도호가에 토큰 다섯 개가 있고, 토큰 두 개를 사는 주문이 그 가격에 즉시 전량 체결된다고 가정합니다. 계산을 단순화하기 위한 가상 체결 조건이며, 표시된 호가만으로 실제 체결이 보장되지는 않습니다.

모델의 진입 비용은 수수료 전 2 × 100.60 = 201.20 USD입니다. 이전 호가 100.00을 배정하면 200.00을 기록하여 진입 비용을 1.20 USD 낮게 계산합니다. 과거 호가가 그 체결을 정당화하지는 못합니다. 실제 주문이 나중에 100.00에 체결될 수는 있지만, 시간상 유효한 별도의 체결 근거가 필요합니다.

체결 모델에는 매수·매도 스프레드, 가용 수량과 수수료를 포함하세요. 이미 모의 체결가에 반영한 스프레드나 슬리피지를 다시 차감하지 마세요. 유동성 수업에서는 참고 가격과 체결 가능한 수량을 구분합니다. 이번 계산은 진입 비용만 비교하며 청산 가격, 수익률이나 수익성 주장은 포함하지 않습니다.

기술적 확인에도 같은 시계를 적용한다

규칙이 12:00부터 12:01 UTC 직전까지의 완성된 1분 캔들도 요구한다면, 12:00:02.100에 결정이 끝날 수 없습니다. 구간이 끝나고 완성된 데이터를 수신할 때까지 기다려야 합니다. 그다음에 처리와 주문 전송이 이어집니다.

결정만 뒤로 옮기고 과거 체결가 100.60을 유지하면, 새로 유효한 호가가 뒷받침하지 않는 한 같은 시간 오류를 반복합니다. 캔들에 12:00이라는 라벨이 붙어 있어도 최종 종가가 12:00부터 알려진 것은 아닙니다. 시간 주기 수업에서 이 차이를 설명합니다.

Backtrader의 체결 모델 문서는 한 가지 관례를 보여 줍니다. 검토한 캔들에서 생성된 일반 시장가 주문은 다음 캔들의 시가를 사용합니다. 시뮬레이터의 가정이지 실거래 주문이 그곳에서 체결된다는 증거가 아닙니다. “다음 캔들”이 지연과 유동성 문제를 모두 해결한다고 생각하지 말고 엔진 설정과 데이터 해상도를 확인하세요.

좋은 결과를 보기 전에 실험을 고정한다

결과를 비교하기 전에 이벤트 선택, 서프라이즈 정의, 기술적 조건, 지연, 수량, 종료 규칙과 비용을 적어 두세요. 이벤트만 사용하는 규칙과 기술적 확인까지 요구하는 규칙은 서로 다른 실험이며, 상대 규칙의 더 이른 진입가를 가져올 수 없습니다.

발표 후 크게 움직인 사례만 남기지 말고 미리 정의한 이벤트 목록을 사용하세요. 데이터 누락이나 거래 불가능한 시장 등 제외 사례와 이유도 보관하세요. 개발 구간에서 임계값을 정한 뒤 이후 평가 구간에서는 고정하세요. 그럴듯한 이야기와 깔끔한 시간 순서만으로 거래 우위가 입증되지는 않습니다.

수신이 느리거나 불확실하다면 과거 결과가 가장 좋은 지연을 고르는 대신 명시한 대안들을 시험하세요. 이는 가정에 대한 민감도 분석이지 기록되지 않은 체결의 재구성이 아닙니다.

각 결정을 재구성할 수 있게 만든다

후보 이벤트마다 다음을 보관하세요.

  1. 최초 발표 내용, 버전과 발표 타임스탬프.
  2. 발표 전 전망치 스냅샷과 정확한 비교 규칙.
  3. 수신 시각과 필요한 모든 입력 중 가장 늦은 이용 가능 시각.
  4. 결정 및 주문 도착 시각과 명시된 지연 가정.
  5. 시간상 유효한 호가·체결 근거, 수량, 수수료와 최종 결과 또는 거래하지 않은 이유.

백테스트와 실시간 결과 가이드에서 이렇게 얻은 증거를 평가하는 방법을 설명합니다. 먼저 미래 정보를 빌리지 않고 한 결정을 재구성하세요. 그런 다음 실패한 매매 조건과 미체결 주문까지 포함해 사전에 정의한 전체 표본을 평가하세요.

교육용 내용이며 재정 조언이 아닙니다. 예시의 모든 이벤트, 수치, 시각과 가격은 가정입니다. 올바른 시간 순서는 테스트의 신뢰성을 높이지만 거래 수익을 보장하지 않습니다.