가이드

백테스트 계산기 만드는 법 — 거래 목록에서 비용·누적·최대 낙폭까지 스프레드시트 다섯 열

백테스트 계산기는 거래 목록 한 장을 받아 열 몇 개를 채우는 도구입니다. 가격 변화율, 수수료·펀딩비, 명목 금액과 청산 점검, 누적 방식, 최대 낙폭 순으로 열을 만들고, 394종목 90일 신호 건수로 비용 칸이 얼마나 커지는지 계산했습니다.

가이드10월 8일 최종 갱신

백테스트 계산기는 생각보다 단순한 물건입니다. 거래 목록 한 장을 받아서 열 몇 개를 차례로 채우고, 맨 아래에 숫자 몇 개를 내놓습니다. 웹에 있는 계산기든 엑셀이나 구글 시트로 직접 짠 것이든 하는 일은 같고, 차이는 어느 칸을 빼먹었느냐에서 납니다.

이 글은 그 계산기를 스프레드시트로 직접 만드는 순서를 다룹니다. 열을 하나씩 추가하면서 각 열이 무엇을 계산하는지, 어디서 실제 계좌와 어긋나는지를 봅니다. 예시 가격은 설명용으로 지어낸 값이고, 사이트 기록에서 가져온 숫자는 바이낸스 USDⓈ-M 무기한 선물 394종목을 90일간(2026년 10월 6일 11시 21분 KST까지) 모은 것입니다. 이 사이트는 성과를 계산하지 않으므로 그런 숫자는 나오지 않습니다.

계산기에 넣는 것은 신호가 아니라 거래 목록입니다

첫 단계에서 많이 막힙니다. 차트나 스크리너에서 받는 것은 "이 종목 이 시간봉에서 조건이 성립했다"는 신호 기록이고, 계산기가 먹는 것은 "언제 들어가서 언제 나왔다"는 거래 기록입니다. 둘 사이에 규칙 세 개가 끼어야 합니다.

  1. 진입 시점 — 신호가 기록된 봉의 종가인지, 다음 봉 시가인지. 조건은 봉이 닫힌 뒤에야 확인되므로(확정 시각) 다음 봉 시가 쪽이 실제와 가깝습니다.
  2. 청산 규칙 — 몇 봉 뒤에 나오는지, 반대 신호가 뜰 때 나오는지, 손절 가격에 닿을 때 나오는지.
  3. 겹침 처리 — 포지션을 들고 있는 동안 같은 종목에서 신호가 또 뜨면 무시할지, 추가로 들어갈지.

세 번째가 의외로 큽니다. 90일 기록에서 5이평 다이버전스는 23,543건으로 하루 평균 262건쯤이고, 종목당으로 나누면 60건 가까이 됩니다. 1시간봉 기준이면 이틀에 한 번꼴로 같은 종목에 신호가 뜨는 셈이라, 청산까지 몇 봉을 들고 있느냐에 따라 겹치는 신호가 꽤 나옵니다. 이걸 무시하느냐 더하느냐에 따라 거래 목록의 줄 수 자체가 달라집니다.

그래서 계산기 시트의 첫 탭은 이렇게 생깁니다. 종목, 방향, 진입 시각, 진입가, 청산 시각, 청산가, 명목 금액. 일곱 칸입니다.

1열 — 가격 변화를 방향에 맞춰 비율로 바꿉니다

첫 계산 열은 건별 가격 변화율입니다. 롱이면 (청산가 − 진입가) ÷ 진입가, 숏이면 (진입가 − 청산가) ÷ 진입가입니다. 스프레드시트에서는 방향 칸이 "숏"이면 부호를 뒤집는 IF 하나로 처리합니다.

이걸 비율로 두는 이유는 종목을 섞기 위해서입니다. 비트코인(BTC)이 60,000 USDT에서 600 USDT 움직인 것과 바이낸스코인(BNB)이 600 USDT에서 6 USDT 움직인 것은 둘 다 1.00%입니다. 금액으로 두면 비싼 종목이 표를 지배합니다.

다만 이 열에는 들고 있는 동안 무슨 일이 있었는지가 안 들어갑니다. 진입가와 청산가 두 점만 보기 때문입니다. 이 문제는 레버리지 열에서 다시 나옵니다.

2열 — 비용은 세 갈래로 따로 뺍니다

다음 열은 비용입니다. 한 칸에 뭉쳐 넣지 말고 세 칸으로 나누는 편이 나중에 읽기 쉽습니다.

비용계산예시
수수료명목 금액 × 요율 × 2(진입·청산)시장가 0.05%면 왕복 0.10%
펀딩비보유 중 지난 정산 횟수 × 그때 요율, 방향에 따라 부호8시간마다 한 번
체결 미끄러짐신호 가격과 실제 체결가의 차이호가가 얇은 종목일수록 큼

