백테스트란 무엇인가
퀀트 투자와 자동매매 전략을 개발할 때, 백테스트(Backtest)는 과거 데이터를 기반으로 전략의 수익성을 검증하는 핵심 단계입니다. 그런데 많은 초보 퀀트 트레이더가 백테스트 결과만 보고 실전에 투입했다가 큰 손실을 보는 경우가 빈번합니다. 그 원인의 대부분은 과적합(Overfitting)입니다.
과적합이란, 전략이 과거 데이터의 노이즈(우연한 패턴)까지 학습해버려서, 새로운 데이터(실전 시장)에서는 전혀 통하지 않는 현상을 말합니다. 백테스트에서 연 수익률 200%가 나왔는데, 실전에서는 첫 달에 -30%가 되는 전형적인 시나리오입니다.
과적합이 발생하는 5가지 원인
1. 파라미터 과다 최적화
이동평균선의 기간, RSI 임계값, 손절 비율 등 파라미터를 지나치게 세밀하게 조정하면 과거 데이터에 딱 맞는 “완벽한” 조합을 찾게 됩니다. 하지만 이 조합은 과거에만 유효한 우연의 산물일 가능성이 높습니다.
예를 들어, 이동평균 MA(17)과 MA(53) 크로스가 최적이라는 결과가 나왔다면, MA(15)와 MA(50)에서도 비슷한 성과가 나오는지 확인해야 합니다. 결과가 크게 달라진다면 과적합 신호입니다.
2. 짧은 백테스트 기간
1~2년 데이터로만 백테스트하면 특정 시장 국면(상승장 또는 하락장)에만 맞춰진 전략이 만들어집니다. 최소 5년 이상, 가능하면 상승·하락·횡보 구간을 모두 포함하는 데이터로 테스트해야 합니다.
3. 생존자 편향(Survivorship Bias)
상장 폐지된 종목이나 디리스팅된 코인을 제외한 데이터로 백테스트하면, 실제보다 성과가 과대 평가됩니다. 당시 시점 기준 전체 종목을 포함한 데이터(Point-in-Time 데이터)를 사용해야 정확한 결과를 얻을 수 있습니다.
4. 미래 정보 참조(Look-Ahead Bias)
백테스트 로직에서 의도치 않게 미래 데이터를 참조하는 경우가 있습니다. 예를 들어, 당일 종가를 기준으로 매수 신호를 생성하면서 당일 시가에 진입하는 식입니다. 코드 리뷰 시 시점 정합성을 반드시 확인해야 합니다.
5. 거래 비용·슬리피지 무시
수수료, 스프레드, 슬리피지(Slippage)를 반영하지 않으면 고빈도 전략일수록 백테스트와 실전의 괴리가 극심해집니다. 특히 암호화폐 선물의 경우 메이커/테이커 수수료 차이와 펀딩비까지 고려해야 합니다.
과적합 방지를 위한 실전 체크리스트
✅ 아웃오브샘플(OOS) 테스트
전체 데이터를 훈련 구간(In-Sample)과 검증 구간(Out-of-Sample)으로 나눕니다. 훈련 구간에서 전략을 개발하고, 검증 구간에서 성과를 확인합니다. 보통 70:30 비율을 사용합니다.
| 구간 | 용도 | 비율 |
|---|---|---|
| In-Sample | 전략 개발 및 파라미터 조정 | 60~70% |
| Out-of-Sample | 성과 검증 | 20~30% |
| Walk-Forward | 롤링 방식 최종 검증 | 전체 기간 |
✅ 워크포워드 분석(Walk-Forward Analysis)
단순 OOS보다 한 단계 발전한 방법입니다. 일정 기간 훈련 → 다음 기간 테스트를 반복 롤링하여, 다양한 시장 환경에서 전략이 일관되게 작동하는지 확인합니다. 이 방법은 실제 운용과 가장 유사한 시뮬레이션입니다.
✅ 파라미터 민감도 분석
최적 파라미터 주변 값에서도 전략이 안정적인 성과를 보이는지 확인합니다. 파라미터 고원(Parameter Plateau)이 존재해야 합니다. 특정 값 하나에서만 수익이 나고 약간만 바꿔도 손실이 난다면, 그 전략은 과적합된 것입니다.
✅ 규칙 수 최소화
진입·청산 조건이 5개를 넘어가면 과적합 위험이 급격히 높아집니다. 단순한 전략이 복잡한 전략보다 실전에서 강건(Robust)합니다. 유명 퀀트 투자자들이 “전략은 냅킨 뒷면에 적을 수 있어야 한다”고 말하는 이유입니다.
✅ 몬테카를로 시뮬레이션
거래 순서를 무작위로 섞어 수천 번 시뮬레이션하면, 전략의 최대 낙폭(MDD)과 수익 분포의 범위를 파악할 수 있습니다. 이를 통해 백테스트의 특정 결과가 운이 좋았던 것인지, 전략 자체의 우위(Edge)인지 구분할 수 있습니다.
실전에서 바로 적용하는 3단계 검증 프로세스
1단계: 개발 및 백테스트 — In-Sample 데이터에서 전략 개발. 파라미터는 최소한으로 유지합니다.
2단계: OOS + 워크포워드 검증 — 전략을 한 번도 본 적 없는 데이터에서 테스트합니다. In-Sample 대비 성과가 50% 이상 하락하면 과적합을 의심해야 합니다.
3단계: 페이퍼 트레이딩 — 실시간 시장에서 가상 자금으로 최소 1~3개월 운용합니다. 이 단계에서 슬리피지, 체결 지연, API 오류 등 백테스트에서 잡을 수 없는 실전 변수를 경험할 수 있습니다.
관련 글도 함께 읽어보세요:
결론: 좋은 백테스트란
좋은 백테스트는 높은 수익률을 보여주는 것이 아니라, 실전에서도 재현 가능한 수익을 보여주는 것입니다. 과적합을 방지하려면 단순한 전략, 충분한 데이터, 엄격한 OOS 검증, 그리고 실전 테스트라는 네 가지 원칙을 지켜야 합니다. 퀀트 투자의 진짜 실력은 백테스트가 아니라, 백테스트를 의심하는 능력에서 나옵니다.