CAGR 36% 백테스트, 생존편향까지 직접 감사했다

미국주식 자동매매 봇 만들기 · 13편  |  백테스트 검증

지난 편에서 $1,000이라는 소액 조건으로 26개 매매법을 전부 돌려봤습니다. 1등은 TQQQ + 200일 이동평균 레짐 필터였고, 2017~2026년 기준 연평균 36.2%, $1,000이 $17,767이 되는 곡선이 나왔습니다.

그 글 말미에 이렇게 적어뒀습니다. “이 생존편향 문제는 워낙 중요해서 별도의 글로 따로 파헤칠 예정입니다.” 이번 편이 그 약속을 지키는 글입니다.

결론부터 말하면, 저 36%라는 숫자는 한 번도 겪어보지 않은 시장에서 나온 성적입니다. 그리고 그 사실은 남이 지적해준 게 아니라, 숫자를 쓰기 전에 제가 제 백테스트를 세 갈래로 뜯어보다가 스스로 찾아낸 것입니다.

🧪 숫자를 믿기 전에 세 갈래로 뜯어봤다

백테스트 결과를 발표하는 사람이 자기 결과를 검증하면 대개 “잘 나왔다”로 끝납니다. 그래서 검증을 아예 반박을 목적으로 돌렸습니다. 하나는 미래 정보가 새어 들어왔는지, 하나는 비용을 제대로 뺐는지, 나머지 하나는 이 표본 자체가 공정한가를 따지도록 나눴습니다.

검증 항목 판정 근거
미래 정보 유입 🟢 신뢰 가능 t일 종가까지만 보고 t+1일 시가에 체결. 일부러 만든 5일짜리 합성 데이터로 하루 지연이 실제로 강제되는지 확인
비용 모델 🟢 정확 수수료·슬리피지·거래세 상수와 매수/매도 계산식을 손으로 재검산. 비용이 실제 잔고에서 빠지는지 대조
표본 공정성 🔴 심각한 결함 상위권을 싹쓸이한 레버리지 추세 전략이 2000~2002년과 2008년을 한 번도 통과하지 않았음

두 항목은 통과했는데 세 번째에서 “심각한 결함” 판정이 나왔습니다. 자기 결과에 이런 딱지를 붙이는 건 유쾌하지 않지만, 이 판정 하나가 봇의 자산 배분을 통째로 바꿔놓았습니다.

검증에 쓴 하네스와 결과 파일은 지금도 그대로 재현됩니다. 명령 한 줄이면 같은 표가 다시 나옵니다.

Bash

python3 scripts/strategy_zoo_backtest.py
# → strategy_zoo_results.json  (전 전략 지표 + 비용 민감도 + 장기창 결과)
#   strategy_zoo_equity.png    (자산 곡선)

📉 1등 전략이 한 번도 통과하지 않은 10년

문제의 핵심은 단순합니다. TQQQ는 2010년에야 세상에 나왔습니다. 나스닥100을 하루 단위로 3배 추종하는 이 상품은 닷컴 붕괴(2000~2002년)에도, 금융위기(2008년)에도 존재하지 않았습니다. 그러니 그 시기를 담은 백테스트는 애초에 불가능합니다.

제 백테스트의 평가 구간은 2011년과 2017년에 시작합니다. 다시 말해 TQQQ가 살아 있던 기간만 잘라서 본 겁니다. 그 안에서 본격적인 약세장은 2022년 단 한 번이고, 그 한 번에서도 TQQQ 단순 보유는 한 해에 −79.8%를 맞았습니다.

참고로 비교하면 낙폭의 크기가 실감납니다. 아래 두 번째 막대는 실제 기록이고, 세 번째는 “그때 3배 상품이 있었다면”을 가정한 외부 추정치입니다.

TQQQ 단순보유 (2017~26 실측)

−81.7%

QQQ 닷컴 붕괴 (2000~02 실측)

−83%

3배 상품 닷컴 통과 (외부 추정)

≈ −100%

