백테스트란 무엇인가

백테스트(Backtest)는 특정 투자 전략을 과거 데이터에 그대로 적용했을 때 어떤 성과가 나왔을지 시뮬레이션하는 과정입니다. "만약 5년 전부터 이 규칙대로 투자했다면 얼마를 벌었을까"를 계산해보는 것이라고 생각하면 됩니다. 실제 돈을 쓰지 않고도 전략의 특성(수익률, 변동성, 낙폭 등)을 미리 파악할 수 있어 퀀트 투자에서 필수적인 검증 단계입니다.

백테스트의 기본 원리

백테스트는 보통 다음 순서로 진행됩니다.

  1. 과거 가격 데이터(시가, 고가, 저가, 종가, 거래량)를 준비합니다.
  2. 정해진 매수/매도 규칙을 하루하루 순서대로 적용합니다.
  3. 매매가 발생할 때마다 수수료, 세금 등 비용을 반영합니다.
  4. 전체 기간의 누적 수익률, 최대낙폭(MDD), 샤프 지수 등을 계산합니다.

이때 중요한 원칙은 미래 정보를 사용하지 않는 것입니다. 예를 들어 "오늘 종가가 20일 이동평균보다 높으면 매수"라는 규칙은 오늘 장이 끝난 뒤에야 알 수 있는 정보이므로, 실제로는 다음날 시가에 매수 체결이 되도록 설계해야 현실적인 결과가 나옵니다.

과최적화란 무엇인가 (가상 사례)

과최적화(Overfitting)는 전략의 파라미터를 과거 데이터에 지나치게 맞춰서, 그 특정 구간에서만 성과가 좋게 나오도록 만드는 현상입니다. 가상의 예를 들어보겠습니다. "이동평균 기간을 5일부터 100일까지 모두 테스트해본 결과, 정확히 37일일 때 가장 수익률이 높았다"는 결과가 나왔다고 가정해봅시다. 37일이라는 숫자에 특별한 의미가 없는데도 과거 데이터에서 우연히 성과가 좋았던 것이라면, 이는 전형적인 과최적화 신호입니다. 실제 시장에서는 38일이나 36일과 성과가 크게 다르지 않아야 정상이며, 특정 숫자에서만 급격히 성과가 튀는 경우 의심해야 합니다.

과최적화를 줄이는 방법

  • 워크포워드 검증: 데이터를 학습 구간과 검증 구간으로 나누어, 학습 구간에서 찾은 파라미터가 검증 구간에서도 유효한지 확인합니다.
  • 파라미터 단순화: 조정 가능한 변수가 많을수록 과최적화 위험이 커지므로, 최소한의 파라미터로 전략을 설계합니다.
  • 여러 종목·기간에 적용: 특정 종목이나 특정 구간에서만 잘 되는 전략은 신뢰하기 어렵습니다.

주의할 점

백테스트는 어디까지나 "과거에 이랬다면"이라는 가정 위에 서 있습니다. 슬리피지(체결 오차), 유동성 부족, 실제 매매 시 발생하는 심리적 압박 등은 시뮬레이션에 온전히 반영되기 어렵습니다. 백테스트 결과를 맹신하기보다, 모의투자 등 다음 검증 단계를 함께 거치는 것이 안전합니다.