PART VII · 25장 · 197 / 210

197강. 과거에 맞춘 규칙이 미래에도 통할까?

25장. 투자전략을 검증하고 심리적 오류 줄이기

어떤 투자 전략이 지난 몇 년 동안 높은 수익을 냈다고 합니다. 그런데 수십 가지 규칙을 시험한 뒤 가장 좋았던 하나만 골랐다면 어떨까요? 우연히 과거에 잘 맞은 규칙일 수 있습니다. 중요한 질문은 그 규칙이 처음 보는 기간에서도 견딜 수 있느냐입니다.

과거에 너무 잘 맞는 규칙

시험 문제와 정답을 미리 보고 답을 외운 학생이 있다고 생각해 보세요. 같은 문제에서는 점수가 높겠지만 새로운 문제에서도 잘 풀지는 알 수 없습니다. 투자 규칙도 비슷합니다. 과거의 주가 움직임에 맞춰 조건을 계속 바꾸면 그 기간의 우연한 특징까지 규칙에 들어갈 수 있습니다.

이렇게 과거 자료에 지나치게 맞춰 새로운 상황에서 잘 작동하지 않는 문제를 과최적화라고 합니다. 과거 결과가 좋다는 사실만으로 과최적화라고 단정할 수는 없습니다. 하지만 그 결과를 만드는 동안 얼마나 많은 규칙을 바꿔 보았는지 물어봐야 합니다.

가령 매수 기준을 5일, 10일, 20일 등으로 수없이 바꾸고 가장 수익률이 높았던 숫자만 발표한다면, 다른 숫자들의 실패도 함께 확인해야 합니다. 조건을 많이 시도할수록 우연히 좋아 보이는 결과를 골랐을 가능성을 살펴봐야 하기 때문입니다.

규칙을 만든 기간과 확인하는 기간을 나눕니다

자료를 시간순으로 나눠 보겠습니다. 아래 날짜와 결과는 설명을 위한 가상 사례이며, 실제로 시험한 전략이나 추천 종목이 아닙니다.

구분 가상 기간 하는 일
훈련기간 2015~2019년 여러 후보를 비교하고 규칙을 만듦
검증기간 2020~2021년 후보를 비교하고 세부 조건을 선택함
최종 평가기간 2022~2023년 앞에서 정한 규칙을 바꾸지 않고 확인함

훈련기간은 규칙을 만드는 데 쓰는 자료입니다. 검증기간은 후보 중 무엇을 선택할지 확인하는 자료입니다. 이 과정에서 검증기간의 결과를 보고 조건을 바꾸면 그 기간은 더 이상 최종 평가에 쓰지 않은 새 자료가 아닙니다.

마지막에 남겨 둔 최종 평가기간은 규칙을 선택할 때 보지 않은 자료입니다. 흔히 표본 밖 자료라고 부릅니다. 여기서 표본은 분석에 사용한 데이터의 범위를 뜻합니다. 엄밀하게는 훈련에 사용하지 않은 검증기간도 훈련 기준으로는 표본 밖이지만, 그 결과를 보고 규칙을 선택했다면 독립적인 최종 평가기간과 구분해야 합니다.

수익률이 달라지는 가상 사례

가상의 한 규칙을 훈련기간에 선택한 뒤, 최종 평가기간에는 변경 없이 적용했다고 가정합니다. 각 기간은 서로 다른 별도 계산이고, 기간의 길이도 다릅니다. 각 기간을 1,000달러로 시작하며 입출금, 수수료, 세금은 없다고 가정합니다.

훈련기간에 1,000달러가 1,400달러가 됐다면 전체 기간 수익률은 다음과 같습니다.

(1,400 - 1,000) ÷ 1,000 × 100 = 40%입니다.

최종 평가기간에 1,000달러가 950달러가 됐다면 다음과 같습니다.

(950 - 1,000) ÷ 1,000 × 100 = -5%입니다.

검증기간 A의 비용 후 금액은 1,060달러, B는 1,070달러다. B를 선택하고 규칙을 고정해 최종 평가기간에 적용한 금액은 1,000달러에서 950달러로 −5%다.

이 수치는 연평균 수익률이 아니라 각 기간 전체의 수익률입니다. 기간이 서로 다르므로 40%와 -5%의 크기를 그대로 비교해 어느 쪽이 매년 얼마나 좋았는지 판단할 수 없습니다. 다만 규칙을 만들 때의 좋은 성적이 이후에도 그대로 나타나지는 않은 예입니다.