나스닥100을 추종하는 QQQ는 2000년 3월 고점에서 2002년 10월 저점까지 약 −83% 빠졌습니다. 하루 단위로 3배를 추종하는 상품은 큰 폭의 등락이 반복될수록 원금이 갉여나가는 구조라, 같은 구간을 통과했다면 사실상 전액 손실에 가까운 낙폭이 났으리라는 게 이 분야의 공통된 추정입니다. 그리고 닷컴 붕괴 직후 진입했다면, 3배 상품이 원래 지수를 다시 따라잡은 시점은 2007년 말 — 곧바로 금융위기를 다시 맞는 자리였습니다.

그래서 저 36%라는 숫자에 붙는 정확한 문장은 이렇습니다. “레버리지 추세 추종이 비용을 이겨낸다”는 결론은 2010~2025년이라는 특정 상승장에 한정된 조건부 참입니다. 무조건 참이 아닙니다.

🧬 화면에 남아 있는 종목이 곧 표본이다

여기서 한 걸음 더 들어가면 더 불편한 사실이 나옵니다. 제가 백테스트할 종목을 고른 방식 자체가 이미 편향입니다. 저는 오늘 증권사 화면에 남아 있는 상품 중에서 골랐습니다. 중간에 청산돼 사라진 상품은 애초에 후보에 오르지도 못했습니다.

이게 얼마나 큰 차이인지는 폐지율을 보면 드러납니다. 모닝스타가 2024년에 집계한 미국 상장지수상품 폐지 비율입니다.

레버리지·인버스 상품 폐지율
52%

일반 상품 폐지율
31%

레버리지·인버스 상품은 절반 이상이 사라졌습니다. 제 백테스트 유니버스에 TQQQ가 들어 있다는 사실 자체가, 이미 “살아남은 절반”에서 뽑았다는 뜻입니다.

🪦 사라진 상품이 어떻게 사라지는가 — XIV의 하루

변동성 지수를 거꾸로 추종하던 XIV는 2018년 2월 초까지 운용자산 19억 달러의 인기 상품이었습니다. 몇 년간 꾸준히 우상향하는 차트를 그렸고, 백테스트를 돌리면 훌륭한 성적이 나왔습니다.

그러다 2018년 2월 5일, 변동성이 하루 만에 튀면서 단 하루에 −96.3%가 났습니다. 발행사는 조기상환 조항을 발동했고 상품은 2월 20일 거래를 끝으로 사라졌습니다. 경쟁 상품은 −96.1%를 맞고도 살아남았지만, 그 뒤 배율을 −1배에서 −0.5배로 낮췄습니다.

중요한 건 이겁니다. 오늘 백테스트 도구에서 XIV를 검색하면 아무것도 나오지 않습니다. 실패는 차트에서 지워지고, 성공만 화면에 남습니다.

개별 주식도 사정이 같습니다. 오늘의 지수 구성 종목만으로 과거를 되돌려 계산하면 중간에 상장폐지된 회사들이 통째로 빠지기 때문에, 연 수익률이 1~2%포인트 부풀려진다는 게 일반적인 추정이고, 더 크게 잡는 분석도 있습니다. 펀드 데이터베이스에서도 청산된 펀드를 빼면 평균 수익률이 연 0.9% 남짓 과대평가된다는 고전적인 연구가 있습니다. 10년을 복리로 굴리면 결코 작은 차이가 아닙니다.

🎯 표에서 1등이었지만 추천하지 않은 것들

감사를 마치고 나니 성적표 상위권 대부분에 별표를 달아야 했습니다. 수익률 순위와 채택 여부가 어긋나는 지점을 표로 정리하면 이렇습니다.

