백테스트 완벽 가이드: 과거에서 미래를 엿보는 기술
백테스트 완벽 가이드
"과거가 미래를 보장하지 않는다. 하지만 과거조차 모르면 미래는 더욱 암흑이다." — 익명의 퀀트
핵심 요약
- 백테스트는 과거 데이터로 전략의 성과를 시뮬레이션하는 것입니다
- 과최적화(Overfitting)는 백테스트의 가장 큰 적입니다
- 좋은 백테스트 결과가 실전 성공을 보장하지 않습니다
- 하지만 나쁜 백테스트 결과는 높은 확률로 실전 실패를 예측합니다
백테스트란 무엇인가?
시간 여행 시뮬레이션
백테스트는 "만약 과거에 이 전략을 썼다면?"이라는 질문에 답합니다.
시나리오:
전략: "RSI가 30 이하면 매수, 70 이상이면 매도"
데이터: 2020년~2024년 비트코인 일봉
백테스트 실행: 2020-01-01부터 하루씩 이동하며... 매일 RSI 계산 → 조건 확인 → 매수/매도 결정 → 손익 기록
결과: 총 수익률: 142% 최대 드로다운: 28% 승률: 58% 거래 횟수: 87회
왜 백테스트가 필요한가?
실전 없이 검증하기 위해입니다.방법 A: 실전 먼저 (위험)
자금 투입 → 6개월 운영 → 결과 확인
결과: 좋으면 다행, 나쁘면 큰 손실
방법 B: 백테스트 먼저 (안전) 과거 데이터로 검증 → 문제점 수정 → 재검증 → 실전 투입 결과: 실패해도 실제 돈 손실 없음
---
백테스트의 핵심 지표
1. 총 수익률 (Total Return)
가장 직관적이지만 가장 오해받는 지표입니다.
총 수익률 = (최종 자산 - 초기 자산) / 초기 자산 × 100%
예: 10,000 USDT → 25,000 USDT 총 수익률 = (25,000 - 10,000) / 10,000 × 100% = 150%
함정: 150%가 1년인지 10년인지에 따라 의미가 완전히 다릅니다.
2. 연환산 수익률 (CAGR)
복리 효과를 반영한 연간 평균 수익률입니다.CAGR = (최종 자산 / 초기 자산)^(1/년수) - 1
예 1: 3년간 10,000 → 20,000 (100% 수익) CAGR = (20,000/10,000)^(1/3) - 1 = 26% 연평균
예 2: 1년간 10,000 → 20,000 (100% 수익) CAGR = (20,000/10,000)^(1/1) - 1 = 100% 연평균
CAGR로 기간이 다른 전략들을 공정하게 비교할 수 있습니다.
3. 최대 드로다운 (Maximum Drawdown, MDD)
가장 중요한 리스크 지표입니다.자산 변화: 10,000 → 15,000 → 12,000 → 18,000 → 13,000 → 20,000
드로다운 1: 15,000 → 12,000 = 20% 하락 드로다운 2: 18,000 → 13,000 = 27.8% 하락
최대 드로다운(MDD) = 27.8%
MDD가 중요한 이유:
| MDD | 심리적 상태 | 회복 필요 수익 |
|---|---|---|
| 10% | 불안하지만 견딜 만함 | 11% |
| 20% | 매우 불안 | 25% |
| 30% | 패닉 직전 | 43% |
| 50% | 대부분 포기 | 100% |
4. 샤프 비율 (Sharpe Ratio)
위험 대비 수익을 측정합니다.샤프 비율 = (전략 수익률 - 무위험 수익률) / 수익률의 표준편차
해석:
- 0 이하: 무위험 자산보다 못함
- 0-1: 보통
- 1-2: 괜찮음
- 2-3: 좋음
- 3 이상: 매우 우수 (의심 필요)
주의: 샤프 비율 3 이상은 과최적화 가능성이 높습니다.
5. 승률과 손익비
승률만으로는 부족합니다. 손익비와 함께 봐야 합니다.
전략 A:
승률: 80%
평균 수익: 2%
평균 손실: 10%
기대값 = (0.8 × 2%) + (0.2 × -10%) = 1.6% - 2% = -0.4% (손해!)
전략 B: 승률: 40% 평균 수익: 8% 평균 손실: 3% 기대값 = (0.4 × 8%) + (0.6 × -3%) = 3.2% - 1.8% = +1.4% (이익!)
승률 80%인 A보다 승률 40%인 B가 실제로는 더 좋은 전략입니다.
6. 손익비 (Risk/Reward Ratio)
손익비 = 평균 수익 / 평균 손실
예: 평균 수익 5%, 평균 손실 2.5% 손익비 = 5 / 2.5 = 2:1
해석:
- 1:1 미만: 승률로 보완 필요
- 1:1 ~ 2:1: 보통
- 2:1 이상: 좋음
---
백테스트의 치명적 함정
1. 과최적화 (Overfitting): 가장 큰 적
과최적화는 과거 데이터를 "외우는" 것입니다.
나쁜 예:
"2021년 5월 19일에는 매도하고, 7월 20일에는 매수한다"
→ 과거를 암기한 것일 뿐
→ 미래에 전혀 작동하지 않음
좋은 예: "RSI가 30 이하면 매수" → 일반화 가능한 규칙 → 미래에도 적용 가능
과최적화 징후:
- 파라미터가 10개 이상
- 백테스트 수익률이 "믿기 어려울 정도로" 높음
- 파라미터를 조금만 바꿔도 결과가 급변
1. 파라미터 최소화
6개 → 3개로 줄일 수 있는가?
Out-of-Sample 테스트
2020-2022 데이터로 최적화
2023-2024 데이터로 검증 (건드리지 않은 데이터!)
Walk-Forward 분석
최적화 → 실전 → 재최적화 → 실전... 반복
2. 생존 편향 (Survivorship Bias)
살아남은 것만 분석하면 성과가 과대평가됩니다.예: "상위 20개 코인으로 백테스트"
문제: 2020년 상위 20개 ≠ 2024년 상위 20개 → 2020년 상위였지만 2024년에 사라진 코인들 제외됨 → 성공한 코인만 분석하는 셈 → 성과 과대평가
해결책: 상장폐지된 코인까지 포함한 전체 데이터 사용
3. 미래 엿보기 (Look-Ahead Bias)
그 시점에 알 수 없었던 정보를 사용하는 실수입니다.나쁜 예 1: "내일 종가를 보고 오늘 진입 결정"
→ 실제로는 내일 종가를 오늘 알 수 없음
나쁜 예 2: "장중에 일봉 완성 전 일봉 데이터 사용" → 일봉 데이터는 하루가 끝나야 확정됨
CTBot의 해결책: → 일봉 확정 후(09:00 KST)에만 신호 생성 → 오늘 일봉이 확정되면 그제서야 어제 일봉 기준으로 신호 판단
4. 거래 비용 무시
실제 거래에서는 비용이 발생합니다:
비용 요소:
거래소 수수료: 0.02~0.1%
슬리피지: 0.05~0.5%
펀딩비: 8시간당 0~0.1%
예시: 백테스트 수익률: 연 50% 거래 횟수: 100회 거래당 비용: 0.15%
실제 비용: 100 × 0.15% × 2(매수+매도) = 30% 조정 수익률: 50% - 30% = 20%
항상 보수적으로 비용을 반영하세요.
5. 유동성 무시
백테스트는 "원하는 가격에 원하는 수량을" 체결할 수 있다고 가정합니다.
실제로는:
주문: 10 BTC @ $50,000 실제 체결: - 3 BTC @ $50,000 - 4 BTC @ $50,100 - 3 BTC @ $50,250 평균 체결가: $50,100 (0.2% 슬리피지)
소형 코인이나 대량 주문 시 슬리피지가 수익률을 크게 깎습니다.
---
좋은 백테스트의 조건
체크리스트
| 항목 | 권장 기준 | CTBot |
|---|---|---|
| 테스트 기간 | 최소 3년 (다양한 시장 상황) | ✓ |
| 거래 횟수 | 최소 100회 (통계적 유의성) | ✓ |
| 수수료 반영 | 0.1% 이상 | ✓ |
| 슬리피지 반영 | 0.05~0.2% | ✓ |
| Out-of-Sample | 최적화 기간과 검증 기간 분리 | ✓ |
| 파라미터 | 최소화 (10개 미만) | ✓ |
| 다양한 종목 | 3개 이상 | ✓ |
Out-of-Sample 테스트 방법
전체 데이터: 2019-2024 (6년)
방법:
In-Sample (최적화): 2019-2022 (4년) → 파라미터 튜닝
Out-of-Sample (검증): 2023-2024 (2년)
→ 건드리지 않은 데이터로 검증
→ 이 결과가 실전 예측에 더 신뢰성 있음
결과 비교: In-Sample 수익률: 200% Out-of-Sample 수익률: 80% → 격차가 크면 과최적화 의심
---
백테스트 결과 해석하기
물어봐야 할 질문들
1. 최대 드로다운을 감당할 수 있는가?백테스트 MDD: 25%
실전 예상: 25% × 1.5 = 37.5% (더 나쁠 수 있음)
→ 37.5% 하락을 견딜 수 있는가? → 못 견디겠다면 포지션 크기 축소 또는 전략 변경
2. 수익의 원천은 무엇인가?
패턴 A: 소수 큰 거래
10회 중 2회가 전체 수익의 80% 책임
→ 이 2회를 놓치면? 손해
패턴 B: 다수 작은 거래 100회 거래가 고르게 수익 기여 → 안정적, 예측 가능
3. 특정 기간에 집중되었는가?
나쁜 예:
2021년 상승장에서 전체 수익의 90% 발생
나머지 기간은 손익 없음
→ 상승장이 아니면 무용지물
좋은 예: 모든 연도에서 양수 수익 다양한 시장에서 작동 → 견고한 전략
---
CTBot의 백테스트 철학
우리의 원칙
---
정리: 백테스트의 황금률
| 원칙 | 설명 |
|---|---|
| 1. 단순하게 | 파라미터가 적을수록 과최적화 위험 감소 |
| 2. 보수적으로 | 비용은 높게, 수익은 낮게 가정 |
| 3. 의심하라 | 너무 좋은 결과는 항상 의심 |
| 4. 분리하라 | 최적화 데이터와 검증 데이터 분리 |
| 5. 실전 감각 | MDD를 실제로 견딜 수 있는지 자문 |
---
다음 단계
백테스트를 이해했다면:
---
백테스트 결과가 실전에서 어떻게 작동하는지 보고 싶다면, 대시보드에서 CTBot의 실시간 성과를 확인하세요.관련 콘텐츠
본 콘텐츠는 교육 목적으로 제공되며 투자 조언이 아닙니다. 암호화폐 거래에는 원금 손실 위험이 있으며, 모든 투자 결정의 책임은 투자자 본인에게 있습니다.