이 글은 특정 종목이나 매매 시점을 추천하는 글이 아닙니다. 백테스트를 조금 더 정직하게 검증하는 방법을 정리한 글입니다.
함정을 알았으니, 이제 덜 밟아보자
지난 글에서 백테스트가 우리를 속이는 세 가지 함정(과최적화, 미래참조, 생존편향)을 봤다. 그럼 이 함정들을 조금이라도 덜 밟으려면 어떻게 검증해야 할까? 완벽한 방법은 없지만, 훨씬 정직하게 시험하는 방법들이 있다. 오늘은 그중 대표적인 두 가지를 살펴보려 한다.
핵심 아이디어 — 안 본 기간으로 시험하라
지난 글에서 과최적화를 “답을 아는 시험지로 100점 맞기”에 비유했다. 그렇다면 해법도 자연스럽게 나온다. 답을 모르는 새 시험지로 실력을 확인하면 된다. 이 발상을 백테스트에 옮긴 것이 ‘표본 밖 검증’이다.

방법은 단순하다. 위 그림의 ①처럼, 과거 데이터를 두 덩어리로 나눈다. 앞부분(학습 구간)에서는 전략을 자유롭게 만들고 다듬는다. 그리고 뒷부분(검증 구간)은 전략을 만들 때 한 번도 건드리지 않고 아껴둔다. 전략이 완성되면, 이 손대지 않은 검증 구간에서 딱 한 번 시험을 본다.
여기서 핵심은, 학습 구간의 성적은 좋아서 당연하다는 것이다(그 기간에 맞게 다듬었으니까). 진짜 실력은 아껴둔 검증 구간의 성적에서 드러난다. 만약 학습 구간에선 화려했는데 검증 구간에선 무너진다면, 그건 과최적화됐다는 강력한 신호다.
📌 표본 내 / 표본 밖 ‘표본 내(in-sample)’는 전략을 만들 때 사용한 기간이고, ‘표본 밖(out-of-sample)’은 만들 때 쓰지 않고 아껴둔 기간이다. 표본 밖 성적이 좋아야 그나마 믿을 만한 전략이라고 볼 수 있다.
한 걸음 더 — 워크포워드
표본 밖 검증을 한 번만 하면, 하필 그 검증 구간이 유난히 좋거나 나빴을 수도 있다. 그래서 이걸 여러 번 반복하는 방법이 워크포워드다.
📌 워크포워드(walk-forward)란? 학습 구간과 검증 구간의 쌍을 시간 축을 따라 조금씩 앞으로 굴려가며, 검증을 여러 번 반복하는 방법이다. 한 번의 운에 기대지 않고, 여러 시기에 걸쳐 전략이 꾸준한지를 확인한다.
위 그림의 ②가 그 모습이다. 학습-검증 한 쌍으로 시험을 보고, 그 창을 조금 앞으로 옮겨 또 시험을 보고, 다시 옮겨 또 본다. 이렇게 여러 시기에서 반복해 검증하면, “어쩌다 한 번 좋았던” 전략과 “여러 시기에 걸쳐 꾸준했던” 전략을 구분할 수 있다. 실전에 훨씬 가까운 검증인 셈이다.
세 가지 방식 비교
| 방법 | 어떻게 하나 | 비유 |
|---|---|---|
| 표본 내만 보기 (위험) | 전략을 만든 기간으로만 채점 | 공부한 문제로만 시험 |
| 표본 밖 검증 | 안 쓴 새 기간으로 시험 | 새 문제로 실력 확인 |
| 워크포워드 | 구간을 굴려가며 여러 번 검증 | 여러 번 새 문제로 확인 |
위로 갈수록 속기 쉽고, 아래로 갈수록 정직하다. 표본 내 성적만 보고 좋아하는 건 가장 위험하고, 워크포워드까지 통과한 전략이 그나마 믿을 만하다.
그래도, 미래는 여전히 미지다
솔직하게 짚고 넘어가고 싶다. 이런 방법들을 다 써도 백테스트가 미래를 보장해주지는 않는다. 검증 구간도 결국은 ‘이미 지나간 과거’이고, 정말로 새로운 시장은 아직 오지 않았기 때문이다. 이 방법들은 미래를 맞히는 도구가 아니라, 덜 속기 위한 안전장치에 가깝다. 그래서 아무리 잘 검증했어도 실전에서는 늘 겸손해야 한다는 게, 내가 이걸 배우며 얻은 마음가짐이다.
정리하며 — 백테스트 이야기를 마치며
백테스트를 정직하게 검증하려면, 전략을 만들 때 쓰지 않은 기간(표본 밖)으로 시험하고, 나아가 그 검증을 여러 시기에 걸쳐 반복(워크포워드)하는 게 좋다. 그래도 미래는 미지의 영역이니, 검증은 확신이 아니라 겸손을 위한 도구로 삼아야 한다.
돌아보면 이번 백테스트 이야기에서 백테스트가 무엇인지, 어떻게 우리를 속이는지, 그리고 어떻게 덜 속을지까지 함께 살펴봤다. 나 역시 이 방법들을 이제 막 손에 익혀가는 중이라, 직접 돌려보며 새로 깨닫는 게 생기면 그때 또 나눠보고 싶다.
※ 이 글은 개인의 학습 과정을 공유하기 위한 것으로, 투자 권유나 자문이 아닙니다. 모든 투자의 판단과 책임은 투자자 본인에게 있습니다.