매매기법 · 85/87강 · 4분 읽기

워크포워드 분석 매매법: 백테스트 과최적화(커브피팅) 판별하는 법

왜 백테스트는 거짓말을 할까: 커브피팅의 정체

누구나 한 번쯤 비슷한 경험을 합니다. 지표 몇 개를 조합하고 파라미터를 이리저리 돌려보다가, 어느 순간 백테스트 수익 곡선이 거의 일직선으로 우상향하는 조합을 찾아냅니다. 그런데 그 설정을 실전에 그대로 옮기면 며칠 만에 손실이 쌓이기 시작합니다. 이 현상에는 이름이 있습니다 — 커브피팅(curve-fitting), 또는 과최적화(over-optimization), 학술적으로는 **데이터 스누핑(data snooping)**이라고도 부릅니다.

커브피팅이 생기는 메커니즘은 단순합니다. 이동평균 기간, RSI 임계값, 손절 배수 같은 파라미터를 몇 개만 가져와도 조합의 수는 수백, 수천 개로 늘어납니다. 그 수천 개 조합을 똑같은 과거 데이터 구간에 전부 돌려보고 가장 성과가 좋은 조합을 고르면, 그 조합은 사실 "시장의 반복되는 구조"를 찾은 게 아니라 "그 특정 구간에 있었던 우연한 잡음"을 외워버린 것에 가깝습니다. 시험을 보기 전에 답안지를 미리 보고 공부한 것과 비슷합니다 — 그 시험에서는 100점이 나오지만, 다음 시험(실전)에서는 전혀 다른 문제가 나옵니다.

13강의 리스크 필터에서 다룬 ATR 손절폭이나 순이익 필터 같은 규칙들도, 42강의 켈리 공식에 넣는 승률·손익비 같은 입력값도, 결국 과거 데이터를 돌려서 뽑아낸 숫자입니다. 그 숫자 자체가 커브피팅의 산물이라면, 그 위에 쌓은 리스크 관리와 사이징 로직도 전부 잘못된 지도 위에서 길을 찾는 셈이 됩니다. 이번 강의에서 다루는 워크포워드 분석은 바로 이 "지도가 맞는지"를 검증하는 방법입니다.

과최적화를 의심해야 하는 흔한 신호들

전략을 만들다 보면 다음과 같은 상황을 자주 만나게 됩니다. 아래 신호들은 반드시 과최적화를 의미하는 건 아니지만, 많이 보고된 공통적인 **의심 신호(red flag)**로 받아들이는 것이 합리적입니다.

신호 왜 의심스러운가
조정 가능한 파라미터가 5~6개 이상 파라미터가 늘어날수록 "우연히 잘 맞는" 조합이 나올 확률도 함께 커집니다
수익 곡선이 비현실적으로 매끈함 실제 시장은 변동성 구간·침체 구간이 섞여 있어야 자연스럽습니다. 거의 직선으로 오르는 곡선은 특정 구간의 잡음을 외운 결과일 가능성이 있습니다
수백~수천 개 조합을 테스트한 뒤 "최고점"만 채택 시도 횟수가 많아질수록 그중 하나가 순전히 운으로 좋아 보일 확률도 커집니다
백테스트 구간이 3~5년 미만, 혹은 한 가지 장세(강세장 등)만 포함 금리 인상기, 급락장, 저변동성 횡보장 등 서로 다른 시장 체제를 겪어보지 않은 전략은 다음 체제에서 처음 보는 상황을 만나게 됩니다
파라미터를 살짝만 바꿔도 성과가 급격히 달라짐 진짜 엣지(edge)라면 파라미터 주변에서 성과가 비교적 완만하게 변해야 합니다. 특정 값 하나에서만 성과가 튀어 오른다면 그 값에 우연히 맞춘 것에 가깝습니다

이 표의 각 항목은 "이러면 반드시 망한다"는 확정적 법칙이 아니라, 전략을 공개하기 전에 스스로 점검해볼 체크리스트로 보는 것이 맞습니다.

워크포워드 분석이란: 인샘플과 아웃오브샘플을 반복해서 밀어가는 구조