전략 연 수익률 최대 낙폭 채택하지 않은 이유
비트코인 200일선 59.9% −65.8% 표본 전체가 “살아남은 코인”의 성장사. 0이 됐을 수도 있는 경로가 데이터에 없음
TQQQ 단순보유 40.9% −81.7% 낙폭 −80% 구간을 버틸 사람이 거의 없음. 게다가 이 −81.7%는 순한 표본에서 나온 값
메가캡 상위 2종목 34.9% −36.7% 위험 대비 성적은 최고(샤프 1.25)지만, 2017년에 지금의 승자 6종목을 미리 알았다는 가정. 재현 불가
TQQQ 변동성 타깃 34.0% −48.5% 같은 편향을 안고 있지만, 규칙 자체가 위험이 커지면 노출을 줄이도록 설계돼 채택 (조건부)

특히 메가캡 상위 2종목 전략은 숫자만 보면 이 표에서 가장 훌륭합니다. 낙폭도 −36.7%로 얌전하고 위험 대비 수익도 최고입니다. 그런데 2017년으로 돌아가서 지금의 대장주 목록을 만들 방법이 없습니다. 오늘의 승자를 과거에 심어놓고 돌린 결과라 실전에서는 재현할 수 없습니다. 참고용 열로만 남겼습니다.

📐 내 편을 들어주는 오차까지 기록에 남겼다

감사에서 나온 지적이 전부 저에게 불리했던 건 아닙니다. 그래도 남겨야 기록입니다.

🟡 소액 계좌의 1주 단위 문제

$1,000으로는 소수점 매매 없이 정수 주식만 살 수 있습니다. 저가인 TQQQ는 영향이 −1% 정도로 미미하지만, 5개 자산을 나눠 담는 분산형 전략은 한 칸에 최대 절반이 현금으로 놀아서 실제보다 8~50%포인트까지 낮게 평가됐습니다. 분산형이 불리하게 나온 순위는 그만큼 할인해서 봐야 합니다.

🟢 나에게 유리한 쪽으로 틀린 오차

위험 회피 구간에 현금 대신 단기 국채 상품을 담도록 짜서, 그때마다 매매 비용이 두 번 발생했습니다. 그 결과 200일선 전략의 누적 비용이 실제 약 $542인데 표에는 $1,012로 잡혔습니다. 즉 이 전략의 진짜 성적은 발표한 표보다 좋습니다. 유리한 오차라고 조용히 고쳐 쓰면 다음번엔 불리한 오차도 조용히 넘어가게 됩니다.

🟢 흔들리지 않고 남은 결론 하나

이쯤 되면 “그럼 백테스트에서 건진 게 하나도 없나” 싶지만, 시장 국면이 바뀌어도 무너지지 않는 결론이 하나 있습니다. 거래 빈도가 높으면 비용이 수익을 통째로 먹는다는 부분입니다.

이건 확률이 아니라 산수이기 때문입니다. 같은 규칙을 수수료만 0으로 바꿔 다시 돌리면 순위가 뒤집힙니다. 7일 최소 변동폭 돌파 전략은 수수료가 없으면 +92%인데 왕복 비용을 붙이면 −64%가 됩니다. 2일 상대강도 전략도 +66% → −29%로 뒤집힙니다. 로직에 우위가 있는데 비용이 그 우위를 100% 가져가는 겁니다.

생존편향은 어떤 시장이 표본에 들어왔는가의 문제라 국면에 따라 결론이 달라집니다. 반면 비용은 시장이 오르든 내리든 매 거래마다 똑같이 빠져나갑니다. 그래서 “고빈도 매매는 구조적으로 진다”는 결론만은 이번 감사에서도 살아남았습니다. 이 부분은 왕복 0.60% 비용이 만드는 빈도의 법칙 편에서 자세히 다뤘습니다.

🔧 감사 결과가 봇 설계를 바꾼 지점

“심각한 결함” 판정이 나왔다고 1등 전략을 버리진 않았습니다. 대신 그 숫자를 믿는 정도를 낮춰서 채택했습니다. 실제 봇에 반영한 판단 흐름은 이렇습니다.

graphviz diagram

🔁 다이어그램 요약: 백테스트 상위 전략을 채택할지는 표본에 본격 약세장이 있었는지 하나로 갈린다 — 있으면 숫자를 그대로 쓰고, 없으면 비중을 줄이고 레짐 게이트와 변동성 타깃을 의무로 붙인 뒤에만 쓴다.

