전략을 많이 시험하면 최고 성과도 커질까? 데이터 스누핑 검증

백테스트에서 Sharpe가 가장 높은 변수 하나를 찾았다고 가정해 보겠습니다. 후보가 처음부터 하나였다면 그 결과는 한 번의 검증입니다. 하지만 이동평균 기간, 밴드, 진입 방향을 수천 번 바꾼 뒤 최고값만 남겼다면 같은 숫자의 의미가 달라집니다.

좋은 규칙을 찾은 것이 아니라 우연히 좋았던 규칙을 고른 것일 수 있기 때문입니다. 선택되지 않은 수백 개의 실패 결과가 표에서 사라지면 마지막 승자만 특별해 보입니다.

Sullivan·Timmermann·White는 1999년 논문에서 이 문제를 데이터 스누핑으로 다뤘습니다. 26개였던 기존 기술적 규칙을 7,846개로 확장하고, 최고 규칙의 성과가 전체 탐색을 감안한 뒤에도 의미가 있는지 White의 Reality Check 부트스트랩으로 확인했습니다.

같은 질문을 DIA 수정 일봉과 1,184개 기술 규칙으로 축약 검증했습니다. 2000~2012년에서 최고 Sharpe를 찾고 2013~2025년에는 변수를 다시 고르지 않았습니다.

1,184개 중 선택된 규칙은 탐색 구간 Sharpe 0.63이었지만 홀드아웃에서는 -0.30으로 바뀌었습니다. 선택된 규칙 하나만 보면 부트스트랩 p값은 0.014였지만, 1,184개 전체에서 최고를 골랐다는 사실을 반영하면 p값은 0.369였습니다.

이 글의 핵심 결론

  • 검사한 규칙 수가 10개에서 250개로 늘자 탐색 최고 Sharpe는 0.23에서 0.63으로 높아졌습니다.
  • 1,184개 중 선택한 규칙의 Sharpe는 탐색 0.63에서 홀드아웃 -0.30으로 뒤집혔습니다.
  • 선택 규칙만 본 p값 0.014는 전체 탐색을 반영한 최대통계량 p값 0.369로 커졌습니다.
  • 홀드아웃과 다중검정 보정은 경쟁 관계가 아니라 서로 다른 실패를 거르는 두 단계입니다.

어떤 논문인가

  • 저자: Ryan Sullivan, Allan Timmermann, Halbert White
  • 제목: 「Data-Snooping, Technical Trading Rule Performance, and the Bootstrap」
  • 저널: The Journal of Finance, 54권 5호, 1999년
  • 표본: 다우존스 산업평균, 1897~1996년의 약 100년 일별 자료
  • 핵심 방법: 7,846개 기술적 규칙, White의 Reality Check, 정상 블록 부트스트랩, 진정한 사후 표본 검증
  • DOI: 10.1111/0022-1082.00163

이 논문은 기술적 분석이 항상 무의미하다고 가정하고 시작하지 않았습니다. 반대로 수많은 규칙을 시험했다는 사실까지 포함해도 최고 규칙이 기준 전략을 앞섰다고 말할 수 있는지를 물었습니다.

검사 횟수를 무시한 단일 규칙의 p값과 전체 후보에서 최고를 뽑은 p값을 구분했다는 점이 핵심입니다.

최고값은 후보가 늘어날수록 불리한 검정을 받아야 합니다

예측력이 전혀 없는 동전을 열 번 던져 가장 높은 정답률을 고르면 평범한 값이 나올 가능성이 큽니다. 같은 동전을 만 번 만들고 최고 정답률만 고르면 꽤 그럴듯한 승자가 나타날 수 있습니다.

백테스트도 같습니다.

  • 이동평균 20일과 60일만 시험하면 후보는 하나입니다.
  • 단기 2~50일, 장기 60~250일을 모두 조합하면 후보가 수십 개로 늘어납니다.
  • 밴드, 돌파 기간, 추세·역추세 방향까지 더하면 후보가 수백·수천 개가 됩니다.

각 규칙의 Sharpe가 독립적이지 않아도 문제는 사라지지 않습니다. 비슷한 이동평균 규칙끼리는 성과가 함께 움직이지만, 후보군이 넓어질수록 우연한 최고값을 만날 기회도 대체로 늘어납니다.