이 결과만으로 실패 원인이 과최적화라고 확정할 수는 없습니다. 시장 환경이 바뀌었거나 평가기간이 짧았을 수도 있습니다. 수익률뿐 아니라 손실이 얼마나 컸는지, 비교 대상은 어땠는지, 어떤 비용을 뺐는지도 확인해야 합니다. 백테스트 결과는 실제 거래에서 벌어들인 돈이 아닙니다.

시간을 앞으로 옮기며 여러 번 살펴보기

한 번의 구분만으로는 우연히 특정 시기를 잘 골랐을 수 있습니다. 그래서 시간을 한 구간씩 앞으로 옮겨가며 평가하는 방법이 있습니다. 이를 워크포워드라고 부릅니다.

예를 들어 2015~2019년으로 규칙을 정하고 2020년에 적용합니다. 다음에는 2016~2020년 자료를 이용해 미리 정한 방식으로 규칙을 다시 정하고 2021년에 적용합니다. 각 평가 시점에서 그때까지 공개된 정보만 사용하고, 이후 기간의 결과는 규칙을 정할 때 미리 보지 않아야 합니다.

이 과정은 여러 시기의 모습을 살피는 데 도움이 되지만 미래 수익을 보장하지 않습니다. 결과를 계속 보며 훈련기간 길이와 기준을 고치면 평가에 쓴 기간도 사실상 선택에 이용됩니다. 어떤 규칙을 언제 바꿨는지와 시도한 후보를 기록하고, 마지막에는 다시 보지 않은 자료로 확인해야 합니다.

실제로 전략을 볼 때

누군가 높은 성과를 보여 준다면 먼저 언제부터 언제까지의 결과인지 확인하세요. 그 기간에 전략을 만들고 바꿨는지, 선택에 쓰지 않은 별도 기간이 있는지도 물어봐야 합니다. 비교할 때는 시장, 기간, 투자금과 입출금, 배당 및 비용 처리 조건을 맞춰야 합니다.

예를 들어 최종 평가기간에서 손실이 나자 그 결과를 보고 매수 기준을 바꾼 뒤 같은 기간을 다시 시험했다면 어떨까요? 두 번째 결과는 그 기간을 참고해 고친 결과입니다. 새로운 성적표로 삼으려면 수정한 규칙을 고정한 다음, 이전에 선택에 사용하지 않은 별도 기간을 확인해야 합니다.

좋은 검증은 한 번의 높은 수익률보다 규칙을 만든 과정과 여러 기간의 위험을 함께 보여 줍니다. 다음 강의에서는 계산에 거래비용과 실제 체결 조건을 반영하면 결과가 어떻게 달라지는지 알아보겠습니다.

선택부터 최종 평가까지 작은 기록으로 연결합니다

다음 표는 실제 가격으로 돌린 전략 결과가 아니라, 선택 절차를 익힐 가상 입력입니다. A·B는 처음에 정의해 둔 두 후보라고 가정합니다. 같은 검증기간에 각각 1,000달러로 시작했고 입출금과 세금은 없습니다. 비용은 마지막 금액에서 별도로 빼며, 이미 비용을 뺀 금액에서 다시 빼지 않습니다.

검증기간의 후보 비용 전 마지막 금액 총비용 비용 후 마지막 금액 비용 후 수익률
A 1,100달러 40달러 1,060달러 6%
B 1,080달러 10달러 1,070달러 7%
  1. 후보 비교 전에 같은 기간·초기자본·거래비용 계산법과 선택 기준을 기록합니다. 이 설명에서는 비용 후 수익률이 높은 후보를 고르기로 미리 정했다고 가정합니다.
  2. 검증기간에서 B를 고르고 규칙·기간·종목 범위·비용 조건을 고정합니다. 실제 연구에서는 최대낙폭·거래 수 등 필요한 제한도 선택 전에 정합니다.
  3. 아직 보지 않은 최종 평가기간에 B만 적용합니다. 이 별도 기간도 1,000달러에서 시작했고, 비용 전 마지막 금액 970달러와 비용 20달러가 나왔다면 최종 금액은 950달러, 수익률은 −5%입니다.
  4. −5%를 본 뒤 규칙을 바꿨다면 새 버전으로 기록합니다. 같은 최종 평가기간을 다시 돌린 결과를 새 표본 밖 검증이라고 부르지 않습니다.

가상 선택 기록 CSV에 단계·후보·비용·결과가 들어 있습니다. 자신의 분석을 검토할 때는 이 기록에 실제 규칙 문서, 원자료 경로와 파일 버전을 붙여야 같은 결과를 재현할 수 있습니다.