백테스트는 합격증이 아니라 점검 도구다
좋은 백테스트 결과를 보면 마음이 급해진다. 연평균 수익률이 높고, 그래프가 우상향하며, 몇 번의 하락도 금방 회복한 것처럼 보인다. 그러나 백테스트는 전략이 미래에도 돈을 벌 것이라는 보증서가 아니다. 더 정확히 말하면, 백테스트는 "이 아이디어가 과거 데이터에서 어떤 모습이었는지 확인하는 실험 도구"다.
실전 투자 전에 해야 할 일은 수익률 숫자를 믿는 것이 아니라, 그 숫자가 얼마나 믿을 만한지 따져보는 것이다. 백테스트가 좋아 보일수록 더 차갑게 확인해야 한다. 데이터 시점이 맞는지, 비용을 반영했는지, 실제로 매매할 수 있는 전략인지, 특정 기간에만 운 좋게 맞은 것은 아닌지 점검해야 한다.
다음 체크리스트는 전략을 실행하기 전 최소한으로 확인해야 할 기준이다. 모든 항목을 완벽하게 만족시키기는 어렵다. 중요한 것은 어떤 약점이 있는지 알고 실행하는 것이다.
AI 생성 이미지
1. 데이터 시점과 편향 점검
백테스트에서 가장 위험한 오류는 미래 정보를 과거에 알고 있었다고 가정하는 것이다. 이 오류가 들어가면 전략은 실제보다 훨씬 좋아 보인다.
| 점검 항목 | 확인 질문 |
|---|---|
| 미래 데이터 사용 | 매수 시점에 실제로 알 수 없었던 정보를 사용하지 않았는가? |
| 재무 데이터 시점 | 실적 발표일 이전의 재무제표 수치를 사용하지 않았는가? |
| 수정주가 처리 | 배당, 액면분할, 병합 등이 가격 데이터에 적절히 반영되었는가? |
| 생존자 편향 | 현재 살아남은 종목만으로 과거를 테스트하지 않았는가? |
| 상장폐지 종목 | 과거에 사라진 종목을 제외해 성과가 부풀려지지 않았는가? |
| 종목 유니버스 | 당시 실제로 투자 가능했던 종목군을 사용했는가? |
특히 가치 전략과 팩터 전략은 재무 데이터 시점 오류에 취약하다. 예를 들어 2024년 말 재무제표가 2025년 3월에 발표되었다면, 2025년 1월 리밸런싱에서 그 값을 사용할 수 없다. 코드에서는 보통 shift()나 발표일 기준 병합을 통해 데이터가 한 박자 늦게 반영되도록 처리해야 한다.
생존자 편향도 조심해야 한다. 현재 대형 우량주만 모아 10년 전부터 테스트하면 과거에 탈락한 기업은 보이지 않는다. 이는 마치 시험에서 틀린 답안지를 버리고 맞은 답안지만 채점하는 것과 비슷하다.
2. 리밸런싱과 매매 시점 점검
전략 규칙이 좋아도 매매 시점이 잘못 설정되면 결과가 왜곡된다. 신호를 만든 날 바로 같은 종가에 매수하는 코드는 흔한 오류다. 현실에서는 장 마감 후 신호를 알았다면 다음 거래일 시가나 종가에 매매하는 것이 더 자연스럽다.
신호 생성 시점과 실제 매매 시점이 분리되어 있는가?
오늘 종가로 계산한 신호를 오늘 종가 매매에 사용하지 않았는가?
월말 리밸런싱이라면 실제 매수 가격은 다음 거래일 가격으로 처리했는가?
리밸런싱 주기와 보유 기간이 명확한가?
종목 교체 시 기존 종목 매도와 신규 종목 매수 순서가 일관적인가?
현금 비중, 미체결, 거래 불가 종목 처리 기준이 있는가?
리밸런싱 주기는 전략의 성격과 맞아야 한다. 단기 모멘텀 전략은 월간 또는 주간 리밸런싱이 필요할 수 있다. 반면 가치 전략은 너무 자주 갈아타면 거래비용만 커지고 지표의 의미가 약해진다. 중요한 것은 "성과가 좋아 보이는 주기"를 나중에 고르는 것이 아니라, 전략 논리에 맞는 주기를 먼저 정하는 것이다.
3. 거래비용, 세금, 슬리피지 점검
백테스트에서 비용을 빼지 않으면 거의 모든 전략이 좋아 보인다. 그러나 실전에서는 매수와 매도마다 비용이 발생한다. 수수료, 세금, 호가 차이, 체결 가격 불리함이 모두 수익률을 깎는다.
| 비용 항목 | 의미 | 점검 기준 |
|---|---|---|
| 수수료 | 증권사 거래 수수료 | 매수·매도 양쪽에 반영 |
| 세금 | 매도 시 부과되는 세금 등 | 시장별 제도에 맞게 반영 |
| 슬리피지 | 예상 가격과 실제 체결 가격의 차이 | 거래대금이 작은 종목일수록 보수적으로 반영 |
| 스프레드 | 매수호가와 매도호가의 차이 | 유동성이 낮은 종목에서 중요 |
| 시장충격 | 내 주문 때문에 가격이 움직이는 효과 | 운용 금액이 커질수록 중요 |
초보자는 처음에 단순하게 시작해도 된다. 예를 들어 매수와 매도마다 각각 0.05% 또는 0.1% 비용을 가정하고 테스트할 수 있다. 중요한 것은 비용을 0으로 두지 않는 것이다.
회전율도 함께 봐야 한다. 연 30% 수익률 전략이라도 매일 종목을 바꾸면 비용을 반영한 뒤 수익이 사라질 수 있다. 반대로 연 12% 수익률 전략이라도 거래가 적고 낙폭이 작다면 실전에서는 더 오래 유지하기 쉽다.
4. 유동성과 실제 매매 가능성 점검
백테스트는 원하는 가격에 원하는 수량을 모두 살 수 있다고 가정하기 쉽다. 하지만 실제 시장은 그렇지 않다. 거래량이 적은 종목은 매수 자체가 어렵고, 매도할 때 가격이 크게 밀릴 수 있다.
종목별 평균 거래대금을 확인했는가?
내 주문 금액이 하루 거래대금 대비 너무 크지 않은가?
상한가, 하한가, 거래정지 같은 예외 상황을 고려했는가?
소형주 전략이라면 슬리피지를 더 크게 가정했는가?
리밸런싱 당일 모든 종목을 실제로 교체할 수 있는가?
운용 금액이 커져도 전략이 유지될 수 있는가?
예를 들어 하루 거래대금이 5억 원인 종목에 1억 원을 투자하는 전략은 숫자로는 가능해 보여도 실제로는 가격에 영향을 줄 수 있다. 특히 여러 투자자가 비슷한 전략을 사용하면 체결 조건은 더 나빠질 수 있다.
따라서 백테스트 결과에는 "이 전략은 어느 정도 규모까지 가능한가?"라는 질문이 따라와야 한다. 작은 계좌에서는 가능하지만 큰 자금에는 맞지 않는 전략도 있다.
5. 성과 지표 점검
전략 평가는 수익률 하나로 끝나지 않는다. 수익률이 높아도 낙폭이 너무 크면 유지하기 어렵다. 승률이 높아도 한 번의 손실이 모든 수익을 지울 수 있다. 여러 지표를 함께 봐야 한다.
| 지표 | 확인할 것 |
|---|---|
| 누적 수익률 | 전체 기간 동안 자산이 얼마나 증가했는가 |
| 연평균 수익률 | 기간 차이를 고려했을 때 평균 성과가 어떤가 |
| 변동성 | 수익률이 얼마나 크게 흔들렸는가 |
| MDD | 고점 대비 최대 손실이 얼마나 컸는가 |
| 샤프 비율 | 감수한 변동성 대비 보상이 충분했는가 |
| 승률 | 전체 거래 중 이긴 거래의 비율은 어떤가 |
| 손익비 | 이길 때 평균 이익과 질 때 평균 손실의 비율은 어떤가 |
| 회복 기간 | 큰 손실 이후 전고점을 회복하는 데 얼마나 걸렸는가 |
| 회전율 | 포트폴리오가 얼마나 자주 바뀌는가 |
MDD와 회복 기간은 특히 중요하다. 50% 손실이 나면 원금을 회복하려면 100% 수익이 필요하다. 숫자로는 단순해 보이지만, 실제 투자자는 그 기간 동안 불안과 의심을 견뎌야 한다. 전략이 아무리 합리적이어도 투자자가 버티지 못하면 실행 가능한 전략이 아니다.
샤프 비율도 맹신하면 안 된다. 수익률 분포가 안정적이고 정규분포에 가깝다는 가정이 깔려 있기 때문이다. 금융 시장에서는 큰 손실이 갑자기 발생할 수 있다. 따라서 샤프 비율은 참고 지표로 보되, MDD, 월별 수익률, 최악의 구간을 함께 확인해야 한다.
6. 벤치마크와 비교하기
전략이 수익을 냈다고 해서 좋은 전략은 아니다. 같은 기간에 시장지수가 더 많이 올랐다면 굳이 복잡한 전략을 사용할 이유가 약해진다. 전략은 반드시 벤치마크와 비교해야 한다.
적절한 벤치마크를 정했는가?
단순 매수 후 보유 전략과 비교했는가?
같은 기간, 같은 통화, 같은 비용 가정으로 비교했는가?
상승장뿐 아니라 하락장에서도 비교했는가?
초과수익이 특정 몇 개월에만 집중되어 있지 않은가?
전략의 위험이 벤치마크보다 과도하게 크지 않은가?
국내 대형주 전략이라면 코스피200, 미국 대형주 전략이라면 S&P 500 같은 지수를 벤치마크로 삼을 수 있다. 여러 자산을 섞은 포트폴리오라면 주식과 현금, 채권 비중을 반영한 혼합 벤치마크가 더 적절할 수 있다.
중요한 질문은 이것이다. "이 전략이 시장을 단순히 보유하는 것보다 나은 이유가 있는가?" 수익률이 조금 높지만 낙폭이 훨씬 크고 거래도 많다면 좋은 전략이라고 보기 어렵다.
7. 과최적화와 강건성 점검
과최적화는 과거 데이터에 너무 잘 맞춘 전략이다. 이동평균 17일과 43일 조합이 가장 좋았다고 해서 그 숫자가 미래에도 특별한 의미를 갖는 것은 아니다. 단지 과거의 우연을 찾아낸 것일 수 있다.
다음 질문을 확인하자.
파라미터를 너무 많이 바꾸며 가장 좋은 조합만 고르지 않았는가?
비슷한 파라미터에서도 성과가 어느 정도 유지되는가?
학습 기간과 테스트 기간을 나누어 검증했는가?
다른 시장, 다른 종목군, 다른 기간에서도 비슷한 경향이 있는가?
코로나19, 금융위기, 금리 급등기 같은 스트레스 구간을 따로 확인했는가?
전략의 성과가 한두 종목이나 한두 거래에 지나치게 의존하지 않는가?
좋은 전략은 특정 숫자 하나에만 의존하지 않는다. 예를 들어 6개월 모멘텀은 잘 되는데 5개월과 7개월 모멘텀은 완전히 망가진다면 조심해야 한다. 전략 논리가 튼튼하다면 주변 조건에서도 비슷한 방향의 결과가 나오는 경우가 많다.
8. 전략 설명 가능성 점검
실전에서 오래 유지할 수 있는 전략은 설명 가능해야 한다. 여기서 설명 가능하다는 말은 복잡한 수학을 쓰지 말라는 뜻이 아니다. 전략이 왜 작동할 수 있는지, 언제 약해질 수 있는지, 어떤 시장에서 손실이 날 수 있는지 말할 수 있어야 한다는 뜻이다.
이 전략의 핵심 가설을 한 문장으로 설명할 수 있는가?
어떤 투자자 행동이나 시장 구조에서 수익 기회가 생기는가?
전략이 잘되는 시장과 안 되는 시장을 구분할 수 있는가?
손실이 났을 때 전략 실패인지 정상적인 변동인지 판단할 기준이 있는가?
AI가 만든 규칙이라도 사람이 이해하고 검증했는가?
"백테스트가 좋으니까 한다"는 설명으로는 부족하다. 예를 들어 모멘텀 전략이라면 "최근 강한 종목에는 정보 반영 지연과 투자자 추종 매수가 이어질 수 있다"는 식의 설명이 있어야 한다. 가치 전략이라면 "시장 비관으로 과도하게 싸진 기업이 시간이 지나 재평가될 수 있다"는 논리가 있어야 한다.
설명이 없는 전략은 손실 구간에서 쉽게 버려진다. 반대로 설명 가능한 전략은 손실이 나도 점검할 기준이 생긴다.
9. 최종 실행 판단표
마지막에는 전략을 세 단계로 나누어 판단한다. 바로 실전 투입, 소액 관찰, 보류다.
| 판단 | 조건 | 행동 |
|---|---|---|
| 실행 가능 | 데이터 오류가 없고, 비용 반영 후에도 벤치마크 대비 의미 있는 성과가 있으며, 실전 매매가 가능함 | 소액으로 시작하고 투자 일지를 남긴다 |
| 소액 관찰 | 성과는 괜찮지만 일부 가정이 약하거나 기간이 짧음 | 모의투자 또는 매우 작은 금액으로 추적한다 |
| 보류 | 미래 데이터 사용, 비용 미반영, 과최적화, 유동성 문제 중 하나가 치명적임 | 전략을 수정하거나 폐기한다 |
실전 투입을 결정하더라도 처음부터 큰 금액을 넣지 않는다. 백테스트와 실전은 다르다. 실제 체결, 심리, 세금, 시장 상황 변화가 모두 영향을 준다. 좋은 전략일수록 오래 관찰하며 천천히 키우는 편이 낫다.
한 장짜리 최종 체크리스트
전략 실행 전, 아래 항목에 모두 답해보자.
매수 시점에 알 수 없는 미래 데이터를 사용하지 않았다.
재무 데이터와 뉴스 데이터의 발표 시점을 반영했다.
생존자 편향을 줄이기 위해 당시 투자 가능 종목군을 확인했다.
신호 생성일과 실제 매매일을 분리했다.
수수료, 세금, 슬리피지를 반영했다.
거래대금과 유동성을 확인했다.
벤치마크와 같은 기간으로 비교했다.
누적 수익률뿐 아니라 MDD, 변동성, 샤프 비율, 회복 기간을 확인했다.
상승장, 하락장, 횡보장에서 각각 성과를 살펴봤다.
파라미터를 바꿔도 성과가 지나치게 무너지지 않는다.
전략의 핵심 가설을 한 문장으로 설명할 수 있다.
손실이 났을 때 중단할 기준과 유지할 기준이 있다.
AI가 작성한 코드라면 계산 과정과 인덱스 정렬을 직접 확인했다.
실전에서는 먼저 소액 또는 모의투자로 검증할 계획이 있다.
백테스트의 목적은 완벽한 전략을 찾는 것이 아니다. 나쁜 아이디어를 걸러내고, 좋은 아이디어의 약점을 미리 보는 것이다. 시장은 언제나 변한다. 그래서 투자자는 예언자가 아니라 실험가에 가까워야 한다. 좋은 체크리스트는 수익률을 높여주기보다, 큰 실수를 줄여준다. 그리고 장기적으로는 그것이 가장 강력한 투자 도구가 된다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
