Post

퀀트 투자 백테스팅 방법론: 과거 데이터로 전략을 검증하는 법

퀀트 투자를 시작할 때 필요한 백테스팅 방법론을 투자 가설, 데이터 기준일, 거래비용, 성과 지표, 과최적화 방지, 실전 검증 순서로 정리합니다.

퀀트 투자 백테스팅 방법론: 과거 데이터로 전략을 검증하는 법

퀀트 투자 백테스팅 방법론

퀀트 투자를 하려면 결국 백테스팅을 하게 됩니다.

백테스팅은 과거 데이터를 이용해 투자 전략이 과거에 어떻게 작동했는지 확인하는 작업입니다. 예를 들어 저PER 종목을 매월 20개씩 동일가중으로 매수했다면 2010년부터 2025년까지 어떤 성과가 났을까?를 계산해보는 식입니다.

하지만 백테스팅은 단순히 과거 수익률을 계산하는 일이 아닙니다. 잘못된 방식으로 백테스트를 하면 실제보다 훨씬 좋아 보이는 전략을 만들기 쉽습니다.

좋은 백테스트는 수익률 숫자를 예쁘게 만드는 도구가 아니라, 전략이 어떤 환경에서 강하고 어떤 환경에서 약한지 확인하는 도구입니다.


백테스팅이 필요한 이유

퀀트 전략은 보통 규칙으로 표현됩니다.

1
2
3
4
PER이 낮고
ROE가 높고
부채비율이 낮은 종목을
매월 같은 방식으로 골라 투자한다

이런 규칙이 실제로 쓸 만한지 확인하려면 과거 데이터로 먼저 검증해야 합니다. 백테스팅을 하면 아래 질문에 답할 수 있습니다.

  • 이 전략은 과거에 시장보다 나았는가?
  • 수익이 특정 기간에만 몰려 있지는 않은가?
  • 최대 손실 구간은 어느 정도였는가?
  • 거래비용을 빼도 성과가 남는가?
  • 전략이 1~2년 부진해도 유지할 수 있는가?

즉, 백테스팅은 미래 수익을 보장하는 과정이 아니라, 전략을 실제 투자에 쓰기 전에 약점을 찾아보는 과정입니다.


백테스팅의 기본 흐름

백테스팅은 보통 아래 순서로 진행합니다.

1
2
3
4
5
6
7
8
9
투자 가설 설정
→ 투자 대상과 기간 정의
→ 데이터 수집과 정제
→ 매수·매도 규칙 작성
→ 거래비용 반영
→ 성과 지표 계산
→ 구간별 검증
→ 민감도 분석
→ 소액 실전 검증

처음부터 복잡한 모델을 만들 필요는 없습니다. 중요한 것은 같은 기준을 반복해서 적용할 수 있을 만큼 규칙을 명확히 만드는 것입니다.


1. 투자 가설을 먼저 문장으로 적는다

백테스트를 시작하기 전에 먼저 투자 가설을 써야 합니다.

예를 들면 아래와 같습니다.

1
2
3
저PER 종목은 시장에서 과도하게 소외되는 경우가 있고,
장기적으로 평균 회귀가 발생할 수 있다.
따라서 저PER 종목을 분산 매수하면 시장 대비 초과수익을 기대할 수 있다.

또는 모멘텀 전략이라면 이렇게 쓸 수 있습니다.

1
2
3
최근 6개월 동안 강하게 상승한 종목은
투자자 관심과 자금 유입이 이어지면서
단기적으로 상승 흐름이 지속될 수 있다.

이 단계가 중요한 이유는 백테스트를 하다 보면 조건을 계속 바꾸고 싶어지기 때문입니다. 가설 없이 숫자만 만지면 결국 과거 데이터에만 잘 맞는 전략을 만들기 쉽습니다.

투자 가설은 아래 질문에 답할 수 있어야 합니다.

  • 왜 이 전략이 작동해야 하는가?
  • 어떤 시장 환경에서 잘 작동할 것 같은가?
  • 어떤 시장 환경에서는 약해질 수 있는가?
  • 개인투자자가 실제로 따라 할 수 있는가?

2. 투자 대상과 기간을 정한다

백테스트 결과는 어떤 시장을 대상으로 하느냐에 따라 크게 달라집니다. 따라서 투자 대상과 제외 기준을 먼저 정해야 합니다.

예를 들면 아래와 같습니다.

1
2
3
4
5
투자 시장: 한국 주식
투자 universe: 코스피, 코스닥 시가총액 상위 500개 종목
제외 대상: 관리종목, 거래정지 종목, 유동성 부족 종목
백테스트 기간: 2010년 1월 ~ 2025년 12월
비교 기준: 코스피 지수 또는 코스피200 지수

여기서 중요한 것은 처음부터 끝까지 같은 기준을 유지하는 것입니다. 성과가 나쁘다고 중간에 특정 업종이나 특정 기간을 제외하면 백테스트의 신뢰도가 떨어집니다.

