검증한 속설과 규칙
속설 검증 시리즈 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% |
| CAGR | 8.28% |
| 물가 반영 실질 CAGR | 4.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 이하)은 문장에 없어 직접 정한 값입니다. 다른 값에서는 결과가 달라질 수 있습니다.
연구노트는 과거 데이터에서 관측된 계산 결과를 기준일과 설정값과 함께 기록한 자료입니다. 특정 종목·전략의 매수·매도를 권유하거나 우열을 판단하지 않으며, 모든 결과는 과거 데이터 기반 시뮬레이션이므로 미래 수익은 보장되지 않습니다.