아비트라지 전략 백테스트하는 방법
2026. 10. 25.

새로운 차익거래 아이디어가 떠올랐을 때 가장 비싼 검증 방법은 실제 돈으로 해 보는 것이고, 가장 저렴한 방법은 과거 데이터로 시뮬레이션해 보는 것입니다. 후자를 차익거래 백테스트라고 부릅니다. "지난 한 달 동안 이 규칙대로 거래했다면 어떤 결과가 나왔을까?"를 숫자로 확인하는 과정입니다.
하지만 백테스트는 잘못 설계하면 실제보다 훨씬 좋은 결과를 보여 주는 착시 장치가 되기도 합니다. 특히 차익거래는 수익 폭이 작아서 체결 가정 하나, 비용 항목 하나만 빠져도 결론이 뒤집힙니다. 이 글에서는 데이터 준비부터 규칙 정의, 체결 시뮬레이션, 결과 해석까지 백테스트의 전 과정을 정리하고, 결과를 과신하지 않기 위해 꼭 피해야 할 함정을 함께 다룹니다.
백테스트가 필요한 이유
차익거래 전략은 직관적으로 그럴듯해 보이는 경우가 많습니다. 가격 차이가 2% 이상이면 들어간다는 규칙은 듣기에 단순하고 합리적입니다. 하지만 그런 기회가 한 달에 몇 번 오는지, 그때마다 실제로 체결 가능한 물량은 얼마였는지, 비용을 빼면 얼마가 남는지는 데이터를 보기 전에는 알 수 없습니다.
- 기회의 빈도: 진입 조건을 만족하는 상황이 얼마나 자주 발생하는가
- 기회의 크기: 비용을 뺀 순수익 분포는 어떠한가
- 기회의 지속 시간: 내 실행 속도로 잡을 수 있을 만큼 오래 유지되는가
- 최악의 경우: 손실이 났을 때 얼마나 컸는가
백테스트는 이 네 가지 질문에 대한 1차 답을 줍니다. 실전에서 확인해야 할 것을 줄여 주는 필터 역할을 하는 셈입니다.
1단계: 데이터 준비
차익거래 백테스트의 품질은 데이터 품질에 거의 전적으로 달려 있습니다. 일반적인 차트용 데이터(시가·고가·저가·종가)만으로는 부족한 경우가 많습니다.
| 데이터 종류 | 용도 | 주의할 점 |
|---|---|---|
| 캔들(OHLC) 데이터 | 대략적인 가격 차이 탐색 | 호가 정보가 없어 실행 가능 스프레드를 과대평가하기 쉬움 |
| 체결 데이터 | 실제 거래가 일어난 가격과 수량 확인 | 그 가격에 내가 체결할 수 있었다는 보장은 없음 |
| 호가 스냅샷 | 매수·매도 호가와 물량으로 슬리피지 추정 | 수집 간격이 길면 순간적인 변화를 놓침 |
| 환율·USDT 시세 | 원화 마켓과 해외 마켓 비교 | 실제 자금 경로와 같은 기준을 사용해야 함 |
| 입출금 상태 기록 | 해당 시점에 실제로 이체 가능했는지 확인 | 과거 상태를 따로 기록해 두지 않으면 구하기 어려움 |
특히 두 거래소의 데이터 시각을 정확히 맞추는 것이 중요합니다. 한쪽 데이터가 몇 초만 늦게 기록되어도 존재하지 않았던 가격 차이가 생겨 보일 수 있습니다. 거래소별 시간대와 타임스탬프 단위(초, 밀리초)를 통일하는 작업이 필수입니다.
2단계: 규칙을 명확하게 정의하기
백테스트에서 규칙은 사람이 읽어도 해석의 여지가 없을 만큼 구체적이어야 합니다. "차이가 크면 진입"이 아니라 다음처럼 정해야 합니다.
- 진입 조건: 호가 기준 순스프레드(수수료 차감 후)가 몇 % 이상일 때
- 주문 규모: 고정 금액인지, 호가 물량의 일정 비율인지
- 실행 지연: 신호 발생 후 몇 초 뒤 가격으로 체결된다고 가정할지
- 청산·실패 규칙: 한쪽만 체결되면 어떻게 처리할지
- 제외 조건: 입출금 불가, 데이터 지연, 최소 주문 금액 미달 시 거래 제외
여기서 '실행 지연'을 0초로 두는 것이 가장 흔한 실수입니다. 신호가 뜬 바로 그 순간의 가격으로 체결된다고 가정하면, 실전에서는 불가능한 결과가 나옵니다. 자신의 실제 실행 속도를 반영해 몇 초 뒤 가격으로 체결된다고 보수적으로 가정해야 합니다.

