속설 검증 #25 — 20일선 이격도 90 이하 매수와 이격도 100 이상 매도 백테스트 기록

업데이트

KOSPI 최근 5년(2022-01-03~2026-10-23)에 20일선 이격도가 90 이하인 종목을 사서 이격도 100 이상이 되면 파는 규칙(최대 10종목, 손절·익절 없음)을 적용했더니 투자 수익률은 −16.64%, CAGR은 −3.72%, 최대 낙폭은 −43.24%, 승률은 53.7%(551회)였고 같은 기간 KODEX 코스피는 +120.07%였습니다. 한 규칙·한 기간의 과거 값입니다.

검증한 속설과 규칙

속설 검증 시리즈 25번째 기록입니다. 검증한 말은 “이동평균선 아래로 많이 눌린 종목은 곧 평균으로 돌아온다”입니다. 속설을 그대로 코드로 옮길 수는 없어서, 아래 규칙 하나를 정해 과거 데이터에 적용했습니다. 이 노트는 그 규칙이 맞는지 틀린지 판정하지 않고, 한 가지 설정에서 관측된 값을 기록합니다.

눌림의 크기를 이격도로 재서, 20일선보다 10% 이상 아래로 내려간 종목을 사고 20일선 위치(이격도 100)로 돌아오면 파는 규칙입니다. 이격도는 종가를 20일 단순이동평균으로 나눠 100을 곱한 값이며 90이면 20일선보다 10% 아래입니다. 코스피 최근 5년 구간에 최대 10종목을 같은 금액씩 담았습니다.

입력한 문장과 해석된 조건

널스탁에 아래 문장을 그대로 입력했습니다.

“KOSPI 종목 중 20일선 이격도가 90 이하로 눌린 종목을 매수하고, 20일선 이격도가 100 이상으로 돌아오면 매도하고 싶습니다.”

이격도 90·100과 20일은 문장에서 직접 정한 값입니다. 문장에 없어서 버튼으로 정한 값은 항목마다 이렇습니다. 최대 보유 종목은 10종목(종목당 10%, 동일 비중), 리밸런싱은 하지 않음, 손절 기준은 두지 않음, 익절 기준은 두지 않음, 백테스트 기간은 최근 5년, 초기 자본은 1,000만원입니다. 이격도 조건은 이 편을 위해 엔진 v16.43.0에서 새로 추가했습니다.

  • 유니버스: KOSPI, 최대 10종목(종목당 10% 동일 비중)
  • 매수: 20일선 이격도 ≤ 90. 종가 ÷ 20일 단순이동평균 × 100
  • 매도: 20일선 이격도 ≥ 100. 손절·익절·리밸런싱은 두지 않음

결과

2022-01-03~2026-10-23 구간에서 관측된 값입니다. 수수료 0.015%, 슬리피지 0.05%, 거래세 0.23%→0.15%(시행일 기준), 배당소득세 15.4%를 반영했고 체결은 신호 다음 거래일 시가입니다. 전략과 벤치마크는 구성과 규칙이 다르므로 표의 차이는 우열을 뜻하지 않습니다.

속설 검증 #25 — 백테스트 결과
지표값
기간2022-01-03~2026-10-23 (1,174일)
자산1,000만원 → 8,336,117원
투자 수익률−16.64%
CAGR−3.72%
물가 반영 실질 CAGR−6.77%
최대 낙폭−43.24%
샤프 / 소티노−0.09 / −0.13
거래 수551회
승률53.7%
손익비0.95
평균 수익 거래+10.54%
평균 손실 거래−12.71%
평균 보유21일
최대 연속 손실9회
같은 기간 벤치마크KODEX 코스피 +120.07%

KOSPI, 2022-01-03~2026-10-23, 신호 다음 거래일 시가 체결, 수수료 0.015%·슬리피지 0.05%. 널스탁 백테스트 엔진 v16.43.0으로 2026-10-26에 계산했습니다.

청산 내역

