좋은 수익률 그래프 하나를 보았을 때 확인할 것은 그래프의 높이뿐만이 아니다. 같은 데이터를 얼마나 많이 시험했고, 어떤 결과를 버렸으며, 무엇을 기준으로 최종 전략을 골랐는지도 알아야 한다.
AI로 전략 후보와 코드를 빠르게 만들 수 있게 되면서, 후보 생성의 속도에 맞춰 검증 기록을 남기는 일이 더 중요해졌다.
선택된 전략의 성적에는 전략의 우위와, 여러 후보 중 좋은 결과를 골라낸 효과가 함께 들어 있을 수 있다.
1. 과거의 승자를 아는 순간 문제가 바뀐다
어떤 자산이 크게 올랐다는 사실을 알고 과거를 보면 당시 선택이 쉬워 보인다. 실제 투자자가 풀어야 했던 문제에는 비슷하게 보였지만 실패한 다른 후보와, 그때 이용할 수 있었던 정보도 포함되어 있었다.
백테스트도 같은 문제를 만난다. 지금 살아남은 종목만 사용하거나, 발표 전에 알 수 없던 실적을 과거 날짜에 넣거나, 나중에 확정된 값을 당시 값처럼 사용하면 선택이 실제보다 쉬워진다.
검증의 출발점은 날짜가 붙은 데이터와, 그 날짜에 실제로 이용할 수 있었던 정보를 구분하는 것이다. 자료의 기준일, 발표 시각, 시스템이 받은 시각이 같은 의미인지 확인해야 한다.
2. 시험 횟수도 전략의 이력이다
이동평균 기간을 바꾸고, 진입 조건을 더하고, 손절과 청산 규칙을 조합하면 후보는 빠르게 늘어난다. 많은 후보 중 가장 좋은 것만 보여 주면 탐색 과정에서 생긴 우연을 숨길 수 있다. 이 선택 문제는 백테스트 과적합 확률 연구가 다루는 핵심이다.
실험 기록에는 채택한 전략뿐 아니라 시험한 후보, 평가 기준과 탈락 이유를 남기자. 최종 결과를 보고 평가 기준을 바꾸었다면 그 변경도 새로운 탐색에 포함한다.
좋은 결과가 나온 주변 조건도 확인한다. 특정 설정값에서만 성과가 높고 조금 바꾸면 크게 무너진다면 왜 그 좁은 값이 경제적으로 의미가 있는지 설명이 필요하다. 주변 값이 비슷하다고 미래 성과가 보장되는 것은 아니지만, 취약한 결과를 찾는 데는 도움이 된다.
3. 검증 구간을 반복해서 보면 선택에 사용한 구간이 된다
전략을 개발한 기간과 평가할 기간을 나누는 것은 기본적인 장치다. 다만 평가 구간의 결과를 본 뒤 규칙을 계속 고치면 그 구간도 개발 과정에 영향을 주게 된다.
그래서 어느 시점에 규칙을 고정했고 어떤 데이터를 아직 보지 않았는지 기록한다. 평가 구간에서 실패한 결과를 삭제하거나, 좋은 구간만 연결하면 분리의 의미가 약해진다.
표본 밖이라는 이름은 파일을 나눈 방식과 함께, 전략 선택에 그 결과를 사용했는지까지 설명해야 한다. 이미 본 결과를 다시 보며 “처음 보는 시장에서도 통했다”고 확대하지 말자.
4. 비용과 비교 대상은 같은 조건으로 둔다
거래비용은 반복된다. 거래가 많으면 수수료와 체결 차이가 작은 우위를 없앨 수 있다. 최소 주문 단위, 미체결과 지연도 전략의 실제 경로를 바꾼다.
가상 예시로, 한 번의 거래가 전체 자산을 매수한 뒤 전부 매도하는 왕복 거래이고 그 총비용을 0.2%로 가정하자. 수익이 전혀 없고 이 거래만 100번 반복하면 잔고는 약 81.9%가 된다. 비용만 보여 주는 단순 모형이며 실제 전략의 성과 예측은 아니다.
비교 대상에는 같은 기간과 비용 산정 방식, 자금 조건을 적용한다. 거래 횟수가 다르면 총비용은 달라지며, 레버리지가 다르면 그 차이를 별도로 표시한다. 수익률이 높은 결과가 더 큰 위험을 사용한 결과인지, 특정 상승장에 집중된 결과인지도 살펴보자. 성과표에는 수익률의 크기와 그 수익률을 믿을 수 있는 조건이 함께 있어야 한다.
5. 수익률표 옆에 다섯 가지 기록을 요구한다
당시 이용할 수 있었던 데이터와 그 시각의 정의.
시험한 후보와 최종 선택 기준.
규칙을 고정한 시점과 선택에 사용하지 않은 평가 자료.
비용·체결·비중을 바꾸었을 때의 결과.
같은 조건의 비교 대상과 실패한 구간.
이 기록이 있으면 어디서 성과가 생겼고 무엇이 바뀌면 사라질 수 있는지 연구할 수 있다. 좋은 그래프를 발견한 뒤의 작업은 그 그래프를 더 보기 좋게 만드는 것이 아니라, 그 결과를 지탱하는 조건을 확인하는 일이다.