백테스트에서 과최적화를 확인하는 세 가지 기준은 변수 선택과 미래 참조를 구분합니다. 데이터 스누핑은 미래 가격을 직접 쓰지 않아도 같은 과거 자료를 반복해서 들여다보는 것만으로 생길 수 있습니다.

원 논문은 26개 규칙 뒤에 있던 7,846개 후보를 복원했습니다

Brock·Lakonishok·LeBaron의 1992년 연구는 이동평균과 거래범위 돌파 26개 규칙을 다우지수에 적용했습니다. Sullivan 연구진은 실제 기술적 분석에서 고려할 수 있었던 후보군이 26개보다 훨씬 넓다고 보았습니다.

이동평균, 필터, 지지·저항, 채널 돌파, 온밸런스 거래량을 다양한 기간과 밴드로 조합해 7,846개 규칙을 만들었습니다. 그다음 평균수익률과 Sharpe 기준의 최고 규칙을 각각 선택했습니다.

논문은 1897~1986년처럼 긴 역사 표본에서는 전체 탐색을 보정한 뒤에도 일부 기술적 규칙의 성과가 남았다고 보고했습니다. 그러나 1986년까지 선택한 규칙을 1987~1996년에 고정해 적용했을 때 같은 경제적 가치가 이어진다는 증거는 찾지 못했습니다.

S&P 500 선물 자료에서도 단일 최고 규칙의 명목 p값과 7,846개 탐색을 반영한 p값이 크게 달랐습니다. 좋은 과거값이 존재하는지와 그 값이 탐색 기회를 감안해도 드문지를 따로 검정해야 한다는 결과입니다.

Reality Check는 최고 규칙 하나가 아니라 최고를 찾은 과정과 비교합니다

일반적인 단일 검정은 선택한 규칙 하나의 평균 성과가 0인지 확인합니다. 하지만 그 규칙이 1,000개 중 최고였다면 비교 대상도 예측력이 없는 규칙 하나가 아니라 예측력이 없는 1,000개 중 최고여야 합니다.

Reality Check는 시간 의존성을 유지하도록 수익률 자료를 블록 단위로 다시 뽑습니다. 각 부트스트랩 표본에서 모든 규칙을 다시 평가하고 그중 최고 성과를 기록합니다.

이 과정을 반복하면 예측력이 없다는 귀무가설 아래에서도 전체 탐색의 최고값이 어느 정도까지 나올 수 있는지 분포를 얻습니다. 실제 최고값은 이 분포와 비교해야 합니다.

규칙을 하나만 본 p값이 작아도 최대통계량 p값은 클 수 있습니다. 이는 선택한 규칙이 형편없다는 뜻이 아니라, 그 정도 승자는 넓은 탐색에서 우연히 나올 수 있다는 뜻입니다.

이번 글은 1,184개 규칙으로 개념을 축약했습니다

원문의 7,846개 규칙과 100년 다우지수를 그대로 복제하지 않았습니다. DIA 수정 일봉에서 세 종류의 가격 규칙을 사전에 조합했습니다.

  • 이동평균: 단기 10개 × 장기 8개 × 밴드 4개 × 추세·역추세
  • 거래범위 돌파: 기간 50개 × 밴드 4개 × 추세·역추세
  • ROC: 기간 18개 × 문턱 4개 × 추세·역추세

총 1,184개 규칙입니다. 모든 규칙은 매일 매수 또는 매도 방향을 가지며, 종가로 확인한 신호는 다음 거래일 수익률부터 반영했습니다.

구분 조건
자산 DIA 수정 일봉
탐색 구간 2000~2012년, 3,269거래일
홀드아웃 2013~2025년, 3,270거래일
선택 기준 무위험수익률 0%의 연율화 Sharpe
후보 수 10·25·50·100·250·500·1,000·1,184개
탐색 보정 평균 블록 길이 10거래일, 500회 정상 블록 부트스트랩
비용 기본 선택은 비용 전, 홀드아웃에 편도 0.10% 추가

규칙 유형이 후보 수 앞부분에 몰리지 않도록 순서를 한 번 고정하고, 각 후보 수는 그 순서의 앞부분만 사용했습니다. 결과를 본 뒤 순서를 바꾸지 않았습니다.

부트스트랩은 각 규칙의 탐색 평균을 제거한 뒤 같은 날짜 블록을 모든 규칙에 공통 적용했습니다. 각 표본의 최대 표준화 평균을 실제 최고 Sharpe와 비교했습니다.

