GBT
한국외국어대학교Global Business & Technology
금융 AI · 부록 B — 검증 방법론 — 속지 않는 법
목차 강의 홈 ↗
금융 AI 강의 · 부록 B

검증 방법론 —
속지 않는 법

이 강의의 모든 모듈이 암묵적으로 따라온 검증 규약을 한자리에 모았다. 미래 정보를 세 겹으로 막는 법, 코드의 옳고 그름을 임상시험처럼 가리는 법, 인샘플 성적을 의심하는 법, 그리고 "샤프 0.5인 전략이 실력임을 증명하려면 16년이 필요하다"는 오차 막대의 산수까지. 새 기법을 플랫폼에 추가할 때 그대로 쓸 체크리스트로 끝난다.

금융 AI · 부록 B5개 절 + 실습 1개해설 · 퀴즈 포함원문 출처 링크
0
2014년, 미국수학회 소식지

수학자들이 "사기"라는 단어를 제목에 올렸다

고발의 과녁은 사기꾼만이 아니었다. 검증 절차 없이 백테스트를 돌리는 사람은 누구나, 자기 자신부터 속이게 된다.

도입 · 한 장면

속이려는 의도가 없어도 속게 되는 구조

2014년, 미국수학회 소식지(Notices of the AMS)에 이례적으로 거친 제목의 글이 실렸다 — "유사수학과 금융 사기(Pseudo-Mathematics and Financial Charlatanism)". 저자들은 수학자와 계량금융 연구자였고, 요지는 하나였다. 충분히 많은 전략 변형을 시험하면, 순수한 잡음에서도 반드시 화려한 백테스트가 나온다. 그리고 그 사실을 밝히지 않은 채 최고 성적표만 내미는 것은 수학의 외피를 쓴 기만이라는 것이다.

불편한 반전은 이 고발이 남 이야기가 아니라는 데 있다. 파라미터를 이리저리 바꿔 보다가 "오, 이 조합이 좋네"를 고르는 순간, 누구나 같은 함정에 서 있다. 속이려는 의도는 필요 없다 — 절차가 없으면 가장 먼저 속는 사람은 자기 자신이다.

그래서 이 강의는 처음부터 검증을 개인의 양심이 아니라 절차와 기계에 맡겨 왔다. 이 부록은 그 절차 전체를 명시적인 규약으로 정리한 것이다. 이동평균이든 강화학습이든, 그리고 앞으로 추가될 어떤 새 기법이든 같은 관문을 통과한다.

미래를 어떻게 막는가설계 · 엔진 · 테스트의 세 겹 방어. 사람의 주의력은 언젠가 실패하므로 기계가 매번 검사한다
코드가 옳은지 어떻게 아는가정답을 심은 가짜 데이터(양성 대조군)와 정답이 없는 데이터(음성 대조군)로 구현부터 검증한다
성과가 실력인지 어떻게 아는가인샘플이 아닌 OOS로, 그리고 오차 막대와 다중비교 보정(DSR·CPCV·PBO)으로 판단한다
더 읽기

이 글의 저자들(Bailey, Borwein, López de Prado, Zhu)이 논문에서 든 수치 예 하나가 유명하다. 완전한 랜덤워크 데이터라도 전략 구성을 충분히 많이 시도하면, 그중 최고 성적은 시도 횟수에 따라 얼마든지 높은 샤프지수를 찍는다. 즉 "최고 성적표"의 화려함은 실력의 증거가 아니라 시도 횟수의 함수일 수 있다. 그래서 이들은 백테스트를 보고할 때 시도 횟수를 함께 밝히지 않는 것 자체를 문제 삼았다 — 뒤의 §3에서 만날 DSR과 PBO는 정확히 이 문제를 정량화한 도구다.

생각해 볼 질문

"백테스트 샤프 2.1"이라는 문장을 들었을 때, 판단을 내리기 전에 물어야 할 질문을 지금 몇 개나 떠올릴 수 있는가. 이 부록이 끝나면 최소 다섯 개가 즉시 나와야 한다.

