유명한 퀀트 논문을 따라 해도 같은 수익률이 안 나오는 이유

유명한 논문의 전략을 그대로 구현했는데 논문과 수익률이 다르면 코드부터 의심하기 쉽습니다. 하지만 같은 수익률이 나오지 않는 이유가 항상 구현 오류인 것은 아닙니다. 시장과 기간이 달라졌을 수 있고, 논문에 적힌 신호와 실제로 체결 가능한 시점 사이에 차이가 있을 수 있습니다. 거래비용이나 상장폐지 종목을 처리하는 방식도 결과를 바꿉니다.

더 중요한 문제는 논문의 주장을 비슷하게 확인했다는 사실과 바로 운용할 전략을 얻었다는 사실이 같지 않다는 점입니다. 초과수익이 같은 방향으로 나타나도 통계적으로 불확실할 수 있고, 비용을 빼면 사라질 수 있습니다. 전체 표본에서는 좋아도 변수를 고른 뒤 남겨 둔 기간에서는 무너질 수 있습니다.

퀀트 논문 001~009에서 다룬 결과도 하나의 숫자로 줄 세울 수 없었습니다. 어떤 연구는 원문과 같은 방향이 약하게 남았고, 어떤 연구는 최근 또는 국내 표본에서 반대로 나타났습니다. 이번 글에서는 그 차이를 실패 목록으로 보지 않고, 논문을 읽고 전략으로 옮길 때 확인해야 할 순서로 정리합니다.

이 글의 핵심 결론

  • 논문의 주장, 재현 결과와 운용 가능한 전략은 서로 다른 단계입니다.
  • 같은 수익률을 맞추는 것보다 데이터부터 체결·비용·표본 밖 결과까지 어느 단계에서 차이가 생겼는지 추적하는 것이 중요합니다.
  • 한 단계를 통과해도 다음 단계가 자동으로 통과되지는 않습니다.
퀀트 논문 재현 결과를 데이터부터 운용까지 읽는 8단계 점검 순서

먼저 구분할 세 가지

논문을 따라 했다는 표현에는 서로 다른 세 가지 작업이 섞이기 쉽습니다.

구분 확인하려는 질문 결과가 같아야 하는 범위
원문 재현 같은 자료와 같은 방법으로 원문의 표·통계가 다시 계산되는가 데이터·표본·신호·통계 방법이 사실상 같아야 함
개념 재현 다른 공개 자료에서도 핵심 가설의 방향이 나타나는가 방향과 경제적 의미를 비교하되 수치 일치를 요구하지 않음
운용 검증 실제 체결과 비용을 반영해도 사용할 만한가 표본 밖 성과·낙폭·회전율·수용력까지 확인해야 함

미국 주식 논문을 국내 주식으로 계산하거나 원문의 94개 특성을 가격 기반 특성 10개로 줄였다면 원문 재현이라고 부를 수 없습니다. 그 실험은 핵심 질문을 다른 표본에서 확인한 개념 재현 또는 축약 실험입니다.

반대로 원문의 표가 정확히 다시 나왔다고 해서 미래 운용 성과까지 확인된 것도 아닙니다. 과거 자료와 계산 방법을 올바르게 복원했다는 뜻일 뿐입니다. 이 구분을 먼저 해야 결과가 다른 이유를 코드 오류 하나로 몰아가지 않을 수 있습니다.

1단계: 데이터가 같은 질문을 담고 있는지 확인합니다

재현 결과의 첫 번째 차이는 전략 공식보다 데이터에서 시작합니다.

  • 시장과 자산군이 같은가
  • 표본 시작일과 종료일이 같은가
  • 상장폐지·거래정지 종목을 포함했는가
  • 당시 알 수 있었던 종목만 사용했는가
  • 분할과 배당을 반영한 수정주가인가
  • 시가총액과 재무정보를 실제 공시 가능 시점에 맞췄는가
  • 동일가중과 가치가중 중 무엇을 사용했는가