거래가 끝난 이유별로 건수와 합산 손익을 나눴습니다. 청산 551건의 손익을 더하면 −1,663,882원으로 화면의 총 손익(−1,663,883원)과 1원 차이입니다(반올림). 이격도가 돌아와 판 542회는 54.4%가 이익이었고 평균 수익률은 +0.13%였습니다. 전체 손실은 이격도가 돌아오지 않은 채 기간이 끝난 8회와 상장폐지 1회에서 나왔고, 그 8회 중 7회가 손실이었으며 가장 큰 것은 −41.72%였습니다.

속설 검증 #25 — 청산 방식별 내역
청산 방식건수비고
이격도 100 이상 매도542회295회가 수익, 합계 +52,144원
백테스트 종료8회1회가 수익, 합계 −1,572,190원
상장폐지1회0회가 수익, 합계 −143,836원

KOSPI, 2022-01-03~2026-10-23, 신호 다음 거래일 시가 체결, 수수료 0.015%·슬리피지 0.05%. 널스탁 백테스트 엔진 v16.43.0으로 2026-10-26에 계산했습니다.

직접 다시 계산해 대조한 것

화면의 결과를 그대로 믿지 않고, 매수·청산 기록을 가격(·재무) 데이터에서 독립적으로 다시 계산해 신호가 규칙대로 나왔는지 확인했습니다.

  • 거래 기록의 매수 551건을 가격 데이터로 다시 계산했습니다. 551건 모두 체결 전 거래일의 종가 ÷ 20일 단순이동평균이 90 이하였고, 그 값의 중앙값은 88.0이었습니다.
  • 이격도 100 이상으로 판 542건도 모두 체결 전 거래일의 이격도가 100 이상이었습니다.
  • 청산 551건의 손익 합은 화면의 총 손익과 1원 차이입니다(반올림).

눈에 띈 거래

가장 큰 손실 두 거래(−97.64%, −996,620원과 −90.88%, −841,788원)는 모두 매수 다음 날 무렵부터 거래량이 0인 날이 441거래일·668거래일 이어진 종목입니다. 그동안 청산이 체결되지 않았고 거래가 다시 열린 날 종가가 전일보다 −95.92%, −93.87% 낮았으며 청산도 그날 체결됐습니다. 거래정지의 사유는 확인하지 못했습니다. 이 두 거래를 뺀 549거래의 합은 +174,525원입니다.

가장 큰 이익 거래는 +57.30%(+608,265원)로 19일 만에 이격도 100에 닿은 경우입니다.

읽을 때 주의할 점

이 기록은 특정 유니버스·기간·파라미터 한 가지 조합의 과거 시뮬레이션 결과입니다. 다른 기간이나 값에서는 다른 결과가 나올 수 있고, 한 규칙의 결과가 속설 전체의 성립 여부를 말해 주지도 않습니다. 미래 수익은 보장되지 않습니다.

같은 문장이 처음에는 매수 조건이 비는 형태로 읽히는 경우가 있었습니다. 복구 단계에서 매도 조건이 매수 칸으로 복사되거나 옮겨지는 문제를 고친 뒤 이 결과를 돌렸고, 이 노트의 값은 매수 ≤ 90, 매도 ≥ 100으로 읽힌 실행입니다.

이격도 90·100과 20일, 10종목은 문장과 버튼으로 정한 값입니다. 다른 값에서는 결과가 달라질 수 있습니다.

자주 묻는 질문

이 결과로 “이동평균선 아래로 많이 눌린 종목은 곧 평균으로 돌아온다”가 맞다 또는 틀리다고 말할 수 있나요?
아닙니다. 속설 하나를 규칙 하나로 옮겨 한 유니버스·한 기간에서 계산한 값이며, 규칙·기간·종목 수를 바꾸면 결과가 달라질 수 있습니다. 관측된 숫자를 기록한 것일 뿐 성립 여부를 판정하지 않고, 미래 수익은 보장되지 않습니다.
표의 벤치마크와의 차이는 무엇을 뜻하나요?
같은 기간 지수 ETF의 수익률(KODEX 코스피 +120.07%)과 전략 수익률(−16.64%)을 표시값 그대로 비교하는 용도입니다. 전략은 조건에 맞는 종목만 일정 수 보유하고 ETF는 지수 전체를 보유하므로 구성과 규칙이 달라 우열을 가리는 값은 아닙니다.

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

전략 백테스트하기

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