이는 White의 원래 Reality Check 전체를 그대로 구현한 것이 아니라, 의존성을 가진 여러 규칙의 최대통계량을 비교하는 핵심 개념을 축약한 검정입니다.

후보 수별 최고 Sharpe, 부트스트랩 p값, 홀드아웃 분포와 누적자산

규칙을 더 찾을수록 탐색 최고 Sharpe는 높아졌습니다

후보 10개에서 탐색 최고 Sharpe는 0.23이었습니다. 50개에서는 0.41, 100개에서는 0.51, 250개에서는 0.63으로 올라갔습니다.

검사한 규칙 수 탐색 최고 Sharpe 선택 규칙 홀드아웃 Sharpe 개별 p값 최대통계량 p값
10 0.23 -0.13 0.162 0.721
50 0.41 -0.19 0.056 0.471
100 0.51 +0.42 0.014 0.353
250 0.63 -0.30 0.014 0.208
500 0.63 -0.30 0.014 0.273
1,000 0.63 -0.30 0.014 0.343
1,184 0.63 -0.30 0.014 0.369

최고 Sharpe는 후보가 늘어날 때 내려가지 않습니다. 기존 최고 규칙을 후보군에 그대로 둔 채 새 규칙을 더하기 때문입니다.

250개 이후에는 더 좋은 탐색 규칙을 찾지 못해 관측 최고값이 0.63에서 멈췄습니다. 반면 최대통계량 p값은 0.208에서 0.369로 커졌습니다. 실제 최고값은 그대로인데 우연히 최고를 찾을 기회만 늘어난 결과입니다.

귀무가설 아래 1,184개 중 최고 Sharpe의 95% 분위는 0.81이었습니다. 실제 탐색 최고 0.63은 이 문턱보다 낮았습니다.

선택 규칙 하나만 보면 유의해 보였지만 전체 탐색에서는 달랐습니다

1,184개 중 선택된 규칙은 2거래일 ROC의 역추세 방향과 1% 문턱을 사용했습니다. 이 규칙만 따로 부트스트랩하면 탐색 Sharpe 0.63 이상의 값이 나온 비율은 0.014였습니다.

그러나 각 부트스트랩 표본에서 1,184개 중 최고값을 다시 뽑으면 p값은 0.369였습니다.

검정 질문 p값 해석
이 규칙 하나가 우연히 Sharpe 0.63을 냈나 0.014 한 규칙만 사전에 정했다면 드문 값
1,184개 중 최고가 Sharpe 0.63 이상이었나 0.369 넓은 탐색에서는 드물지 않은 값

연구자가 실제로 한 일이 두 번째라면 첫 번째 p값을 대표 결과로 쓰면 안 됩니다. 시험했지만 공개하지 않은 변수, 삭제한 규칙과 이전 실험도 가능한 범위에서 후보군에 포함해야 합니다.

PSR·DSR로 선택 편향을 확인하는 방법은 Sharpe의 표본 오차와 여러 전략 중 최고를 고른 문제를 다룹니다. 최대통계량 부트스트랩은 규칙 수익률 사이의 실제 의존성을 블록 재표본으로 보존한다는 차이가 있습니다.

탐색 1등은 홀드아웃에서 손실 전략이 됐습니다

최종 선택 규칙의 탐색 성과는 나쁘지 않아 보였습니다.

구간·조건 CAGR Sharpe MDD
2000~2012년 탐색, 비용 전 +11.46% 0.63 -31.46%
2013~2025년 홀드아웃, 비용 전 -6.11% -0.30 -62.15%
2013~2025년 홀드아웃, 편도 0.10% -11.18% -0.63 -79.50%
2013~2025년 DIA 보유 +12.86% 0.82 -36.70%

탐색 구간에서 누적수익률은 +308.31%였지만 홀드아웃에서는 -55.88%였습니다. 과거 최고값이 다음 기간에 이어지지 않았습니다.

탐색 규칙 1,184개 전체의 탐색 Sharpe와 홀드아웃 Sharpe 순위 상관도 -0.28이었습니다. 탐색에서 상대적으로 좋았던 규칙이 다음 기간에도 상위에 머무는 관계가 나타나지 않았습니다.

후보 100개 단계에서 선택된 다른 규칙은 홀드아웃 Sharpe +0.42였습니다. 하지만 탐색을 250개로 넓히자 과거 Sharpe가 더 높은 규칙을 발견했고, 그 새 승자의 홀드아웃 Sharpe는 -0.30이었습니다.