횡단면 모멘텀 검증에서는 국내 종목의 과거 승자와 패자를 나눴지만, 원 논문의 미국 CRSP 표본을 그대로 사용한 것이 아니었습니다. 승자-패자 월평균 차이는 +0.25%포인트였으나 Newey–West t값은 0.59에 그쳤습니다. 같은 방향의 숫자가 나왔다는 사실만으로 원 논문의 강한 모멘텀 효과가 국내 표본에서도 재현됐다고 말할 수 없었습니다.

고유 변동성 이상현상 검증도 국내 일별 Fama–French 요인을 만들지 못해 시장 단일요인의 잔차 변동성으로 축약했습니다. 고변동성-저변동성 월평균은 -0.61%포인트로 원문의 방향과 비슷했지만, 동일가중에서는 -0.09%포인트로 약해졌습니다. 가치가중인지 동일가중인지, 어떤 위험요인을 제거했는지만으로도 효과의 크기가 달라졌습니다.

결과를 보기 전에 데이터 차이를 표로 먼저 남기는 이유입니다. 시장을 바꾸고 표본을 줄였는데 수익률까지 같기를 기대하면 재현의 목표가 잘못 설정됩니다.

2단계: 신호 정의를 문장과 코드에서 다시 맞춥니다

이동평균 돌파, 헤드앤숄더, 저변동성처럼 익숙한 이름도 계산 규칙은 하나가 아닙니다.

이동평균 전략만 해도 다음 선택이 필요합니다.

  • 종가가 평균선보다 높은가, 두 평균선이 교차했는가
  • 하루만 넘어도 신호인가, 밴드 밖으로 벗어나야 하는가
  • 공매도까지 하는가, 현금으로만 이동하는가
  • 배당 포함 가격을 쓰는가
  • 신호를 매일 다시 평가하는가

이동평균·가격 범위 돌파 검증에서는 12개 규칙 조합 중 5개만 비용 전 CAGR이 양수였고, 어떤 조합도 DIA 단순 보유를 이기지 못했습니다. 가장 나았던 50일 거래범위 돌파도 편도비용 1%에서 CAGR이 0.72%에 그쳤고 같은 기간 DIA는 8.61%였습니다. 돌파 규칙이라는 이름보다 구체적인 창 길이·밴드·포지션 정의가 결과를 결정했습니다.

차트 패턴 통계 검증에서는 헤드앤숄더와 이중바닥을 극값 순서, 높이 허용 오차와 평활 강도로 정의했습니다. 조건을 조금 바꾸자 사건 수가 크게 달라졌고 헤드앤숄더의 20거래일 방향도 한 조건에서 뒤집혔습니다. 사람이 그림을 보고 붙인 이름을 규칙으로 옮기는 순간 여러 개의 합리적인 정의가 생깁니다.

재현 문서에는 지표 이름만 적지 않고 입력 가격, 창 길이, 임계값, 포지션 방향, 결측값과 중복 신호 처리까지 남겨야 합니다.

3단계: 신호를 안 시점과 체결한 시점을 분리합니다

신호가 맞아도 실제보다 빠른 가격에 체결하면 수익률이 부풀어집니다.

종가가 확정돼야 알 수 있는 돌파 신호를 같은 날 종가에 매수하는 것이 대표적인 예입니다. 일봉 데이터에서는 장중 어느 시점에 조건이 충족됐는지 알 수 없고, 종가가 다시 내려왔는지도 확인할 수 없습니다. 다음 거래일 시가나 다음 관측 가능한 가격을 사용해야 미래 참조를 피할 수 있습니다.

차트 패턴도 마찬가지입니다. 어떤 지점이 국소 고점이었다는 사실은 이후 며칠의 가격을 확인해야 알 수 있습니다. 차트 패턴 검증에서는 극값 확인에 3거래일 지연을 적용했습니다. 패턴의 마지막 저점이나 고점 당일에 진입했다면 당시에는 알 수 없던 정보를 사용하게 됩니다.

