NOONOO TRADING봇에서 시작하기

최소 백테스트 기간(MinBTL): 시험 횟수에 맞는 데이터 길이 계산하기

백테스트 기간이 짧은데 수십 가지 설정을 돌려 가장 좋은 하나를 고르면, 그 결과는 전략의 실력보다 운일 가능성이 큽니다. 최소 백테스트 기간(Minimum Backtest Length, MinBTL)은 "N개의 설정을 시험했을 때, 운만으로 나온 최고 성적이 내 목표 성적을 넘지 않으려면 데이터가 최소 몇 년 필요한가"를 계산하는 기준입니다. 이 글은 공식의 구조와 계산 방법, 코인 데이터에 쓸 때의 주의점을 숫자 예시로 정리합니다. 본문 수치는 계산 구조를 보여주기 위한 가정 예시입니다.

1. 왜 기간이 시험 횟수에 따라 달라지는가

실제로는 수익이 없는(진짜 샤프 비율 0) 전략도 백테스트에서는 샤프 비율이 0 근처에서 위아래로 흩어져 나옵니다. 데이터가 짧을수록 그 흩어짐이 큽니다. 전략을 하나만 시험하면 큰 문제가 없지만, 파라미터 조합 100개를 돌려 가장 좋은 것을 고르면 "100개 중 최고값"을 보는 셈이라, 운만으로도 꽤 높은 숫자가 나옵니다.

이 현상을 다중 검정 문제라고 하며, 기본 구조는 다중 검정 백테스트 함정 글에서 다뤘습니다. MinBTL은 여기서 한 걸음 더 나아가, 시험 횟수를 그대로 둔 채 "데이터를 얼마나 늘려야 그 함정을 피할 수 있는가"를 숫자로 답합니다.

2. 공식의 구조

연환산 샤프 비율을 y년치 데이터로 추정하면, 진짜 샤프가 0인 전략의 추정값은 대략 평균 0, 표준편차 1/√y 인 분포를 따릅니다(수익률이 정규분포에 가깝고 시험들이 서로 독립이라는 가정). N개를 시험해 최고값을 고르면, 그 최고값의 기대치는 다음과 같습니다.

공식
· 운만으로 나오는 최고 샤프의 기대치 ≈ E[maxN] ÷ √y
· E[maxN] = 표준정규분포에서 N개를 뽑았을 때 최댓값의 기대치
· 이 값이 목표 샤프 SR* 보다 작으려면 → y > (E[maxN] ÷ SR*)²
· 간단한 상한: E[maxN] < √(2·ln N) 이므로 MinBTL < 2·ln N ÷ SR*²

E[maxN]의 대표값은 N=10일 때 약 1.54, N=100일 때 약 2.51, N=1,000일 때 약 3.24입니다. 시험 횟수가 10배 늘 때마다 최댓값은 천천히 커지지만, 필요한 기간은 그 제곱으로 늘어납니다.

3. 계산 예시 ① 목표 샤프 1.0

예시 — 백테스트에서 연환산 샤프 1.0을 얻었을 때
· 시험 10개: y > (1.54 ÷ 1.0)² ≈ 2.4년
· 시험 100개: y > (2.51 ÷ 1.0)² ≈ 6.3년
· 시험 1,000개: y > (3.24 ÷ 1.0)² ≈ 10.5년
→ 1년치 데이터로 100개 조합을 돌려 샤프 1.0이 나왔다면, 운만으로 나오는 최고값 기대치(2.51)보다 낮은 숫자. 실력의 근거가 되지 못함

샤프 비율 자체의 계산과 해석은 샤프 비율 글을 참고하면 됩니다.

4. 계산 예시 ② 목표 샤프 2.0

목표 성적을 높게 잡으면 필요한 기간은 제곱에 반비례해 줄어듭니다. 대신 연 샤프 2.0은 비용을 다 반영한 실전에서 유지하기 어려운 수준이라는 점을 함께 봐야 합니다.

예시 — 목표 샤프 2.0
· 시험 10개: (1.54 ÷ 2.0)² ≈ 0.59년(약 7개월)
· 시험 100개: (2.51 ÷ 2.0)² ≈ 1.58년
· 시험 1,000개: (3.24 ÷ 2.0)² ≈ 2.62년
→ 같은 1,000개 시험이라도 목표 1.0이면 10.5년, 2.0이면 2.6년. 목표를 4배 낮추면 기간은 4배가 아니라 제곱 관계로 4배 늘어남

5. 코인 데이터에 적용하기

연환산 방식. 코인은 365일 거래되므로 일간 샤프를 연환산할 때 √252가 아니라 √365를 곱합니다. 일간 샤프 0.05라면 연 샤프는 0.05 × √365 ≈ 0.96입니다. 환산 기준이 틀리면 MinBTL 계산도 그만큼 어긋납니다.