출처 Bailey, Borwein, López de Prado & Zhu, "Pseudo-Mathematics and Financial Charlatanism", Notices of the AMS 61(5), 2014. ams.org (원문 PDF)

1
미래 정보는 한 겹으로 못 막는다

삼중 룩어헤드 방어

설계에서 막고, 엔진에서 막고, 테스트로 매번 다시 확인한다. 어느 한 겹이 뚫려도 나머지가 잡는다.

세 겹의 방화벽

설계 · 엔진 · 테스트

룩어헤드(미래 정보 유입)는 백테스트를 부풀리는 가장 흔하고 가장 은밀한 오류다. 사람의 주의만으로는 막을 수 없어, 이 플랫폼은 서로 독립적인 세 겹으로 막는다.

  1. 설계 — 피처·상태·신호는 오늘까지의 과거 창만 참조하도록 계산식을 짠다. 학습에서 얻는 통계(표준화용 평균·표준편차, 문턱값, 모델 계수)는 반드시 학습 구간에서 고정하고, 운용 구간에서 다시 계산하지 않는다
  2. 엔진 — 채점 엔진이 목표비중을 하루 지연해 적용한다. 전략 코드가 실수해도 최소 하루의 방화벽이 남는다
  3. 테스트 — "학습된 모델을 고정하고 미래 데이터를 잘라내도, 과거 시점의 비중이 하나도 변하지 않는다"를 자동 테스트가 확인한다(prefix 불변). 사람의 주의력은 언젠가 실패하므로, 기계가 매번 검사한다
더 읽기

prefix 불변 테스트의 논리를 풀어 쓰면 이렇다. 데이터가 1월부터 12월까지 있을 때 전략을 돌린 결과와, 1월부터 6월까지만 주고 돌린 결과에서 1~6월 구간의 비중이 완전히 같아야 한다. 다르다면 7월 이후의 정보가 어떤 경로로든 과거의 결정에 스며들었다는 뜻이다. 이 검사는 전략의 내부 구현을 전혀 몰라도 작동한다는 점이 강력하다 — 블랙박스 그대로 두고 입출력만 비교하면 된다.

세 겹이 서로 다른 실패 모드를 겨냥한다는 점도 눈여겨볼 만하다. 설계 원칙은 개발자의 이해를, 엔진 지연은 개발자의 실수를, 자동 테스트는 개발자의 방심을 막는다. 안전공학에서 말하는 다중 방벽(defense in depth)과 같은 발상이다 — 하나의 방벽이 완벽하다고 믿는 순간이 가장 위험하다.

사례 파일

실제로 뚫릴 뻔했던 네 가지 경로

룩어헤드는 매번 다른 얼굴로 나타난다. 이 강의의 본편 모듈들에서 실제로 다뤘던 대표 함정 네 가지를 한 표에 모았다.

함정미래가 새는 경로다룬 모듈
당일 종가 체결종가로 계산한 신호를 그 종가에 체결 — 장이 끝나야 확정되는 값으로 이미 끝난 경기에 베팅모듈 1 — 공정한 비교의 조건
이웃의 미래유사 구간 검색에서 이웃 후보가 테스트 구간을 침범 — 미래의 자기 자신과 닮았다는 답을 컨닝k-NN 아날로그 모듈
스무딩 백테스트HMM의 스무딩 확률은 전체 데이터를 본 사후 추정 — 그것으로 과거를 채점하면 미래를 이미 본 셈레짐 스위칭 모듈
LLM 지식 오염학습 데이터에 미래가 담긴 LLM으로 과거 뉴스를 채점 — 모델의 기억 자체가 룩어헤드LLM 모듈

주의할 점 하나. 넷 중 마지막 LLM 지식 오염만은 삼중 방어 바깥에 있다. 미래 정보가 데이터가 아니라 모델의 파라미터 안에 녹아 있으므로, 하루 지연도 prefix 검사도 잡아내지 못한다. 이 경우는 모델의 지식 컷오프와 데이터의 시점을 대조하는 별도의 검사가 필요하다.