3단계: 체결과 비용 시뮬레이션
규칙이 정해지면 과거 데이터를 시간 순서대로 한 줄씩 읽으며, 진입 조건이 충족될 때마다 가상의 거래를 실행합니다. 이때 각 거래의 손익은 다음 순서로 계산합니다.
- 신호 시점에서 설정한 지연 시간만큼 뒤의 호가 데이터를 가져옵니다.
- 주문 규모만큼 호가를 쌓아 매수·매도 평균 체결가를 계산합니다.
- 양쪽 거래 수수료를 차감합니다.
- 이체가 필요한 전략이라면 출금 수수료와 이체 소요 시간 동안의 가격 변동을 반영합니다.
- 순손익과 함께 진입 시각, 스프레드, 체결가, 소요 시간을 기록합니다.
예를 들어 한 달 치 데이터에서 진입 조건(순스프레드 1% 이상)을 만족한 신호가 40번 나왔다고 가정합니다.
지연 0초로 계산하면 평균 순수익 1.2%, 40번 모두 이익으로 나옵니다.
지연 5초와 호가 물량을 반영하면 신호 중 15번은 조건이 이미 사라졌고, 남은 25번의 평균 순수익은 0.4%, 그중 4번은 손실로 바뀝니다.
같은 데이터, 같은 규칙이라도 체결 가정에 따라 결론이 완전히 달라질 수 있다는 것을 보여 주는 예시입니다.
4단계: 결과를 해석하는 지표
백테스트 결과를 볼 때는 총수익만 보지 말고 여러 지표를 함께 확인해야 합니다.
- 거래 횟수: 너무 적으면 결과가 우연일 가능성이 큽니다.
- 승률과 평균 손익: 이익 거래와 손실 거래의 평균 크기를 함께 봅니다.
- 최대 손실(낙폭): 연속 손실 구간에서 자본이 얼마나 줄었는지 확인합니다.
- 자본 회전: 이체 중 자금이 묶이는 시간을 고려한 자본 대비 수익률을 봅니다.
- 민감도: 수수료, 지연 시간, 진입 기준을 조금 바꿨을 때 결과가 얼마나 흔들리는지 확인합니다.
특히 민감도 분석이 중요합니다. 진입 기준을 1.0%에서 1.1%로만 바꿔도 결과가 크게 나빠진다면, 그 전략은 특정 데이터에 우연히 맞춰진 것일 가능성이 높습니다.
백테스트에서 피해야 할 함정
과최적화
여러 기준값을 바꿔 가며 가장 좋은 결과를 고르다 보면, 과거 데이터에만 딱 맞는 규칙이 만들어집니다. 이를 막으려면 데이터를 기간별로 나눠 한 기간에서 규칙을 정하고, 사용하지 않은 다른 기간에서 다시 검증하는 방식이 흔히 쓰입니다.
미래 정보 사용
해당 시점에는 알 수 없었던 정보를 계산에 섞는 실수입니다. 예를 들어 그날의 종가나 나중에 발표된 입출금 재개 공지를 진입 판단에 쓰면, 실제로는 불가능한 거래가 백테스트에서는 성공한 것처럼 보입니다.
생존 편향
현재 상장된 코인만으로 과거를 테스트하면, 그 사이 상장 폐지되거나 문제가 생긴 코인이 빠져 결과가 실제보다 좋게 나올 수 있습니다.
백테스트 이후: 실전 검증으로 이어 가기
백테스트가 끝났다고 바로 본격적인 운영에 들어가는 것은 이릅니다. 백테스트와 실전 사이에는 '포워드 테스트'라는 중간 단계를 두는 것이 일반적입니다. 실시간 데이터로 규칙을 그대로 적용하되 실제 주문은 내지 않거나 아주 작은 금액으로만 실행하며, 백테스트가 예측한 신호 빈도와 수익이 실시간에서도 비슷하게 나오는지 비교하는 과정입니다.
이때 백테스트 결과와 포워드 테스트 결과를 같은 형식으로 기록해 두면 차이를 분석하기 쉽습니다. 신호 빈도는 비슷한데 수익이 크게 낮다면 체결 가정이 너무 낙관적이었을 가능성이 크고, 신호 빈도 자체가 크게 다르다면 데이터 수집 방식이나 시장 상황이 달라졌을 가능성이 있습니다.
자주 묻는 질문
Q. 백테스트 결과가 좋으면 실전에서도 비슷할까요?
그대로 재현되지 않는 경우가 많습니다. 체결 지연, 슬리피지, 입출금 상태처럼 데이터로 완벽히 재현하기 어려운 요소가 있으므로, 소액 실전 운영으로 차이를 반드시 확인해야 합니다.
Q. 캔들 데이터만으로 백테스트해도 되나요?
대략적인 기회 탐색에는 쓸 수 있지만, 호가 정보가 없어 실행 가능 스프레드와 슬리피지를 과대평가하기 쉽습니다. 가능하다면 호가 스냅샷을 함께 수집하는 것이 좋습니다.
Q. 데이터는 얼마나 모아야 하나요?
정해진 기준은 없지만, 상승장·하락장·횡보장처럼 서로 다른 시장 상황이 포함되고 거래 횟수가 충분히 쌓일 만큼의 기간이 필요합니다.
마무리
차익거래 백테스트는 데이터 준비, 규칙 정의, 체결과 비용 시뮬레이션, 지표 해석의 네 단계로 이루어집니다. 수익 폭이 작은 전략일수록 실행 지연과 호가 물량, 비용 항목 하나하나가 결론을 좌우하므로, 가정을 최대한 보수적으로 잡는 것이 핵심입니다.
좋은 백테스트는 전략이 왜 수익을 내는지보다 언제 실패하는지를 먼저 보여 줍니다. 그 결과를 소액 실전 기록과 비교하며 조금씩 다듬어 가는 과정이 가장 현실적인 검증 방법입니다.
이 글은 정보 제공을 위한 것이며 투자 권유가 아닙니다. 암호화폐 투자는 원금 손실 위험이 있으므로 본인의 판단과 책임 아래 결정하시기 바랍니다.