커브피팅을 완전히 없앨 방법은 없지만, 그 위험을 가장 널리 쓰이는 방식으로 줄이는 기법이 **워크포워드 분석(Walk-Forward Analysis)**입니다. 개념은 이렇습니다.

  1. 전체 데이터를 **인샘플(in-sample, 훈련 구간)**과 **아웃오브샘플(out-of-sample, 검증 구간)**로 나눕니다.
  2. 인샘플 구간에서만 파라미터를 최적화합니다 — 이 구간의 데이터는 전략을 "공부"시키는 데 씁니다.
  3. 그렇게 고른 파라미터를, 그 전략이 한 번도 보지 못한 바로 다음 구간(아웃오브샘플)에 그대로 적용해서 성과를 확인합니다. 이 구간에서는 파라미터를 다시 건드리지 않습니다.
  4. 두 구간을 함께 앞으로 밀고(roll forward), 2~3번 과정을 전체 데이터가 끝날 때까지 반복합니다.
10년치 데이터를 여러 폴드로 나눠, 각 폴드마다 2년 인샘플(파란색) 구간에서 파라미터를 최적화하고 바로 뒤 6개월 아웃오브샘플(주황색) 구간에서 검증한 뒤, 전체 창을 6개월씩 앞으로 밀어가며 반복하는 워크포워드 분석의 타임라인 구조
워크포워드 분석은 인샘플(훈련)과 아웃오브샘플(검증) 창을 한 쌍으로 묶어, 그 쌍을 시간 축을 따라 앞으로 밀면서 반복 검증한다.

여기서 핵심은 같은 데이터로 파라미터를 고르고 그 성과를 평가하지 않는다는 원칙입니다. 파라미터는 항상 "이미 지나간, 전략이 학습한" 구간에서 고르고, 성과 평가는 항상 "전략이 한 번도 학습에 쓰지 않은" 구간에서만 이루어집니다. 이 원칙 하나가 커브피팅을 줄이는 핵심 장치입니다.

단순 1회 분할(홀드아웃) vs 워크포워드 분석

워크포워드 분석과 자주 혼동되는 것이 **홀드아웃 검증(단순 1회 분할)**입니다. 전체 데이터를 앞쪽 70%(훈련)와 뒤쪽 30%(검증)로 딱 한 번만 나누는 방식입니다. 둘 다 "안 본 데이터로 검증한다"는 기본 원리는 같지만, 실전에서의 신뢰도는 꽤 다릅니다.

구분 홀드아웃(1회 분할) 워크포워드 분석(반복 분할)
검증 횟수 1회 여러 번 (보통 5회 이상)
서로 다른 시장 체제 커버 운에 좌우됨 — 검증 구간이 우연히 강세장/약세장 한쪽에 몰릴 수 있음 데이터 전체 기간의 다양한 체제를 순차적으로 거치게 됨
결과의 안정성 판단 불가능 — 숫자가 하나뿐 가능 — 폴드별 성과 분산을 보고 전략이 꾸준한지 판단 가능
계산 비용 낮음 높음 (구간 수만큼 반복 최적화)
"운이 좋았을 뿐"이라는 반론에 대한 방어력 약함 상대적으로 강함(완전하지는 않음)

홀드아웃이 쓸모없는 건 아닙니다 — 간단한 전략을 빠르게 거르는 1차 필터로는 충분합니다. 하지만 "이 전략을 실제로 돈 넣고 돌릴 것인가"를 판단하는 단계에서는, 검증이 단 한 번뿐인 홀드아웃보다 여러 구간에서 반복 검증하는 워크포워드 분석이 훨씬 신뢰도 높은 근거를 제공한다는 것이 실무에서 널리 받아들여지는 관점입니다.

숫자로 보는 예시: 10년 데이터를 어떻게 나누는가

구체적인 숫자로 감을 잡아보겠습니다. 아래 예시는 어디까지나 개념을 보여주기 위한 가상의 숫자이며, 실제 백테스트 결과를 나타내는 것이 아닙니다.

  • 전체 데이터: 10년치 일봉
  • 인샘플(훈련) 창 길이: 2년
  • 아웃오브샘플(검증) 창 길이: 6개월
  • 창을 앞으로 미는 간격: 6개월

