백테스트는 트레이딩에서 가장 설득력 있는 거짓말이다. 자산 곡선은 우상향하고, 승률은 건강해 보이며, 낙폭도 견딜 만해 보인다. 그런데 실전에 투입하면 엣지가 조용히 사라진다. 이것은 단순한 불운이 아니다. 백테스트는 체계적이고 예측 가능한 방식으로 실제 성과를 과장하며, 그 실패 양상을 알게 되면 더 이상 놀라지 않게 된다.

이 글은 이미 백테스트를 실행하는 방법을 알고 있다는 전제 하에 작성되었다. 아직 모른다면 트레이딩 전략을 백테스트하는 방법에 관한 자매 가이드를 먼저 읽어보길 바란다. 그 글에서는 실행 방식, 표본 크기, 포워드 테스트를 다룬다. 여기서는 더 어려운 질문을 깊이 파고든다. 왜 백테스트가 제시하는 숫자는 거의 항상 실제로 벌게 될 숫자보다 좋게 나오는가?

백테스트는 추정치가 아니라 최선의 시나리오다

핵심 문제는 백테스트가 중립적인 측정이 아니라는 점이다. 그것은 당신이 수십 개의 작은 선택을 내린 과정의 결과물이며, 그 선택 하나하나가 결과에 낙관을 스며들게 할 기회를 제공했다. 당신은 시장, 기간, 지표, 파라미터, 청산 방식을 선택했다. 각 결정은 무엇이 효과가 있었는지에 대한 어느 정도의 사전 지식을 가진 채 내려졌다. 그 지식이 바로 오염원이다.

통계적으로 볼 때, 당신이 최종적으로 취하는 결과는 가능한 결과들의 분포에서 무작위로 뽑힌 표본이 아니다. 그것은 여러 개의 잡음 섞인 표본들 중 최댓값이다. 백 개 중 최선의 것을 고를 때, 당신은 실력을 측정하는 것이 아니라 운의 상위 꼬리를 측정하는 것이다. 이제부터는 그 상방 편향을 만들어내는 메커니즘들을 하나씩 살펴본다.

백테스트가 실제 성과를 과장하는 다섯 가지 방식

편향결과를 어떻게 부풀리는가어떻게 발견하는가해결책
생존 편향오늘날까지 살아남은 자산만 테스트유니버스가 시점 기준(point-in-time)인지 확인상장폐지 종목을 포함한 데이터셋 사용
룩어헤드 편향거래 시점에 알 수 없었던 데이터 사용모든 신호를 그 타임스탬프까지 추적데이터에 지연 적용; 다음 봉에서 체결
과최적화여러 번 튜닝한 것 중 최선이 운으로 좋아 보임파라미터 수와 시도 횟수를 세어본다파라미터 축소; 아웃오브샘플 테스트
비용 무시스프레드, 슬리피지, 수수료를 무시실제 비용을 반영해 전부 재계산거래당 왕복 비용 모델링
국면 의존성하나의 시장 시대를 시장의 법칙으로 부호화테스트된 금리 및 변동성 국면을 확인강세장, 약세장, 고변동성 구간 전반에서 테스트

숫자가 거짓말하는 다섯 가지 방식

1. 생존 편향: 승자만 테스트했다

간단한 아이디어를 백테스트한다고 가정해보자: S&P 500 종목의 하락을 매수한다. 오늘 날짜 기준 지수 구성종목을 가져와서 가격 이력을 다운로드하고, 10% 낙폭마다 매수하는 것을 시뮬레이션한다. 결과는 훌륭하다. 전략이 항상 회복하는 것처럼 보이기 때문이다. 그러나 실제로는 그렇지 않다. 테스트에 포함된 모든 기업이 오늘날 지수에 남아 있는 종목이었기 때문에 그렇게 보이는 것뿐이다.

S&P 500은 매년 약 20~25개 기업을 교체한다. 20년치 백테스트라면 당신이 전혀 보지 못한 수백 건의 구성종목 변경이 있었다는 뜻이다. 당신의 테스트는 리먼 브라더스, 베어스턴스, 엔론, 워싱턴 뮤추얼의 하락을 결코 매수한 적이 없다. 이들은 하락한 후 계속 떨어져 상장폐지되어 지수에서 제거되었기 때문이다. 이 전략은 패자들에게 결코 노출된 적이 없다. "하락은 항상 회복된다"는 결론은 데이터에서 발견된 것이 아니라 유니버스 구성 방식에 의해 미리 심어진 것이다. 상장폐지 종목을 포함한 시점 기준 데이터만이 이를 정직하게 해결하는 방법이다.

