개념
최적화와 과적합 — 백테스트 수익률이 실전에서 사라지는 이유
“최적 파라미터를 찾았더니 연 100% 수익률이 나왔다”는 문장은 대체로 사실입니다. 그리고 대체로 쓸모없습니다. 그 값은 이미 지나간 과거에 맞춰 고른 것이기 때문입니다.
최적화란 무엇인가
전략에는 숫자로 된 설정값이 있습니다. 이동평균 며칠짜리를 쓸지, 밴드를 표준편차 몇 배로 잡을지 같은 것들입니다. 이 값을 바꾸면 성과가 달라지므로, 과거 데이터에서 가장 성과가 좋았던 조합을 찾는 것이 파라미터 최적화입니다.
문제는 여기서 시작됩니다. “가장 좋았던”은 이미 일어난 일에 대한 서술입니다. 그 값이 앞으로도 가장 좋다는 보장은 어디에도 없습니다.
격차를 실제로 재보면
추측 대신 측정했습니다. 비트코인 전체 데이터를 시간 순으로 둘로 자릅니다. 앞부분(인샘플)에서만 최적 파라미터를 찾고, 그 값을 한 번도 보지 않은 뒷부분(아웃오브샘플)에 그대로 적용합니다. 실전과 같은 조건입니다.
| 구간 | CAGR | 샤프지수 |
|---|---|---|
| 인샘플 파라미터를 고른 구간 · ~2023-12-05 | 111.9% | 1.92 |
| 아웃오브샘플 처음 보는 구간 · 2023-12-05~ | 33.9% | 1.26 |
| 같은 기간 매수후보유 비교 기준 | 17.2% | 0.59 |
볼린저 밴드 돌파 기준으로 CAGR이 111.9%에서 33.9%로 떨어졌습니다. 대략 3.3분의 1입니다. 사라진 부분이 곧 과적합의 크기입니다.
다만 여기서 성급하게 결론 내리면 안 됩니다. 같은 기간 그냥 보유했을 때는 17.2%였습니다. 즉 전략은 처음 보는 구간에서도 매수후보유를 이겼습니다 — 다만 백테스트가 약속한 만큼은 아니었을 뿐입니다.
과적합을 줄이는 방법
- 파라미터 수를 줄인다 — 조절 손잡이가 많을수록 과거에 맞추기 쉬워집니다. 이 사이트의 전략은 대부분 2~3개입니다.
- 구간을 나눠 검증한다 — 위처럼 인샘플/아웃오브샘플로 나누거나, 여러 구간을 반복 검증(워크포워드)합니다.
- 주변 값도 확인한다 — 최적값 하나만 튀고 옆값이 형편없다면 그건 우연입니다. 주변이 완만하게 좋아야 신뢰할 수 있습니다.
- 여러 자산에서 확인한다 — 한 종목에서만 통하는 값은 그 종목의 과거에 맞춘 것일 가능성이 높습니다.
그래서 이 사이트의 숫자는 어떻게 읽어야 하나
이 사이트의 종목별 페이지는 전 구간 인샘플 최적화 결과를 싣습니다. 위에서 본 대로 실제 운용 성과보다 높습니다. 그럼에도 그 값을 싣는 이유는, 파라미터가 2~3개뿐이라 왜곡 폭이 제한적이고 전략 사이의 상대 비교에는 여전히 쓸모가 있기 때문입니다.
절대 수익률을 목표로 삼지 마시고, “어떤 전략이 이 자산의 성격과 맞는가”를 보는 용도로 쓰시길 권합니다.