백테스트 개요
키워드: 역사적 시뮬레이션, 전략 검증, 수익 곡선
백테스트(Backtest)란 과거의 시장 데이터를 사용해 특정 투자 전략이 어떤 성과를 냈을지 시뮬레이션하는 과정이다.
쉽게 말하면 이렇다. 당신이 "매달 1일에 코스피 지수를 사고, 15일에 파는 전략"을 떠올렸다고 하자. 이 전략이 실제로 돈이 되는지 알고 싶다면 두 가지 방법이 있다. 첫째, 실제 돈을 넣어 몇 년간 운용해보는 것. 둘째, 과거 20년치 데이터를 꺼내 그 전략을 적용해보는 것. 백테스트는 바로 두 번째 방법이다.
이 과정은 마치 요리사가 새 레시피를 손님에게 내놓기 전에 시식 테스트를 반복하는 것과 같다. 실제 손님(시장)에게 내놓기 전에, 과거의 재료(데이터)로 먼저 만들어보는 것이다.
백테스트는 퀀트 투자의 출발점이자 핵심 도구다. 아무리 논리적으로 그럴듯한 전략이라도, 백테스트를 거치지 않으면 그것은 단순한 가설에 불과하다.
인간의 직관은 투자에서 자주 틀린다. "1월에 주식을 사면 오를 것 같다"는 느낌이 있더라도, 실제 역사적 데이터로 확인해보면 그 패턴이 일정하지 않을 수 있다. 백테스트는 감과 편견을 걷어내고 데이터로 검증하게 해준다.
전략을 실제로 운용하기 전에, 최악의 경우 얼마나 잃을 수 있는지를 역사적 데이터로 확인할 수 있다. 2008년 금융위기, 2020년 코로나 폭락 같은 구간에서 이 전략이 어떻게 작동했는지 알 수 있다면, 실전에서의 심리적 준비도 가능하다.
두 가지 전략 중 어느 쪽이 더 나은지, 어떤 조건에서 어느 전략이 우월한지를 동일한 기준으로 비교할 수 있다. 이것이 없다면 전략 선택은 취향의 문제로 전락한다.
"이동평균을 20일로 해야 할까, 50일로 해야 할까?" 같은 질문에 데이터에 근거한 답을 찾을 수 있다. 물론 이 과정에는 과최적화라는 함정이 도사리고 있는데, 이는 뒤 챕터에서 자세히 다룬다.
백테스트는 크게 다섯 단계로 구성된다.
과거의 가격 데이터, 재무 데이터, 거시 지표 등을 수집한다. 데이터의 품질이 백테스트의 신뢰도를 결정짓는 첫 번째 관문이다. 오염된 데이터로는 아무리 정교한 분석을 해도 의미 없는 결과가 나온다.
"어떤 조건일 때 사고, 어떤 조건일 때 파는가"를 명확하고 구체적인 규칙으로 정의한다. 모호한 규칙은 백테스트 자체가 불가능하다. "좋아 보일 때 산다"는 전략은 규칙이 아니다. "20일 이동평균선이 60일 이동평균선을 상향 돌파하는 날 종가에 매수한다"가 규칙이다.
정의된 규칙을 과거 데이터에 적용해 매수·매도 신호를 생성하고, 그에 따른 가상 매매를 시뮬레이션한다. 이때 거래비용, 슬리피지(원하는 가격과 실제 체결 가격의 차이) 등을 얼마나 현실적으로 반영하느냐가 결과의 신뢰도를 좌우한다.
시뮬레이션 결과를 수치화한다. CAGR(연평균 복리 수익률), MDD(최대 낙폭), 샤프지수 등 다양한 지표로 전략의 성과와 리스크를 측정한다.
수치만 보는 것이 아니라, 전략이 언제 잘 작동했고 언제 실패했는지를 이해한다. 이 과정이 단순한 숫자 읽기와 진정한 전략 분석의 차이를 만든다.
백테스트의 결과를 가장 직관적으로 보여주는 것이 **수익 곡선(Equity Curve)**이다. 초기 투자 원금을 1(또는 100)로 설정하고, 시간이 흐름에 따라 자산이 어떻게 변화하는지를 선 그래프로 나타낸 것이다.
수익 곡선 하나만 봐도 전략에 대해 많은 것을 알 수 있다.
예를 들어, 수익 곡선이 2003년~2007년 상승장에만 가파르게 오르고 그 외 기간은 횡보한다면, 이 전략은 상승장 전용 전략일 가능성이 높다. 이런 전략을 "모든 시장에서 통한다"고 착각하는 것이 초보 투자자의 흔한 실수다.
백테스트는 강력한 도구이지만, 그 한계를 모르면 오히려 독이 된다.
백테스트가 아무리 좋아도 미래를 보장하지 않는다. 시장 구조, 참여자 행동, 거시 환경은 끊임없이 변한다. 과거 20년간 완벽하게 작동한 전략이 향후 5년간 완전히 실패할 수 있다.
현재 존재하는 종목이나 펀드만을 대상으로 백테스트를 하면, 이미 사라진 부실 종목들이 빠진다. 이는 마치 전쟁 생존자들만 인터뷰해서 "전쟁은 살아남을 만하다"고 결론 내리는 것과 같다. 결과가 실제보다 훨씬 좋게 나온다.
실제로는 당시에 알 수 없었던 정보를 마치 알고 있는 것처럼 사용해 매매 신호를 만드는 오류다. 예를 들어, 오늘의 종가를 이용해 오늘의 매수 신호를 만들고 오늘 종가에 매수하는 시뮬레이션은 현실에서 불가능하다.
과거 데이터에 지나치게 맞춰진 전략은 실전에서 무너진다. 이는 마치 지난 10년의 시험 문제를 완벽하게 암기했지만, 새로운 문제 앞에서는 속수무책인 것과 같다.
유동성, 거래비용, 시장 충격(대규모 거래가 가격에 미치는 영향) 등이 제대로 반영되지 않으면 백테스트 수익률은 현실과 크게 괴리된다.
| 구분 | 좋은 백테스트 | 나쁜 백테스트 |
|---|---|---|
| 데이터 | 생존 편향 제거, 점수 조정 포함 | 현재 존재하는 종목만 사용 |
| 거래비용 | 현실적으로 반영 | 무시하거나 과소 반영 |
| 기간 | 다양한 시장 국면 포함 (10년 이상) | 상승장 위주 단기 |
| 검증 | 아웃오브샘플 검증 포함 | 인샘플 결과만 제시 |
| 파라미터 | 합리적 범위, 민감도 확인 | 과거에 최적화된 수치 |
| 해석 | 실패 구간과 원인 분석 | 수익 구간만 강조 |
이 책은 코딩이나 프로그래밍 없이, 백테스트의 원리와 전략의 작동 메커니즘을 깊이 이해하는 것을 목표로 한다. 숫자를 직접 계산하거나 소프트웨어를 다루는 방법은 다루지 않는다. 대신 다음을 집중적으로 다룬다.
| 항목 | 내용 |
|---|---|
| 핵심 개념 | 과거 데이터로 전략 성과를 시뮬레이션하는 과정 |
| 주요 구성 요소 | 데이터 → 규칙 → 시뮬레이션 → 측정 → 해석 |
| 핵심 결과물 | 수익 곡선(Equity Curve) |
| 대표적 함정 | 생존 편향, 선행 편향, 과최적화 |
| 이 책의 접근법 | 원리 이해 + 결과 해석 중심 (코딩 제외) |
📌 핵심 요약 (3줄)
백테스트는 과거 데이터로 전략을 검증하는 과정이며, 퀀트 투자의 출발점이다. 강력한 도구이지만 생존 편향·과최적화 등의 함정을 모르면 오히려 위험하다. 좋은 백테스트는 수익뿐 아니라 실패 구간과 현실적 조건을 함께 담아야 한다.
➡️ 다음 챕터 예고: Chapter 2에서는 백테스트와 전략을 공부할 때 반드시 알아야 할 핵심 용어들을 — CAGR, MDD, 샤프지수, 승률, 손익비 등 — 하나씩 명확하게 정의한다.