백테스트 뜻: 과거로 전략을 검증하는 법, 그리고 함정
백테스트는 매매 전략을 과거 데이터로 미리 돌려보는 검증 작업입니다. 하지만 잘못 만든 백테스트는 실전에서 정반대 결과를 내기도 합니다.
백테스트란 무엇인가
백테스트(Backtest)란 내가 세운 매매 규칙을 과거 시세 데이터에 그대로 적용해, 만약 그때 이 규칙대로 거래했다면 결과가 어땠을지 재현해 보는 것입니다. 예를 들어 "RSI가 30 아래로 떨어지면 매수, 70 위로 오르면 매도"라는 규칙을 비트코인 1년치 데이터에 돌려, 수익률·승률·최대 낙폭을 계산하는 식입니다.
핵심은 규칙이 명확해야 한다는 점입니다. 진입·청산 조건이 숫자로 정의되지 않으면 백테스트 자체가 불가능합니다. 그래서 백테스트는 감(感)으로 하던 매매를 객관적 규칙으로 바꾸는 과정이기도 합니다. 다만 백테스트가 좋다고 해서 미래 수익이 보장되는 것은 결코 아닙니다. 과거는 미래를 그대로 반복하지 않습니다.
함정 1 — 과최적화(커브핏)
과최적화(overfitting, 커브핏)는 과거 데이터에만 딱 맞게 규칙을 깎아낸 상태입니다. 변수를 계속 조정하다 보면 과거 차트의 굴곡에 곡선을 정확히 맞추게 되는데, 이건 전략이 아니라 과거를 외운 것에 가깝습니다.
대응책은 규칙을 단순하게 유지하고, 변수 하나를 조금 바꿔도 결과가 무너지지 않는지(견고성) 확인하는 것입니다. RSI나 MACD 같은 지표를 쓸 때도 파라미터 개수가 많을수록 커브핏 위험은 커집니다.
함정 2 — 미래참조(룩어헤드)
미래참조(look-ahead bias)는 진입 시점에는 알 수 없었던 정보를 백테스트에 몰래 쓰는 오류입니다. 가장 흔하면서도 잡아내기 어려운 함정입니다.
- 종가로 진입 계산: 캔들이 다 끝난 종가를 보고 "그 캔들 안에서 샀다"고 처리하면, 실전에선 알 수 없는 가격입니다.
- 고점/저점 활용: "그날 저점에서 샀다"는 식의 가정은 미래를 미리 본 것입니다.
- 타임존 오류: 데이터 시간대를 잘못 맞춰 몇 시간 앞선 데이터가 섞이면 결과가 통째로 왜곡됩니다.
미래참조가 섞이면 백테스트 승률이 비현실적으로 높게 나옵니다. 진입 결정은 그 순간 실제로 알 수 있던 데이터로만 이뤄져야 합니다.
함정 3 — 수수료·슬리피지 미반영
백테스트에서 수수료와 슬리피지(체결 미끄러짐)를 빼면 결과가 크게 부풀려집니다. 특히 레버리지를 쓰거나 스캘핑처럼 거래가 잦으면 비용이 누적돼 수익을 통째로 갉아먹습니다.
| 구분 | 수수료 무시 | 왕복 0.1% 반영(거래 200회) |
|---|---|---|
| 표면 수익 | +40% | +40% |
| 비용 차감 | 0% | 약 -20%p |
| 실제 결과 | +40% | 약 +20% |
여기에 선물이라면 펀딩비까지 더해집니다. 거래 횟수가 많을수록 "수수료가 방향성 우위(엣지)보다 커서 결국 손실"인 경우가 흔합니다. 비용은 반드시 보수적으로 잡으세요.
신뢰할 수 있는 백테스트의 조건
아래를 충족하지 못한 결과는 "참고용 검산"일 뿐, 실전 성과로 믿어선 안 됩니다.
- 미래참조 0: 진입 시점 정보만 사용했는지 확인.
- 비용 반영: 수수료·슬리피지·펀딩비 포함.
- 표본 충분: 거래 수가 너무 적으면 우연일 수 있음(보통 수십 건 이상).
- 구간 분리 검증: 규칙을 만든 기간과 다른 기간(out-of-sample)에서도 작동하는지 확인.
- 리스크 지표 동반: 수익률뿐 아니라 최대 낙폭(MDD)·최악 거래도 함께 봐야 함.
- 포워드/모의 검증: 실제 시간 흐름대로 모의매매(페이퍼)로 안정성 재확인.
솔직히 말하면, 화려한 백테스트일수록 함정을 의심해야 합니다. 백테스트는 나쁜 전략을 걸러내는 도구이지, 미래 수익을 약속하는 도구가 아닙니다. 시드 관리와 손절 기준을 함께 세워, 검증이 틀렸을 때의 손실 한도부터 정해 두는 것이 실전에서 더 중요합니다. 암호화폐 거래에는 원금 손실 위험이 있으며, 백테스트가 좋아도 손실은 발생할 수 있습니다.
NOONOO TRADING 무료 채팅방에서 실시간 매매를 같이 봅니다.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →