팩터 백테스트, 과최적화는 어디서부터 시작되는가
팩터 백테스트에서 가장 높은 샤프비율을 만든 조합은 눈에 잘 띕니다. 하지만 후보를 많이 시험할수록 과거 데이터에 우연히 잘 맞은 조합을 고를 가능성도 커집니다. 성과 숫자 하나만 보면 전략을 발견한 것인지, 잡음에 이름을 붙인 것인지 구분하기 어렵습니다.
기존 글에는 표본내·표본외 샤프비율 차이 0.5와 파라미터 ±10%라는 두 숫자만 적었습니다. 설명이 짧다 보니 두 값을 통계적으로 검증된 합격선처럼 읽을 여지가 있었습니다. 두 수치는 보편적인 기준이 아닙니다. 이 글에서 검증을 멈추고 원인을 다시 보는 운영 경고선입니다.
과최적화는 최고점보다 선택 과정에서 생깁니다
퀀트 백테스트 과최적화는 결과가 좋아 보인다는 이유만으로 생기지 않습니다. 같은 데이터에서 팩터 정의, 보유 기간, 종목 수, 리밸런싱 주기와 진입 조건을 계속 바꾼 뒤 가장 좋은 조합만 남기는 선택 과정이 문제입니다. 시도한 후보가 많을수록 우연히 높은 성과를 낸 후보가 섞일 여지가 늘어납니다.
최종 표에는 선택한 전략 하나만 적지 않습니다. 시험한 후보 수, 바꾼 조건, 선택 규칙을 함께 남겨야 합니다. 결과를 본 뒤 조건을 추가했다면 그 조건도 새로운 시도로 셉니다. 기록하지 않은 재시도는 백테스트를 실제보다 깨끗하게 보이게 만듭니다.
데이터를 시간 순서대로 세 구간으로 나눕니다
먼저 학습 구간에서 아이디어와 넓은 파라미터 범위를 정합니다. 검증 구간에서는 후보를 비교하고 한 조합을 선택합니다. 마지막 시험 구간은 선택이 끝날 때까지 열지 않습니다. 시험 결과를 보고 조건을 다시 바꿨다면 그 구간은 더 이상 처음 보는 데이터가 아닙니다.
시계열 자료는 무작위로 섞으면 안 됩니다. 미래 정보가 과거 구간에 들어가는 누수를 막고 실제 운용처럼 과거에서 미래 방향으로 검증해야 합니다. 한 번의 분할만 믿기 어렵다면 여러 시점을 굴리는 워크포워드 검증을 더합니다. 다만 구간을 여러 번 확인하면서 다시 조정했다면 그 횟수 역시 선택 과정에 포함합니다.
한 점 대신 파라미터 평원을 봅니다
가장 높은 한 점보다 주변 값에서도 성과가 완만하게 유지되는 구간을 먼저 봅니다. 예를 들어 선택한 파라미터를 ±10% 움직였을 때 순위가 크게 뒤집히는지 확인합니다. 여기서 ±10%는 전략 일반에 통하는 통계적 임계값이 아니라 민감도 점검을 시작하기 위한 운영 규칙입니다. 파라미터의 단위와 경제적 의미에 따라 범위는 달라져야 합니다.
평원처럼 보이는 구간도 거래비용을 넣으면 사라질 수 있습니다. 수수료, 세금, 슬리피지와 체결 지연을 같은 조건으로 반영하고 거래 수가 지나치게 적지 않은지도 확인합니다. 특정 시장, 짧은 기간, 몇 번의 큰 수익에 결과가 몰려 있다면 파라미터가 안정적으로 보여도 별도의 위험 신호입니다.
표본내와 표본외의 차이는 경고로 씁니다
이 글에서는 표본내 샤프비율과 표본외 샤프비율의 차이가 0.5 이상이면 과최적화 의심 구간으로 표시합니다. 차이가 경고선을 넘었다고 전략을 바로 폐기하지는 않습니다. 거래비용 변화, 시장 국면 차이, 표본 수 부족과 특정 거래 집중 여부를 차례로 확인합니다.
반대로 차이가 0.5보다 작다고 검증이 끝나는 것도 아닙니다. 낮은 샤프비율 두 개가 비슷할 수도 있고, 여러 후보 중 우연히 덜 무너진 조합을 골랐을 수도 있습니다. 절대 성과, 낙폭, 거래 수, 비용 민감도와 선택 횟수를 함께 봐야 합니다.
시도 횟수는 별도 지표로 확인합니다
Bailey, Borwein, López de Prado, Zhu가 제안한 백테스트 과최적화 확률(Probability of Backtest Overfitting, PBO)은 같은 데이터에서 여러 후보를 고른 뒤 표본외에서 성과가 뒤집힐 가능성을 추정하는 틀입니다. 조합 대칭 교차검증(Combinatorially Symmetric Cross-Validation, CSCV)으로 여러 학습·검증 조합을 만들기 때문에 한 번의 홀드아웃보다 선택 위험을 직접 다룹니다.
Deflated Sharpe Ratio는 관측된 샤프비율을 그대로 믿지 않고 여러 번의 시도에서 생긴 선택 편향, 수익률 분포의 비정규성, 표본 길이를 함께 고려합니다. PBO나 Deflated Sharpe Ratio를 계산하지 않았다면 계산했다고 쓰면 안 됩니다. 대신 몇 개의 후보를 시험했는지 공개하고 단일 최고값을 확정적인 증거처럼 표현하지 않는 데서 시작할 수 있습니다.
지금 적용할 점검 순서입니다
- 팩터의 경제적 가설과 선택 규칙을 결과를 보기 전에 적습니다.
- 데이터를 학습·검증·최종 시험 구간으로 시간 순서대로 분리합니다.
- 시험한 후보 수와 결과를 본 뒤 바꾼 조건을 모두 기록합니다.
- 파라미터 주변 값, 거래비용, 시장과 기간을 바꿔도 구조가 남는지 확인합니다.
- 표본내·표본외 샤프비율 차이 0.5와 파라미터 ±10%는 합격선이 아니라 재검증 경고로 사용합니다.
- 마지막 시험 구간을 확인한 뒤에는 같은 결과에 맞춰 전략을 다시 조정하지 않습니다.
이 절차를 지켜도 미래 성과가 보장되지는 않습니다. 생존편향, 미래 정보 누수, 기업행동 반영 오류와 짧은 표본은 별도로 점검해야 합니다. 핵심은 가장 좋은 숫자를 찾는 일이 아니라 그 숫자를 고른 과정을 다른 사람이 다시 확인할 수 있게 남기는 데 있습니다.
참고 자료
본 글은 검증 방법론 설명이며 특정 전략의 수익을 보장하지 않습니다.
작성자의 확인 범위: 팩터 백테스트, 과최적화는 어디서부터 시작되는가
저는 금융 IT 엔지니어로 일하며 퀀트 투자와 시장 데이터를 공부하고 있습니다. 이번 글에서는 ‘팩터 백테스트, 과최적화는 어디서부터 시작되는가’를 이해할 때 필요한 개념과 검증 질문을 정리했습니다. 다만 이 글 자체는 특정 전략의 실제 수익률을 제가 재계산했거나 실거래로 확인한 기록이 아닙니다.
따라서 개인 경험을 근거로 한 수익 보장처럼 읽어서는 안 됩니다. 원문에서 확인된 내용과 아직 독립적으로 확인하지 못한 주장을 구분하고, 다음 검증에서 확인할 데이터·기간·비용을 남기는 것이 이 글의 목적입니다.
댓글
댓글 쓰기