가능한 한 여러 시장 국면이 포함된 기간을 쓰는 것도 좋습니다. 상승장만 포함하면 대부분의 전략이 좋아 보이고, 하락장만 포함하면 대부분의 전략이 지나치게 나빠 보일 수 있습니다.


3. 데이터 기준일을 맞춘다

백테스트에서 가장 흔한 실수 중 하나는 미래 정보를 사용하는 것입니다. 이를 룩어헤드 편향이라고 합니다.

예를 들어 2024년 사업보고서가 2025년 3월에 발표되었다면, 2025년 1월 리밸런싱에서는 그 정보를 사용할 수 없습니다. 그런데 백테스트 코드가 2024년 전체 재무 데이터를 2025년 1월에 이미 알고 있었다고 처리하면 성과가 부풀려집니다.

따라서 재무 데이터는 결산일이 아니라 발표일 또는 투자자가 실제로 확인할 수 있었던 날짜를 기준으로 사용해야 합니다.

가격 데이터도 마찬가지입니다. 배당, 액면분할, 무상증자 등이 반영된 수정주가를 사용하는지 확인해야 합니다. 수정주가를 쓰지 않으면 장기 수익률이 왜곡될 수 있습니다.


4. 생존자 편향을 피한다

생존자 편향은 현재 살아남은 종목만으로 과거를 테스트하는 문제입니다.

예를 들어 현재 상장되어 있는 종목만 가지고 2010년부터 백테스트를 하면, 중간에 상장폐지된 기업이나 크게 망가진 기업이 빠질 수 있습니다. 그러면 과거 성과가 실제보다 좋아 보입니다.

특히 소형주, 저평가주, 부실주를 포함하는 전략은 생존자 편향의 영향을 크게 받을 수 있습니다. 가능하다면 해당 시점에 실제로 존재했던 종목 전체를 기준으로 테스트해야 합니다.


5. 매수, 매도, 비중 규칙을 구체화한다

백테스트 규칙은 사람이 다시 읽어도 그대로 실행할 수 있을 정도로 구체적이어야 합니다.

아래처럼 정하면 모호함이 줄어듭니다.

1
2
3
4
5
6
매수일: 매월 첫 거래일 종가
매수 대상: PER 하위 30%, ROE 상위 30%, 부채비율 200% 이하
종목 수: 조건을 만족하는 종목 중 시가총액 상위 20개
비중: 동일가중
매도일: 다음 리밸런싱일 종가
현금 처리: 편입 종목이 20개 미만이면 남은 금액은 현금 보유

특히 비중 규칙은 중요합니다. 동일가중인지, 시가총액가중인지, 변동성 역가중인지에 따라 성과와 위험이 달라집니다.

처음에는 동일가중처럼 단순한 방식으로 시작하는 것이 좋습니다. 복잡한 최적화 비중은 과거 데이터에만 잘 맞을 가능성이 높기 때문입니다.


6. 거래비용과 슬리피지를 반영한다

백테스트에서 수익률이 좋아 보여도 실제 투자에서는 수수료, 세금, 호가 차이, 체결 오차가 발생합니다. 이 비용을 빼지 않으면 실제보다 훨씬 좋은 전략처럼 보일 수 있습니다.

반영해야 할 비용은 아래와 같습니다.

  • 매매 수수료
  • 증권거래세
  • 매수·매도 호가 차이
  • 원하는 가격에 체결되지 않는 슬리피지
  • 잦은 매매로 인한 회전율 증가

특히 중소형주 전략이나 리밸런싱이 잦은 전략은 거래비용에 민감합니다. 월 1회 리밸런싱에서는 괜찮아 보이던 전략도 주 1회 리밸런싱으로 바꾸면 비용 때문에 성과가 사라질 수 있습니다.


7. 성과 지표를 여러 각도에서 본다

백테스트 결과를 볼 때 최종 수익률만 보면 위험합니다. 좋은 전략은 많이 버는 것뿐 아니라 투자자가 버틸 수 있는 형태여야 합니다.

확인할 지표는 아래와 같습니다.

  • 누적 수익률: 전체 기간 동안 얼마나 벌었는가
  • 연평균 수익률: 1년 기준으로 평균 어느 정도 수익을 냈는가
  • 최대 낙폭: 고점 대비 가장 크게 손실 난 구간은 얼마인가
  • 변동성: 수익률이 얼마나 크게 흔들렸는가
  • 샤프 비율: 변동성 대비 수익률이 괜찮은가
  • 승률: 리밸런싱 기간별로 이긴 비율은 어느 정도인가
  • 회전율: 포트폴리오가 얼마나 자주 바뀌는가
  • 벤치마크 대비 초과수익: 시장을 이겼는가

개인투자자에게 특히 중요한 지표는 최대 낙폭입니다. 연평균 수익률이 높아도 중간에 50% 손실 구간이 있다면 실제로는 끝까지 유지하기 어렵습니다.


8. 구간을 나누어 검증한다

