이 글은 특정 종목이나 매매 시점을 추천하는 글이 아닙니다. 백테스트를 볼 때 조심해야 할 개념을 정리한 글입니다.
화려한 곡선일수록 의심해야 한다
지난 글에서 백테스트가 “과거에 이 전략대로 했다면 어땠을까”를 계산해보는 모의실험이라고 했다. 그리고 그 결과가 아무리 아름다워도 미래를 보장하지는 않는다고도 했다.
그런데 문제는, 백테스트가 단순히 “미래를 못 맞히는” 정도가 아니라, 우리를 적극적으로 속이기까지 한다는 점이다. 그것도 아주 그럴듯한 방식으로. 오늘은 그 대표적인 세 가지 함정을 살펴보려 한다. 이걸 알고 나면, 화려한 백테스트 결과를 볼 때 한 번쯤 멈춰 의심하게 될 것이다.
함정 1 — 과최적화: 답을 보고 답을 맞추기
가장 흔하고 위험한 함정이다.
📌 과최적화(overfitting)란? 전략을 과거 데이터에 지나치게 딱 맞도록 다듬는 것을 말한다. 과거에 좋은 결과가 나오게 자꾸 조정하다 보면, 결국 ‘과거에만 완벽하게 맞는’ 전략이 되어버린다. 미래의 새로운 상황에는 오히려 약하다.
비유하자면 이렇다. 이미 답을 아는 시험지를 놓고 답을 맞추면 100점이 나온다. 하지만 그 사람이 진짜 실력이 좋은 건 아니다. 답이 다른 새 시험을 보면 무너진다. 과최적화된 전략이 딱 이렇다. 과거라는 ‘답을 아는 시험지’에는 완벽하지만, 답을 모르는 미래에는 힘을 못 쓴다.
아래 그래프가 그 모습을 보여준다.