체결 단계에서는 최소한 다음 항목을 확인합니다.

항목 확인할 내용
신호 확정 장중·종가·월말 중 언제 알 수 있는가
주문 시점 신호 확정 뒤 실제 주문 가능한 최초 시점은 언제인가
체결 가격 시가·종가·VWAP·지정가 중 무엇을 가정했는가
갭 처리 다음 날 가격이 손절선이나 진입선을 건너뛰면 어떻게 처리하는가
거래 불가 거래정지·가격제한·유동성 부족을 어떻게 처리하는가

논문은 경제적 가설을 검증하기 위해 월별 포트폴리오 수익률을 사용할 수 있습니다. 이를 실제 주문 규칙으로 바꿀 때는 별도의 체결 검증이 필요합니다.

4단계: 비교 대상을 바꾸면 초과수익의 의미도 달라집니다

전략이 양의 수익을 냈다는 사실만으로 초과수익이 확인되지는 않습니다. 같은 시장을 단순 보유하거나 동일한 위험 노출을 가진 대안과 비교해야 합니다.

시계열 모멘텀 검증에서는 12개 자산 중 11개에서 추세 신호의 수익이 양수였습니다. 그러나 통합 전략의 CAGR과 Sharpe는 6.14%와 0.41이었고, 같은 변동성으로 맞춘 단순 보유는 14.34%와 0.76이었습니다. 여러 자산에서 양의 수익이 나왔다는 결과와 단순 대안을 이겼다는 결론은 달랐습니다.

Fama–French 3요인 검증은 비교 기준을 시장 하나에서 시장·규모·가치 요인으로 넓혔습니다. 이후 구간의 25개 포트폴리오 R² 중앙값은 CAPM 70.1%에서 3요인 90.1%로 높아졌고, 연율화 절대 알파 중앙값은 1.26%에서 0.75%로 줄었습니다. 높은 수익의 일부가 고유한 종목 선택 능력이 아니라 규모와 가치 노출로 설명된 것입니다.

다만 3요인을 넣은 뒤에도 개별 5% 기준에서 유의한 알파 6개가 남았습니다. 설명력이 높아졌다는 사실과 모든 초과수익을 설명했다는 결론도 같지 않습니다.

비교 대상은 다음 순서로 넓힐 수 있습니다.

  1. 현금 또는 무위험수익률
  2. 같은 시장의 단순 보유
  3. 같은 변동성이나 베타로 맞춘 단순 보유
  4. 알려진 팩터 노출을 반영한 기준
  5. 더 단순하고 비용이 낮은 규칙

복잡한 전략은 단순 대안을 이겼을 때만 그 복잡성을 감수할 이유가 생깁니다.

5단계: 총수익보다 회전율과 비용 민감도를 함께 봅니다

논문 속 수익률은 거래비용 전 결과인 경우가 많습니다. 비용을 반영했더라도 대형주 중심의 과거 평균 비용이 개인 투자자의 종목과 주문 크기에 맞지 않을 수 있습니다.

시계열 모멘텀 검증의 통합 전략은 편도비용 0.50%에서 CAGR이 6.14%에서 0.43%로 줄었습니다. 고유 변동성 검증의 저변동성-고변동성 전략은 편도비용 0.50%에서 CAGR이 -1.35%로 바뀌었습니다.

이상현상과 거래비용 검증에서는 다섯 개 신호의 결과가 한 방향으로 움직이지 않았습니다.

신호 비용 전 연율화 평균 편도비용 0.30% 후 한쪽 월회전율 해석
12-1개월 모멘텀 11.86% 9.60% 31.0% 비용 뒤에도 양수지만 실제 시장충격은 별도
고유 저변동성 8.80% 5.56% 44.7% 양수이나 통계적 불확실성이 큼
전체 저변동성 2.11% -1.97% 56.5% 비용 뒤 방향 전환
소형주 -2.00% -3.04% 14.0% 낮은 회전율이 음의 가설을 살리지는 못함