더 읽기

네 사례의 공통점은 "코드 어디에도 future라는 변수가 없다"는 것이다. 룩어헤드는 대개 명시적인 버그가 아니라 계산의 의미에 대한 오해로 들어온다. 스무딩 확률은 문법적으로 완벽히 합법적인 함수 호출이고, 이웃 검색도 겉보기엔 무해하다. 그래서 코드 리뷰만으로는 부족하고, 입출력 수준에서 시간의 화살을 검사하는 자동 테스트가 필요한 것이다.

2
"코드가 옳은가"가 먼저다

대조군 검증 — 구현의 임상시험

"코드가 올바른가"와 "알파가 있는가"는 다른 질문이고, 앞의 것부터 검증해야 한다. 방법은 신약 임상시험과 같다.

양성과 음성

정답을 심은 데이터, 정답이 없는 데이터

신약을 검증하듯 전략 구현도 대조군으로 검증한다. 정답을 알고 있는 인공 데이터를 만들어 먹이고, 전략이 아는 대로 반응하는지 본다.

양성 대조군 — 정답을 심는다반복 사이클, 공적분 쌍, 강세/약세 레짐처럼 알파를 일부러 심은 가짜 데이터를 준다. 올바른 구현이라면 심은 정답을 찾아내야 한다. 못 찾으면 구현 오류다.
음성 대조군 — 정답이 없다아무 구조 없는 랜덤워크를 준다. 올바른 구현이라면 아무것도 찾지 않아야 한다. 여기서 뭔가를 "찾아내면" 그 전략은 잡음에서 유령을 만드는 과적합 탐지기다.

두 방향의 검사는 서로 다른 오류를 잡는다. 양성 대조군은 "있어야 할 것을 못 보는" 오류(신호 계산 버그, 부호 뒤집힘)를, 음성 대조군은 "없는 것을 보는" 오류(과적합, 정보 누수)를 드러낸다. 한쪽만 통과한 구현은 절반만 검증된 것이다.

더 읽기

양성 대조군은 디버깅 도구로도 뛰어나다. 실데이터에서 성과가 안 나올 때 그 원인은 ① 구현 버그, ② 데이터에 알파 없음, ③ 비용이 알파를 초과 — 셋 중 무엇이든 될 수 있고, 실데이터만 봐서는 구분이 안 된다. 정답을 심은 데이터에서 전략을 돌려 보면 ①이 즉시 분리된다. 심은 사이클 주기를 알고 있으므로 "주기 20일을 심었는데 신호가 10일마다 뒤집힌다"처럼 버그의 위치까지 짚을 수 있다.

음성 대조군에서 성적이 나오는 전략은 고쳐야 할 것이 코드가 아니라 검증 절차 자체인 경우가 많다. 랜덤워크에는 정의상 예측 가능한 구조가 없으므로, 거기서 나온 수익은 정보 누수(룩어헤드)이거나 다중비교의 산물이다 — §1과 §3으로 되돌아가라는 신호다.

널리 퍼진 오해

"양성 대조군을 통과했으니 돈 버는 전략이다"

양성 통과는 구현 검증일 뿐, 실제 시장에 그 알파가 존재한다는 증거가 아니다. 이 혼동이 초심자가 가장 자주 빠지는 함정이다.

오해

"내 페어트레이딩 코드가 공적분을 심은 합성 데이터에서 샤프 3을 찍었다. 실전 투입 준비 끝."

확인된 것은 "공적분이 있다면 이 코드가 그것을 수확할 수 있다"까지다. 실제 시장의 그 종목 쌍에 공적분이 존재하는가, 존재해도 거래비용을 넘는 크기인가, 그리고 미래에도 유지되는가는 전부 별개의 질문이다. 계산기가 잘 작동함을 확인한 것이지, 계산할 거리가 세상에 있음을 확인한 것이 아니다.

