속설 검증 #20 — PER 3 이하 필터와 20일선 위 보유 백테스트 기록

업데이트

KOSPI 최근 5년(2022-01-03~2026-10-20)에 PER 3 이하 종목을 종가가 20일선 위일 때 사서 손절 −8%·최대 보유 3개월로 정리하는 규칙(8종목, 리밸런싱 없음)을 적용했더니 투자 수익률은 +46.42%, CAGR은 8.28%, 최대 낙폭은 −39.30%, 승률은 29.3%(276회)였고 같은 기간 KODEX 코스피는 +128.97%였습니다. 총 수익의 98.6%가 두 종목에서 나왔습니다. 한 규칙·한 기간의 과거 값입니다.

검증한 속설과 규칙

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

PER이 아주 낮은 종목을 종가가 20일 이동평균선 위에 있을 때 사서, 손절 −8%에 닿거나 보유 3개월이 차면 정리하는 규칙입니다. 최대 8종목을 같은 금액씩 담고 리밸런싱과 익절은 두지 않았습니다.

입력한 문장과 해석된 조건

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

“KOSPI에서 PER이 낮은 종목 중 20일 이동평균선 근처에 있는 종목을 매수 조건으로 설정해 주세요. 최대 보유 종목은 8개, 손절 예시값은 -8%, 최대 보유 기간은 3개월로 설정해 주세요.”

문장에 없어서 정한 값입니다. “PER이 낮은”에는 숫자가 없어 널스탁이 기준값을 물었고(제안값은 10배 이하) 직접 입력으로 “PER 3 이하”를 넣었습니다. 리밸런싱은 하지 않음, 익절 기준은 두지 않음, 백테스트 기간은 최근 5년, 초기 자본은 1,000만원을 버튼으로 골랐습니다.

  • 유니버스: KOSPI, 종목 선정 필터 “PER ≤ 3배”, 최대 8종목(종목당 12.5% 동일 비중)
  • 매수: 종가가 20일선 위 유지(문장의 “20일선 근처”가 이렇게 해석됨)
  • 매도: 손절 −8% / 최대 보유 63거래일(3개월). 익절과 리밸런싱은 두지 않음

결과

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

속설 검증 #20 — 백테스트 결과
지표값
기간2022-01-03~2026-10-20 (1,171일)
자산1,000만원 → 14,642,320원
투자 수익률+46.42%
CAGR8.28%
물가 반영 실질 CAGR4.84%
최대 낙폭−39.30%
샤프 / 소티노0.32 / 0.47
거래 수276회
승률29.3%
손익비1.24
평균 수익 거래+25.51%
평균 손실 거래−8.35%
평균 보유33일
최대 연속 손실12회
같은 기간 벤치마크KODEX 코스피 +128.97%

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

청산 내역

거래가 끝난 이유별로 건수와 합산 손익을 나눴습니다. 청산 276건의 손익을 더하면 +4,642,322원으로 화면의 총 손익(+4,642,320원)과 2원 차이입니다(반올림). 손절 181회 중 46회는 체결 수익률이 −10% 이하, 4회는 −15% 이하였습니다(다음 거래일 시가 체결). 사유가 손절로 적혔는데 수익률이 +5.56%, +6.54%로 표시된 거래가 2건 있고 원인은 확인하지 못했습니다.

속설 검증 #20 — 청산 방식별 내역
청산 방식건수비고
손절 −8%181회2회가 수익, 합계 −18,818,562원
보유 기간 만료89회75회가 수익, 합계 +23,108,899원
백테스트 종료4회3회가 수익, 합계 +284,347원
데이터 종료2회1회가 수익, 합계 +67,638원

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

직접 다시 계산해 대조한 것

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

  • 거래 기록의 매수 276건을 가격 데이터로 다시 계산했습니다. 276건 모두 체결 전 거래일에 PER이 0 초과 3 이하였고 종가가 20일 이동평균선 위였습니다.
  • 수익이 가장 큰 두 종목의 매매 14건은 체결가가 엔진이 배당을 재투자해 보정한 시가와 0.1% 이내로 일치했습니다.
  • 수익 상위 종목 하나의 매수 3건은 PER이 1 미만(0.39~0.42)으로 계산돼 있습니다. 종가를 직전 EPS로 나눈 값이며 이 EPS가 일회성 이익을 포함하는지는 확인하지 못했습니다.

눈에 띈 거래

수익은 두 종목에 몰렸습니다. 종목별 합계 상위 2개가 총 수익의 98.6%를 차지했고 두 종목을 뺀 나머지의 순손익은 +62,724원입니다. 두 종목 안에서도 한 거래씩이 대부분입니다. 한 종목의 한 거래는 +155.31%(+2,562,038원, 총 수익의 55.2%), 다른 종목의 한 거래는 +125.28%(+1,923,944원, 41.4%)로 합치면 96.6%이고, 나머지 274거래의 손익 합은 +156,338원입니다.

앞쪽 거래는 매수 체결일 다음 거래일부터 4거래일 연속 하루 약 +30%(상한가)로 마감했고 종가가 매수 당일의 약 2.2배가 됐습니다. 이후 이틀은 하루 약 −19%씩 내려왔고 청산은 보유 3개월이 끝난 날 이뤄졌습니다. 뒤쪽 거래는 보유 중 하루에 +13.4%, +15.1%, +20.2% 오른 날이 있었고 마지막 날 거래량은 보유 시작 무렵 일 거래량의 수십 배였습니다.

가장 큰 손실 거래(−35.07%)는 매수 뒤 하루 −29.9%(거래량 평소의 10배 이상)가 나온 다음 거래일 시가, 전일 종가보다 약 17% 낮은 가격에서 손절이 체결된 경우입니다.

읽을 때 주의할 점

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

입력 문장은 “20일 이동평균선 근처”였지만 널스탁의 해석은 매수 규칙을 “종가가 20일선 위 유지”로 정했습니다. 근처까지 내려온 종목을 가리는 조건이 아니라 20일선 위에 있기만 하면 통과하는 조건이라, 이 결과는 “눌림”이 아닌 “20일선 위” 기준의 값입니다.

PER 기준값(3 이하)은 문장에 없어 직접 정한 값입니다. 다른 값에서는 결과가 달라질 수 있습니다.

자주 묻는 질문

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

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

전략 백테스트하기

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