신규 진입 문턱을 높이고 기존 보유 범위를 넓힌 밴드는 고유 저변동성의 회전율을 44.7%에서 27.5%로 낮췄습니다. 반면 모멘텀은 거래를 줄인 만큼 총수익도 감소해 기본 방식보다 비용 후 성과가 낮아졌습니다. 회전율을 줄이는 규칙도 모든 전략에 같은 효과를 내지 않습니다.

비용 검증에는 수수료 하나만 넣지 않습니다. 매수·매도 스프레드, 세금, 슬리피지, 주문 크기에 따른 시장충격, 공매도 대차 가능성과 비용을 전략 구조에 맞춰 확인해야 합니다.

6단계: 좋은 숫자를 고른 횟수까지 검정에 포함합니다

같은 데이터에서 변수 1개를 시험한 결과와 1,000개 중 가장 좋은 결과는 같은 p값으로 비교할 수 없습니다.

데이터 스누핑 검증에서는 DIA의 이동평균·가격 범위 돌파·ROC 규칙 1,184개를 만들었습니다. 탐색 후보를 10개에서 250개로 늘리자 최고 Sharpe는 0.23에서 0.63으로 높아졌습니다. 시장이 달라진 것이 아니라 최고값을 뽑을 기회가 늘어난 결과였습니다.

최종 규칙 하나만 본 부트스트랩 p값은 0.014였지만, 1,184개 중 최고를 골랐다는 사실을 반영한 최대통계량 p값은 0.369였습니다. 차트 패턴 검증의 헤드앤숄더 5거래일 차이도 개별 비교에서는 음수였지만 여덟 평균 비교의 단순 다중검정 기준을 통과하지 못했습니다.

Fama–French 3요인 검증의 남은 유의한 알파 6개도 25개 포트폴리오를 동시에 봤다는 보정을 하지 않은 결과입니다. 개별 p값이 5%보다 작다는 이유만으로 모두 독립적인 알파라고 단정할 수 없습니다.

검정 단계에는 다음 기록이 필요합니다.

  • 전체 후보 규칙 수와 실제로 살펴본 변수 범위
  • 처음부터 정한 주가설과 사후에 찾은 결과의 구분
  • 여러 종목·기간·지표를 동시에 비교했는지
  • 자기상관과 이분산을 반영한 통계 방법
  • 경제적 크기와 통계적 유의성의 분리

유의한 결과가 없다는 말은 효과가 정확히 0이라는 뜻이 아닙니다. 현재 표본과 설계로 우연과 구분할 근거가 충분하지 않다는 뜻입니다.

7단계: 변수를 고르지 않은 표본 밖 기간을 남겨 둡니다

다중검정을 보정해도 같은 표본 안에서 규칙을 고르고 평가했다면 과적합 위험이 남습니다. 학습·탐색에 쓰지 않은 기간이나 시장이 필요합니다.

데이터 스누핑 검증의 최종 선택 규칙은 2000~2012년 탐색 구간 Sharpe 0.63이었지만 2013~2025년 홀드아웃에서는 -0.30으로 바뀌었습니다. 탐색과 홀드아웃의 규칙별 Sharpe 순위상관도 -0.28이었습니다.

머신러닝 자산가격 검증은 2011~2015년을 최초 학습에 사용하고 2016~2025년을 연 단위 확장 워크포워드로 예측했습니다. 결과는 복잡한 모형이 우세했던 원 논문과 달랐습니다.

모형 개별 종목 OOS R² 월평균 순위 IC 비용 전 연율화 스프레드 편도비용 0.30% 후
Ridge -0.15% 1.64% 0.83% -2.26%
그래디언트 부스팅 트리 -0.11% 1.21% -0.40% -3.43%