이 강의의 본편 모듈들이 같은 문장을 반복해 온 이유가 이것이다. 합성 데이터의 성과 수치는 언제나 "구현이 옳다"의 증거로만 읽어야 하며, 수익성의 예고편으로 읽는 순간 검증 절차 전체가 광고로 변한다.

3
인샘플을 믿지 마라

워크포워드와 그 너머

학습에 쓴 데이터로 성적을 매기지 않는다 — 그리고 OOS 유지 여부가 진짜와 가짜를 가르는 리트머스지다.

숫자 증거

OOS 리트머스 시험 — 붕괴하는 것과 유지되는 것

기본기는 워크포워드다. 과거로 학습하고, 바로 다음 구간에서 검증하고, 창을 앞으로 밀며 반복한다. 이 강의가 여러 모듈에서 모은 숫자 증거를 한자리에 두면 패턴이 선명하다.

데이터모듈인샘플OOS판정
알파 없음LightGBM 팩터 랭킹+5.59−0.55붕괴
알파 없음M6 대회+4.2−2.6붕괴
알파 없음Optiver 대회+27−4.0붕괴
구조 있음페어트레이딩3.583.32유지
구조 있음k-NN 아날로그7.616.98유지
구조 있음순환신경망10.210.0유지

여섯 행 모두 이 플랫폼의 합성 데이터 실험 수치다. 정답이 없는 데이터의 인샘플 성적은 전부 화려했고 전부 붕괴했다. 정답이 심어진 데이터의 성적은 OOS에서도 거의 그대로 유지됐다. OOS 유지 여부가 진짜와 가짜를 가르는 리트머스지라는 이 부록의 핵심 명제가, 기법 여섯 개에 걸쳐 반복 확인된 셈이다.

더 읽기

인샘플 +27이 OOS −4.0이 되는 극단적 붕괴(Optiver 모듈)는 우연이 아니라 필연에 가깝다. 유연한 모델일수록 잡음을 외우는 능력이 커서, 알파 없는 데이터의 인샘플 성적은 오히려 화려해진다. 즉 인샘플 성적의 크기는 실력의 지표가 아니라 모델 유연성의 지표에 가깝다 — 화려할수록 의심해야 한다는, 직관과 정반대의 결론이 나온다.

워크포워드에서 창을 미는 방식(확장 창 vs 고정 폭 롤링 창)도 결과에 영향을 준다. 확장 창은 데이터를 최대한 쓰지만 오래된 레짐을 계속 기억하고, 롤링 창은 최근에 적응하지만 표본이 작다. 어느 쪽이든 학습과 검증의 경계가 시간 순서를 지킨다는 원칙만 지키면 워크포워드다.

다중비교 보정

많이 시도할수록 "우연히 좋은 것"은 반드시 나온다

더 깊은 문제가 남는다. 파라미터와 전략을 많이 시도할수록 우연히 좋은 결과가 나올 확률이 커진다 — 통계학이 다중비교라 부르는 문제다. 이를 보정하는 도구 세 가지의 이름은 알아 둘 가치가 있다.

도구무엇을 하는가
DSRDeflated Sharpe Ratio — 시도 횟수와 수익률 분포의 꼬리(왜도·첨도)까지 반영해 샤프지수를 깎아서 평가한다. "몇 번 시도 끝에 나온 최고인가"를 성적에 반영하는 셈이다
CPCVCombinatorial Purged Cross-Validation — 학습/검증 경계에 완충 구간(퍼지·엠바고)을 두어 시계열 정보 누수를 제거한 조합 교차검증. 하나가 아닌 여러 개의 OOS 경로를 만들어 성과 분포를 본다
PBOProbability of Backtest Overfitting — 그 백테스트가 과적합일 확률 자체를 추정한다. "인샘플 1등이 OOS에서 중앙값 이하로 떨어질 확률"로 정의된다