이렇게 설정하면 1번째 폴드는 1~2년차 데이터로 최적화하고 2.0~2.5년차에서 검증, 2번째 폴드는 1.5~3.5년차로 최적화하고 3.5~4년차에서 검증하는 식으로, 전체 10년을 따라가며 약 14~16개의 아웃오브샘플 구간이 만들어집니다. 업계에는 "데이트레이딩처럼 매매 빈도가 높은 전략은 폴드 수를 10~20개 정도로, 스윙 전략은 최소 5개 이상으로 잡으라"는 식의 권고가 돌아다니지만, 이는 특정 통계적 증명에 기반한 고정 법칙이 아니라 실무자들 사이에 통용되는 경험적 가이드라인으로 받아들이는 것이 정확합니다.

중요한 건 폴드 수 자체가 아니라, 그 폴드들이 서로 다른 시장 체제를 실제로 포함하는가입니다. 10년 중에 급락장(예: 변동성이 급등했던 시기)과 장기 횡보장이 전혀 들어있지 않다면, 폴드를 100개로 쪼개도 전략은 여전히 "처음 보는 장세"를 실전에서 처음 만나게 됩니다.

워크포워드 효율성(WFE)으로 신뢰도를 수치화하기

워크포워드 분석을 돌리고 나면, 각 폴드의 아웃오브샘플 성과를 하나의 숫자로 요약하는 지표가 쓰입니다. 트레이딩 시스템 개발자 로버트 파도(Robert Pardo)가 제시한 **워크포워드 효율성(Walk-Forward Efficiency, WFE)**이 대표적입니다.

WFE = 아웃오브샘플 평균 성과 ÷ 인샘플 평균 성과 × 100

인샘플에서 연 30% 수익이 나왔는데 아웃오브샘플에서는 연 10%만 나왔다면 WFE는 약 33%입니다. 반대로 인샘플 25%, 아웃오브샘플 20%라면 WFE는 80%로, 인샘플과 아웃오브샘플 성과 차이가 상대적으로 작다는 뜻입니다. WFE가 낮을수록 전략이 인샘플 구간의 특성에 과하게 맞춰졌다는 신호로 해석하는 경우가 많고, 실무에서는 WFE 50% 이상을 어느 정도 안정적인 전략의 기준점으로 삼는 경우가 종종 보입니다 — 다만 이 50%라는 숫자도 학계에서 공식적으로 합의된 절대 기준이 아니라, 여러 실무자들 사이에 널리 퍼진 참고용 경험치라는 점을 분명히 해둘 필요가 있습니다.

더 엄격하게 접근하고 싶다면, 금융공학자 마르코스 로페즈 데 프라도(Marcos López de Prado)와 데이비드 베일리(David Bailey)가 제안한 **백테스트 과최적화 확률(Probability of Backtest Overfitting, PBO)**이나 디플레이티드 샤프 비율(Deflated Sharpe Ratio) 같은 통계적 보정 기법도 있습니다. 이들은 "몇 개의 조합을 시도했는지"까지 계산에 반영해서, 단순히 성과가 좋아 보이는 것과 통계적으로 유의미한 엣지를 구분하려는 시도입니다. 다만 이 영역은 수학적으로 복잡하고 실무 적용에는 상당한 통계 지식이 필요하므로, 워크포워드 분석을 먼저 익히고 나서 다음 단계로 참고하는 것이 현실적입니다.

워크포워드 분석의 한계: 이것만으로는 충분하지 않다

워크포워드 분석이 "검증됐다는 증명서"를 발급해주는 도구는 아닙니다. 적어도 세 가지 한계를 분명히 알고 있어야 합니다.

첫째, 워크포워드 결과 자체도 선택 편향에서 완전히 자유롭지 않습니다. 만약 50가지 전략을 각각 워크포워드로 검증하고, 그중 아웃오브샘플 성과가 가장 좋았던 하나만 골라서 실전에 쓴다면, "워크포워드를 통과했다"는 사실 자체가 다시 한번 선택 편향에 오염된 것입니다. 여러 후보 중에서 고른다는 행위 자체가 또 다른 층위의 과최적화를 만들어낼 수 있습니다.