구체적으로 세 가지를 바꿨습니다.

단순 보유는 후보에서 제외. 수익률 1등이어도 낙폭 −80%대 상품을 그냥 들고 있는 선택지는 지웠습니다.

레짐 게이트를 의무화. 나스닥100이 200일선 위일 때만 레버리지 상품을 들고, 아니면 단기 국채로 빠집니다. 표본에 없던 하락장이 오면 최소한 자동으로 손을 떼게 하는 장치입니다.

변동성 타깃을 얹기. 최근 실현 변동성이 커지면 노출을 자동으로 줄입니다. 이 규칙 하나로 2022년 손실이 −48.0%에서 −14.6%로 줄었습니다. 2011~2026년 기준으로도 단순 200일선(연 24.0%)보다 나은 연 26.6%가 나옵니다.

핵심은 “표본에 없던 시장이 온다”를 전제로 규칙을 짰다는 점입니다. 백테스트가 보여주지 않은 구간에서 자동으로 몸을 낮추는 장치가 없으면, 화려한 수익률 곡선은 그 구간을 만나는 날 한 번에 정산됩니다.

🧭 백테스트를 손에 쥐었을 때 던지는 다섯 질문

직접 돌린 백테스트든, 어디서 본 수익률 곡선이든 아래 다섯 개만 확인해도 대부분의 함정은 걸러집니다. 저는 이 목록을 검증 단계의 고정 절차로 쓰고 있습니다.

① 이 종목은 표본 기간 내내 존재했는가
상품 출시일이 백테스트 시작일보다 늦으면, 그 앞 구간은 시뮬레이션이지 실적이 아닙니다.

② 같은 카테고리에서 사라진 상품은 몇 개인가
폐지율이 높은 카테고리일수록, 지금 보이는 종목은 그만큼 운이 좋았던 표본입니다.

③ 표본에 본격적인 약세장이 최소 한 번은 있는가
상승장만 담긴 표본에서 나온 최대 낙폭은 실제 최악이 아니라 그 표본의 최악일 뿐입니다.

④ 가장 잘된 거래 두세 건을 빼도 결론이 남는가
몇 건이 전체 수익을 만들었다면 그건 전략이 아니라 사건입니다.

⑤ 비용을 0으로 바꾸면 순위가 뒤집히는가
뒤집힌다면 그 전략의 성패는 로직이 아니라 수수료율이 정하고 있다는 뜻입니다.

📌 세 줄 정리

▶ 백테스트 1등이던 연 36% 레버리지 추세 전략은 닷컴 붕괴도 금융위기도 통과하지 않은 표본에서 나온 성적이었다.

▶ 레버리지·인버스 상품은 절반 이상이 이미 폐지됐고, 오늘 화면에 보이는 종목을 고르는 순간 표본은 이미 승자 쪽으로 기울어 있다.

▶ 그래서 숫자를 버리는 대신 비중을 줄이고 레짐 게이트와 변동성 타깃을 의무로 붙였다 — 2022년 손실이 −48.0%에서 −14.6%로 줄어든 게 그 장치의 값이다.

본 글은 개인이 만든 자동매매 시스템의 개발·검증 기록이며 특정 종목이나 상품의 매매를 권유하지 않습니다. 인용한 수치는 명시한 기간과 비용 가정 아래 실행한 백테스트 결과이고, 과거 성과는 미래 수익을 보장하지 않습니다. 레버리지 상품은 원금 대부분을 잃을 수 있는 고위험 상품입니다. 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.
🔗 시리즈 이어 읽기
$1,000으로 26개 매매법을 돌려 찾은 답 — 이번 글이 검증한 그 백테스트
왕복 0.60% 비용이 만드는 빈도의 법칙 — 국면이 바뀌어도 무너지지 않은 결론
미래를 훔쳐보지 않는 백테스트 하네스 만들기 — 이번 감사에서 통과한 그 구조

📚 참고 자료

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