전략이 특정 기간에만 잘 맞았는지 확인하려면 기간을 나누어 봐야 합니다.

예를 들어 아래처럼 나눌 수 있습니다.

1
2
3
4
5
6
7
8
전체 기간: 2010년 ~ 2025년
학습 구간: 2010년 ~ 2017년
검증 구간: 2018년 ~ 2025년
상승장 구간
하락장 구간
횡보장 구간
금리 상승 구간
금리 하락 구간

학습 구간에서 만든 전략이 검증 구간에서도 어느 정도 유지된다면 신뢰도가 높아집니다. 반대로 특정 구간에서만 성과가 좋고 다른 구간에서는 계속 무너진다면, 그 전략은 특정 시장 환경에 과하게 맞춰졌을 가능성이 있습니다.


9. 민감도 분석을 한다

좋은 전략은 파라미터가 조금 바뀌어도 완전히 무너지지 않아야 합니다.

예를 들어 PER 하위 30% 전략이 좋았다면 아래 조건도 함께 확인해볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
PER 하위 20%
PER 하위 30%
PER 하위 40%

종목 수 10개
종목 수 20개
종목 수 30개

월간 리밸런싱
분기 리밸런싱
반기 리밸런싱

특정 숫자 하나에서만 성과가 좋고 주변 조건에서는 성과가 급격히 나빠진다면 과최적화일 수 있습니다. 반대로 조건이 조금 바뀌어도 비슷한 성과가 나온다면 전략의 구조가 비교적 견고하다고 볼 수 있습니다.


10. 실제 운용 가능성을 확인한다

백테스트에서 가장 놓치기 쉬운 부분은 실제로 내가 이 전략을 실행할 수 있는가입니다.

다음 질문을 확인해야 합니다.

  • 종목별 거래대금이 충분한가?
  • 내가 넣을 금액이 시장 가격에 영향을 주지 않는가?
  • 리밸런싱을 정해진 날짜에 실행할 수 있는가?
  • 세금과 수수료를 뺀 뒤에도 성과가 남는가?
  • 하락장에서 전략을 중단하지 않고 유지할 수 있는가?
  • 데이터 수집과 계산을 반복할 수 있는가?

아무리 백테스트가 좋아도 실제 매매가 어렵거나 심리적으로 버티기 어렵다면 좋은 전략이라고 보기 어렵습니다. 백테스트는 컴퓨터가 하지만, 실제 손실을 견디는 것은 투자자 자신입니다.


11. 작은 금액으로 실전 검증한다

백테스트를 통과한 전략도 바로 큰 금액으로 운용하기보다는 작은 금액으로 실전 검증하는 것이 좋습니다.

이 단계에서는 수익률보다 실행 가능성을 확인해야 합니다.

  • 데이터 업데이트가 문제없이 되는가?
  • 리밸런싱 날짜에 주문을 넣을 수 있는가?
  • 예상보다 슬리피지가 크지는 않은가?
  • 실제 체결 결과가 백테스트 가정과 비슷한가?
  • 손실 구간에서 전략을 유지할 수 있는가?

작은 금액으로 3개월에서 1년 정도 운용해보면, 백테스트에서는 보이지 않던 실무적인 문제가 드러납니다. 이 과정을 거친 뒤에야 전략을 실제 포트폴리오의 일부로 편입하는 것이 더 안전합니다.


백테스트 체크리스트

백테스트를 하기 전후에 아래 항목을 점검하면 좋습니다.

  • 투자 가설이 명확한가?
  • 투자 대상과 제외 기준이 정해져 있는가?
  • 재무 데이터의 발표일 기준을 반영했는가?
  • 상장폐지 종목을 포함했는가?
  • 수정주가를 사용했는가?
  • 거래비용, 세금, 슬리피지를 반영했는가?
  • 최대 낙폭과 변동성을 확인했는가?
  • 벤치마크와 비교했는가?
  • 학습 구간과 검증 구간을 나누어 봤는가?
  • 파라미터를 조금 바꿔도 전략이 유지되는가?
  • 실제로 반복 운용할 수 있는가?

정리

백테스팅은 과거에 돈을 벌었는지 확인하는 작업이지만, 그보다 더 중요한 목적은 전략의 약점을 미리 발견하는 것입니다.

좋은 백테스트는 아래 조건을 갖춰야 합니다.

  • 당시 알 수 있었던 정보만 사용한다
  • 투자 대상과 제외 기준이 명확하다
  • 거래비용과 슬리피지를 반영한다
  • 수익률뿐 아니라 최대 낙폭과 변동성을 함께 본다
  • 특정 기간이나 특정 파라미터에만 맞춘 전략인지 확인한다
  • 실제로 운용 가능한 방식인지 점검한다

백테스트는 전략을 증명하는 도구라기보다, 전략을 의심하고 개선하기 위한 도구입니다. 그래서 좋은 백테스트일수록 투자자를 더 겸손하게 만듭니다.

This post is licensed under CC BY 4.0 by the author.