백테스트, 제대로 하는 법 — 초보가 속는 5가지 함정
"백테스트 자산곡선이 깔끔한 45도 직선"은 성공이 아닙니다. 퀀트에선 그건 '범죄 현장'에 가까워요.
전략을 만들고, 과거 데이터로 돌려봤더니 자산곡선이 우상향 직선에 샤프 비율도 멋집니다. AI 트레이딩 봇을 만들든 직접 규칙을 짜든, 여기서 "됐다, 실전 가자" 하는 순간 — 대부분 라이브에서 무너집니다. 운이 나빠서가 아니라, 백테스트를 설계하는 방식에 예측 가능한 실수가 끼어 있어서예요.
이 글은 그 실수 5가지 + 어떻게 잡는지 + 백테스트를 실전으로 옮길 때의 순서를 정리합니다. 한 가지만 먼저: 백테스트는 "과거에 엣지가 있었는지 검증하고, 엣지 없는 전략을 거르는 도구"이지 미래를 보장하는 게 아닙니다. (다시 — 정보 제공용이며 투자 권유가 아닙니다.)
초보가 속는 5가지 함정
| 함정 | 이런 거다 — 왜 위험한가 | 어떻게 잡나 |
|---|---|---|
| 1. 오버피팅 (커브 피팅·p-해킹) | 파라미터를 과거 데이터에 딱 맞을 때까지 만지작거림. "RSI 28.7이 30.0보다 3%p 낫다"는 신호가 아니라 그 데이터셋만의 잡음. 조건 15개에 승률 90%? 노이즈에 맞춘 것 — 라이브에서 거의 확실히 무너진다. | 규칙 단순하게, 파라미터 적게. 파라미터를 살짝 바꿨는데 성과가 폭락하면 과적합 신호. "백테스트로 모델을 튜닝"하려 하지 말 것. |
| 2. 룩어헤드 바이어스 (미래 정보 사용) | 결정 시점엔 없었던 정보를 씀. "일봉이 200일선 아래로 마감하면 진입" — 그 마감가는 하루가 끝나야 알 수 있다. 타임스탬프 정렬 실수, 정규화에 미래 수익률 섞기 등. 제거하면 성과가 보통 그대로 붕괴한다. | 모든 신호·지표·정규화가 '시점 t까지 알 수 있었던 정보'만 쓰게 강제. 데이터 정렬할 때 '데이터가 실제로 도착한 시각' 기준으로. |
| 3. 생존 편향 | 지금까지 살아남은 종목만 테스트하고, 상장폐지·파산·합병으로 사라진 '무덤'을 뺌. 오늘의 코스피200/S&P500 구성종목으로 백테스트 = 망한 회사 수백 개 제외 → 수익률 부풀고 리스크 과소평가. | 시점별로 그때의 유니버스를 정의하고, 폐지·상폐된 종목이 포함된 데이터셋(survivorship-bias-free)을 쓴다. (이건 데이터 품질 문제라 좋은 데이터 없으면 한계 인정.) |
| 4. 거래비용·슬리피지 무시 | 수수료·스프레드·슬리피지·funding(자금조달) 비용. 거래당 0.5R 버는 스캘핑이 비용 빼면 본전이거나 마이너스. 라운드트립 $5씩, 평균 수익 $150이면 비용이 그로스의 3.3%. 월 200거래면 $1,000 마찰. 24% 백테스트가 비용 반영하면 적자가 되기도. | 현실적 비용을 처음부터 넣는다(낙관적 가정 금지). 거래가 잦은 전략일수록 이게 생사를 가른다. ※ 코어 백테스트 자체가 편향됐으면 비용 추가해도 못 살린다 — 1~3번 먼저. |
| 5. 표본 부족 / 한 국면만 | 거래 10~20개로 "잘 나왔다"고 착각 — 통계적으로 의미 없음. 한 가지 시장(상승장만, 또는 한 종목만) 데이터로 테스트하면 그 국면에만 맞는 전략. | 최소 2년 이상, 100거래 이상, 상승·횡보·고변동성 등 다른 국면을 포함. 그래야 우연이 아니라 패턴인지 알 수 있다. |
그럼 어떻게 검증하나 — 그리고 실전으로 옮길 때
백테스트를 "결과를 자랑하는" 게 아니라 "엉터리 전략을 거르는" 도구로 쓰려면:
- 규칙을 정확히, 모호함 없이 먼저 정의 — "추세가 좋을 때 진입" 같은 애매한 기준은 신뢰할 수 없는 결과를 낳음.
- 인-샘플 / 아웃-오브-샘플 분리 — 예: 2018~2022로 만들고, 2023~2025로 검증. 아웃-오브-샘플에서 무너지면 과적합.
- 워크포워드(walk-forward) 최적화 — 실제 운용처럼 일정 구간마다 재조정하며 앞으로 굴려보기. + 몬테카를로 시뮬레이션으로 결과가 우연인지 확인.
- 핵심 지표로 평가 — 승률, 손익비(profit factor), 평균 R, 최대 낙폭(MDD), 기대값(expectancy). 수익률 한 숫자만 보지 말 것.
- 한 번에 한 변수만 — 손절폭 테스트면 손절만 2%/3%/5%로 바꾸고 진입·포지션 크기는 고정. 다섯 개를 동시에 바꾸면 뭐 때문에 좋아졌는지 알 수 없음.
실전으로 옮길 때는 점진적으로: ① 페이퍼 트레이딩(모의)으로 충분히 → ② 소액(원래 사이즈의 25~50%)으로 → ③ 데이터를 보고 천천히 키운다. 백테스트가 좋았다고 바로 풀 사이즈로 가는 게 가장 흔한 사고. AI 봇으로 돌리는 거라면 더더욱 — 봇은 백테스트의 가정을 그대로 실행할 뿐이라, 가정이 틀리면 그 틀린 걸 빠르게 반복합니다.
정리 — 백테스트 수익률을 믿지 마세요
백테스트의 역설: 흠 없어 보이는 백테스트일수록 의심해야 합니다. 깔끔한 45도 자산곡선은 "이 전략이 미래에 돈을 벌 것"의 증거가 아니라 "내가 과거 데이터에 얼마나 잘 맞췄나"의 증거일 수 있어요. 그래서 백테스트는 합격 도장이 아니라 거르는 체입니다 — 엣지가 없거나 편향으로 부풀려진 전략을 빠르게 버리는 용도.
그러니 봇을 사든 직접 짜든, 누군가 "이 전략 백테스트 수익률 ○○%" 라고 보여주면 — 그 숫자보다 "어떤 데이터로, 비용은 어떻게 넣고, 아웃-오브-샘플에서도 됐나"를 물어보세요. 거기서 막히면 그 백테스트는 신뢰하지 않는 게 맞습니다. (이 글은 거기까지입니다 — 어떤 전략이나 상품도 권유하지 않으며, 투자 결정과 그 결과는 본인 책임입니다.)
참고: 본문은 2026년 기준 공개 자료(백테스팅 가이드·퀀트 교육 자료 종합)에 근거한 일반 정보이며, 개인의 상황에 맞는 조언이 아닙니다. 투자 사기·미등록 업체 주의 정보는 금융감독원 등 감독기관 안내를 확인하세요.
AI·트레이딩, 거품 빼고 계속 정리합니다
JUNAI 블로그는 AI 도구·자동화·트레이딩 기술을 검색량 큰 주제 위주로, 과장 없이 다룹니다. junai.ai/blog에서 이어 보세요.