백테스트 오버피팅 방지법

백테스트 수익률이 실전에서 무너지는 이유

퀀트 투자에서 백테스트는 전략 검증의 핵심 도구입니다. 그러나 많은 트레이더가 백테스트에서 놀라운 수익률을 기록하고도, 실전 매매에서는 손실을 경험합니다. 이 현상의 가장 큰 원인은 오버피팅(Overfitting)입니다. 과거 데이터에 과도하게 최적화된 전략은 미래 시장에서 작동하지 않습니다.

오버피팅이란 무엇인가

오버피팅은 전략의 파라미터가 과거 데이터의 노이즈(noise)까지 학습해버리는 현상입니다. 예를 들어, “20일 이동평균과 53일 이동평균이 교차할 때 매수”라는 전략에서 53이라는 숫자가 특정 기간에만 유효한 값이라면, 이는 오버피팅된 전략입니다.

머신러닝에서 흔히 발생하는 이 문제는 퀀트 투자에서도 동일하게 적용됩니다. 파라미터 수가 많을수록, 최적화 기간이 짧을수록 오버피팅 위험은 급격히 증가합니다.

오버피팅을 유발하는 5가지 실수

1. 파라미터 과다 최적화

전략에 사용하는 파라미터가 5개를 넘어가면 위험 신호입니다. 이동평균 기간, RSI 기간, 볼린저 밴드 폭, 손절 비율, 익절 비율을 모두 최적화하면 과거 데이터에는 완벽하게 맞지만 실전에서는 무의미한 전략이 됩니다.

파라미터 수 오버피팅 위험도 권장 여부
1~2개 낮음 ✅ 권장
3~4개 보통 ⚠️ 주의
5개 이상 매우 높음 ❌ 위험

2. 데이터 스누핑 편향

같은 데이터셋으로 수십 가지 전략을 테스트하면, 순전히 우연으로 좋은 성과를 보이는 전략이 반드시 나타납니다. 이를 데이터 스누핑(Data Snooping)이라 하며, 통계적으로 20개 전략을 테스트하면 1개는 우연히 유의미한 결과를 보입니다(5% 유의수준 기준).

3. 생존자 편향 무시

상장폐지된 종목을 제외하고 백테스트하면 수익률이 과대평가됩니다. 현재 살아남은 종목만으로 과거를 테스트하면, 당시에는 존재했지만 지금은 사라진 종목의 손실을 무시하게 됩니다. 이것이 생존자 편향(Survivorship Bias)입니다.

4. 거래비용과 슬리피지 미반영

백테스트에서 수수료, 슬리피지(체결가 차이), 스프레드를 무시하면 실전 수익률과 큰 괴리가 발생합니다. 특히 고빈도 전략에서는 거래비용이 전체 수익의 50% 이상을 잠식할 수 있습니다.

# 거래비용 반영 예시 (Python)
def apply_costs(returns, trades_per_day, commission=0.001, slippage=0.0005):
    daily_cost = trades_per_day * (commission + slippage) * 2  # 왕복
    adjusted = returns - daily_cost
    return adjusted

# 하루 10회 매매 시 연간 비용
annual_cost = 10 * (0.001 + 0.0005) * 2 * 252  # ≈ 7.56 (756%)
# 거래비용만으로 계좌가 소멸됨

5. 짧은 백테스트 기간

1~2년 데이터로만 검증한 전략은 특정 시장 국면(상승장, 하락장, 횡보장)에만 맞춰진 경우가 많습니다. 최소 5년 이상, 가능하면 상승·하락·횡보 구간을 모두 포함하는 기간으로 테스트해야 합니다.

오버피팅을 방지하는 검증 방법

Walk-Forward 분석

전체 데이터를 여러 구간으로 나누어, 이전 구간에서 최적화한 파라미터를 다음 구간에서 검증하는 방식입니다. 이 방법은 실전과 가장 유사한 환경을 시뮬레이션합니다.

# Walk-Forward 구조
# [최적화 기간 1] → [검증 1]
# [최적화 기간 2] → [검증 2]  
# [최적화 기간 3] → [검증 3]
#
# 검증 구간 성과의 평균 = 실전 기대 수익률

Out-of-Sample 테스트

전체 데이터의 30%를 처음부터 분리해두고, 전략 개발에 절대 사용하지 않습니다. 최종 전략이 완성된 후 단 한 번만 이 데이터로 검증합니다. 마치 시험지를 미리 보지 않고 실력을 테스트하는 것과 같습니다.

몬테카를로 시뮬레이션

백테스트 결과의 거래 순서를 무작위로 섞어 수천 번 시뮬레이션합니다. 이를 통해 최대 낙폭(MDD)의 분포를 파악하고, 최악의 시나리오에서도 계좌가 생존할 수 있는지 확인할 수 있습니다.

실전 체크리스트: 내 전략이 오버피팅인지 확인하기

  • ✅ 파라미터를 ±20% 변경해도 수익률이 크게 변하지 않는가?
  • ✅ 다른 자산군(주식→ETF, 코인→외환)에도 유사하게 작동하는가?
  • ✅ 거래비용 반영 후에도 양의 수익률인가?
  • 계좌 생존 규칙을 지킬 수 있는 수준의 MDD인가?
  • ✅ 최소 5년 이상의 데이터로 검증했는가?
  • ✅ Out-of-Sample 구간에서도 유효한가?

좋은 백테스트의 기준

수익률이 높은 전략이 좋은 전략이 아닙니다. 안정적인 전략이 좋은 전략입니다. 샤프 비율(Sharpe Ratio) 1.0 이상, 최대 낙폭 20% 이내, 승률 40% 이상이면서 손익비가 2:1을 넘는 전략이 실전에서 생존합니다.

복구매매 패턴에 빠지지 않으려면, 백테스트 단계에서부터 현실적인 기대치를 설정하는 것이 중요합니다. 연 수익률 30%를 꾸준히 달성하는 전략이, 연 300%를 기록했다가 한 번에 무너지는 전략보다 훨씬 가치 있습니다.

결론

백테스트는 퀀트 전략의 출발점이지, 종착점이 아닙니다. 오버피팅을 인식하고 방지하는 것이 실전 수익으로 가는 첫 번째 관문입니다. 파라미터를 줄이고, 충분한 기간을 확보하며, Walk-Forward 분석으로 검증하세요. 화려한 백테스트 수익률보다 견고한 전략 구조가 장기적으로 계좌를 지켜줍니다.

위로 스크롤
WordPress Appliance - Powered by TurnKey Linux