2026년 11월 10일 · 데이터

백테스트에는 데이터 스냅샷만이 아니라 데이터 변경 로그가 필요합니다

백테스트에는 데이터 스냅샷만이 아니라 데이터 변경 로그가 필요합니다

고정된 시장 데이터 스냅샷만으로는 백테스트를 신뢰할 수 없습니다. 같은 결과를 재현하더라도 그 결과를 만든 입력값이 공급업체에 의해 바뀌었다는 사실은 감출 수 있습니다.

스냅샷은 보관하세요. 그리고 무엇이 언제 바뀌었으며 전략이 그 변화에 영향을 받았는지 알려주는 변경 로그도 남기세요. 수정된 체결 데이터, 개정된 펀더멘털, 재구성된 펀딩 데이터, 또는 공급업체가 조용히 갱신한 과거 데이터를 리서치에 활용한다면 특히 중요합니다.

재현 가능한 백테스트도 왜 오해를 불러일으킬 수 있을까요?

월요일에 5년 치 시간봉 데이터를 내려받아 전략을 실행한다고 가정해 보겠습니다. 금요일에는 공급업체가 잘못된 체결 데이터를 수정하거나, 기업 행사를 반영하거나, 누락 구간을 채웠습니다. 저장해 둔 파일은 여전히 월요일의 결과를 정확히 재현합니다. 재현성은 있는 셈입니다. 하지만 공급업체의 최신 데이터를 받아 다시 실행하면 결과가 달라질 수 있고, 왜 달라졌는지 기록이 없을 수도 있습니다.

문제는 대대적인 수정에만 국한되지 않습니다. 고가 하나만 바뀌어도 스톱이 발동할 수 있고, 수정된 종가 하나가 지표를 임계값 너머로 이동시킬 수 있습니다. 넓은 종목군에서는 한 종목의 과거 데이터가 바뀌어 순위가 달라지고 다른 자산이 포트폴리오에서 밀려날 수도 있습니다. 전략 코드와 설정이 같아도 최종 Sharpe가 달라질 수 있습니다.

파일 해시는 두 파일이 서로 다르다는 사실만 알려줍니다. 주식 분할 조정으로 40년 치 가격이 바뀌었는지, 공급업체가 체결 3건을 수정했는지, 파서가 빈 필드를 0으로 바꿨는지는 알 수 없습니다.

시장 데이터 변경 로그에는 무엇을 기록해야 할까요?

리서치에서 영향을 받은 부분을 다시 실행할 수 있도록 충분한 맥락을 담아, 유용한 최소 단위로 변경 사항을 기록하세요. 봉 데이터 피드라면 보통 종목, 구간, 이벤트 시각, 이전 값과 새 값, 출처, 그리고 업데이트를 확인한 시각을 기록하면 됩니다. 공급업체가 원본 페이로드를 제공한다면 그것도 보관하세요.

기록 항목기록하는 이유예시
출처 버전 또는 조회 시각사용한 공급업체 데이터 상태를 식별합니다스냅샷 조회 시각 2026-11-02 08:15 UTC
변경 필드와 이전 값/새 값실제로 무엇이 바뀌었는지 보여줍니다ETHUSDT 1h 고가: 3,412.10 → 3,418.60
변경 유형데이터 수정과 변환을 구분합니다지연 도착 체결 정정, 분할 조정, 백필
파이프라인 및 스키마 버전출처의 수정과 자체 처리 과정의 변경을 구분합니다Normalizer v7, adjusted-bar schema v3

대규모 데이터셋은 불변 스냅샷을 저장하고 체크섬, 출처 버전, 조회 시각을 담은 간결한 매니페스트를 함께 보관하세요. 바뀐 파티션에는 행 단위 차이 정보를 추가하세요. 이렇게 하면 변경되지 않은 모든 행을 별도의 감사 테이블에 다시 쓰지 않아도 전체 재실행이 가능한 실용적인 방식을 갖출 수 있습니다.

수정 사항이 중요한지 어떻게 측정할까요?

변경된 행의 개수를 세는 데서 그치지 마세요. 동일한 코드, 매개변수, 수수료, 체결 가정을 적용해 이전 데이터와 새 데이터로 영향을 받은 전략을 다시 실행하세요. 의사결정과 결과에 이르는 경로를 비교하세요.

  1. 차이 정보를 바탕으로 영향을 받은 종목과 이벤트 시각을 찾습니다.
  2. 해당 레코드를 사용하는 피처, 시그널, 주문 또는 포트폴리오 비중을 확인합니다.
  3. 룩백 기간과 미결 포지션 상태를 포함해 유효한 최소 구간을 다시 실행합니다.
  4. 주문, 체결, 익스포저, 회전율, 낙폭, 최종 성과를 비교합니다.

예를 들어 공급업체가 1-minute 고가를 $0.02 수정해 백만 개 행에 영향을 줘도 일간 모멘텀 전략의 결과는 달라지지 않을 수 있습니다. 스톱 가격에 해당하는 봉 하나의 수정은 더 큰 영향을 줄 수 있습니다. 변경된 레코드 수는 의사결정에 미친 영향을 가늠하기에 적절하지 않으므로, 의사결정의 변화를 측정하세요.

다음 두 질문은 따로 다루세요. “저장한 데이터로 결과를 재현할 수 있는가?” 그리고 “당시 이 데이터 버전을 전략이 이용할 수 있었는가?” 변경 로그는 두 질문에 모두 답하는 데 도움이 되지만, 두 번째 질문에는 시점별 이용 가능성 기록도 필요합니다.

비용은 얼마나 들며, 언제 도입할 가치가 있을까요?

변경 추적에는 저장 공간, 수집 작업, 운영상의 판단이 추가로 필요합니다. 공급업체가 안정적인 버전을 제공하지 않을 수 있고, 일부 과거 데이터 피드는 명확한 수정 안내 없이 주기적으로 재구축됩니다. 관측하지 못한 변경은 기록할 수 없습니다.

리서치 결론을 바꿀 수 있는 데이터부터 시작하세요. 스톱 로직에 쓰이는 봉 데이터, 기업 행사 조정이 반영된 주식 데이터, 시점별 펀더멘털, 재구성되는 펀딩 또는 미결제약정 시계열이 여기에 해당합니다. 범위가 넓고 안정적인 데이터셋에는 일간 매니페스트와 파티션 체크섬만으로 충분할 수 있습니다. 업데이트가 잦거나 개별 레코드에 따라 매매 결정이 달라지는 데이터에는 필드 단위 차이 정보를 추가하세요.

모든 공급업체 응답을 빠짐없이 영구 보관하면 비용이 커질 수 있고, 당시 출처가 알고 있던 정보까지 담지 못할 수 있다는 비판은 타당합니다. 중요한 데이터와 의사결정에 맞춰 감사 범위를 정하고, 기록의 공백을 문서화하세요. 스냅샷으로 실험을 다시 실행할 수 있습니다. 변경 로그로는 실험 결과가 달라진 이유를 설명할 수 있습니다.

데이터 엔지니어링백테스팅재현성퀀트 리서치
← 전체 글