셋 다 López de Prado(2018)에 정리되어 있으며, 이 플랫폼에는 아직 구현되지 않은 확장 과제다. 지금 단계에서 기억할 것은 도구의 수식이 아니라 문제의식이다 — 백테스트 성적표에는 "몇 번 시도했는가"가 함께 적혀 있어야 한다.

더 읽기

다중비교는 금융만의 문제가 아니다. 유전체학에서는 수만 개 유전자를 동시에 검정할 때 유의수준을 보정하는 것이 표준 절차가 된 지 오래고, 심리학의 재현성 위기도 상당 부분 같은 뿌리다. 금융이 유독 취약한 것은 시도가 싸고 빠르기 때문이다 — 백테스트 한 번에 몇 초면, 하룻밤에 수천 번의 "실험"이 돌아간다. 실험이 싸질수록 보정은 더 무거워져야 한다.

PBO의 아이디어는 우아하다. 데이터를 여러 블록으로 나눠 절반의 조합으로 "인샘플 1등"을 뽑고, 나머지 절반에서 그 1등의 순위를 본다. 모든 조합에 대해 반복하면 "1등이 밖에서도 1등인가"의 분포가 나온다. 인샘플 1등이 밖에서 자주 하위권이면, 그 전략 선택 절차 자체가 과적합 기계라는 뜻이다.

출처 Bailey & López de Prado, "The Deflated Sharpe Ratio", Journal of Portfolio Management 40(5), 2014 · Bailey, Borwein, López de Prado & Zhu, "The Probability of Backtest Overfitting", Journal of Computational Finance 20(4), 2017 · López de Prado, Advances in Financial Machine Learning, Wiley, 2018 (7·11·12장).

L
직접 확인한다

샤프 오차 막대 계산기

샤프지수에도 오차 막대가 있다. "몇 년을 봐야 실력이라 부를 수 있나"를 숫자로 확인한다.

실습 · 계산기형

t = 샤프 × √년수 — 우연과 실력의 경계선

연 단위 샤프지수 \(S\)를 \(Y\)년 관측했을 때, 그 성과가 우연이 아니라고 말하려면 대략 \( t \approx S\times\sqrt{Y} \)가 2를 넘어야 한다(통계에서 흔히 쓰는 2σ 기준). 뒤집으면 필요 관측 년수는 \( Y \ge (2/S)^2 \)이다.

LAB · 샤프의 오차 막대

이 성과는 몇 년 치를 봐야 믿을 수 있나

목표 — 관측된 샤프지수와 관측 기간을 넣어 t = S × √Y를 계산하고, "t ≥ 2" 판정선까지 몇 년이 더 필요한지 확인한다.

t = S × √Y 곡선 판정선 t = 2

조작 안내 — 먼저 S = 0.5로 두고 Y를 1년부터 끝까지 밀어 본다. 다음으로 Y를 고정하고 S를 올려 본다. 관찰 포인트 — ① S = 0.5는 16년이 되어야 t = 2에 닿는다. 괜찮은 전략도 한두 해의 성적으로는 우연과 구분되지 않는다. ② S = 1.0이면 필요 년수가 4년으로 급감한다 — 필요 년수는 (2/S)², 즉 S의 제곱에 반비례한다. ③ 곡선이 √Y 모양이라 갈수록 완만해진다 — 관측을 두 배로 늘려도 t는 √2배밖에 늘지 않는다. 검증은 시간이 지날수록 점점 더 느리게 확실해진다.

M6 대회 우승자가 "12번의 제출로는 운과 실력을 구분할 수 없다"는 취지의 소감을 남긴 것도 정확히 이 계산이다(M6 대회 모듈). 표본이 짧을수록, 화려한 성과도 우연의 범위 안에 있다.

더 읽기

