모든 트레이더는 머릿속으로는 좋아 보이는 전략을 가지고 있습니다. 진입이 타당해 보이고, 논리가 견고하게 느껴집니다. 그런데 실제 자금을 투입하면 예상과 전혀 다른 결과를 보게 됩니다. 거의 항상 빠진 단계는 백테스트입니다.
백테스트란 과거 가격 데이터에 트레이딩 전략을 적용하여 어떻게 성과를 내었을지 보는 것입니다. 이는 트레이더들이 가진 실험실과 같은 것입니다. 전략이 작동하는지 알아보기 위해 자본을 위험에 빠뜨리는 대신, 과거 데이터는 한 달러도 걸리기 전에 아이디어를 테스트하고, 성과를 측정하며, 약점을 파악할 수 있는 통제된 환경을 제공합니다.
하지만 백테스트는 많은 트레이더들이 자신을 속이는 곳이기도 합니다. 잘못 수행되면 종이 위에는 놀랍게 보이지만 실시간 시장에서는 붕괴되는 결과를 만듭니다. 제대로 백테스트하는 방법을, 그리고 더 중요하게는 결과를 정직하게 해석하는 방법을 이해하는 것이 트레이더가 개발할 수 있는 가장 귀중한 기술 중 하나입니다.
수동 대 자동 백테스트
백테스트에는 두 가지 근본적인 접근 방식이 있으며, 각각 서로 다른 장단점을 가지고 있습니다.
수동 백테스트
수동 백테스트는 과거 차트를 봉 단위로 스크롤하면서 전략 규칙과 일치하는 설정을 식별하고, 진입과 청산을 기록하며, 손으로 계산하거나 스프레드시트에서 결과를 계산하는 것을 포함합니다. 이는 느립니다. 한 가지 전략을 하나의 시장에 대해 철저히 수동 백테스트하는 데는 며칠에서 심지어 몇 주까지 걸릴 수 있습니다.
장점은 이해의 깊이입니다. 수동으로 백테스트하는 트레이더는 자동화 테스터가 절대 얻지 못하는 방식으로 가격 움직임을 읽는 법을 배웁니다. 그들은 실시간에서 설정이 실제로 어떻게 보이는지에 대한 직관을 개발합니다. 여기에는 코딩된 전략은 깔끔한 논리로 처리하지만 실시간 트레이더는 즉석에서 해석해야 하는 복잡하고 모호한 신호를 포함합니다.
수동 백테스트는 재량적 전략, 패턴 기반 진입, 그리고 여전히 설정을 일관되게 식별하는 법을 배우고 있는 트레이더에게 가장 잘 작동합니다.
자동화된 백테스트
자동화된 백테스트는 소프트웨어를 사용하여 코딩된 전략을 과거 데이터에 적용하고 몇 초 내에 결과를 생성합니다. 일반적인 플랫폼으로는 MetaTrader의 Strategy Tester, TradingView의 Pine Script 백테스터, Python의 사용자 정의 스크립트(Backtrader나 Zipline 같은 라이브러리 사용)가 있습니다.
장점은 속도와 규모입니다. 자동화된 백테스트는 이동평균 교차 전략을 50개 도구에 대해 20년의 데이터에 걸쳐 수 분 내에 실행할 수 있습니다. 이는 유리한 설정만 선택하거나 무의식적으로 손실 거래를 건너뛰는 인간의 경향을 제거합니다. 모든 신호가 선택되고, 모든 결과가 기록됩니다.
단점은 전략을 코딩하면 단순화를 강요한다는 것입니다. "추세가 강해 보인다" 또는 "거래량이 이상하다"와 같은 미묘한 부분은 규칙으로 번역하기 어렵습니다. 그리고 자동화된 테스트의 속도는 과도한 최적화를 매우 쉽게 만듭니다. 이는 아래에서 자세히 다루는 문제입니다.
수동 대 자동화된 백테스트
| 요소 | 수동 | 자동화 |
|---|---|---|
| 속도 | 느림 (일/주) | 빠름 (분/시간) |
| 샘플 크기 | 보통 50-200개 거래 | 수천 개의 거래 |
| 필요 기술 | 차트 읽기 | 코딩 / 스크립팅 |
| 최적 활용 | 재량적 전략 | 규칙 기반 시스템 |
| 선별 위험 | 높음 (인간 편견) | 없음 (모든 신호 선택) |
| 과최적화 위험 | 낮음 | 높음 |
| 직관 개발 | 강함 | 약함 |
실제로 중요한 핵심 지표
백테스트는 숫자의 벽을 생성합니다. 모든 숫자가 동일한 관심을 받을 만한 것은 아닙니다. 다음은 유용한 결과와 노이즈를 구분하는 지표들입니다.
순이익 / 총수익. 최종 결과입니다. 전략이 돈을 벌었습니까? 이것이 시작점이지만, 단독으로는 가장 오해의 소지가 있는 지표입니다. 200% 수익을 얻었지만 그 과정에서 70% 낙폭이 있었던 전략은 80% 수익을 얻었으면서 15% 낙폭만 있었던 전략과 같지 않습니다.
승률. 수익성 있는 거래의 비율입니다. 많은 초보자들이 가정하는 것과는 달리, 승률 자체는 전략 품질에 대해 거의 아무것도 말해주지 않습니다. 40% 승률 전략은 승리가 손실보다 훨씬 크다면 매우 수익성이 높을 수 있습니다. 80% 승률 전략은 20%의 손실이 치명적이라면 재앙이 될 수 있습니다. 승률은 리스크-리워드 비율의 맥락에서만 의미가 있습니다.
수익 팩터. 총 수익을 총 손실로 나눈 값입니다. 수익 팩터가 1.0 이상이면 전략이 돈을 벌었다는 뜻입니다. 1.5 이상이면 일반적으로 견고한 것으로 간주됩니다. 큰 샘플에서 3.0 이상이면 축하가 아닌 의구심을 불러일으켜야 합니다.
최대 낙폭. 자본곡선의 최대 피크에서 바닥까지의 하락입니다. 이는 아마도 실제 생존 가능성에 가장 중요한 지표입니다. 왜냐하면 이 전략이 회복되기 전에 얼마나 많은 고통을 주는가에 답하기 때문입니다. 50% 최대 낙폭이 있는 전략은 손익분기점에 도달하려면 100% 수익이 필요하며, 대부분의 트레이더는 그 회복이 일어나기 훨씬 전에 포기합니다.
샤프 비율. 평균 수익을 수익의 표준 편차로 나눈 리스크 조정 수익입니다. 높을수록 좋습니다. 샤프 비율이 1.0 이상이면 허용 가능하고, 2.0 이상이면 강합니다. 과도한 변동성을 통해 수익을 달성하는 전략에 페널티를 줍니다.
거래 수 (샘플 크기). 이것이 대부분의 트레이더가 무시하고 다른 모든 지표가 의미가 있는지를 결정하는 지표입니다.
백테스트 지표 빠른 참조
| 지표 | 측정 대상 | 좋은 범위 | 위험 신호 |
|---|---|---|---|
| 순이익 | 총 수익/손실 | 양수 | 장기간 음수 |
| 승률 | % 수익성 거래 | 40-65% | 85% 이상 |
| 수익 팩터 | 총수익 / 총손실 | 1.3-2.5 | 4.0 이상 |
| 최대 낙폭 | 최악의 자본 하락 | 25% 미만 | 50% 이상 |
| 샤프 비율 | 리스크 조정 수익 | 1.0 이상 | 0.5 미만 |
| 거래 수 | 샘플 크기 | 200+ | 30 미만 |
샘플 크기 문제
전략이 15개 거래를 생성하고 그 중 12개가 승리 거래라면, 승률은 80%입니다. 좋아 보입니다. 또한 거의 아무것도 의미하지 않습니다.
15개 거래로, 무작위 확률이 실제 우위가 없는 전략에서 80% 승률을 쉽게 만들 수 있습니다. 공정한 동전 15번을 던지면 12개 이상의 앞면이 나올 확률은 대략 3% 정도입니다. 이는 천문학적이지 않습니다. 30개의 서로 다른 전략을 실행하면 그 중 하나는 순수한 운으로 이 숫자에 도달할 것입니다.
통계적 유의성은 거래량을 필요로 합니다. 대략적인 가이드로:
- 30개 거래 미만: 결과는 본질적으로 의미가 없습니다. 기술과 운을 구분하기에는 너무 작습니다.
- 30-100개 거래: 방향만 나타냅니다. 전략이 우위를 가질 수 있지만 확신은 낮습니다.
- 100-200개 거래: 결과가 정보를 제공하기 시작합니다. 성과의 패턴이 안정화되기 시작합니다.
- 200개 이상 거래: 합리적인 확신을 위한 최소 임계값입니다. 샘플이 클수록 지표가 전략의 실제 성과에 더 수렴합니다.
이것이 고빈도 전략이 통계적으로 검증하기가 더 쉬운 이유입니다. 하루에 20개 거래를 생성하는 스캘핑 시스템은 2개월 내에 1,000개의 데이터 포인트를 축적할 수 있습니다. 월간 2-3개 거래를 취하는 스윙 트레이딩 전략은 동일한 확신 수준에 도달하려면 수년의 데이터가 필요합니다.
곡선 피팅: 모두를 잡는 함정
곡선 피팅(또는 과적합)은 백테스트가 실시간 트레이딩으로 변환되지 않는 가장 일반적인 이유입니다. 그리고 당신이 빠져 있을 때 인식하기 가장 어려운 함정입니다.
곡선 피팅은 트레이더가 계속 규칙, 필터 또는 매개변수 조정을 추가하여 백테스트가 완벽해 보일 때까지 계속할 때 발생합니다. RSI 진입 임계값이 30에서 27로 조정됩니다. 변동성 필터가 가장 악화된 3개월을 제거합니다. 시간 제한이 손실 세션을 제외합니다. 각 조정은 백테스트 수치를 개선합니다. 각 조정은 또한 전략을 테스트한 과거 데이터에 더 구체적으로 만들고 본 적 없는 데이터에서 작동할 가능성을 낮춥니다.
핵심 문제는 다음과 같습니다: 과거 데이터는 신호(실제, 반복되는 시장 패턴)와 노이즈(무작위, 일회성 이벤트)를 모두 포함합니다. 견고한 전략은 신호를 포착합니다. 과적합된 전략은 노이즈를 암기합니다.
과적합된 전략의 경고 신호:
- 전략에 5-6개 이상의 규칙 또는 필터가 있음
- 매개변수가 비정상적으로 구체적임 (14:37에 진입, RSI 27.3, 1.7 ATR 정지)
- 자본곡선이 의심스럽게 매끄럽고 거의 낙폭이 없음
- 80-85% 이상의 승률
- 성과가 단일 매개변수를 약간 변경하면 크게 악화됨
- 전략이 하나의 도구 또는 시간 기간에서만 작동함
유용한 경험칙: 전략이 주요 매개변수의 10-20% 변화를 견디지 못하고 붕괴된다면, 아마도 과적합되어 있습니다. 견고한 전략은 매개변수에 민감하지 않습니다. 48/198 기간에서 작동하는 SMA 교차는 50/200 및 52/205에서도 합리적으로 작동해야 합니다. 하나의 정확한 조합에서만 작동한다면, 결과는 실제 우위를 반영하지 않고 데이터의 부산물입니다.
샘플 내 대 샘플 외 테스트
곡선 피팅에 대한 표준 방어는 과거 데이터를 두 개의 분할로 나누는 것입니다.
샘플 내 데이터는 전략을 개발하고 최적화하는 데 사용됩니다. 이것이 규칙이 테스트되고, 매개변수가 조정되며, 전략이 형성되는 샌드박스입니다.
샘플 외 데이터는 전략이 최종화될 때까지 보관됩니다. 전략이 고정되면, 이 예약된 데이터에 대해 테스트됩니다. 성과가 유지되면, 신중한 확신의 이유가 있습니다. 붕괴되면, 전략은 아마도 샘플 내 기간에 과적합되었습니다.
일반적인 분할은 70/30입니다: 데이터의 70%에서 개발, 30%에서 검증합니다. 일부 트레이더는 워크-포워드 분석을 사용하며, 이는 반복적으로 롤링 샘플 내 윈도우에서 최적화하고 다음 세그먼트에서 테스트하여 다양한 시장 조건에 걸쳐 여러 샘플 외 결과를 제공합니다.
중요한 규칙: 샘플 외 데이터는 한 번만 사용할 수 있습니다. 트레이더가 샘플 외 결과를 보고 전략을 조정하려고 돌아가는 순간, 그 데이터는 더 이상 샘플 외가 아닙니다. 오염되었습니다. 이것은 미묘하지만 치명적인 실수이며, 매우 자주 발생합니다.
결과를 부풀리는 데이터 편향
제대로 구성된 백테스트도 기본 데이터가 결함이 있으면 오해의 소지가 있는 결과를 생성할 수 있습니다.
생존자 편향
대부분의 주식 데이터베이스는 현재 존재하는 회사만 포함합니다. 파산하거나 상장 폐지되거나 헐값에 인수된 수백 개의 회사는 빠져 있습니다. 오늘의 구성요소를 사용하여 "S&P 500 주식"을 백테스트하는 것은 역사적으로 존재했던 S&P 500을 테스트하는 것이 아닙니다. 이는 승자의 큐레이션 목록을 테스트하는 것입니다. 이는 체계적으로 수익을 부풀리고 전략이 실시간에서 수행했을 것보다 더 좋아 보이게 합니다.
선행 정보 편향
선행 정보 편향은 백테스트가 거래 당시에 사용할 수 없었을 정보를 사용할 때 발생합니다. 예시로는 수정된 경제 데이터(GDP 수치는 몇 개월 후 정기적으로 수정됨) 사용, 전체 데이터 세트에서 계산된 지표 적용, 또는 그 가격을 세션이 끝날 때까지 알 수 없었을 때의 당일 종가를 기준으로 거래 진입이 포함됩니다.
자동화된 백테스트에서, 선행 정보 편향은 종종 코딩 오류를 통해 발생합니다. 봉 N의 데이터를 사용하여 신호를 계산하고 봉 N+1(봉 N 대신)에서 거래에 진입하는 스크립트에는 모든 신호에 선행 정보 편향이 내장되어 있습니다.
스프레드 및 수수료 무시
놀랍도록 많은 백테스트가 0의 거래 비용을 가정합니다. 월간 3-4개 거래를 취하는 스윙 트레이더의 경우, 이것이 결과를 크게 변경하지 않을 수 있습니다. 하루에 20개 거래를 취하는 스캘퍼의 경우, 거래당 1핍의 스프레드도 수익성 있는 시스템을 손실 시스템으로 바꿀 수 있습니다. 항상 현실적인 스프레드, 수수료 및 슬리페이지 추정치를 포함합니다. 의심스럽면 비용을 과소평가하는 것보다 과대평가합니다.
포워드 테스트: 실시간 트레이딩으로의 다리
백테스트 및 샘플 외 검증을 통과한 전략도 실제 자본을 받을 자격이 있기 전에 한 가지 더 넘어야 할 장애물이 있습니다: 포워드 테스트, 또는 페이퍼 트레이딩이라고도 불립니다.
포워드 테스트란 실시간으로 데모 계정 또는 시뮬레이션 체결로 전략을 거래하는 것을 의미합니다. 백테스트와 달리, 포워드 테스트는 전략이 본 적 없는 데이터에서, 실시간으로 전개되고 있는 시장 조건에서 발생합니다. 이는 전략 논리뿐만 아니라 실행 현실도 테스트합니다: 트레이더가 실시간에서 신호를 실제로 식별할 수 있습니까? 체결이 현실적입니까? 다음에 어떻게 될지 앞으로 스크롤하여 엿볼 수 있는 능력이 없을 때도 전략이 작동합니까?
최소 포워드 테스트 기간은 전략의 시간 틀에 따라 다릅니다. 데이 트레이딩 전략은 최소 1-2개월 포워드 테스트해야 합니다. 스윙 트레이딩 전략은 3-6개월이 필요하여 충분한 거래를 축적합니다. 목표는 백테스트 결과를 정확히 복제하는 것이 아니라 포지션 크기 조정 및 실행의 정상적인 변동을 고려하여 전략이 백테스트된 기대치의 합리적인 범위 내에서 성과를 내는 것을 확인하는 것입니다.
전략 검증 파이프라인
| 단계 | 목적 | 기간 | 통과 기준 |
|---|---|---|---|
| 샘플 내 백테스트 | 규칙 개발 및 최적화 | 과거 (데이터의 70%) | 양수 기댓값, 합리적인 지표 |
| 샘플 외 백테스트 | 미확인 데이터에 대한 검증 | 과거 (데이터의 30%) | 성과가 샘플 내의 20-30% 범위 내에서 유지 |
| 포워드 테스트 (페이퍼) | 실시간 조건에서 확인 | 1-6개월 실시간 | 백테스트와 일치하는 결과 |
| 실시간 (소규모) | 실행 가능성 증명 | 1-3개월 소규모 자본 | 예상치 못한 슬리페이지 또는 체결 문제 없음 |
| 실시간 (전체 규모) | 전략 배포 | 지속적 | 지속적인 모니터링 및 검토 |
현실적인 결과는 어떻게 보이나요
백테스트가 가르치는 가장 유용한 것 중 하나는 보정입니다. 백테스트를 본 적 없는 트레이더는 극도로 비현실적인 기대를 갖는 경향이 있습니다. 광범위하게 백테스트한 트레이더는 실제 우위가 어떻게 보이는지 알고 있으며, 일반적으로 적당합니다.
50-60% 승률과 1.3에서 2.0 사이의 수익 팩터를 가진 전략은 진정으로 견고합니다. 이것이 흥미로워 보이지 않을 수도 있지만, 훈련된 리스크 관리로 수백 개의 거래에 걸쳐 복합되면 의미 있는 수익을 생성합니다. 90% 이상의 승률을 가진 전략은 거의 항상 숨겨진 위험을 가집니다: 자주 소액을 벌지만 드물지만 치명적인 손실로 모두를 돌려받습니다(그 이상). 옵션 판매 전략은 이 패턴의 고전적인 예입니다.
좋은 백테스트는 전략이 작동할 것을 증명하지 않습니다. 이는 전략이 추가 테스트 가치가 있음을 증명합니다. 목표는 확실성이 아닙니다; 증거에 기반한 정보 있는 신뢰입니다.
일반적인 백테스트 실수
위에서 다룬 주요 함정 외에도, 이러한 오류는 백테스트 품질을 정기적으로 훼손합니다:
- 너무 짧은 기간에서 테스트. 강세장에서만 테스트한 전략은 스트레스 테스트를 받지 않습니다. 최소 하나의 완전한 시장 사이클을 포함하는 데이터를 사용합니다: 강세, 약세 및 횡보 조건.
- 완벽함을 위해 최적화. 백테스트에서 최선의 매개변수 세트는 거의 절대 앞으로 최선의 매개변수 세트가 아닙니다. 최적이 아닌 견고함을 목표로 합니다.
- 체제 변화 무시. 추세 추종 전략이 추세 시장에서 백테스트되면 놀랍게 보일 것입니다. 질문은 범위 조건에서 어떻게 수행하는가입니다. 다양한 시장 환경에서 테스트합니다.
- 즉각 체결이라고 가정. 실시간 트레이딩에서 지정가 주문은 놓치고 시장가 주문은 미끄러집니다. 현실적인 체결 가정을 구축합니다. 특히 변동성 높은 기간입니다.
- 가설 없이 백테스트. 무작위로 지표와 매개변수의 조합을 테스트하여 뭔가 작동할 때까지 찾는 것은 데이터 마이닝이지, 전략 개발이 아닙니다. 전략이 작동해야 하는 이유에 대한 논리적 근거로 시작한 다음, 데이터가 이를 지원하는지 테스트합니다.
주요 핵심 사항
백테스트는 수익성 있는 트레이딩으로의 지름길이 아닙니다. 이는 추가 테스트 가치가 있는 전략을 폐기해야 할 전략과 분리하는 프로세스입니다. 제대로 수행되면, 자세히 검토를 견디지 못할 아이디어에 수개월과 상당한 자본을 낭비하지 않도록 트레이더를 보호합니다.
- 수동 백테스트는 직관을 구축합니다; 자동화된 백테스트는 통계적 확신을 구축합니다. 대부분의 진지한 트레이더는 둘 다 사용합니다.
- 샘플 크기가 모든 것입니다. 30개 거래 미만의 결과는 노이즈입니다. 의미 있는 데이터로 200개 이상의 거래를 목표합니다.
- 곡선 피팅은 제어되지 않은 최적화의 기본 결과입니다. 샘플 외 테스트, 매개변수 민감도 분석 및 정직한 자기 평가로 싸웁니다.
- 포워드 테스트는 선택 사항이 아닙니다. 이는 실제 자본을 위험에 빠뜨리기 전의 최종 검증 단계입니다.
- 현실적인 우위는 적당합니다. 55% 승률과 1.5 수익 팩터를 가진 전략은 거래할 가치가 있는 전략입니다. 95% 승률과 5.0 수익 팩터를 가진 전략은 거의 확실히 너무 좋습니다.
면책 조항: 이 콘텐츠는 교육 목적으로만 제공되며 재정 조언을 구성하지 않습니다. 트레이딩에는 상당한 손실 위험이 포함됩니다. 과거 성과는 미래 결과를 보장하지 않습니다.