파란 선(과최적화된 전략)은 왼쪽 백테스트 구간(과거)에서는 매끄럽게 쭉쭉 오른다. 눈이 번쩍 뜨일 만큼 화려하다. 그런데 오른쪽 실전 구간(실제로 돈을 넣은 미래)으로 넘어가는 순간 힘없이 무너진다. 반면 회색 점선(평범하지만 정직한 전략)은 백테스트 구간에서는 덜 화려했지만, 실전에서도 큰 배신 없이 꾸준하다. 백테스트에서 가장 예뻤던 전략이, 실전에서 가장 크게 무너질 수 있다는 것 — 이게 과최적화의 무서움이다.
함정 2 — 미래참조: 시험 중에 미래를 커닝하기
이건 자기도 모르게 저지르는 실수다.
📌 미래참조(look-ahead bias)란? 백테스트를 할 때, 그 시점에는 실제로 알 수 없었던 미래의 정보를 실수로 사용해버리는 것을 말한다. 과거의 그 순간으로 돌아갔다면 결코 알 수 없었을 정보를, 계산에 슬쩍 끼워 넣는 셈이다.
예를 들어보자. “그날 하루가 다 끝난 뒤에야 알 수 있는 그날의 최종 가격”을 보고, “그날 아침에 샀다”고 계산하면 어떻게 될까? 실제로 아침에는 그날 가격이 어떻게 끝날지 아무도 모른다. 그런데 백테스트에서 이걸 슬쩍 써버리면, 마치 미래를 아는 사람처럼 완벽한 타이밍에 매매한 결과가 나온다. 시험을 보면서 뒷장의 답을 커닝한 것과 같다. 당연히 성적은 비현실적으로 좋아지고, 실전에서는 절대 재현되지 않는다.
함정 3 — 생존편향: 살아남은 것만 보고 판단하기
이건 데이터 자체에 숨은 함정이다.
📌 생존편향(survivorship bias)란? 끝까지 살아남은 것들만 데이터에 남아 있고, 중간에 사라진 것들은 빠져 있어서 생기는 착시다. 실패해서 사라진 사례가 안 보이니, 전체가 실제보다 좋아 보이게 된다.
주식으로 치면 이렇다. 과거 데이터에 ‘지금까지 살아남은 우량 기업’만 들어 있고, 그동안 망해서 상장 폐지된 수많은 기업은 빠져 있다면? 그 데이터로 백테스트를 하면 결과가 실제보다 훨씬 좋게 나온다. 망한 것들을 애초에 계산에서 빼버렸으니까.
더 쉬운 비유도 있다. 성공한 창업가들만 인터뷰해서 “성공 비결”을 뽑는다고 하자. 그런데 똑같은 방법을 썼다가 망한 수천 명은 인터뷰 명단에 아예 없다. 그러니 그 ‘비결’이 정말 효과가 있는지는 알 수 없다. 살아남은 자만 보이고, 사라진 자는 보이지 않는 것 — 이게 생존편향이다.
함정의 크기를 직접 재봤다
여기까지는 “이런 함정이 있다”는 설명이다. 그런데 함정이 있다는 걸 아는 것과, 그 함정이 얼마나 깊은지 아는 건 다르다. 그래서 앞의 두 함정을 내 백테스트에서 일부러 재현해 크기를 재봤다.
과최적화 — 1등 칸에서 한 칸만 옮겨보면
전략에는 보통 조절할 수 있는 값이 몇 개 있다. 예를 들어 ‘지난 몇 개월 수익률을 볼 것인가’ 같은 것이다. 이 값들을 조금씩 바꿔가며 108가지 조합을 전부 돌리고, 성적을 바둑판처럼 늘어놓아 봤다. 그중 1등을 찾으면 이렇다.
| 값 | |
|---|---|
| 1등이 나온 조합 | 지난 3개월을 보고, 신호 문턱은 0.5% |
| 그 조합의 성적(샤프) | 0.96 |
| 바로 옆 칸들 중 최저 성적 | 0.64 |
| 한 칸 옆으로 갔을 때의 낙차 | 0.32 |
이게 과최적화의 실제 모습이다. 1등 칸의 성적(0.96)은 훌륭해 보인다. 그런데 설정을 아주 조금만 바꾸면 0.64까지 떨어진다. ‘3개월’이 아니라 ‘2개월’이나 ‘4개월’을 봤다면 완전히 다른 결론에 도달했을 것이다.
바꿔 말하면 이 1등은 실력이 아니라 지형의 우연이다. 넓고 평평한 언덕 위가 아니라, 뾰족한 바위 꼭대기에 텐트를 친 것이다. 미래에 시장이 조금만 달라지면 그 바위에서 굴러떨어진다. 그래서 나는 백테스트 결과를 볼 때 “1등이 몇 점인가”보다 “옆 칸도 비슷한가”를 먼저 보게 됐다. 이 지도를 자세히 그려본 이야기는 따로 정리해두었다.
미래참조 — 딱 한 달만 커닝해봤다
두 번째 함정은 크기를 재기가 더 재미있었다. 앞에서 예로 든 듀얼 모멘텀 전략을 두 번 돌렸다. 한 번은 정직하게, 그러니까 그달까지의 정보만으로 그달의 판단을 내리게 했다. 다른 한 번은 다음 달에 내릴 판단을 한 달 미리 알고 움직이게 했다. 딱 한 달치만 커닝시킨 것이다.
| 연복리 | 가장 크게 빠진 폭 | 샤프 | 100만 원이 얼마가 되었나 | |
|---|---|---|---|---|
| 정직하게 돌린 백테스트 | 9.2% | -19.8% | 0.79 | 962만 원 |
| 한 달 커닝한 백테스트 | 15.6% | -19.1% | 1.31 | 4,237만 원 |
겨우 한 달이다. 그런데 26년이 지나자 962만 원과 4,237만 원, 4.4배 차이가 났다. 연복리로는 9.2%에서 15.6%로 뛰었다. 세계 최고 수준의 운용 성과처럼 보이는 숫자가, 한 달을 앞당겨 본 것만으로 만들어진 것이다.
무서운 건 이 곡선이 겉보기에 전혀 이상하지 않다는 점이다. 낙폭도 -19.1%로 정직한 쪽(-19.8%)과 거의 같다. 곡선만 보고는 커닝했는지 알 수 없다. 누군가 연 15%짜리 백테스트를 보여준다면, 그게 실력인지 한 달 미리 본 것인지는 코드를 열어보기 전에는 알 수 없다는 뜻이다. 나는 이 실험을 하고 나서야 “백테스트 결과는 코드와 함께 봐야 한다”는 말의 무게를 알았다.
※ 커닝 실험은 함정의 크기를 재려고 일부러 만든 것이다. 평소 이 블로그의 백테스트 엔진은 그 시점까지의 데이터만 전략에 넘기도록 막아두고 있다. 위 숫자는 전부 세금을 빼고 잰 값이고, 실제 매매 상품이 아니라 인덱스펀드를 대신 쓴 결과다.
세 함정 한눈에 정리
| 함정 | 무엇인가 | 한 마디로 |
|---|---|---|
| 과최적화 | 과거에 딱 맞게 과하게 다듬음 | 답을 보고 답 맞추기 |
| 미래참조 | 그때는 몰랐을 정보를 사용 | 시험 중에 미래 커닝 |
| 생존편향 | 살아남은 것만 보고 판단 | 성공한 사람만 조사 |
세 함정에는 공통점이 있다. 하나같이 백테스트 성적을 실제보다 좋아 보이게 만든다는 점이다. 그래서 화려한 결과일수록, 혹시 이 셋 중 하나에 속고 있는 건 아닌지 의심해봐야 한다.
그래서, 어떻게 해야 할까
완벽하게 피하는 방법은 없지만, 태도 하나는 분명하다. 백테스트 결과가 너무 좋으면 기뻐하기 전에 먼저 의심하는 것. “혹시 과거에만 맞게 다듬은 건 아닐까? 미래 정보를 슬쩍 쓴 건 아닐까? 망한 것들이 빠진 데이터는 아닐까?” 이렇게 스스로에게 되묻는 습관만으로도 큰 실수를 줄일 수 있다.
정리하며
백테스트는 과최적화, 미래참조, 생존편향이라는 세 가지 방식으로 우리를 속인다. 셋 다 결과를 실제보다 좋아 보이게 만들기 때문에, 화려한 곡선일수록 더 조심해야 한다.
그럼 이런 함정들을 조금이라도 덜 밟으려면 어떻게 검증해야 할까. 전략을 좀 더 정직하게 시험하는 방법들이 있다고 하는데, 나도 아직 손에 익히는 중이다. 더 이해가 쌓이면 그 방법들도 하나씩 정리해보고 싶다.
※ 이 글은 개인의 학습 과정을 공유하기 위한 것으로, 투자 권유나 자문이 아닙니다. 모든 투자의 판단과 책임은 투자자 본인에게 있습니다.