수수료 요율이 어디서 결정되는지는 선물 수수료 계산기 입력값에 정리해 두었습니다. 펀딩비는 부호가 핵심입니다. 요율이 양수이면 롱이 내고 숏이 받습니다. 그래서 같은 정산 시각을 지나도 롱 거래에서는 비용 칸이 커지고 숏 거래에서는 오히려 줄어듭니다. 정산 횟수를 세는 방법과 금액 계산은 펀딩비 계산에 있습니다.

네 건짜리 예시로 두 열을 채워 보면 이렇습니다. 수수료는 전부 시장가 왕복 0.10%, 펀딩비 요율은 0.01%로 둡니다.

거래방향진입 → 청산가격 변화율펀딩비용 합비용 뺀 값
이더리움(ETH)롱2,500 → 2,550+2.00%0회0.10%+1.90%
비트코인(BTC)롱60,000 → 59,100−1.50%2회 지불0.12%−1.62%
이더리움(ETH)숏2,600 → 2,522+3.00%1회 수령0.09%+2.91%
바이낸스코인(BNB)롱600 → 597−0.50%0회0.10%−0.60%

가격 변화율만 더하면 +3.00%, 비용을 빼면 +2.59%입니다. 네 건에서 0.41%포인트가 빠졌습니다. 건수가 늘면 이 차이가 어떻게 되는지는 아래 절에서 봅니다.

3열 — 레버리지는 배수가 아니라 명목 금액으로 넣습니다

웹 계산기 중에는 레버리지를 "10배" 같은 칸으로 받아 결과에 곱하는 것이 있습니다. 이렇게 하면 두 가지가 빠집니다.

하나는 비용도 같이 커진다는 점입니다. 증거금 100 USDT로 명목 1,000 USDT를 잡으면 왕복 수수료 0.10%는 1 USDT이고, 이건 증거금의 1%입니다. 가격 변화율에 10을 곱하면서 비용에는 안 곱하면 결과가 실제보다 좋게 나옵니다.

다른 하나는 청산입니다. 10배 격리라면 가격이 10% 가까이 반대로 가기 전에 포지션이 정리됩니다. 그런데 1열은 진입가와 청산가만 보니까, 중간에 청산선 아래로 내려갔다가 다시 올라와서 청산가가 멀쩡해 보이는 거래를 그대로 통과시킵니다. 이걸 잡으려면 보유 구간의 최저가(숏이면 최고가)를 한 칸 더 받아서 청산 가격과 비교하는 열이 필요합니다. 청산 가격 자체를 구하는 식은 청산가 계산기에 있습니다.

그래서 시트에는 레버리지 배수 대신 명목 금액 칸을 두고, 손익을 금액으로 한 번 더 계산하는 편이 낫습니다. 명목 금액 × 비용 뺀 비율이 그 거래의 USDT 손익입니다.

4열 — 누적은 더할지 곱할지부터 정합니다

거래별 값이 나왔으면 아래로 누적합니다. 여기서 계산기마다 방식이 갈립니다.

  • 고정 금액 — 매번 같은 명목 금액으로 들어간다고 가정하면 손익을 그냥 더합니다.
  • 계좌 비율 — 매번 계좌의 일정 비율로 들어간다고 가정하면 (1 + 비율)을 차례로 곱합니다.

둘은 같은 거래 목록에서도 다른 답을 냅니다. +10%와 −10% 두 건이면 더하기로는 0, 곱하기로는 1.1 × 0.9 = 0.99, 즉 −1%입니다. 건수가 많고 한 건의 크기가 클수록 둘의 간격이 벌어집니다. 계산기 결과를 남과 비교할 때 이 칸이 어느 쪽인지 모르면 비교가 성립하지 않습니다.

5열 — 최대 낙폭은 누적 열 옆에 두 열을 더 둡니다

최대 낙폭은 누적 곡선이 이전 최고점에서 얼마나 내려갔는지의 최댓값입니다. 스프레드시트로는 두 열이면 됩니다. 하나는 "지금까지의 최고 누적값"(위 칸과 현재 누적값 중 큰 쪽, 시작은 0), 다른 하나는 "현재 누적값 − 그 최고값"입니다. 이 열의 최솟값이 최대 낙폭입니다.

고정 금액 기준으로 여섯 건을 넣어 보면 이렇습니다.

순서건별누적이전 최고낙폭
1+3330
2−213−2
3−4−33−6
4+1−23−5
5+5330
6−303−3

최대 낙폭은 −6입니다. 같은 여섯 건을 −4, −3, −2, +1, +3, +5 순서로 바꿔 넣으면 마지막 누적값은 똑같이 0인데, 누적이 −4, −7, −9까지 내려가서 최대 낙폭은 −9가 됩니다. 합계는 순서와 상관이 없고 낙폭은 순서에 따라 달라집니다. 그래서 거래 목록을 종목별로 정렬해 놓고 계산하면 낙폭이 틀립니다. 반드시 청산 시각 순으로 정렬한 다음 누적해야 합니다.

