트레이딩 규칙의 White Reality Check와 Hansen SPA 검정
여러 트레이딩 규칙을 탐색한 뒤 Reality Check와 SPA로 비교하는 방법, 부트스트랩 가정과 결과 해석의 한계를 설명합니다.
이 글에서 다루는 내용백테스트 1등을 따로 검정해야 하는 이유
짧은 요약
White의 Reality Check와 Hansen의 SPA(Superior Predictive Ability) 검정은 탐색한 후보군 가운데 하나라도 사전에 정한 벤치마크보다 나은지 묻습니다. 두 방법은 표본에서 가장 잘 나온 후보를 골랐다는 사실을 고려하지만, 특정 규칙을 인증하거나 미래 수익을 보장하지는 않습니다.
백테스트 1등을 따로 검정해야 하는 이유
표본을 보기 전에 전략 하나를 정했다면 단일 비교 검정으로 답할 수 있는 질문이 있습니다. 하지만 여러 규칙을 시험하고 결과를 확인한 뒤 우승 규칙만 마치 처음부터 하나였던 것처럼 검정하면 탐색 과정이 빠집니다. 모든 규칙에 진짜 우위가 없더라도 여러 잡음 섞인 추정치 중 가장 큰 값은 우연히 양수가 되기 쉽습니다.
Reality Check(RC)와 SPA는 후보군 전체에 관한 질문을 다룹니다. 후보군을 고려하고도 하나 이상의 전략이 정한 성과 기준에서 벤치마크보다 낫다는 증거가 있는지 묻습니다. 후보는 기술적 매매 규칙, 예측 모형, 다른 전략일 수 있습니다. White가 데이터 스누핑 검정 틀을 제안했고(2000년 논문), Sullivan·Timmermann·White는 넓은 기술적 매매 규칙 집합에 적용했습니다(1999년 응용 연구). 선택 결과를 만든 후보들을 포함하는 것이 핵심입니다. 거짓 발견률(FDR) 가이드는 관련은 있지만 다른 다중 검정 문제를 다룹니다. FDR 절차는 여러 개별 기각 가운데 거짓 발견의 비율을 조정하고, RC와 SPA는 벤치마크에 대한 후보군 최대값 하나를 검정합니다.
벤치마크, 후보군, 성과 차이를 정의합니다
k는 검정할 후보군 K 안의 각 전략을, t는 후보와 벤치마크를 모두 평가하는 같은 날짜를 나타낸다고 하겠습니다. 수익률 기준 예시에서는 기간별 차이를 다음처럼 정의합니다.
d(k,t) = 후보 k의 순수익률 − 벤치마크의 순수익률
양수이면 후보가 더 좋습니다. 예측 정확도를 비교한다면 부호를 반대로 두어 벤치마크 손실에서 후보 손실을 빼면 양수가 후보의 낮은 손실을 뜻합니다. 후보나 날짜마다 부호를 다르게 쓰면 안 됩니다.
후보 k의 기대 성과 차이를 μ(k) = E[d(k,t)]라 두면 후보군 전체의 가설은 다음과 같습니다.
H0: K에 속한 모든 k에 대해 μ(k) ≤ 0 H1: K에 속한 후보 중 μ(k) > 0인 것이 적어도 하나 존재
이것은 후보별 독립 검정 여러 개가 아니라 후보군 전체에 대한 하나의 결합 검정입니다. 수익률 정의, 벤치마크, 평가 날짜, 후보 집합, 성과 기준을 명확히 해야 합니다. ‘더 나은 성과’가 위험 조정 수익을 뜻한다면 평균수익률 차이만으로는 그 기준을 나타내지 못합니다.
White의 Reality Check는 후보군 전체의 최대값을 씁니다
평가 기간 n일에 걸친 후보별 평균 차이를 d̄(k)라고 하면 단순 평균 성과 차이의 RC 통계량은 다음과 같습니다.
T_RC = K에 속한 k별 sqrt(n) × d̄(k)의 최댓값
RC는 후보에서 표본상 가장 큰 결과를 뽑은 뒤, 그 최대값을 귀무가설 아래의 부트스트랩 분포와 비교합니다. White 절차는 복합가설에서 대립가설에 가장 불리한 귀무 구성, 즉 모든 후보의 기대 차이가 0이라고 보는 분포를 사용합니다. 기대 차이가 음수인 후보도 귀무가설에 속하지만, 이 보수적인 기준은 약한 후보가 많을 때 임계값을 키울 수 있습니다.
최댓값을 쓰는 이유가 중요합니다. 질문은 “표본에서 뽑은 우승 후보가 단일 규칙 검정을 통과하는가?”가 아닙니다. “정해 둔 후보군을 같은 방식으로 탐색했다면 관측된 최대값 이상이 얼마나 이례적인가?”입니다. 우승 후보만 단일 전략처럼 검정하면 앞의 질문에는 답하지만 선택 과정은 반영하지 못합니다.
전략별 열을 따로 뽑지 말고 시간축을 함께 재표본추출합니다
각 날짜의 후보 성과 차이는 같은 시장 정보를 공유하므로 서로 상관될 수 있습니다. 시계열 안에도 자기상관이 남을 수 있습니다. 부트스트랩에서는 각 날짜에 해당하는 후보 차이 벡터를 함께 재표본추출해야 반복 표본마다 후보 간 동시 관계와 시간 의존성이 보존됩니다. 후보별 수익률을 따로 재표본추출하면 이런 관계가 깨지고 최대값의 분포도 달라집니다.
RC와 Hansen의 SPA 구현에는 정상 부트스트랩 같은 블록 방법을 사용할 수 있습니다. 정상 부트스트랩은 길이가 무작위인 블록을 이어 의사 시계열을 만듭니다. Politis와 Romano의 표준 구성에서는 블록 길이가 기하분포를 따릅니다. 그래도 블록 설계가 실제 자료의 의존 구조에 맞아야 합니다. 점근 결과에는 안정적이고 약한 의존성을 가진 과정 같은 정칙 조건이 필요하며, 구조 변화나 강한 비정상성은 재표본추출로 고쳐지지 않습니다. 블록이 너무 짧으면 지속성을 지울 수 있고, 너무 길면 서로 다른 블록이 적어집니다. 재표본추출 방법과 블록 길이 설정을 밝히고, 합리적인 설정을 바꿔도 결론이 유지되는지 확인합니다.
부트스트랩은 검정할 귀무가설을 나타내야 합니다. 실제 구현은 후보별 차이를 중심화하거나 다른 방식으로 변환해 귀무분포를 만들고, 각 반복에서 최대 통계량을 다시 계산합니다. RC와 SPA의 구체 절차는 다릅니다. 이미 선택한 전략 하나의 신뢰구간을 위한 일반 부트스트랩이 후보군 전체의 선택 보정을 자동으로 해주지는 않습니다. 블록 부트스트랩 가이드는 개별 수익률을 섞는 방법과 의존성을 보존하는 재표본추출의 차이를 설명합니다.
Hansen SPA는 통계량을 표준화하고 귀무분포를 데이터에 맞춥니다
Hansen SPA는 후보군 전체의 귀무가설과 벤치마크 기준 성과 차이를 유지하면서 절차 두 곳을 바꿉니다. 첫째, 후보 성과 차이 계열의 장기 표준편차 추정치로 평균 차이를 표준화합니다.
T_SPA = max(0, K에 속한 k별 sqrt(n) × d̄(k) / ω̂(k)의 최댓값)
이렇게 하면 변동성이 서로 다른 후보를 원수익률 단위가 아니라 표준오차 단위로 비교합니다. 여기서 장기 표준편차는 날짜별 수익률의 단순 표준편차와 같지 않을 수 있습니다. 시차에 걸친 자기공분산을 반영하므로 수익 차이에 자기상관이 있으면 평균 차이의 표준화에도 영향을 줍니다. 사용한 분산 추정법과 시차 또는 대역폭 선택을 밝혀야 결과를 재현하고 민감도를 비교할 수 있습니다. 둘째, SPA는 표본에 따라 달라지는 귀무분포를 사용합니다. 일관된 버전에서는 표본 평균이 충분히 낮은 후보의 추정 평균을 귀무분포에 반영하고, 경계에 가까운 후보는 0으로 중심화합니다. 성과가 낮은 후보를 단순 삭제하는 방법은 아닙니다. 귀무가설과 양립하는 후보를 유지하면서 자료가 성과가 좋지 않다고 보여주는 대안의 영향을 줄이도록 설계했습니다. RC가 모든 후보를 벤치마크와 정확히 동률인 것으로 간주하는 최악 조건의 영향을 완화하려는 목적입니다.
Hansen의 논문은 이런 조정이 일부 설계에서 검정력을 높이고 성과가 낮거나 무관한 대안에 대한 민감도를 줄인다고 보고합니다. 그렇다고 모든 자료에서 SPA가 우세하다는 뜻은 아닙니다. Hansen은 두 검정이 검정력에서 일률적으로 우열이 정해지지는 않는다고 설명합니다. 일부 구현은 하한·일관·상한 SPA p값을 따로 보고하므로 사용한 버전과 구현을 밝혀야 합니다. Hansen의 논문은 표준화 통계량과 표본 의존 부트스트랩 절차를 설명합니다.

후보군 검정의 기각은 특정 매매 규칙을 골라 주지 않습니다
연구자가 이동평균 기간 12개, 진입 필터 4개, 청산 설정 5개를 시험했다고 가정해 보겠습니다. 모든 조합을 평가했다면 이는 가상 후보 240개의 탐색입니다. RC나 SPA에서 기각하면 정한 성과 기준과 가정 아래 그 후보군 중 하나 이상이 벤치마크보다 나을 수 있다는 증거가 됩니다.
그 결과만으로 표본에서 가장 좋았던 조합이 개별적으로 유의하거나, 실제 거래에서 최선이거나, 모든 대안이 검정에 포함되었다고 결론 내릴 수는 없습니다. 최대값 결합 검정은 사후 순위표가 아닙니다. 특정 규칙에 관한 보정된 주장을 하려면 개별 후보 추론을 위한 단계적 검정을 사용하고, 선택에 쓰이지 않은 자료에서 다시 검증해야 합니다. 기각하지 못해도 모든 규칙이 쓸모없다는 뜻은 아닙니다. 해당 검정과 표본에서 후보군 전체에 관한 증거가 충분하지 않았다는 뜻입니다.
성과 기준과 후보군을 결과를 보기 전에 정합니다
검정은 입력한 후보군 안에서만 탐색을 보정합니다. 선택에 영향을 준 파라미터, 필터, 시장, 보유기간, 변형을 포함해야 하며 성과가 낮았던 후보도 빼면 안 됩니다. 여러 벤치마크, 수익률 정의, 표본 기간을 시험한 다음 결과를 보고 하나를 고른 경우 그 검색도 기록합니다. 문서화하지 않은 탐색은 공식적인 보정 범위 밖에 남습니다.
수익률을 같은 날짜에 맞추고, 성과 차이를 정의하기 전에 현실적인 거래비용·자금조달·대차·롤 비용을 반영합니다. 우승 후보를 보기 전에 기준을 정하세요. 평균 순수익률, 효용 점수, 위험 조정 지표는 서로 다른 질문입니다. 한 기준으로 만든 검정이 다른 기준까지 자동으로 답하지는 않습니다. 벤치마크가 후보 모형에 포함되는 중첩 예측 비교처럼 특별한 설계에서는 모수 추정과 귀무분포의 가정이 달라질 수 있으므로 일반적인 RC·SPA 절차를 기계적으로 적용하지 마세요.
p값을 고르지 말고 추론 절차를 먼저 정합니다
연구 질문과 후보군이 두 방법을 모두 뒷받침한다면 RC와 SPA를 상호 보완적인 점검으로 함께 보고할 수 있습니다. 먼저 어떤 검정을 주 분석으로 삼을지 결과를 보기 전에 정하고, 다른 통계량은 민감도 분석으로 설명하세요. 결론이 다르면 표준화, 성과가 낮은 대안의 영향, 의존성 추정, SPA 중심화 버전이 차이를 만들었는지 살펴봅니다. 더 작은 p값을 얻는 방법을 보고 나서 선택하면 그 선택도 기록되지 않은 탐색에 포함됩니다.
성과 지표와 부트스트랩 설계에도 같은 원칙이 적용됩니다. 합리적인 대안을 사용한 민감도 분석은 결론의 변화를 보여줄 수 있지만, 유리한 설정 여러 개를 독립적인 확인 결과로 바꾸지는 않습니다. 보고한 결과 전체와 의사결정 과정을 보존해 계획된 강건성 점검과 사후 선택된 대표 결과를 구분할 수 있게 하세요.
검정 결과와 한계를 함께 보고합니다
유용한 보고서에는 벤치마크, 후보군, 성과 기준, 날짜 범위, 관측 빈도, 비용, 부트스트랩 방식, 블록 길이, 재표본 수, 통계량, 정확한 p값 유형이 들어갑니다. 선택을 만든 후보군을 보존해 대안이 빠지지 않았는지 검토할 수 있게 하세요. 검정 뒤에 연대순 미사용 홀드아웃을 확인한다면 그 홀드아웃에서 규칙을 다시 조정하고 계속 미사용 데이터라고 부르면 안 됩니다.
후보와 벤치마크는 가능한 한 같은 평가 날짜와 관측 단위로 맞춰야 합니다. 어떤 후보는 호가 누락을 이유로 날짜를 빼고 다른 후보는 그 날짜를 유지하면, 후보별 평균이 서로 다른 표본을 요약할 수 있습니다. 결측치와 거래 불능 날짜를 처리하는 규칙을 결과를 보기 전에 정하고, 후보마다 유리한 기간만 선택하지 마세요. 실제 거래 주장을 한다면 포지션이 없는 기간의 현금 수익률, 매매 체결 시점, 거래비용을 후보 간 일관되게 정의해야 성과 차이가 같은 질문을 비교합니다.
통계적 기각 여부와 경제적 크기도 나누어 보고하세요. 표본에서 가장 큰 평균 순성과 차이가 얼마였는지, 그 차이가 수수료·슬리피지·자금조달 비용을 감안할 때 의미 있는지, 회전율이나 손실 구간은 어땠는지 함께 제시하면 p값만으로 판단하는 일을 줄일 수 있습니다. 표준화한 SPA 통계량은 후보별 변동성을 고려하지만 경제적 이익의 크기를 대신 보고하지 않습니다. 관측 효과가 작더라도 충분히 긴 표본에서는 통계적으로 눈에 띌 수 있고, 반대로 표본이 짧으면 큰 추정치도 불확실할 수 있습니다.
작은 p값은 귀무가설이 참일 확률이 아닙니다. RC와 SPA가 서로 다른 값을 내더라도 어느 쪽이 “정답”인지 p값 크기만으로 고를 수 없으며, 후보군과 중심화 방법이 같은지 먼저 확인해야 합니다. 두 절차를 모두 제시한다면 사전에 정한 주 검정과 보조 분석을 구분하고 차이를 설명하세요.
RC나 SPA의 p값은 정한 자료, 후보군, 통계량과 가정 아래에서 후보군 전체 귀무가설을 평가하는 증거입니다. 특정 전략이 수익을 낼 확률, 미래 수익률 예측, 백테스트 성과가 비용이나 국면 변화 뒤에도 유지된다는 보장이 아닙니다. 이 검정은 모형 선택 문제의 한 부분을 다룰 뿐 미래정보 누출, 생존편향, 데이터 오류, 시장충격, 불완전한 탐색 기록을 바로잡지는 않습니다. Purged 시계열 교차검증은 다른 검증 문제인 시간 누출을 다룹니다.
자주 묻는 질문
Q1SPA는 항상 Reality Check보다 검정력이 높나요?
아닙니다. Hansen의 수정은 연구된 일부 설계에서 검정력을 높이고 성과가 낮은 대안의 영향을 줄이지만, 두 절차 중 하나가 모든 상황에서 일률적으로 우월하지는 않습니다.
Q2유의한 SPA 결과가 어떤 규칙을 사용할지 알려주나요?
아닙니다. 정한 기준에서 후보군 중 하나가 벤치마크를 앞설 수 있다는 집합 수준의 결론을 뒷받침합니다. 특정 규칙을 골라 주지는 않으며, 그 목적에는 후보별 검정과 별도 검증이 필요합니다.
Q3백테스트에서 손실을 낸 후보 변형을 검정에서 빼도 되나요?
그 변형들이 최종 규칙을 선택하는 탐색에 포함됐다면 빼는 순간 질문이 바뀌고 선택 보정을 과소평가할 수 있습니다. 결과를 해석하기 전에 관련 후보군 전체를 정의하고 기록하세요. 주요 연구 - White, “A Reality Check for Data Snooping” (2000) - Hansen, “A Test for Superior Predictive Ability” (2005) - Sullivan, Timmermann, and White, “Data-Snooping, Technical Trading Rule Performance, and the Bootstrap” (1999) - Politis and Romano, “The Stationary Bootstrap” (1994)
출처와 더 읽을 자료
내용 정정 제보
이 아티클 링크를 담은 이메일 초안을 준비합니다. 직접 보내야 Mark에 제보가 접수됩니다
QUICK CHECK
글을 다 읽었다면, 3문항으로 확인해보세요
Question 01
여러 전략 후보를 시험한 뒤 하나를 골랐다면 후보군 검정에 무엇을 포함해야 하나요?
정답을 고르면 바로 설명을 볼 수 있어요