과거 데이터에 날짜가 붙어 있으면 그날 이미 알 수 있던 정보처럼 다루기 쉽다. 하지만 거래일, 경제활동이 일어난 기간, 발표일과 시스템이 자료를 받은 시점은 다를 수 있다.
현재 내려받은 과거 자료에는 나중에 수정된 값도 들어갈 수 있다. 전략이 당시의 판단을 재현하는지 보려면 값뿐 아니라 그 값을 언제 알 수 있었는지 확인해야 한다.
백테스트에 들어가는 정보는 과거의 날짜가 아니라 실제 사용 가능 시점으로 제한해야 한다.
1. 관측 시점과 공개 시점을 나눈다
지난 분기의 실적은 분기 말에 관측 기간이 끝나지만 발표는 그 이후에 이루어진다. 분기 날짜에 맞추어 실적을 붙이면 아직 발표되지 않은 값을 이용할 수 있다.
가상 지표가 6월 활동을 측정하고 7월 10일 오전에 발표되었다면, 6월 말 판단에는 넣을 수 없다. 실제 거래 판단에는 발표 시각과 거래소 시간대까지 확인한다.
2. 현재의 수정본과 당시 발표본을 구분한다
경제지표는 최초 발표 이후 값이 수정될 수 있다. 지금의 최종 자료로 과거를 계산하면 당시의 투자자가 접한 값과 다를 수 있다.
세인트루이스 연준의 ALFRED 안내는 특정 과거 시점에 이용 가능했던 경제자료를 빈티지별로 찾는 방법을 설명한다. 시리즈별 과거 자료의 제공 범위도 따로 확인해야 한다.
최신 자료로 잘 설명되는 과거와 당시 자료로 판단할 수 있었던 과거는 구분해야 한다. 최종값만 확보한 연구라면 그 제한을 결과에 적는다.
3. 공개되어도 시스템에 바로 들어온 것은 아니다
발표를 알고 있는 시각과 데이터 제공사가 전달한 시각, 저장·검증이 끝난 시각이 다를 수 있다. 신호 계산이 어느 시각의 값을 사용했는지 기록한다.
정밀한 단기 전략일수록 이 차이가 중요할 수 있다. 반대로 일간 연구에서도 발표가 장 마감 전인지 후인지에 따라 사용할 수 있는 거래 시점이 달라진다.
4. 자료를 합칠 때 미래의 행을 끌어오지 않는다
가격 자료와 실적 자료를 합칠 때 날짜가 가장 가깝다는 이유로 미래 발표값을 붙이지 않는다. 판단 시점 이전에 공개·수신된 최신 자료가 무엇인지 기준을 정한다.
거래시간 밖의 발표, 공휴일, 시간대 변환과 누락 자료를 어떻게 처리했는지 남긴다. 자료 결합 규칙은 전략의 입력 조건이다. 계산 코드가 오류 없이 돌아갔다는 사실만으로 정보 시점이 올바른 것은 아니다.
5. 결과와 함께 정보의 이력을 보관한다
원본 파일의 버전, 수집 시각, 공개 시각의 출처, 수정본 여부와 적용 규칙을 남긴다. 과거 발표본을 확보하지 못했다면 그 부분을 확인되지 않은 상태로 둔다.
좋은 과거 검증은 수익 곡선과 함께 당시 무엇을 알 수 있었는지를 설명한다. 정보의 이력을 남기면 신호가 바뀐 이유가 시장인지 자료 수정인지도 추적하기 쉽다.
적용해 볼 질문
이 값의 관측 기간과 최초 공개 시점은 각각 언제인가?
당시 발표본과 현재 수정본 중 무엇을 사용했는가?
판단 시각보다 뒤에 들어온 정보가 자료 결합 과정에 섞이지 않았는가?