이 법칙이 어디서 오는지 스케치해 두자. 샤프지수는 표본 평균을 표본 표준편차로 나눈 것이므로 그 자체가 추정치이고 표준오차를 가진다. 수익률이 대략 독립·동일분포이고 샤프가 크지 않다면 연 단위 샤프 추정치의 표준오차는 약 \(1/\sqrt{Y}\)이고, 따라서 t-통계량이 \( S\sqrt{Y} \)가 된다. 정확한 표준오차는 \( \sqrt{(1+S^2/2)/Y} \)에 가깝고(Lo, 2002), 왜도·첨도가 크면 더 커진다 — 즉 여기의 판정은 낙관적인 하한이다. 실제 수익률처럼 꼬리가 두꺼운 분포에서는 필요 년수가 이보다 길어진다.

한 가지 더. 이 계산은 전략 하나를 시험했을 때의 이야기다. 여러 전략 중 최고를 골랐다면 §3의 다중비교 문제가 겹쳐서, 같은 t 값이라도 증거력은 훨씬 약해진다. DSR이 하는 일이 바로 이 두 효과(시도 횟수·분포의 꼬리)를 한 번에 보정하는 것이다.

출처 Lo, "The Statistics of Sharpe Ratios", Financial Analysts Journal 58(4), 2002 — 샤프지수 표준오차의 표준 서술.

4
무엇을 잴지 먼저 정한다

평가 기준도 설계 대상이다

약세장에서 방어 전략을 절대 샤프로 재면 성공을 실패로 오판한다. 무엇을 재는지가 무엇을 최적화하게 되는지를 결정한다.

지표와 전략의 궁합

같은 성과, 다른 판정 — 자를 잘못 고르면 생기는 일

검증의 마지막 함정은 데이터도 코드도 아닌 채점표에 있다. 전략의 성격과 맞지 않는 지표는 성공을 실패로, 실패를 성공으로 뒤집어 읽게 만든다.

방어 전략 × 절대 샤프약세가 지배하는 구간에서 손실을 절반으로 줄인 방어 전략도 절대 수익은 음수일 수 있다. 절대 샤프로 재면 "실패"로 찍힌다 — 같은 구간의 벤치마크와 비교해야 방어의 가치가 보인다.
공격 전략 × MDD만낙폭(MDD)만으로 재면 현금에 가까운 전략이 항상 이긴다. 상승을 수확하라고 설계한 공격 전략에 낙폭의 자만 들이대면 반대 방향의 오판이 난다.

그래서 전략의 성격에 맞는 지표와 비교 대상(같은 구간의 벤치마크)을 먼저 정하는 것이 검증의 첫 단계다. 이 교훈이 실제 실험으로 드러난 곳이 레짐 앙상블 모듈이다 — 약세 구간에서 시장보다 훨씬 덜 잃은 방어형 구성이, 절대 수익 잣대로는 최하위로 보였다.

더 읽기

"무엇을 재는지가 무엇을 최적화하게 되는지를 결정한다"는 문장은 측정의 일반 법칙이다. 지표가 목표가 되는 순간 지표는 왜곡되기 시작한다(굿하트의 법칙으로 알려진 관찰). 백테스트에서 이 왜곡은 자동으로 일어난다 — 샤프를 채점 기준으로 걸면 파라미터 탐색은 샤프가 높아 보이는 우연을 향해 수렴하고, MDD를 걸면 낙폭이 작아 보이는 우연을 향해 수렴한다. 채점표 설계가 검증의 일부인 이유다.

실무적 처방은 단순하다. ① 전략을 만들기 전에 주 지표와 벤치마크를 문서로 고정한다. ② 주 지표 하나에 보조 지표 두어 개(수익·위험·회전율 계열에서 하나씩)를 함께 본다. ③ 사후에 지표를 바꾸고 싶어지면, 그것 자체를 다중비교 시도 1회로 센다.

5
새 기법을 추가하는 날

새 기법 체크리스트

이 부록 전체를 아홉 개의 관문으로 압축했다. 하나라도 건너뛴 채 나온 성적표는 아직 성적표가 아니다.

아홉 개의 관문

플랫폼에 새 전략을 올리기 전에

