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

방법은 단순하다. 위 그림의 ①처럼, 과거 데이터를 두 덩어리로 나눈다. 앞부분(학습 구간)에서는 전략을 자유롭게 만들고 다듬는다. 그리고 뒷부분(검증 구간)은 전략을 만들 때 한 번도 건드리지 않고 아껴둔다. 전략이 완성되면, 이 손대지 않은 검증 구간에서 딱 한 번 시험을 본다.
여기서 핵심은, 학습 구간의 성적은 좋아서 당연하다는 것이다(그 기간에 맞게 다듬었으니까). 진짜 실력은 아껴둔 검증 구간의 성적에서 드러난다. 만약 학습 구간에선 화려했는데 검증 구간에선 무너진다면, 그건 과최적화됐다는 강력한 신호다.
📌 표본 내 / 표본 밖 ‘표본 내(in-sample)’는 전략을 만들 때 사용한 기간이고, ‘표본 밖(out-of-sample)’은 만들 때 쓰지 않고 아껴둔 기간이다. 표본 밖 성적이 좋아야 그나마 믿을 만한 전략이라고 볼 수 있다.
한 걸음 더 — 워크포워드
표본 밖 검증을 한 번만 하면, 하필 그 검증 구간이 유난히 좋거나 나빴을 수도 있다. 그래서 이걸 여러 번 반복하는 방법이 워크포워드다.
📌 워크포워드(walk-forward)란? 학습 구간과 검증 구간의 쌍을 시간 축을 따라 조금씩 앞으로 굴려가며, 검증을 여러 번 반복하는 방법이다. 한 번의 운에 기대지 않고, 여러 시기에 걸쳐 전략이 꾸준한지를 확인한다.
위 그림의 ②가 그 모습이다. 학습-검증 한 쌍으로 시험을 보고, 그 창을 조금 앞으로 옮겨 또 시험을 보고, 다시 옮겨 또 본다. 이렇게 여러 시기에서 반복해 검증하면, “어쩌다 한 번 좋았던” 전략과 “여러 시기에 걸쳐 꾸준했던” 전략을 구분할 수 있다. 실전에 훨씬 가까운 검증인 셈이다.
세 가지 방식 비교
| 방법 | 어떻게 하나 | 비유 |
|---|---|---|
| 표본 내만 보기 (위험) | 전략을 만든 기간으로만 채점 | 공부한 문제로만 시험 |
| 표본 밖 검증 | 안 쓴 새 기간으로 시험 | 새 문제로 실력 확인 |
| 워크포워드 | 구간을 굴려가며 여러 번 검증 | 여러 번 새 문제로 확인 |
위로 갈수록 속기 쉽고, 아래로 갈수록 정직하다. 표본 내 성적만 보고 좋아하는 건 가장 위험하고, 워크포워드까지 통과한 전략이 그나마 믿을 만하다.
실제로 반으로 접어 채점해보니
이 방법들이 정말 통하는지, 내 백테스트로 직접 해봤다. 전략 설정을 조금씩 바꾼 117가지 후보를 만들고, 26년을 절반으로 접었다. 앞의 절반(2013년 6월까지)에서 성적을 매겨 등수를 정하고, 뒤의 절반에서 다시 채점해 등수가 얼마나 유지되는지 봤다.
| 결과 | |
|---|---|
| 시험한 후보 수 | 117가지 |
| 앞 절반 등수와 뒤 절반 등수의 상관 | 0.14 |
| 앞 절반에서 17등이던 후보 | 뒤 절반에서 106등 (89계단 추락) |
0.14. 1에 가까우면 앞의 등수가 뒤의 등수를 잘 맞힌다는 뜻이고, 0이면 아무 관계가 없다는 뜻이다. 0.14는 사실상 앞 절반의 등수가 뒤 절반을 거의 알려주지 않는다는 얘기다. 앞에서 17등이던 후보가 뒤에서는 117개 중 106등으로 주저앉기도 했다.
이 숫자를 처음 봤을 때 좀 허탈했다. 표본 밖 검증을 하면 좋은 전략을 골라낼 수 있을 거라 기대했는데, 실제로는 고르는 일 자체가 잘 안 된다는 걸 확인한 셈이었으니까.
그래도 하나는 살아남았다
다만 전부 무너진 건 아니다. 후보들을 두 부류로 갈라보니 뚜렷한 차이가 있었다.
| 후보 유형 | 앞 절반 평균 성적 | 뒤 절반 평균 성적 |
|---|---|---|
| 설정 하나로 못 박은 것 (108가지) | 0.78 | 0.78 |
| 여러 설정을 섞어 평균 낸 것 (9가지) | 0.99 | 0.92 |
하나의 설정을 고른 후보들은 앞뒤 모두 0.78로 평범했다. 반면 여러 설정을 섞어 쓴 후보들은 앞 0.99, 뒤 0.92로 양쪽 다 높았다. 즉 잘 고르려고 애쓰는 것보다 아예 덜 고르는 쪽이 안 본 기간에서 더 강했다. 이건 내가 전혀 예상하지 못한 결론이었다.
워크포워드는 오히려 졌다
한 걸음 더 나가, 앞에서 설명한 워크포워드를 실제 투자자처럼 흉내내봤다. 매년 직전 5년간 성적이 가장 좋았던 설정으로 갈아타며 21년을 굴려본 것이다. 가장 성실한 검증 방식이니 당연히 이길 줄 알았다.
| 연복리 | 가장 크게 빠진 폭 | 샤프 | |
|---|---|---|---|
| 매년 1등으로 갈아타기 | 9.5% | -24.3% | 0.81 |
| 아무것도 안 하고 계속 들고 있기 | 10.8% | -24.4% | 0.92 |
졌다. 직전 5년의 1등을 부지런히 좇아다닌 쪽이, 처음 정한 걸 그냥 들고 간 쪽보다 연 1.3%p 뒤졌다. 21년 동안 8번 갈아탔는데 그때마다 한 박자씩 늦었던 것이다. 백미러를 보며 운전하면 굽이마다 늦는다는 말이 이런 뜻이었다.
그래서 지금 내 결론은 이렇다. 표본 밖 검증은 좋은 전략을 찾아주는 도구가 아니라, 나쁜 전략을 걸러내는 도구에 가깝다. 통과했다고 좋은 게 아니라, 통과 못 하면 확실히 나쁜 것이다. 이 실험을 자세히 적은 글은 여기에, ‘그럼 이 숫자들에는 운이 얼마나 섞여 있나’를 따져본 글은 여기에 있다.
※ 위 숫자는 실제 매매 상품(ETF)이 아니라 2000년까지 거슬러 올라가는 인덱스펀드를 대신 쓴 결과다. 배당은 재투자로 반영했고 매매 비용도 물렸지만 세금은 빼고 쟀다. 월말 종가로 관측했기 때문에 달 중간에 더 깊이 빠졌던 구간은 이 표에 잡히지 않는다. 한 기간·한 구성에서 나온 결과일 뿐이다.
그래도, 미래는 여전히 미지다
솔직하게 짚고 넘어가고 싶다. 이런 방법들을 다 써도 백테스트가 미래를 보장해주지는 않는다. 검증 구간도 결국은 ‘이미 지나간 과거’이고, 정말로 새로운 시장은 아직 오지 않았기 때문이다. 이 방법들은 미래를 맞히는 도구가 아니라, 덜 속기 위한 안전장치에 가깝다. 그래서 아무리 잘 검증했어도 실전에서는 늘 겸손해야 한다는 게, 내가 이걸 배우며 얻은 마음가짐이다.
정리하며 — 백테스트 이야기를 마치며
백테스트를 정직하게 검증하려면, 전략을 만들 때 쓰지 않은 기간(표본 밖)으로 시험하고, 나아가 그 검증을 여러 시기에 걸쳐 반복(워크포워드)하는 게 좋다. 그래도 미래는 미지의 영역이니, 검증은 확신이 아니라 겸손을 위한 도구로 삼아야 한다.
돌아보면 이번 백테스트 이야기에서 백테스트가 무엇인지, 어떻게 우리를 속이는지, 그리고 어떻게 덜 속을지까지 함께 살펴봤다. 나 역시 이 방법들을 이제 막 손에 익혀가는 중이라, 직접 돌려보며 새로 깨닫는 게 생기면 그때 또 나눠보고 싶다.
※ 이 글은 개인의 학습 과정을 공유하기 위한 것으로, 투자 권유나 자문이 아닙니다. 모든 투자의 판단과 책임은 투자자 본인에게 있습니다.