둘째, 룩어헤드 편향(look-ahead bias)은 워크포워드와 별개의 문제입니다. 백테스트 코드가 실수로 미래 데이터를 참조하고 있다면(예: 그날 종가가 확정되기 전에 그 값을 이용해 그날 신호를 만드는 경우), 워크포워드 구조를 아무리 정교하게 짜도 그 오류는 모든 폴드에 똑같이 섞여 들어갑니다.

셋째, 포지션 간 상관관계나 체결 비용 같은 현실적 요소는 워크포워드 구조 자체가 자동으로 해결해주지 않습니다. 여러 종목에 동시에 들어가는 전략이라면, 종목별로 따로 워크포워드를 돌려도 종목들 간의 상관관계로 인한 리스크는 별도로 점검해야 합니다.

실전 체크리스트

  1. 파라미터 개수를 최소한으로 줄입니다 — 많을수록 우연히 좋아 보이는 조합이 나올 확률이 커집니다.
  2. 전체 데이터를 최소 5개 이상의 폴드로 나눠 워크포워드를 돌리고, 그 안에 급락장·횡보장 등 서로 다른 시장 체제가 포함되는지 확인합니다.
  3. 각 폴드의 아웃오브샘플 성과를 전부 기록하고, WFE 같은 지표로 인샘플과의 격차를 숫자로 확인합니다.
  4. 시도한 전체 조합 수를 기록해둡니다 — 나중에 "운이었는지 엣지였는지"를 판단할 때 이 숫자가 필요합니다.
  5. 백테스트에서 쓴 체결 가정(수수료·슬리피지 등, 13강 참고)이 실거래와 일치하는지 다시 확인합니다.
  6. 아웃오브샘플 구간은 절대로 "최적화에 다시 쓰지 않는다"는 원칙을 끝까지 지킵니다.

자주 묻는 질문

워크포워드 분석을 통과했다면 실전에서도 반드시 수익이 날까요?

아닙니다. 워크포워드 분석은 커브피팅 위험을 줄이는 검증 절차일 뿐, 미래 수익을 보장하는 장치가 아닙니다. 시장 구조 자체가 바뀌거나 전혀 새로운 유형의 이벤트가 발생하면 과거 어느 구간에도 없던 상황이 생길 수 있습니다.

폴드 수가 많을수록 항상 더 좋은가요?

반드시 그렇지는 않습니다. 폴드 수가 늘어나면 각 아웃오브샘플 구간이 짧아져 통계적으로 신뢰하기 어려운 표본이 될 수 있습니다. 데이터 길이와 매매 빈도에 맞춰 폴드 길이를 정하는 것이 숫자 자체를 늘리는 것보다 중요합니다.

초보자가 혼자서도 워크포워드 분석을 할 수 있나요?

파이썬 같은 프로그래밍 언어로 직접 구현하거나, 일부 백테스팅 플랫폼이 제공하는 내장 기능을 쓰는 방식 모두 가능합니다. 다만 그 전에 6강의 손익비 개념과 표본 크기의 기본을 먼저 이해해두면, 워크포워드 결과를 해석할 때 훨씬 수월합니다.

정리

  • 커브피팅(과최적화)은 파라미터를 과거 데이터에 지나치게 맞춰서, 그 구간의 우연한 잡음까지 "패턴"으로 외워버리는 현상입니다.
  • 워크포워드 분석은 데이터를 인샘플(최적화)과 아웃오브샘플(검증)로 나누고, 이 창을 시간 축을 따라 반복해서 미는 방식으로 커브피팅 위험을 줄입니다.
  • 1회만 나누는 홀드아웃 검증보다, 여러 구간을 반복 검증하는 워크포워드 분석이 전략의 꾸준함을 더 신뢰성 있게 보여줍니다.
  • 워크포워드 효율성(WFE)처럼 인샘플·아웃오브샘플 격차를 숫자로 요약하는 지표가 있지만, 구체적 기준치(예: 50%)는 공식 표준이 아니라 널리 쓰이는 경험적 가이드라인입니다.
  • 워크포워드 분석도 선택 편향, 룩어헤드 편향, 포지션 간 상관관계 같은 문제를 전부 해결해주지는 않으므로, 다른 검증 원칙과 함께 써야 합니다.