트리의 예측 오차가 선형모형보다 조금 작아도 종목 순위와 경제적 성과가 좋아지지는 않았습니다. 표본 밖 R², 순위상관, 포트폴리오 수익과 비용 후 결과는 서로 다른 질문에 답했습니다.

표본 밖 검증은 한 번 떼어 놓은 마지막 기간만 뜻하지 않습니다. 시간이 흐르는 순서를 지킨 확장 학습, 시장을 바꾼 외부 검증, 매개변수를 고정한 실시간 모의 운용도 포함할 수 있습니다. 중요한 조건은 검증 결과를 본 뒤 같은 구간에 맞춰 규칙을 다시 고치지 않는 것입니다.

8단계: 백테스트 수익을 운용 규칙으로 바꿀 수 있는지 봅니다

비용 후 표본 밖 수익이 양수여도 실제 전략으로는 부족할 수 있습니다.

  • MDD와 최장 회복 기간을 감당할 수 있는가
  • 한 종목과 한 시기에 수익이 집중되지 않았는가
  • 연속 손실 뒤에도 규칙을 유지할 수 있는가
  • 필요한 포지션 수와 주문 크기를 시장이 받아줄 수 있는가
  • 공매도와 레버리지를 실제로 사용할 수 있는가
  • 신호가 사라졌을 때 중단하고 재검증할 기준이 있는가

횡단면 모멘텀의 승자 포트폴리오는 CAGR 7.01%였지만 MDD는 -61.57%였습니다. 고유 저변동성 전략은 방향이 원문과 비슷해도 비용과 가중 방식에 민감했습니다. 머신러닝 모형은 약한 순위상관이 있었지만 월회전율 약 42%를 감안하면 비용 후 성과가 음수였습니다.

운용 여부는 평균수익 하나가 아니라 수익의 근거가 남는가, 손실 경로를 견딜 수 있는가, 주문을 반복할 수 있는가를 함께 판단하는 문제입니다.

아홉 편의 결과를 같은 점수로 줄 세우지 않습니다

퀀트 논문 001~009는 시장과 질문, 검증 수준이 서로 다릅니다. 따라서 CAGR이나 p값 하나로 순위를 만들 수 없습니다. 대신 각 글에서 어느 단계가 결론을 제한했는지 봅니다.

확인한 질문 관측된 결과 결론을 제한한 단계
001 국내 횡단면 모멘텀 승자-패자 +0.25%/월, t=0.59 표본·통계 불확실성
002 자산별 시계열 모멘텀 11/12 자산 양수, 위험조정 단순 보유보다 낮음 벤치마크·비용
003 이동평균·돌파 규칙 5/12 규칙만 양수, 모두 DIA보다 낮음 규칙 정의·비교 대상
004 차트 패턴의 조건부 수익 일부 차이가 있었지만 다중검정 기준 미통과 탐지 정의·다중검정
005 고유 변동성 이상현상 원문 방향과 비슷하지만 가중·비용에 민감 요인 축약·비용
006 시장·규모·가치 요인의 설명력 R² 상승, 절대 알파 감소, 일부 알파 잔존 팩터 선택·동시 검정
007 데이터 스누핑 개별 p=0.014, 최대통계량 p=0.369, OOS Sharpe 음수 후보 선택·표본 밖
008 이상현상과 회전율 비용 뒤 유지·약화·반전이 신호마다 다름 회전율·비용·수용력
009 머신러닝 표본 밖 예측 두 모형 OOS R²와 비용 후 수익 모두 음수 제한된 특성·표본 밖·비용

어떤 글은 원문의 방향과 비슷했고 어떤 글은 달랐습니다. 결과가 다르다고 재현이 무의미한 것은 아닙니다. 어떤 조건에서 주장이 약해지는지 확인했다면 투자 판단에 필요한 정보를 얻은 것입니다.