거래 횟수가 비용을 곱합니다 — 신호 빈도로 본 규모

비용 열이 결과를 얼마나 흔드는지는 거래 횟수가 정합니다. 90일 기록의 조건별 건수로 대략의 규모를 잡아 보면 이렇습니다. 신호마다 한 번씩 왕복 0.10%를 낸다고 가정한 단순 곱셈입니다.

조건90일 전체394종목 평균종목당 수수료 누계
5이평 다이버전스23,543건약 60건약 6.0%
10이평 다이버전스10,727건약 27건약 2.7%
삼박자2,328건약 6건약 0.6%

평균만 그런 것도 아닙니다. 5이평 다이버전스가 가장 많이 나온 KSM은 81건이라 같은 계산으로 8.1%, 삼박자가 가장 많이 나온 이더리움(ETH)·바이낸스코인(BNB)은 각 15건이라 1.5%입니다. 시간봉으로 보면 1시간봉 기록이 29,652건, 4시간봉이 6,946건으로 4.27배 차이가 납니다.

이 표가 말하는 건 어느 조건이 낫다는 게 아니라, 자주 드나드는 규칙일수록 계산기의 비용 칸 하나가 결과의 부호를 바꿀 수 있다는 점입니다. 비용 칸을 비워 둔 채 나온 숫자는 사실상 다른 질문에 대한 답입니다. 종목당 평균은 감시 목록 394종목으로 나눈 값이라, 90일을 다 채우지 못한 신규 상장 종목이 섞여 있다는 점은 감안해야 합니다.

결과를 읽기 전에 시트 맨 아래에 세 줄을 더 둡니다

계산이 끝나면 맨 아래에 누적값과 최대 낙폭이 남습니다. 그 숫자를 보기 전에 세 줄을 같이 띄워 두는 편이 안전합니다.

  • 거래 건수 — 몇 건으로 나온 값인지. 20건짜리 결과와 2,000건짜리 결과는 같은 무게가 아닙니다. 표본이 어떻게 쪼개지는지는 백테스트 데이터 점검표에 있습니다.
  • 비용 전과 후 — 두 줄을 나란히. 차이가 크면 결과는 규칙보다 체결 조건에 더 민감하다는 뜻입니다.
  • 가장 큰 한 건을 뺀 값 — 한 건이 전체를 만들고 있는지 봅니다. 그 한 건을 빼서 부호가 바뀐다면 규칙보다 그 한 번의 움직임을 본 셈입니다.

웹 계산기를 쓸 때 확인할 칸 — 주식용 틀이 섞여 있습니다

검색하면 나오는 백테스트 계산기 상당수는 주식용으로 만들어졌습니다. 코인 무기한 선물 거래 목록을 그대로 넣으면 몇 군데가 어긋납니다.

  • 하루의 경계 — 주식 계산기는 일봉 종가 기준으로 날짜를 자릅니다. 코인은 장이 안 닫혀서 하루가 어디서 끝나는지를 따로 정해야 하고, 바이낸스 일봉은 한국 시간 오전 9시에 닫힙니다(봉 마감 시간표).
  • 펀딩비 칸 — 주식 계산기에는 없습니다. 오래 들고 있는 규칙일수록 이 칸이 빠진 영향이 큽니다.
  • 숏 처리 — 공매도를 지원하지 않거나, 숏을 대차 비용이 붙는 주식 공매도로 계산하는 계산기가 있습니다.
  • 청산 점검 — 레버리지 칸이 있어도 보유 중 최저가를 받지 않으면 청산을 못 잡습니다.

이 네 칸이 없는 계산기라면 결과를 내려받아 위 열들을 시트에서 직접 덧붙이는 편이 빠를 수 있습니다. 완벽한 계산기를 찾는 것보다, 지금 쓰는 계산기가 어느 칸을 비워 두고 있는지 아는 쪽이 현실적입니다.

처음 보는 말이 있으면 용어 사전에 다이버전스·펀딩비·미결제약정 등을 풀어 두었습니다.

본 글은 지표 조건 충족 사실과 시장 데이터를 정리한 분석 보조 자료이며, 투자 권유나 투자 자문이 아닙니다. 특정 종목의 매매를 권하지 않으며, 서술된 조건이 향후 수익을 보장하지 않습니다. 투자 판단과 그 결과에 대한 책임은 전적으로 이용자 본인에게 있습니다.

오늘 다룬 종목

각 종목의 신호 이력

다른 가이드

전체 보기 →

조건이 충족되면 알려드립니다

394종목을 9개 시간봉에서 24시간 감시하고, 신호가 나면 텔레그램으로 보냅니다.

가입 즉시 7일 무료체험 · 카드 등록 없음