예시 — 일간 데이터 기준
· 일간 샤프 0.05 → 연 0.96
· 시험 50개 (E[max] ≈ 2.25 가정)
· MinBTL ≈ (2.25 ÷ 0.96)² ≈ 5.5년 ≈ 2,000일
· 보유 데이터가 2년(730일)뿐이라면, 50개를 시험하는 것 자체가 데이터에 비해 많음 → 시험 수를 줄이거나 검증 구간을 분리

시장 구간의 수. 코인은 상승장·하락장·횡보장이 몇 달 단위로 바뀝니다. 기간이 길어도 대부분이 한 방향 장세라면 실질적인 정보량은 적습니다. 기간을 셀 때 몇 개의 장세를 포함하는지도 같이 확인합니다.

거래 횟수와의 관계. MinBTL은 기간 기준이지만, 그 안에서 실제 체결된 거래 수가 적으면 추정 오차가 더 큽니다. 거래 수 기준의 최소 표본은 거래 표본 크기 글에 정리했습니다.

6. N을 정직하게 세는 법

MinBTL에서 가장 자주 틀리는 부분은 N입니다. 최종 보고서에 남은 전략 하나만 세면 N=1이지만, 실제로는 그 하나를 고르기까지 바꿔 본 모든 것이 N에 들어갑니다.

예시 — 실제 시험 횟수 세기
· 이동평균 기간 5종 × 손절 폭 4종 × 익절 폭 4종 = 80개
· 여기에 코인 3종을 바꿔 시험 → 240개
· 중간에 필터 2가지를 넣었다 뺐다 → 480개
→ "전략 하나"로 보이지만 N은 약 480. 목표 샤프 1.0 기준 MinBTL ≈ (2.9 ÷ 1.0)² ≈ 8.4년

시험들이 서로 비슷하면(예: 이동평균 20일과 21일) 실질적인 독립 시험 수는 더 적습니다. 다만 정확히 줄이려면 상관관계를 계산해야 하므로, 모르면 보수적으로 전체 횟수를 그대로 씁니다.

7. 한계와 함께 쓸 도구

MinBTL은 수익률이 정규분포에 가깝고 시험이 독립이라는 단순한 가정 위에 있습니다. 코인 수익률은 꼬리가 두꺼워 극단적인 날이 자주 나오므로, 실제로는 공식보다 더 긴 기간이 필요하다고 보는 편이 안전합니다.

그래서 단독으로 쓰기보다 다른 점검과 묶습니다. 시험 횟수와 분포의 꼬리까지 반영해 샤프를 깎는 디플레이티드 샤프 비율, 샤프가 0보다 클 확률을 보는 확률적 샤프 비율, 그리고 고른 설정을 손대지 않은 구간에서 다시 확인하는 홀드아웃(표본 외) 검증과 워크포워드 분석이 대표적입니다. 과최적화 전반은 과최적화 글에서 다뤘습니다.

8. 점검 체크리스트

백테스트 결과를 믿기 전에
· 지금까지 바꿔 본 설정을 모두 세면 N은 몇인가
· 목표 샤프(비용 반영 후)는 얼마인가
· (E[maxN] ÷ 목표 샤프)² 보다 데이터 기간이 긴가
· 연환산을 √365 기준으로 했는가
· 그 기간 안에 상승·하락·횡보 장세가 모두 들어 있는가
· 고른 설정을 시험에 쓰지 않은 구간에서 다시 확인했는가
→ 기간이 MinBTL보다 짧다면 시험 수를 줄이거나, 결과를 "후보"로만 두고 표본 외 구간에서 재확인

정리

시험한 설정이 많을수록 운만으로 나오는 최고 성적도 올라갑니다. 연 샤프 1.0을 목표로 할 때 시험 10개면 약 2.4년, 100개면 약 6.3년, 1,000개면 약 10.5년의 데이터가 있어야 그 숫자가 운의 범위를 벗어납니다. 백테스트 기간이 짧다면 많이 돌리는 대신 적게, 미리 정한 설정만 시험하는 것이 결과를 지키는 방법입니다.

주의

본문의 샤프 비율, 시험 횟수, 기간은 계산 구조를 보여주기 위한 가정 예시이며 특정 전략의 성과가 아닙니다. MinBTL은 과최적화 위험을 줄이기 위한 하한선일 뿐, 기간을 채웠다고 전략의 수익이 보장되지 않습니다. 이 글은 교육 정보이며 특정 자산의 매매 권유가 아닙니다. 코인 투자는 원금 손실 위험이 있고, 투자 판단과 그 결과는 본인 책임입니다.

NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.

봇에서 시작하기

📈 OKX 신규 가입 시 거래 수수료 할인

OKX 수수료 할인 가입 →