재현 작업을 시작할 때 남길 점검표

논문을 읽은 뒤 바로 코드를 작성하기보다 아래 질문부터 고정합니다.

데이터

  1. 논문의 시장·종목·기간·가격 종류는 무엇인가
  2. 같은 자료를 구할 수 없다면 무엇을 바꾸는가
  3. 상장폐지·재무 공시 지연·종목 편입 시점은 어떻게 처리하는가

신호와 체결

  1. 신호를 한 문장의 수식과 의사코드로 설명할 수 있는가
  2. 신호를 실제로 알 수 있는 최초 시점은 언제인가
  3. 다음 거래 가능한 가격과 거래 불가 상황을 어떻게 처리하는가

비교와 비용

  1. 현금·단순 보유·위험조정 대안 중 어떤 기준과 비교하는가
  2. 회전율과 편도비용을 어떤 방식으로 계산하는가
  3. 스프레드·시장충격·대차 비용을 생략했다면 결과의 한계는 무엇인가

검정과 표본 밖

  1. 전체 후보 수와 사후 선택한 변수를 기록했는가
  2. 자기상관·이분산·다중검정을 고려했는가
  3. 변수를 고르지 않은 기간이나 시장이 남아 있는가

운용

  1. MDD·최장 낙폭·수익 집중도는 감당 가능한가
  2. 주문 규모와 포지션 수를 실제로 반복할 수 있는가
  3. 성과가 약해졌을 때 중단·재검증할 규칙이 있는가

이 목록은 체크 표시가 많을수록 좋은 전략이라는 점수표가 아닙니다. 앞 단계에서 치명적인 문제가 발견되면 뒤의 정교한 통계가 그 문제를 보완하지 못합니다.

같은 수익률이 나오지 않았을 때 확인할 순서

논문과 결과가 다르면 다음 순서로 원인을 좁힙니다.

  1. 원문의 표본 통계와 가장 단순한 수익률부터 맞춥니다.
  2. 수정주가·배당·결측값·가중 방식의 차이를 확인합니다.
  3. 신호 발생일과 실제 보유 수익률의 날짜를 한두 사례로 직접 추적합니다.
  4. 원문과 바뀐 조건을 하나씩 분리해 결과 민감도를 확인합니다.
  5. 비용 전 결과를 맞춘 뒤 비용과 체결 제약을 추가합니다.
  6. 전체 후보 수를 기록하고 다중검정과 홀드아웃을 적용합니다.
  7. 마지막에 MDD·회전율·수용력으로 운용 가능성을 판단합니다.

처음부터 최종 CAGR만 맞추려 하면 서로 다른 오류가 우연히 상쇄될 수 있습니다. 중간 단계의 포트폴리오 수, 평균 보유 종목, 회전율, 월별 수익률과 신호 사례를 차례로 비교하는 편이 안전합니다.

논문이 주는 가장 중요한 역할

논문은 완성된 매매 공식을 제공하는 설명서라기보다 검증할 질문과 비교 기준을 제공합니다. 어떤 변수로 수익 차이를 정의했는지, 어떤 대안을 통제했는지, 결과가 우연과 구분되는지 읽는 것이 먼저입니다.

재현 결과가 원문과 같으면 다음 단계의 검증 근거가 생깁니다. 다르면 시장·기간·데이터·규칙 중 효과가 의존한 조건을 찾을 수 있습니다. 두 경우 모두 논문에 나왔기 때문에 매수한다는 결론보다 유용합니다.

결국 같은 수익률을 만드는 것이 목표가 아닙니다. 같은 질문을 공정한 조건에서 다시 묻고, 그 결과가 실제 체결과 비용, 표본 밖 기간과 손실 경로를 지나도 남는지 확인하는 것이 목표입니다.


함께 보면 좋은 글

※ 이 글은 투자 권유가 아닙니다. 논문과 과거 데이터의 결과는 미래 수익을 보장하지 않습니다.