백테스트에 합격한 전략을 은퇴시켰다: 다중비교가 만든 가짜 합격

수년간 굴려온 코인 자동매매 봇의 신호 전략 성과가 신통치 않아, 전략을 갈아엎는 재설계 프로젝트를 돌렸습니다. 전략 3종 × 심볼 4종 = 12개 조합을 백테스트 게이트에 올렸고, 2개 조합이 기준을 통과했습니다. 그리고 저는 그 합격자들을 실전에 투입하는 대신 — 신호 매매 자체를 은퇴시켰습니다. 이 글은 "백테스트 합격"이 어떻게 통계적 착시일 수 있는지, 그리고 실패한 프로젝트에서 무엇을 건질 수 있는지에 대한 기록입니다.

1. 발단: 성과가 우연과 구분되지 않는다

봇은 성실하게 돌았습니다. 기술적 신호로 진입하고, 손절과 익절 규칙을 지켰습니다. 문제는 결과가 "규칙이 없는 봇"과 구분되지 않았다는 겁니다. 수수료를 빼면 사실상 동전 던지기. 그래서 정공법을 택했습니다 — 전략을 처음부터 재설계하고, 백테스트 하네스를 만들어 통과한 것만 살리기로.

2. 설계: 12개의 셀, 하나의 게이트

재설계는 성격이 다른 전략 3종(추세 추종, 평균 회귀, 변동성 돌파 계열)을 주요 심볼 4개에 각각 적용한 12개 조합 그리드였습니다. 각 셀은 동일한 게이트를 통과해야 합니다: 최소 거래 수, 승률 하한, 손익비 하한, 최대 낙폭 상한. 인샘플(과거 데이터 앞부분)에서 파라미터를 잡고 게이트를 적용했습니다.

결과: 12셀 중 2셀 합격. 특정 전략·특정 심볼 조합이 승률과 손익비 기준을 넘겼습니다. 여기서 멈췄다면 "재설계 성공, 2개 조합 실전 투입"이라는 기분 좋은 결론이 나왔을 겁니다.

3. 반전: 아웃오브샘플에서 전원 붕괴

남겨둔 검증 구간(아웃오브샘플)에서 합격자 2셀을 다시 돌렸습니다. 결과는 잔인할 만큼 명확했습니다. 두 셀 모두 붕괴. 승률은 기준 아래로 떨어졌고 손익비는 1 밑으로 내려왔습니다. 인샘플의 합격은 미래에 재현되지 않았습니다.

이게 우연이 아니라는 걸 아는 방법이 있습니다. 거꾸로 계산해보는 겁니다. 셀 하나가 순전히 운으로 게이트를 넘을 확률을 보수적으로 15~20%라고 치면, 12번 시도에서 "운 좋은 합격자"가 2개쯤 나올 확률은 절반이 넘습니다. 즉 인샘플 결과는 "전략이 좋다"의 증거가 아니라 "12번 던지면 몇 번은 잘 나온다"는 산수의 재확인이었습니다. 통계학이 다중비교(multiple comparisons) 문제라고 부르는 바로 그것입니다.

4. 결정: 은퇴도 결과다

선택지는 셋이었습니다. ① 기준을 낮춰 몇 개를 통과시킨다 ② 조합을 더 늘려 다시 돌린다 ③ 신호 매매를 접는다. ①은 자기기만이고, ②는 다중비교를 더 악화시키는 짓입니다(시도가 늘수록 우연 합격자만 늘어납니다). 그래서 ③ — 신호 기반 진입을 영구 킬스위치로 잠갔습니다.

대신 이런 것들을 남겼습니다.

  • 백테스트 하네스: 전략 플러그인 구조, 게이트 상수, 인샘플/아웃오브샘플 분리 검증 코드는 재사용 자산입니다. 다음에 아이디어가 생기면 며칠이 아니라 몇 시간 만에 검증대에 올릴 수 있습니다.
  • 규칙 기반 분할매수로 전환: 예측(신호)이 아니라 규율(가격 사다리 분할매수, 고정 손절, 예산 상한)로 구조를 바꿨습니다. 예측력이 없다는 걸 인정하면, 남는 우위는 규율뿐입니다.
  • 과거 성과의 재해석: 별도로 종목 추천 이력을 백테스트해 보니 선택 자체의 초과수익은 없었고, 진짜 우위는 익절·손절·회전 규율에서 나오고 있었습니다. 은퇴 결정과 일관된 증거였습니다.

5. 교훈

  • 아웃오브샘플 없는 백테스트는 검증이 아니라 소원이다. 인샘플 합격은 언제나 나온다. 미래를 흉내 내는 건 남겨둔 데이터뿐이다.
  • 시도한 횟수만큼 의심하라. 12개를 던져 2개가 통과했다면, 먼저 물을 것은 "전략이 좋은가"가 아니라 "우연히 2개 나올 확률이 얼마인가"다. 조합을 늘릴수록 기준은 더 엄격해져야 한다.
  • 은퇴는 실패가 아니라 결론이다. "우위 없음"을 증명하고 멈추는 것은, 우위가 있다고 믿으며 수수료를 태우는 것보다 수익률이 높다.
  • 프로젝트가 죽어도 하네스는 남는다. 결론이 은퇴여도 검증 인프라와 규율의 코드화는 다음 시도의 출발선을 끌어올린다.

FAQ

Q. 더 긴 데이터로 다시 돌리면 결과가 달라지지 않을까요?

데이터를 늘리면 추정은 안정되지만, 12셀을 다시 던지는 순간 다중비교 문제도 그대로 다시 생깁니다. 데이터 길이의 문제가 아니라 시도 횟수 대비 검증 설계의 문제입니다. 늘어난 데이터에서도 아웃오브샘플 분리와 시도 횟수 보정이 없으면 같은 착시가 반복됩니다.

Q. 파라미터를 더 정교하게 튜닝했다면요?

튜닝을 정교하게 할수록 인샘플 성적은 확실히 좋아집니다 — 그리고 그만큼 과최적화되어 아웃오브샘플 붕괴는 더 극적이 됩니다. 튜닝의 자유도는 다중비교의 또 다른 이름입니다.

Q. 그럼 개인이 자동매매로 할 수 있는 건 없나요?

"예측"과 "집행"을 구분하면 됩니다. 예측(신호)에서 우위를 증명하는 건 극히 어렵지만, 집행 — 감정 없이 규칙대로 분할매수하고, 손절을 지키고, 예산 상한을 강제하는 것 — 은 자동화가 인간을 확실히 이기는 영역입니다. 은퇴시킨 건 예측이지 자동화가 아닙니다.