좋은 홀드아웃 결과가 후보군 어딘가에 있었다는 사실과 탐색 시점에 그 규칙을 선택할 수 있었다는 사실은 다릅니다.

비용은 선택 편향과 별도로 성과를 더 낮췄습니다

최종 선택 규칙은 연평균 55.49단위의 포지션을 교체했습니다. 매수에서 매도로 바로 바뀌면 2단위 회전으로 계산했습니다.

편도비용 0.10%를 적용하자 홀드아웃 Sharpe는 -0.30에서 -0.63, CAGR은 -6.11%에서 -11.18%로 낮아졌습니다.

여기에는 실제 공매도 대차 비용, 스프레드와 시장충격이 없습니다. 비용을 더 현실적으로 넣으면 결과가 좋아질 이유는 없습니다.

반대로 비용 후 실패만으로 데이터 스누핑 보정이 불필요해지는 것도 아닙니다. 후보 선택이 우연인지와 선택한 규칙이 실제로 체결 가능한지는 서로 다른 검증입니다.

홀드아웃 하나만으로도 모든 문제가 해결되지는 않습니다

홀드아웃 결과를 본 뒤 다시 변수를 바꾸면 그 기간도 새로운 탐색 구간이 됩니다. 여러 번의 최종 테스트를 반복하면 진정한 미사용 자료는 남지 않습니다.

따라서 검증 순서를 기록해야 합니다.

  1. 후보 규칙과 선택 지표를 먼저 고정합니다.
  2. 탐색한 전체 후보 수를 숨기지 않습니다.
  3. 최대통계량·PSR·DSR 같은 선택 보정을 적용합니다.
  4. 한 번도 사용하지 않은 기간에 선택 규칙을 그대로 적용합니다.
  5. 홀드아웃을 확인한 뒤 수정했다면 다음 자료를 다시 확보합니다.

전진분석으로 실전 지속성을 확인하는 방법은 변수를 정기적으로 다시 고르는 규칙 자체를 고정하는 방법입니다. 한 번의 고정 분할과 워크포워드는 목적이 다르지만, 평가 구간의 정보를 선택에 되돌려 쓰지 않는 원칙은 같습니다.

이번 검증이 알려주지 못하는 것

첫째, 이 결과는 기술적 규칙 전체가 수익을 낼 수 없다는 증명이 아닙니다. DIA 한 자산과 세 규칙 계열의 후보군에서 선택 절차가 얼마나 결과를 부풀렸는지 확인한 사례입니다.

둘째, 원문의 7,846개 규칙과 White Reality Check를 완전히 복제하지 않았습니다. Sharpe 선택과 고정 표준편차의 최대통계량 블록 부트스트랩을 사용한 개념 재현입니다.

셋째, 2013~2025년 홀드아웃은 시장 구조가 달라진 기간입니다. 성과 붕괴에는 선택 편향뿐 아니라 구조 변화도 섞여 있습니다. 두 원인을 이 한 실험에서 분리할 수 없습니다.

넷째, 후보 순서가 달라지면 10·50·100개 단계의 선택 결과도 달라집니다. 최종 1,184개 결과는 같지만 중간 경로는 하나의 고정 순서에 대한 결과입니다.

좋은 최고값보다 검증 가능한 선택 과정이 먼저입니다

1,184개 중 최고 규칙은 탐색 구간에서 Sharpe 0.63과 CAGR 11.46%를 기록했습니다. 이 규칙만 떼어 보면 p값도 0.014로 작았습니다.

하지만 전체 탐색 기회를 반영한 p값은 0.369였고, 홀드아웃 Sharpe는 -0.30으로 바뀌었습니다. 편도비용 0.10%를 넣으면 -0.63까지 낮아졌습니다.

최고 성과표만으로는 전략을 평가할 수 없습니다. 몇 개의 후보를 시험했는지, 선택 과정을 보정했는지, 완전히 분리한 기간에서도 같은 규칙을 유지했는지가 함께 남아야 합니다.

참고 자료


이 글은 DIA 수정 일봉으로 데이터 스누핑의 핵심 질문을 확인한 개념 재현과 홀드아웃 확장입니다. 특정 기술적 규칙의 수익을 보장하거나 매수·매도를 추천하지 않으며, 실제 투자 판단과 책임은 투자자 본인에게 있습니다.