2. 룩어헤드 편향: 없었던 정보를 사용하는 것

룩어헤드 편향이란 거래 시점에 존재하지 않았던 정보를 시뮬레이션에서 사용하는 것을 의미한다. 미묘하고 흔한 버전은 타이밍 오류다. 규칙이 "일봉 종가가 50일 이동평균선을 상향 돌파할 때 매수"라고 하고, 백테스트가 그 매수를 같은 날의 종가에 체결한다고 하자. 실제로는 장이 마감되기 전까지는 종가를 알 수 없으며, 그때가 되면 거래 가능한 유일한 가격은 다음 시가이고, 이는 불리하게 갭이 발생할 수도 있다. 신호가 발생한 가격이 아니라 실제로 거래 가능한 다음 가격에 체결해야 하는데, 그렇지 않으면 존재하지 않는 엣지를 인위적으로 만들어낼 수 있다.

또 다른 전형적인 버전은 재작성된 데이터다. 기업 실적은 나중에 수정된다. 백테스트가 오늘날 데이터베이스에 저장된 최종 수정 EPS 수치를 사용한다면, 이는 거래일 당시에는 알려지지 않았던 숫자로 거래하는 셈이다. 그날 존재했던 것은 최초 발표 수치뿐이었다. 규칙은 말하기는 쉽지만 지키기는 쉽지 않다: 모든 입력값은 그 타임스탬프 시점에 알 수 있었던 것으로 지연시켜야 한다.

3. 과최적화와 다중 비교의 함정

기법 가이드에서는 기본적인 커브 피팅을 다룬다. 더 깊은 문제는 통계적인 것이다. 200개의 파라미터 조합을 테스트하고 각각을 5% 유의수준 기준으로 판단한다면, 실제로 아무런 진짜 엣지가 없더라도 약 10개는 순전히 우연으로 "유의미"해 보일 것이다. 가장 좋아 보이는 실행 결과를 선택하는 것은 좋은 것을 찾는 것이 아니다. 그것은 가장 운이 좋았던 것을 찾는 것이다.

12개의 최적화된 파라미터를 가진 전략은 거의 어떤 과거 가격 시계열에도 맞출 수 있을 만큼 충분한 자유도를 갖는다. 그것은 시장에 관한 규칙을 학습한 것이 아니라, 표본의 특정한 잡음을 암기한 것이다. 정직한 경험칙은 여기서 직접 도출된다: 튜닝한 파라미터가 많을수록, 그리고 시도한 조합이 많을수록, 결과에 적용해야 할 할인폭도 커져야 한다. 한 번 테스트한 깔끔한 세 개짜리 파라미터 시스템은, 천 번의 최적화 실행에서 승자가 된 열두 개짜리 파라미터 시스템보다 더 신뢰할 만하다.

4. 거래 비용에 대한 무지

스프레드, 슬리피지, 수수료는 거래마다 부과되므로 거래 빈도에 따라 복리로 쌓인다. 비용을 0으로 가정하는 백테스트는 당신의 전략을 모델링하는 것이 아니라, 무료로 거래하는 환상 버전을 모델링하는 것이다. 왕복 거래당 총 엣지가 0.10%에 불과한 단기 시스템을 생각해보자. 스프레드, 슬리피지, 수수료를 더하면 현실적인 왕복 비용은 0.12%가 된다. 아래 차트는 거래 횟수가 증가함에 따라 총수익과 순수익을 비교해 보여준다. 명확성을 위해 단순 합산 수익률을 사용했다.

같은 전략, 총수익 대 순수익: 얇은 엣지를 비용이 잡아먹는다

무슨 일이 일어나는지 보라. 연간 1,000건 거래에서 총 백테스트는 놀라운 100% 수익률을 보여주지만, 비용을 반영한 실제 결과는 마이너스 20%다. 이 전략이 더 많이 거래할수록 백테스트는 더 좋아 보이지만 실제로는 더 많은 돈을 잃는다. 거래당 엣지가 거래당 비용을 결코 넘어서지 못했기 때문이다. 이것이 바로 총수익 기준 40%로 유혹적인 고빈도 시스템이 순수익 기준으로는 확실하게 마이너스가 될 수 있는 이유다. 비용은 또한 백테스트가 보고하는 위험 대비 보상 비율도 조용히 왜곡한다. 지불하는 모든 스프레드가 모든 승리 거래의 실제 보상을 줄이기 때문이다.

