주식 백테스트 과최적화 —
수익률 30%가 실전에서 무너진 3가지 이유
← 3편 읽기: 주식 자동매매 섹터 집중 리스크 — 건설주 4개 담았다가 하루에 40만원 잃은 이유
1편에서 이런 말을 했었어요. "백테스트에서 연 30%였는데, 실전에서는 왜 다른 걸까." 그 질문에 드디어 답할 때가 됐습니다.
S2 전략을 코드로 짜기 전에 백테스트를 먼저 돌렸어요. 최근 2년치 데이터로 돌린 결과, 수익률이 꽤 좋게 나왔습니다. 고무됐죠. "이 전략이면 되겠다" 싶었어요. 그런데 막상 1개월 모의투자를 돌려보니 결과는 -1.1%였습니다.
(2년 기준)
수익률
운이 나빴던 걸까요? 물론 한 달은 너무 짧은 기간이에요. 하지만 이 괴리가 단순한 운의 문제가 아닐 수 있다는 의심이 들었습니다. 원인을 파고들어 봤더니, 백테스트 자체에 구조적인 문제가 있었어요. 그 문제를 과최적화(Overfitting)라고 부릅니다.
"백테스트가 거짓말을 한 게 아니다. 나는 백테스트에게 거짓말을 시킨 것이다."
과최적화란 무엇인가 — 과거에 완벽한 전략이 미래를 못 보는 이유
핵심 개념과최적화를 한 마디로 정의하면 이렇습니다. "과거 데이터에 너무 잘 맞춰진 나머지 미래를 예측하지 못하는 전략."
비유를 들어볼게요. 작년 수능 기출문제를 통째로 외웠습니다. 작년 문제는 100점이에요. 그런데 올해 수능은 다 틀렸습니다. 출제 방식이 조금 바뀌었거든요. 백테스트 과최적화가 딱 이 경우예요. 과거 데이터의 노이즈와 특수한 패턴까지 전부 외운 전략은, 조금이라도 다른 시장이 오면 버팁니다.
백테스트 수익률 높음
특정 파라미터에 딱 맞춰짐
실전 → 시장 변화에 무너짐
백테스트 수익률 평범함
다양한 구간에서 안정적
실전 → 비슷한 성과 유지
파라미터가 많을수록, 최적화 구간이 길수록 과최적화 위험이 커집니다. "이 파라미터 조합에서만 수익이 난다"면 위험 신호예요. 반대로 파라미터를 조금 바꿔도 결과가 비슷하면 견고한 전략입니다.
S2의 핵심 파라미터인 55일·20일은 1983년 리처드 데니스가 설계한 원래 터틀 규칙 그대로예요. 수십 년간 검증된 숫자를 그대로 쓰는 거라 과최적화 위험이 상대적으로 낮습니다. 그런데도 -1.1%가 나온 이유는 파라미터 문제가 아니라 다른 곳에 구멍이 있었기 때문이에요. 바로 아래에서 설명합니다.
내 백테스트의 세 가지 구멍
실전 분석S2 파라미터 자체는 괜찮았어요. 문제는 백테스트를 설계하는 방식에 있었습니다. 파고들수록 구멍이 세 개 나왔어요.
구멍 ① — 생존 편향 (Survivorship Bias)
백테스트에 쓴 종목 풀은 지금 현재 거래 중인 종목들이었어요. 중간에 상장폐지되거나 거래정지된 종목은 자연스럽게 빠져 있었습니다. "살아남은" 종목들만 보는 셈이라 수익률이 실제보다 좋게 나옵니다. 마치 폐업한 가게는 제외하고 살아남은 가게만 인터뷰해서 "창업 성공률 90%"라고 말하는 것과 같은 구조예요.
구멍 ② — 거래비용 미반영
백테스트에서 수수료·거래세·슬리피지를 제대로 반영하지 않았어요. 현실에서는 매매마다 수수료 0.015% + 거래세 0.18% + 슬리피지 0.1% 이상이 빠져나갑니다. 왕복 기준 약 0.6%. 한 달에 20번 매매하면 수익률에서 12%가 사라져요. 단기 매매일수록 이 비용이 치명적입니다.
구멍 ③ — 기간 선택 편향
백테스트 기간을 "잘 나오는 구간"으로 무의식적으로 골랐어요. 2023~2024년은 건설·소재 섹터가 강세였던 시기입니다. S2는 추세추종 전략이라 강세장에서 특히 잘 나와요. 그런데 실전 운용은 그 강세 구간이 마무리되던 시점이었습니다. 백테스트는 강세장을 보고, 실전은 그 이후를 살았던 것이에요.
백테스트 수익률이 높게 나왔을 때 기뻐했다면, 그 기쁨 자체가 이미 편향의 신호다.
그래서 어떻게 할 것인가 — 믿을 수 있는 백테스트 4가지 기준
해결책 + 마무리문제를 알았으면 고쳐야죠. 세 가지 구멍을 확인한 뒤 다음 백테스트부터 이 기준을 지키기로 했습니다.
결국 S2 전략의 -1.1%는 전략 자체의 실패가 아니었어요. 잘못 설계된 백테스트를 믿고, 잘못된 기대를 품고 시작한 것이 문제였습니다. 전략은 괜찮아요. 기대치가 틀렸던 거예요.
이제 백테스트를 볼 때 수익률 숫자만 보지 않습니다. 어떤 기간인지, 거래비용이 반영됐는지, 워크포워드는 통과했는지를 함께 봅니다. 백테스트는 "이 전략이 얼마를 벌어다 줄지"를 보여주는 게 아니에요. "이 전략이 논리적으로 말이 되는지"를 검증하는 도구입니다.
좋은 백테스트는 수익률을 높이는 게 아니라 기대치를 낮추는 것이다.
① 기간 3년 이상 · 다양한 장세 포함
② 수수료 + 거래세 + 슬리피지 반영
③ 워크포워드 테스트로 미래 구간 검증
④ 파라미터 ±10% 바꿔도 결과 비슷한지 확인
'금융&재테크 공부 > 자동매매 일지' 카테고리의 다른 글
| 주식 자동매매 섹터 집중 리스크 — 건설주 4개 담았다가 하루에 40만원 잃은 이유 (0) | 2026.05.16 |
|---|---|
| 터틀트레이딩 파이썬 코드 공개 — 55일 신고가 돌파 자동매매 직접 구현 (0) | 2026.05.11 |
| 주식 자동매매 실전 후기 — 백테스트 수익률을 믿었다가 배운 것들 (0) | 2026.05.08 |