백테스팅 하는 법: 절차부터 신뢰 조건까지
백테스팅은 과거 데이터로 매매 규칙을 검증하는 과정입니다. 제대로만 하면 "감"으로 매매하는 단계를 벗어날 수 있지만, 잘못하면 과거에만 맞춰진 환상을 진짜 실력으로 착각하게 됩니다. 핵심 절차와 함정을 정리합니다.
백테스팅이란 무엇인가
백테스팅(Backtesting)은 매매 전략의 규칙을 과거 가격 데이터에 그대로 적용해 가상의 성과를 측정하는 검증 방법입니다. 예를 들어 "20일 신고가를 돌파하면 매수, 10일 신저가면 청산"이라는 규칙을 지난 3년 비트코인 데이터에 적용해 보는 식입니다. 목적은 실제 돈을 넣기 전에 전략이 작동하는지, 어떤 위험이 있는지 미리 파악하는 것입니다.
다만 백테스트 결과가 좋다고 해서 미래 수익이 보장되는 것은 절대 아닙니다. 과거는 미래와 다르며, 백테스트는 어디까지나 "이 규칙이 과거에 어떻게 작동했나"를 보여줄 뿐입니다. 결과를 과신하면 오히려 더 큰 손실로 이어질 수 있습니다.
백테스팅 절차 6단계
- 데이터 준비: 거래소 API나 데이터 제공처에서 OHLCV(시가·고가·저가·종가·거래량) 데이터를 받습니다. 최소 3~5년, 가능하면 상승장·하락장·횡보장이 모두 포함된 기간이 좋습니다.
- 규칙 정의: 진입·청산·손절 조건을 모호함 없이 숫자로 명확히 적습니다. "강하게 오르면 매수" 같은 표현은 코드로 옮길 수 없습니다.
- 비용 반영: 거래 수수료와 슬리피지(체결 미끄러짐)를 반드시 포함합니다. 이걸 빼면 결과가 통째로 거짓이 됩니다.
- 실행: 데이터를 시간 순서대로 한 봉씩 흘려보내며 규칙을 적용합니다.
- 성과 측정: 수익률, 최대낙폭(MDD), 승률, 손익비(PF), 거래 횟수를 집계합니다.
- 검증: 아래의 인샘플/아웃샘플 분리로 과적합 여부를 확인합니다.
수수료와 슬리피지, 얼마나 반영해야 하나
현물 기준 거래소 수수료는 보통 편도 0.05~0.1%입니다. 한 번 사고 파는 왕복(round-trip)이면 0.1~0.2%가 빠집니다. 슬리피지는 시장가 체결 시 호가가 밀리는 비용으로, 유동성이 낮은 종목일수록 큽니다.
인샘플과 아웃샘플 분리
백테스팅의 가장 큰 함정은 과적합(오버피팅)입니다. 파라미터를 과거 데이터에 계속 맞추다 보면, 그 기간에만 완벽하고 새 데이터에선 무너지는 전략이 만들어집니다. 이를 거르는 방법이 데이터를 둘로 나누는 것입니다.
| 구분 | 역할 | 비율(예시) |
|---|---|---|
| 인샘플(In-sample) | 전략 개발·파라미터 최적화 | 약 70% |
| 아웃샘플(Out-of-sample) | 건드리지 않고 최종 검증용으로만 사용 | 약 30% |
인샘플에서 만든 전략을 한 번도 본 적 없는 아웃샘플에서 돌렸을 때도 성과가 유지되어야 신뢰할 수 있습니다. 더 엄밀하게는 시간을 앞으로 밀며 반복 검증하는 워크포워드(walk-forward) 방식을 씁니다. 아웃샘플을 보고 다시 전략을 고치면 그 순간 그것도 인샘플이 되니, 검증용 데이터는 정말 마지막에 딱 한 번만 써야 합니다.
도구: 파이썬과 트레이딩뷰
- 트레이딩뷰(TradingView): Pine Script로 전략을 짜면 차트에서 바로 "Strategy Tester" 성과를 볼 수 있습니다. 초보자가 시각적으로 검증하기 좋지만, 슬리피지·수수료 설정을 직접 켜고 정밀도에 한계가 있다는 점은 감안해야 합니다.
- 파이썬(Python):
pandas로 데이터를 다루고backtesting.py,vectorbt같은 라이브러리로 검증합니다. 흐름은 데이터 로드 → 지표 계산(RSI·볼린저밴드 등) → 진입/청산 신호 생성 → 비용 차감 후 성과 집계입니다. 자유도가 높고 자동매매 봇으로 연결하기 쉽습니다.
도구는 거들 뿐이고, 결과의 정직함은 데이터 품질과 비용 반영에서 결정됩니다. 화려한 라이브러리보다 깨끗한 데이터가 먼저입니다.
신뢰할 수 있는 결과의 조건
- 미래 정보를 쓰지 않았는가: 진입 시점에 알 수 없는 값(미래 종가, 그날의 최고가 등)을 규칙에 넣으면 결과가 가짜가 됩니다. 가장 흔하고 치명적인 실수입니다.
- 표본이 충분한가: 거래 횟수가 30건 미만이면 운일 가능성이 큽니다. 최소 수십~수백 건이 필요합니다.
- 비용과 슬리피지가 들어갔는가: 0으로 두면 어떤 전략도 좋아 보입니다.
- 아웃샘플에서도 살아남았는가: 인샘플만 좋은 건 과적합 신호입니다.
- 최대낙폭을 견딜 수 있는가: 수익률만 보지 말고 MDD를 확인하세요. 자세한 자금 배분은 시드 관리 글을 참고하세요.
백테스트를 통과해도 끝이 아닙니다. 다음 단계는 실제 시장에서 소액으로 돌리는 포워드 테스트(페이퍼 트레이딩)입니다. 과거 검증과 실시간 검증이 모두 일관될 때 비로소 전략을 조심스럽게 운용할 수 있습니다. 백테스트는 출발선이지 도착선이 아니며, 어떤 검증도 손실 가능성을 없애 주지는 못합니다. 변동성 돌파 같은 구체적 전략 사례는 변동성 돌파 글에서 이어집니다.
NOONOO TRADING 무료 채팅방에서 실시간 매매를 같이 봅니다.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →