퀀트 백테스트에서 p-value 0.05 못 넘기면 버려야 할까 — 레짐 의존성이라는 다른 읽기
작년 여름, 3개월 걸려 만든 시장 미세구조 신호를 백테스트했더니 p-value가 0.41이 나왔어요. 교과서대로라면 "통계적으로 유의하지 않다"니까 버려야 맞죠. 그런데 결과를 VIX 구간별로 나눠 보니 고변동성 구간에선 샤프 비율이 1.2였고, 안정기엔 -0.3이더라고요. 저는 이 전략을 버리지 않고 VIX 20 이상일 때만 켰어요. 평균이 밋밋해도 조건부로는 강할 수 있으니까요.
레짐 의존성이란 무엇인가요?
최근 공개된 논문 하나가 이 주제를 정면으로 다뤘어요. 100개 미국 주식을 대상으로 2015년부터 2024년까지 34개 독립 기간에 걸쳐 walk-forward 검증을 했더니, 전체 기간 연간 수익률은 0.55%, 샤프 비율 0.33으로 나왔습니다. p-value는 0.34였죠. 교과서 기준인 0.05를 한참 못 넘기니 "실패한 전략"이라고 봐야 할까요?
논문 저자들은 여기서 멈추지 않고 레짐별로 성과를 쪼갰어요. 고변동성 기간(2020~2024)에는 분기당 0.60% 수익이 났고, 안정기(2015~2019)에는 -0.16%였습니다. 시장이 조용할 때는 신호가 노이즈에 묻히고, 정보 도착률과 거래량이 높아질 때만 작동한다는 겁니다. 일일 OHLCV 기반 미세구조 신호는 "높은 정보 도착과 거래 활동"이 있어야 효과를 낸다는 게 핵심 발견이었어요.
제 경험도 비슷했어요. 작년에 만든 호가창 불균형 신호는 전체 샤프가 0.2였는데, VIX 20 이상 구간만 따로 보면 1.1이 나왔습니다. 시장이 안정적일 땐 호가 불균형이 1~2틱 정도 미래 가격에 영향을 주다가, 변동성이 커지면 그 영향이 5~10틱까지 늘어나더라고요.
레짐 의존성이 있다는 건 전략이 실패했다는 게 아니라, "언제 켜야 하는지"를 알려주는 신호예요.
통계적 유의성이 놓치는 것 — 귀무 검정의 한계
p-value는 "이 결과가 우연으로 나올 확률"을 재는 도구입니다. 귀무가설은 "전체 기간 평균 수익률이 0이다"죠. 문제는 이 검정이 조건부 효과를 전혀 보지 않는다는 겁니다.
예를 들어볼게요. A 전략은 짝수 달에 월 2% 수익, 홀수 달에 -2% 손실을 낸다고 해봅시다. 전체 평균은 0%라서 p-value가 높게 나오겠죠. 하지만 이걸 "실패한 전략"이라고 버려야 할까요? 짝수 달에만 켜면 되잖아요.
제가 2023년 여름에 딱 이런 일을 겪었어요. 거래량 급증 신호를 백테스트했는데 전체 샤프가 0.15였습니다. 그런데 월별로 쪼개 보니 실적 발표 시즌(1·4·7·10월)엔 샤프 0.9, 나머지 달엔 -0.1이더라고요. 실적 발표 전후로 거래량이 튀면서 신호가 강해지는 구조였던 거죠. 저는 이 전략을 버리지 않고 실적 시즌에만 가중치를 2배로 올렸어요. 그 뒤 6개월 샤프가 0.7까지 올라왔습니다.
통계적 유의성은 "전체 기간 평균이 우연인가"만 따집니다. 조건부로 작동하는 신호는 이 검정을 통과할 수 없어요.
이게 사후 체리피킹 아니냐는 반론에 답하기
여기까지 읽으면 "결과 보고 레짐 나눈 거 아니야? 그럼 과최적화잖아"라는 반론이 나올 거예요. 맞습니다. 사후에 데이터를 마음대로 쪼개서 "여기선 됐다"고 우기면 그건 자기기만이에요.
핵심은 레짐 분할 기준을 사전에 정하고, 독립된 기간에서 검증했느냐입니다. 앞서 언급한 논문은 34개 독립 테스트 기간을 walk-forward로 돌렸어요. 즉, 2020년 데이터를 보고 "고변동성 때 잘 되네"라고 정한 게 아니라, 각 기간마다 앞선 훈련 구간에서 레짐을 나누고 그다음 구간에서 검증했다는 뜻이죠. 제 경우도 VIX 20이라는 임계값은 2020~2021년 훈련 기간 안에서만 정했고, 2022년 이후 테스트에선 손대지 않았어요.
"그럼 전략을 언제 켜고 끌지 어떻게 알아?"라는 질문도 있을 겁니다. 레짐 지표를 신호에 직접 곱하면 돼요. 예를 들어 signal * (VIX > 20 ? 1.0 : 0.3) 식으로 안정기엔 신호를 감쇠시키는 거죠. 완전히 끄는 것보다 약하게 유지하는 게 레짐 전환 시점을 놓치지 않아서 더 안전합니다.
"p-value가 낮으면 그냥 운 아냐?"라는 의심도 있을 겁니다. p-value는 전체 평균에 대한 귀무 검정일 뿐이고, 조건부 효과는 별개예요. 논문 저자들도 "재현 가능한 정직한 검증 프로토콜을 보여주기 위해" p-value 0.34를 그대로 보고했다고 밝혔어요. 통계적으로 유의하지 않아도 레짐별 패턴이 34개 기간에 걸쳐 재현됐다면, 그건 단순한 운이 아니라 구조적 특성일 가능성이 큽니다.
전략을 버리기 전에 레짐을 한 번 더 보세요
통계적 유의성은 "전체 기간 평균"을 재는 도구일 뿐입니다. p-value 0.05를 못 넘겼다고 해서 바로 버리기보단, 시장 상태별로 성과를 쪼개 보세요. 고변동성 때만 작동하는 신호라면 그건 실패가 아니라 "조건을 찾으라"는 메시지예요.
제가 작년에 VIX 조건부로 살린 전략은 지금까지 꾸준히 수익을 내고 있어요. 전체 샤프는 0.2였지만 조건부 샤프는 1.1이었고, 실전에서도 그 패턴이 유지됐습니다. 레짐 기준은 훈련 기간 안에서만 정하고, walk-forward로 전방 검증해야 한다는 원칙만 지키면 돼요.
당신이 만든 전략의 p-value가 0.3이라면, 버리기 전에 VIX 구간별, 월별, 거래량 구간별로 한 번 더 쪼개 보세요. 어쩌면 조용한 시장에선 잠자고 있다가, 변동성이 튀는 순간에만 깨어나는 신호일 수도 있으니까요.
자주 묻는 질문
Q. 레짐은 몇 개 구간으로 나누는 게 적당한가요?
A. 2~3개가 실전적입니다. VIX 기준으로 안정(15 미만)·보통(15~25)·고변동(25 이상) 정도요. 구간을 5개 이상 쪼개면 각 구간 표본이 줄어서 과최적화 위험이 커집니다.
Q. 레짐 판정 지표 자체가 후행하는 문제는 어떻게 해결하나요?
A. VIX·ATR 같은 변동성 지표는 당일 종가 기준이라 실시간 자동매매에선 하루 늦게 반영됩니다. 이럴 땐 1일 래그를 두고 전날 지표로 오늘 레짐을 판단하거나, 장중 VIX 선물 가격을 써서 실시간 판정하는 방법이 있어요.
Q. 조건부 전략을 실제 자동매매에 붙일 때 스위치 전환 비용은 어떻게 되나요?
A. 레짐이 바뀌면 포지션을 청산하고 다시 진입하는 과정에서 수수료·슬리피지가 발생합니다. 제 경험상 레짐 스위치가 월 2~3회를 넘으면 전환 비용이 수익을 갉아먹더라고요. 신호를 완전히 끄지 말고 가중치만 조절하는 게 비용을 줄이는 방법입니다.