순서대로 확인한다. 앞의 셋은 룩어헤드(§1), 다음 둘은 구현과 비용, 다음 둘은 비교와 채점(§4), 마지막 둘은 데이터 자체의 검증이다.

  1. 피처가 전부 과거만 참조하는가(backward-looking)
  2. 학습 통계(평균·표준편차·계수·문턱)가 학습 구간에서 고정되는가
  3. prefix 불변 테스트를 통과하는가
  4. 양성 대조군 OOS를 통과하는가 — 가능하면 음성 대조군도
  5. 거래비용이 포함되어 있는가
  6. 기준선(이동평균 모듈)과 벤치마크 대비 비교했는가
  7. 평가 기준이 전략의 성격(공격/방어)과 맞는가
  8. 유니버스에 생존 편향이 없는가, 수정주가를 썼는가(모듈 1)
  9. 텍스트·대체 데이터라면 — 타임스탬프가 발표 시각 기준인가, LLM 지식 오염은 없는가, 셔플 검정을 통과하는가(LLM 모듈)
더 읽기

체크리스트라는 형식 자체가 이 부록의 결론이다. 룩어헤드도, 대조군 생략도, 채점표 오류도 대부분 몰라서가 아니라 잊어서 생긴다. 항공과 수술이 체크리스트로 사고를 줄인 것과 같은 이유로, 검증도 기억이 아니라 목록에 맡긴다. 아홉 항목이 전부 "예"가 되기 전의 백테스트 수치는 어디에도 인용하지 않는 것을 원칙으로 삼으면, §3에서 본 다중비교 오염도 함께 줄어든다 — 관문을 통과하기 전의 시도는 애초에 성적표로 세지 않게 되기 때문이다.

생각해 볼 질문

아홉 항목 중 자동 테스트로 기계화할 수 있는 것과 사람의 판단이 필요한 것을 나눠 보자. 기계화할 수 있는 것을 사람에게 맡기고 있다면, 그것이 다음에 뚫릴 자리다.

확인

퀴즈와 정리

답을 보기 전에 먼저 스스로 답해 본다. 전부 이 부록 안에서 다룬 내용이다.

삼중 룩어헤드 방어의 세 겹은 각각 무엇이고, 각각 누구의 어떤 실패를 막는가?
① 설계(피처·학습 통계가 과거만 참조) — 개발자의 이해 부족을, ② 엔진(목표비중 하루 지연) — 개발자의 실수를, ③ 자동 테스트(prefix 불변) — 개발자의 방심을 막는다. 단, 학습 데이터에 미래가 담긴 LLM의 지식 오염은 세 겹 바깥에 있어 별도 검사가 필요하다.
양성 대조군을 통과한 전략에 대해 말할 수 있는 것과 말할 수 없는 것은?
말할 수 있는 것: 구현이 올바르다 — 알파가 있다면 수확할 수 있는 코드다. 말할 수 없는 것: 실제 시장에 그 알파가 존재한다는 것. 양성 통과는 계산기가 잘 작동함을 확인한 것이지, 계산할 거리가 세상에 있음을 확인한 것이 아니다.
음성 대조군(랜덤워크)에서 전략이 수익을 "찾아냈다". 무엇을 의심해야 하는가?
랜덤워크에는 예측 가능한 구조가 없으므로, 그 수익은 정보 누수(룩어헤드)이거나 다중비교의 산물이다. 고칠 것은 전략 코드 이전에 검증 절차 자체다 — §1의 삼중 방어와 §3의 시도 횟수 관리로 돌아가야 한다.
샤프 0.5인 전략이 우연이 아님을 2σ 기준으로 주장하려면 몇 년 치 성과가 필요한가? 샤프 1.0이라면?
t ≈ S × √Y ≥ 2에서 Y ≥ (2/S)². 샤프 0.5면 (2/0.5)² = 16년, 샤프 1.0이면 (2/1)² = 4년. 필요 년수가 S의 제곱에 반비례하므로, 샤프가 절반이면 필요한 세월은 네 배가 된다.
알파 없는 데이터에서 인샘플 +27을 찍은 모델이 OOS에서 −4.0으로 붕괴했다. 인샘플 성적의 "화려함"은 무엇의 지표인가?
실력이 아니라 모델 유연성의 지표에 가깝다. 유연한 모델일수록 잡음을 외우는 능력이 커서 알파 없는 데이터의 인샘플 성적이 오히려 더 화려해진다. 진짜와 가짜를 가르는 리트머스지는 인샘플의 크기가 아니라 OOS 유지 여부다.
약세 지배 구간에서 방어 전략을 절대 샤프로 평가하면 어떤 오판이 나는가?
손실을 크게 줄였어도 절대 수익이 음수면 "실패"로 찍힌다 — 성공을 실패로 오판한다. 같은 구간의 벤치마크와 비교해야 방어의 가치가 보인다. 반대로 공격 전략을 MDD만으로 재면 반대 방향의 오판이 난다. 지표와 벤치마크는 전략을 만들기 전에 성격에 맞게 고정한다.
핵심 정리

