백테스트 이동평균 기간 안정성 실험: 학습 구간의 순위는 검증 구간에서 유지됐을까

업데이트

이동평균 교차 16개 설정을 학습 구간 CAGR 순으로 줄 세우면 1위는 5/40(CAGR 35.0%)였지만 검증 구간에서는 8.1%로 13위였습니다. 학습 상위 3개 설정은 검증에서 각각 13위, 7위, 14위였고, 두 구간 순위의 상관계수는 −0.28였습니다. 한 구간에서 가장 높았던 설정이 다음 구간에서도 높다는 관계는 이 실험에서 보이지 않았습니다. 과거 데이터에서 관측한 값이며 특정 설정을 권하는 것이 아닙니다.

실험 설계

백테스트에서 설정값을 바꿔 가며 가장 성과가 좋은 조합을 고르면 그 조합이 그 기간의 우연까지 학습한 것일 수 있다고 워크포워드 가이드에서 설명했습니다. 이 노트는 그 점검의 가장 단순한 형태로, 구간을 둘로 나눠 한쪽에서의 순위가 다른 쪽에서 유지되는지 확인한 기록입니다.

  • 유니버스: KOSPI200 구성 종목. 일별 시가총액 상위 200개를 그 시점의 구성으로 보는 방식이며 실제 KOSPI200의 편입·편출 규칙과는 다를 수 있습니다.
  • 학습 구간: 2020-01-02 ~ 2022-12-30. 검증 구간: 2023-01-02 ~ 2025-12-30. 구간마다 따로 계산했고 신호 계산에 필요한 과거 시세는 구간 이전 데이터를 씁니다.
  • 규칙: 단기 이동평균이 장기 이동평균을 상향 돌파하면 매수, 하향 돌파하면 매도. 단기 5·10·20·30일, 장기 40·60·90·120일의 16개 조합입니다.
  • 자금과 보유: 초기 자본 1,000만 원, 종목당 10%, 최대 10종목. 손절·익절·리밸런싱은 쓰지 않았습니다.
  • 비용: 수수료 0.015%, 슬리피지 0.1%, 매도 증권거래세는 시행일 기준 법정 세율. 체결은 신호 다음 거래일 시가.

결과

학습 구간에서 CAGR이 플러스인 설정은 16개 중 12개, 검증 구간에서는 16개였습니다. 같은 규칙 계열인데도 구간에 따라 순위가 크게 달라졌습니다. 아래 표는 학습 구간 순위 순으로 정렬했습니다.

이동평균 기간 16개 설정의 학습·검증 구간 결과 (단기/장기)
설정학습 구간 CAGR검증 구간 CAGR학습 순위검증 순위
5/4035.0%8.1%1위13위
30/4021.4%14.6%2위7위
10/409.6%7.3%3위14위
20/609.6%24.1%4위4위
30/906.9%33.2%5위1위
30/605.9%3.7%6위16위
30/1205.8%11.8%7위10위
20/903.7%8.5%8위12위
5/602.9%20.3%9위6위
5/1201.6%6.7%10위15위
5/900.9%11.0%11위11위
10/1200.5%27.8%12위2위
10/90−0.7%14.4%13위8위
20/120−1.2%25.3%14위3위
10/60−2.4%14.0%15위9위
20/40−5.7%23.3%16위5위

KOSPI200 구성 종목, 학습 2020-01-02~2022-12-30, 검증 2023-01-02~2025-12-30, 수수료 0.015%, 슬리피지 0.1%, 다음 거래일 시가 체결. 널스탁 백테스트 엔진 v16.41.0으로 2026-10-21에 계산했습니다.

순위가 유지됐는지 읽는 법

학습 1위인 5/40 설정은 학습 구간 CAGR 35.0%로 가장 높았지만 검증 구간에서는 8.1%로 16개 중 13위였습니다. 학습 상위 3개의 검증 순위는 13위·7위·14위였고, 반대로 검증 상위 3개의 학습 순위는 5위·12위·14위였습니다.

두 구간 순위의 상관계수(스피어먼, −1~1이며 1에 가까울수록 같은 순서)는 −0.28로 계산됐습니다. 학습 순위가 높을수록 검증 순위도 높았다는 관계는 보이지 않았고, 설정이 16개뿐이라 이 정도 크기는 우연으로도 충분히 나올 수 있습니다.

두 구간의 시장 환경도 달랐습니다. 같은 구간의 KOSPI 지수(가격지수, 배당 제외) CAGR은 학습 구간 0.9%, 검증 구간 23.8%였습니다. 규칙의 성과 차이에는 설정뿐 아니라 시장 구간의 영향이 함께 들어 있습니다.

이 실험이 말해 주지 않는 것

  • 16개 설정과 구간 한 번의 분할만 시험했습니다. 분할 위치나 설정 범위를 바꾸면 순위와 상관계수가 달라질 수 있습니다.
  • 상관계수가 작거나 음수로 나온 것이 '설정은 의미가 없다'는 뜻은 아닙니다. 이 표본에서 순위가 유지되는 관계가 관측되지 않았다는 뜻입니다.
  • 워크포워드 분석은 구간을 여러 번 밀며 이 과정을 반복하는 방법입니다. 이 노트는 그 단순 버전이며 워크포워드 결과를 대체하지 않습니다.
  • 모든 값은 과거 데이터 기반 시뮬레이션이며 미래 수익은 보장되지 않습니다.

자주 묻는 질문

학습 구간에서 가장 높았던 설정은 검증 구간에서도 높았나요?
이 실험에서는 아니었습니다. 학습 1위 설정(5/40)은 학습 구간 CAGR 35.0%에서 검증 구간 8.1%로 내려가 16개 중 13위였습니다.
순위 상관계수는 무엇을 뜻하나요?
두 구간의 순위가 얼마나 같은 순서인지를 −1에서 1 사이 값으로 나타낸 것입니다. 1에 가까우면 같은 순서, 0 근처이면 관계가 없는 정도, −1에 가까우면 반대 순서입니다.
이 결과로 이동평균 설정이 의미가 없다고 볼 수 있나요?
그렇지 않습니다. 16개 설정과 한 번의 구간 분할에서 순위가 유지되는 관계가 관측되지 않았다는 것만 보여 줍니다. 구간과 설정 범위가 달라지면 결과도 달라질 수 있습니다.

떠오른 전략 아이디어를 문장으로 입력하면 과거 데이터로 백테스트해 볼 수 있습니다.

전략 백테스트하기

연구노트는 과거 데이터에서 관측된 계산 결과를 기준일과 설정값과 함께 기록한 자료입니다. 특정 종목·전략의 매수·매도를 권유하거나 우열을 판단하지 않으며, 모든 결과는 과거 데이터 기반 시뮬레이션이므로 미래 수익은 보장되지 않습니다.