백테스트가 당신을 속이는 다섯 가지 방법 — 실제로 당한 사례만 모음
기계 판독: Markdown
백테스트 함정에 대한 글은 많다. 이 글이 다른 점은 하나다 — 전부 우리가 실제로 당한 사례이고, 당시의 잘못된 숫자와 교정 후 숫자를 함께 적는다.
1. 룩어헤드 — 미래를 아는 백테스트
급등주 데이터를 검증하던 중, "급등 전날 종가에 진입"하는 백테스트가 20일 +9.4%p로 나왔다. 문제: 진입 조건에 "급등"이 포함돼 있었다. 급등 전날에 진입하려면 내일 급등할 것을 알아야 한다. 급등 조건을 빼고, 같은 전조(가격 +10%·거래량 2배 동반 상승)가 관측된 모든 시점으로 다시 돌리자 -3.7%p가 됐다. +9.4%p와 -3.7%p의 차이가 룩어헤드 하나의 크기다. 급등주 필승법 백테스트의 상당수가 이 형태다.
2. 표본 불완전 — 데이터가 이미 편향된 경우
급등 종목을 수집하는 데 증권사 랭킹 API를 썼는데, 이 API는 30건 고정 + 정렬 불량이었다. 어떤 날은 급등주 26개 중 16개만 반환됐고, 누락된 종목들 때문에 그날의 "주도 테마" 판정 자체가 틀렸다. 전체 시세 데이터베이스 전수 스캔으로 바꾼 뒤에야 표본이 완전해졌다. 백테스트 이전에, 유니버스가 완전한지부터 검증해야 한다.
3. 단위 함정 — 조용히 1,000배 틀리는 경우
상장주식수 필드가 천주 단위인 것을 놓치고 유통물량을 계산해, 전 종목이 "품절주"로 판정된 적이 있다. 단위 오류는 예외를 던지지 않는다 — 그럴듯하게 틀린 숫자를 조용히 내놓는다. 시가총액이 억원인지 원인지, 수급이 백만원인지 원인지는 테이블마다 다르며, 이것은 문서가 아니라 알려진 종목 하나로 교차 검증해야 잡힌다 (삼성전자 상장주식수는 59억 주다. 591만이 나오면 천주다).
4. 사후 선택 — 연구자의 기억이 만드는 편향
5월에 오른 섹터를 보고 나서 그 섹터들로 전략을 만들고, 5월이 포함된 12년으로 백테스트해 +272%p 개선을 "확인"한 사례 — 별도 편에서 전체를 부검했다. 연도별로 분해하자 개선분은 사실상 2023년 한 해였다. 장기 백테스트의 총수익은 기여의 시간 분포와 함께 봐야 한다.
5. 다중검정 — 충분히 많이 던지면 뭐든 맞는다
파라미터 조합을 수십 개 시험하면 그중 몇 개는 반드시 좋아 보인다 (5% 유의수준에서 100개 중 5개는 우연만으로 통과한다). 우리가 쓰는 방어 규칙 두 가지: 시험한 변형의 전체 목록을 결과와 함께 보존할 것 (좋은 것만 남기지 않기), 그리고 모든 백테스트 표시값의 50%를 기대값으로 병기할 것 — 선택편향·생존편향·비용·레짐 의존을 뭉뚱그린 할인이다. 거칠지만, 이 할인을 견디는 전략만 배치한다.
요약
백테스트의 용도는 "된다"의 증명이 아니라 "확실히 안 된다"의 배제다. 이 시리즈의 기각 판정들이 채택 판정보다 신뢰할 수 있는 이유이기도 하다 — 위 함정들은 대부분 전략을 좋아 보이게 만드는 방향으로 작동하기 때문이다.
데이터 출처
- 자체 검증 파이프라인의 실제 사고·교정 기록 (2026-08)
본 글은 과거 데이터에 대한 검증 결과를 기록한 참고 정보이며, 투자 자문이나 특정 종목의 매매 권유가 아닙니다. 과거의 검증 결과가 미래의 수익을 보장하지 않습니다.