① 룩어헤드는 설계·엔진·테스트의 세 겹으로 막는다. 사람의 주의력은 언젠가 실패하므로 기계가 매번 검사한다. LLM 지식 오염만은 이 바깥에 있어 별도 검사가 필요하다.

② "코드가 올바른가"와 "알파가 있는가"는 다른 질문이다. 양성·음성 대조군으로 앞의 것부터 검증하되, 양성 통과를 수익성의 증거로 읽지 않는다.

③ 인샘플을 믿지 마라. OOS 유지 여부가 리트머스지다. 성과에는 오차 막대가 있고(t ≈ 샤프 × √년수), 많이 시도했다면 DSR·CPCV·PBO 같은 보정이 필요하다.

④ 평가 기준도 설계 대상이다 — 무엇을 재는지가 무엇을 최적화하게 되는지를 결정한다. 그리고 이 모든 것은 기억이 아니라 아홉 관문의 체크리스트에 맡긴다.

원문으로 확인하기

참고문헌

수치와 개념은 아래 원문 기준으로 서술했다. 링크는 공개 원문이 확실한 것만 달았다.

백테스트 과적합 · 다중비교

  1. Bailey, D. H., Borwein, J., López de Prado, M. & Zhu, Q. J. (2014). "Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance." Notices of the AMS 61(5). ams.org/notices/201405/rnoti-p458.pdf — 도입 장면의 원문. 시도 횟수를 밝히지 않은 백테스트 보고를 정면으로 비판.
  2. Bailey, D. H. & López de Prado, M. (2014). "The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality." Journal of Portfolio Management 40(5). — DSR의 원전.
  3. Bailey, D. H., Borwein, J., López de Prado, M. & Zhu, Q. J. (2017). "The Probability of Backtest Overfitting." Journal of Computational Finance 20(4). — PBO의 원전.
  4. López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. — 퍼징·엠바고(7장), PBO(11장), CPCV(12장)의 종합 정리.

샤프지수의 통계학

  1. Lo, A. W. (2002). "The Statistics of Sharpe Ratios." Financial Analysts Journal 58(4). — 샤프지수 추정치의 표준오차. 실습의 t ≈ S√Y 법칙이 근사하는 대상.

이 자료의 인샘플·OOS 성과 수치(+5.59 → −0.55, +4.2 → −2.6, +27 → −4.0, 3.58 → 3.32, 7.61 → 6.98, 10.2 → 10.0)는 모두 강의용 실험 플랫폼의 합성 데이터 실측이며, 실제 투자 성과를 시사하지 않는다. t ≈ 샤프 × √년수는 수익률이 독립·동일분포에 가깝고 샤프가 크지 않을 때의 근사이며(Lo 2002), 꼬리가 두꺼운 실제 수익률에서는 필요 년수가 더 길어진다. M6 대회 우승자의 소감은 취지의 요약이며 축자 인용이 아니다. 인용 원칙: 연도는 발표 기준, 확신이 없는 서술은 "~로 알려져 있다"로 구분했다.