백테스트 뜻과 함정 — 연 30% 수익률이 거짓말이 되는 지점

“과거 데이터로 돌려보니 연 30% 수익이 나왔습니다.”

이 한 문장을 보면 대부분 솔깃해집니다. 그런데 저는 이런 말을 보면 이제 경계부터 합니다. 1년 넘게 실제 돈으로 자동매매를 돌리면서, 그럴듯한 백테스트가 사람을 어떻게 속이는지 여러 번 겪었거든요.

[30초 요약] 백테스트가 좋게 나오는 건 전략이 좋아서가 아니라, 과거에 맞춰 깎았기 때문일 때가 많습니다. 규칙을 100개 시험하면 그중 몇 개는 순전히 운으로 ‘대박’처럼 보입니다. 진짜 검증은 결과를 보기 전에 규칙을 먼저 정하고, 시험에 안 쓴 기간에서 다시 확인하는 것입니다. 수익 곡선이 화려할수록 오히려 의심하세요.

백테스트는 왜 이렇게 자주 거짓말이 되나

백테스트는 “과거에 이 규칙을 썼다면 어땠을까”를 계산하는 겁니다. 문제는 우리가 과거를 이미 알고 있다는 데 있습니다.

이동평균선을 며칠짜리로 할지, 손절을 몇 %로 할지, 거래량 조건을 어디에 둘지 — 이런 손잡이를 조금씩 돌리면서 “어? 이렇게 하니까 곡선이 예뻐지네” 하고 맞추게 됩니다. 그렇게 나온 결과는 미래를 맞힌 게 아니라, 과거를 외운 것에 가깝습니다.

시험 문제를 미리 보고 답을 외운 학생이 그 시험만 100점 맞는 것과 같습니다. 처음 보는 문제(=미래)에서는 무너집니다. 이걸 과최적화라고 부릅니다.

동전을 1,000명이 던지면 ‘천재’가 한 명 나옵니다

숫자로 보면 확실합니다. 동전을 10번 던져서 10번 다 앞면이 나올 확률은 약 1,024분의 1, 0.1%입니다. 거의 안 나오죠.

그런데 1,000명이 각자 10번씩 던지면 어떻게 될까요. 평균적으로 약 1명은 10번 연속 앞면이 나옵니다. 그 사람을 붙잡고 “당신은 동전의 천재”라고 하면 웃기잖아요. 그냥 1,000분의 1의 운이 걸린 것뿐입니다.

전략도 똑같습니다. 조건을 바꿔가며 100가지, 1,000가지를 돌리면 그중 하나는 반드시 기가 막힌 곡선을 그립니다. 문제는 그게 실력인지, 그 1,000분의 1의 운인지 백테스트 화면만 봐서는 구분이 안 된다는 겁니다. 그리고 사람은 가장 예쁜 곡선 하나만 골라서 “이게 내 전략”이라고 착각합니다.

데이터에는 이미 죽은 종목이 없습니다

또 하나의 함정은 살아남은 것만 본다는 겁니다.

오늘 기준으로 상장된 종목 목록을 놓고 과거 10년을 돌리면, 그 10년 사이에 상장폐지된 회사들은 애초에 목록에 없습니다. 망한 회사를 빼고 “지난 10년 이 종목들 좋았네”라고 하는 건, 살아남은 자만 인터뷰하고 “다들 성공했다”고 결론 내는 것과 같습니다. 이걸 생존편향이라고 합니다. 이것 하나만으로도 수익률이 실제보다 몇 %씩 부풀려집니다.

그래서 저는 결과를 보기 전에 규칙을 못박습니다

제가 실제 시스템을 운용하면서 지키는 원칙은 단순합니다. 규칙을 먼저 정하고, 그다음에 돌린다.

돌려보고 마음에 안 든다고 손잡이를 다시 돌리는 순간, 그건 검증이 아니라 과거 맞추기가 됩니다. 그래서 저는 파라미터를 미리 글로 적어 ‘동결’해 두고, 시험에 한 번도 안 쓴 기간에서 따로 확인합니다. 여기서도 통해야 겨우 믿습니다.

통계적으로 “여러 번 시험한 것치고 이 정도 성과가 운일 확률은 얼마인가”를 보정해서 계산하는 방법도 있습니다(대표적으로 디플레이티드 샤프 지수). 이걸 통과 못 하면 아무리 곡선이 예뻐도 버립니다. 화려한 헤드라인 수익률보다, “이게 운이 아니라는 증거”가 훨씬 중요합니다.

자주 묻는 질문

백테스트 자체가 쓸모없다는 건가요? 아니요. 백테스트는 아이디어를 거르는 데는 유용합니다. 다만 ‘잘 나온 결과’를 믿는 게 아니라, ‘잘 나오게 만든 과정’을 의심하는 도구로 써야 합니다. 좋게 나왔을 때가 가장 위험한 순간입니다.

연 수익률 몇 %면 믿을 만한가요? 숫자 자체로는 판단할 수 없습니다. 같은 30%라도, 규칙을 미리 정해 한 번에 나온 30%와 1,000번 돌려 고른 30%는 완전히 다릅니다. 물어봐야 할 건 수익률이 아니라 “몇 번 시험해서 고른 거냐”입니다.

개인 투자자도 이런 검증이 가능한가요? 가능합니다. 거창한 도구 없이도, 결과를 보기 전에 규칙을 종이에 적어두는 것만으로 절반은 해결됩니다. 자기가 자기를 못 속이게 막는 게 핵심이라, 사실 기술보다 규율의 문제입니다.

함께 읽으면 좋은 글

‘과거 30년을 실제로 돌려본’ 사례는 이동평균선 30년 백테스트에서 방법과 한계까지 공개했습니다. 반등 신호를 성급하게 믿으면 왜 위험한지는 팔로우스루데이 글과도 이어집니다.

좋은 전략보다 먼저 필요한 건, 자기 자신을 속이지 않는 습관입니다.

이 글에서 다룬 세 가지 함정을 코드로 어떻게 걸러내는지 — 사전등록, 교차검증, 다중검정 보정까지 — 전자책 파이썬 주식 스크리너 만들기와 검증 방법의 한 모듈 전체로 정리했습니다. 스크리너를 만드는 법보다 만든 결과를 의심하는 법에 무게를 둔 교재입니다.

※ 본 글은 특정 종목·매매 시점 권유가 아니며, 투자 판단과 결과의 책임은 본인에게 있습니다.

Leave a Comment