5. 국면 의존성

2010년부터 2021년까지 백테스트된 전략은 거의 전적으로 단 하나의 시장 국면 안에서 테스트된 것이다: 제로 금리, 양적완화, 낮은 변동성, 그리고 역사상 가장 긴 강세장. 그런 세상에서는 하락이 회복되고 추세가 지속되었으므로, 그런 행태를 "학습"한 평균 회귀나 추세추종 시스템은 사실상 그 국면을 마치 시장의 영구적인 법칙인 것처럼 부호화한 것에 불과하다. 그러다 2022년이 되어 금리 인상, 약세장, 높아진 변동성이 찾아왔고, 이 전략은 한 번도 겪어본 적 없는 상황을 마주하게 되었다. 하나의 시대에 국한된 백테스트는 그 시대에 전략이 어떻게 작동했는지를 알려줄 뿐, 다음 시대를 어떻게 다룰지는 거의 아무것도 알려주지 않는다.

백테스트를 얼마나 할인해야 할까?

이 편향을 완전히 제거할 수는 없지만, 가격에 반영할 수는 있다. 헤드라인 숫자를 상한선으로 취급하고, 테스트가 어떻게 만들어졌는지에 따라 할인하라. 과정이 지저분할수록 할인폭은 더 깊어져야 한다.

백테스트를 믿기 전에 얼마나 할인해야 하는가

백테스트 특성현실적인 처리 방식이유
인샘플 전용, 단일 시장 국면대폭 할인 또는 폐기다른 세계를 본 적이 없음
10개 이상의 최적화된 파라미터대폭 할인표본을 암기했을 가능성이 큼
비용을 0으로 가정하거나 무시부호가 뒤집힐 수 있음순수익만이 신뢰할 유일한 숫자
생존 편향이 제거된 유니버스적당한 할인패자들이 조용히 제거되었음
아웃오브샘플, 워크포워드, 현실적 비용가벼운 할인, 그래도 실전 확인 필요정직에 가장 가까운 상태

실제로 도움이 되는 것

이는 백테스트가 쓸모없다는 뜻이 아니다. 백테스트는 나쁜 아이디어를 걸러내는 필터이지, 좋은 아이디어에 대한 약속이 아니라는 뜻이다. 몇 가지 관행은 백테스트와 현실 사이의 간극을 의미 있게 좁혀준다. 모델이 전혀 건드리지 않은 아웃오브샘플 데이터를 남겨두고, 워크포워드 테스트를 활용하라. 파라미터 개수에 따라 공격적으로 할인하라. 좋은 국면뿐 아니라 나쁜 국면을 포함해 여러 국면에서 의도적으로 테스트하라. 그리고 실전 실행이 실제로 백테스트가 가정했던 체결과 포지션 규모를 달성할 수 있는지 확인하라. 완벽한 진입에 은근히 의존하거나 포지션 사이징 규칙을 무시하는 시스템은 실제 돈이 걸렸을 때 매우 다르게 행동할 것이기 때문이다.

마지막 필터는 페이퍼 트레이딩이고, 그다음이 소액 실전 거래다. 백테스트는 놓친 체결도, 감정도, 놀라움도 없는 세계에 산다. 실제 실행만이 이 세 가지 모두를 포함하는 유일한 테스트다.

핵심 요약

  • 백테스트는 잡음 섞인 여러 시도들 중 최선의 결과이므로, 읽기도 전에 이미 상방으로 편향되어 있다.
  • 생존 편향은 살아남은 자산만 테스트하고, 룩어헤드 편향은 없었던 정보로 거래한다.
  • 과최적화는 파라미터 개수와 시도한 조합 수에 비례해 커지므로 그에 맞게 할인하라.
  • 비용은 거래마다 부과되며, 큰 총수익을 확실한 순손실로 바꿔놓을 수 있다.
  • 단일 국면 백테스트는 그 국면을 법칙으로 부호화하며 국면이 바뀌면 무너진다.
백테스트는 전략이 효과가 있었을 것이라고 말해줄 뿐이다. 앞으로도 효과가 있을 것이라고는 결코 말해주지 않는다. 이 두 문장 사이의 간극이 대부분의 트레이딩 계좌가 죽어가는 곳이다.

면책조항: 이 콘텐츠는 교육 목적으로만 제공되며 금융 자문을 구성하지 않습니다. 트레이딩에는 상당한 손실 위험이 따릅니다. 과거 성과가 미래 결과를 보장하지 않습니다.