실전 운용
백테스트의 함정
E
엘리트시그널 운영팀
한 줄 정의
백테스트는 매매 규칙을 과거 데이터에 적용해 성과를 계산해 보는 것이다. 유용하지만, 과거를 이미 아는 상태에서 만들어지기 때문에 실제보다 좋게 나오는 방향으로 오차가 생기기 쉽다. 그 오차가 어디서 생기는지 아는 것이 백테스트를 읽는 능력이다.
3과정에서 사이징·손익비·비용을 계산하는 법을 봤습니다. 이 계산을 과거에 적용해 검증할 때 반드시 생기는 오류들이 있습니다. 이걸 모르면 “검증했다”는 말이 오히려 판단을 흐립니다.
이 가이드에서 다루는 내용
- 과최적화가 거의 언제나 성공하는 이유
- 미래 참조 — 그 시점에 없던 정보를 쓰는 오류
- 비용을 빼먹으면 결과가 얼마나 달라지는가
- 타인의 성과 자료에서 확인해야 할 것들
백테스트란 무엇인가
“20일선을 위로 넘으면 사고 아래로 뚫으면 판다” 같은 규칙을 정해 놓고 과거 데이터에 그대로 적용해 결과를 세는 일입니다. 규칙이 명확해야 가능합니다.
참고
“차트를 보면서 여기서 샀을 것 같다”는 백테스트가 아닙니다. 결과를 알고 보는 상태에서는 진입 지점이 항상 좋아 보입니다. 규칙을 글로 적을 수 없다면 검증할 수도 없습니다.
과최적화 — 답을 보고 맞춘다
설정값을 바꿔 가며 과거에 가장 잘 맞는 조합을 찾으면 반드시 찾아집니다. 문제는 찾아진다는 사실 자체가 아무것도 증명하지 않는다는 점입니다.
조합을 늘릴수록 '잘 맞는 값'은 반드시 나온다
맞춘 구간과 그 이후
TIP
과최적화를 줄이는 표준적인 방법은 데이터를 나누는 것입니다. 앞 기간으로 설정을 정하고,한 번도 보지 않은 뒤 기간에 그대로 적용해 봅니다. 뒤 기간에서 성적이 무너지면 그 설정은 과거에만 맞춰진 것입니다.
미래 참조 — 그때는 몰랐던 정보
그 시점에는 알 수 없었던 값을 계산에 넣는 오류입니다. 의도하지 않아도 자주 생깁니다.
종가는 장이 끝나야 확정된다
- 고가·저가를 이용하는 규칙 — “그날 저가에 샀다면”은 검증이 아닙니다. 저가는 하루가 끝나야 알 수 있습니다.
- 지금 상장된 종목만 쓰는 것 — 그 사이 상장폐지된 종목이 빠져 있으면 결과가 실제보다 좋게 나옵니다.
비용을 빼먹는다
앞 편에서 본 수수료·슬리피지·펀딩비를 넣지 않으면 결과가 크게 달라집니다. 특히 매매 횟수가 많은 규칙에서 그렇습니다.
같은 규칙, 비용 반영 전후
고른 것만 보여준다
가장 알아채기 어려운 문제입니다. 전체가 아니라 일부만 집계하면 결과가 실제와 달라집니다.
- 성공한 건만 기록에 남는 경우 — 목표에 도달한 매매는 정리되어 기록되고, 아직 손실 중인 매매는 ‘진행 중’으로 남아 집계에서 빠지면 승률이 실제보다 높아집니다.
- 기간을 골라 보여주는 경우 — 상승장 구간만 잘라 내면 어떤 규칙이든 성적이 좋습니다. 하락장을 포함했는지가 핵심입니다.
- 여러 규칙 중 잘된 하나만 — 열 개를 돌려 보고 제일 좋은 하나를 제시하면, 그건 검증이 아니라 선택입니다.
주의
이 문제는 남을 판단할 때만이 아니라 자기 기록을 볼 때도 생깁니다. 손실 중인 포지션을 ‘아직 안 판 것’으로 두고 수익 난 것만 세면, 스스로 만든 통계에 스스로 속게 됩니다.
성과 자료를 읽는 법
어떤 성과 자료를 보든 다음을 확인할 수 있어야 판단이 가능합니다. 확인할 수 없다면 “정보가 부족하다”고 결론 내리는 것이 맞습니다.
성과 자료 확인 항목
- 집계 기간에 하락장이 포함되어 있는가
- 전체 건수가 공개되어 있는가 (일부만 고른 것은 아닌가)
- 손실 건도 함께 집계되어 있는가
- 평균 수익과 평균 손실이 각각 제시되어 있는가 (승률만으로는 알 수 없다)
- 최대 손실 구간(연속 손실·최대 낙폭)이 제시되어 있는가
- 수수료와 슬리피지가 반영되어 있는가
참고
승률만 제시된 자료는 판단 근거가 되지 못합니다. 손익비 편에서 봤듯이 승률 90%도 손실일 수 있습니다. 평균 손실 대비 평균 수익이 함께 있어야 계산이 가능합니다.
정리
- 백테스트는 유용하지만 실제보다 좋게 나오는 방향으로 오차가 생긴다.
- 조합을 늘리면 잘 맞는 설정은 반드시 나온다. 그건 증명이 아니다.
- 보지 않은 기간에 적용해 봐야 과최적화를 걸러낼 수 있다.
- 종가·저가처럼 그 시점에 몰랐던 값을 쓰면 검증이 아니다.
- 수수료·슬리피지를 넣으면 수익이 손실로 바뀌는 규칙이 흔하다.
- 성과 자료는 기간·전체 건수·평균 손익·최대 낙폭을 확인한다. 승률만으로는 부족하다.