📚 시리즈: 직장인의 주식 스크리너 개발기
안녕하세요, 육성라이프입니다 😊
지난 6편에서 “매일 종목을 추천하기보다 관찰 기록을 남기겠다”고 말씀드렸습니다. 그 뒤로 한 가지가 계속 마음에 걸렸습니다. 지금까지 쓰던 신호들이 정말 맞는가? 그래서 이번에는 제 전략을 처음부터 다시 의심해 보기로 했습니다. 2016년 9월부터 2026년 10월까지 약 10년 치 코스피·코스닥 시세, DART 공시와 분기 영업이익, 월말 PER·PBR·배당, 공매도 잔고, 기관·외국인 순매수를 모두 다시 불러와 직접 파이썬으로 돌렸습니다. 모든 결과는 왕복 거래비용 0.3%를 뺀 뒤의 숫자이고, 엑셀 원자료도 이 글 아래에 그대로 올려 두었습니다.
① 1편부터 써 온 ‘거래량 흡수’ 신호는 10년 중 한 해도 플러스가 아니었습니다 — 버려야 할 신호였습니다.
② 기관·외국인 순매수 추종은 효과가 없거나 오히려 반대였습니다.
③ 살아남은 것은 ‘영업이익 개선 공시(공시 후 5거래일 안)’와 여러 팩터를 섞은 멀티팩터 순위였습니다.
④ 그래도 같은 기간 시가총액 가중(지수)이 더 높았습니다 — 지수 ETF가 중심, 멀티팩터는 보조라는 결론은 그대로입니다.

사진: N. Voitkevich · Pexels (Pexels 라이선스)
1. 내 전략, 10년 데이터로 다시 채점해 보니
검증 대상은 시가총액 500억 원 이상, 20일 평균 거래대금 10억 원 이상, 주가 1,000원 이상인 종목입니다(우선주·스팩 제외). 신호가 나온 뒤 60거래일 동안 ‘같은 날 아무 종목이나 산 경우’보다 얼마나 더 벌었는지(초과수익)로 채점했습니다. t값은 결과가 우연인지를 가르는 숫자로, 보통 절댓값 2를 넘으면 우연이라 보기 어렵다고 봅니다.
| 방법 | 결과(60일 초과수익) | 판정 |
|---|---|---|
| 거래량 흡수 (20일 평균 3배 거래 · 주가 ±3% 이내) | −1.5%p, t −4.8, 11년 중 플러스 0년 | ❌ 피해야 할 신호 |
| 기관 매집 모델 | AUC 0.49 (0.5가 동전 던지기) | ❌ 효과 없음 |
| 기관·외국인 20일 순매수 (다른 팩터 통제) | 다음 달 −0.4%p / −0.5%p (t −1.8 / −2.5) | ⚠️ 오히려 약간 부진 |
| 실적 발표 직후 2일 주가 반응 | t 0.3 ~ 1.8 | ❌ 효과 없음 |
| 내부자 매수 | DART 자료가 2024년 10월 이후뿐 | ⏸ 검증 불가 |
| 영업이익 개선 공시 (시총의 2% 이상 개선) | +2.4%p, t 2.8, 11년 모두 플러스 | ✅ 유효 — 단 공시 후 5거래일 안 |
가장 뼈아픈 건 첫 줄입니다. 대량 거래가 터졌는데 주가가 버티는 ‘흡수’ 패턴은 세력이 물량을 받아 간 흔적이라고 믿고 1편부터 써 왔는데, 실제로는 10년 동안 매년 시장보다 못했습니다. 반대로 영업이익 개선 공시는 꾸준했지만, 공시 후 20일이 지나면 효과가 사라졌습니다. “좋은 소식은 빨리 반영된다”는 교과서 그대로였습니다.
손절 −7%, 익절 +10% 규칙은 도움이 됐을까
많은 분들이 쓰는 ‘−7% 손절, +10% 익절’도 시험했습니다. 영업이익 개선 신호 기준으로 60일을 그냥 들고 있으면 평균 +4.2%였는데, 손절을 붙이면 +2.7%, 익절까지 붙이면 +1.3%로 줄었습니다. 손절은 큰 손실을 막아 주지만, 잠깐 흔들렸다가 회복하는 종목까지 잘라 내기 때문에 평균 수익은 오히려 깎였습니다.

사진: Mikhail Nilov · Pexels (Pexels 라이선스)
2. 새 방향: 15개 팩터를 섞는 멀티팩터 순위
사건 하나에 기대는 대신, 매달 말 모든 종목에 15가지 점수를 매겨 순위를 내는 멀티팩터(팩터 투자) 방식을 만들었습니다. 핵심은 각 팩터가 다른 팩터와 겹치지 않고 ‘혼자서도’ 효과가 있는지를 회귀분석(Fama-MacBeth)으로 따로 확인했다는 점입니다.
| 판정 | 팩터 | 근거 |
|---|---|---|
| ✅ 유효 | 영업이익수익률, 배당수익률, 이익 증가 추세 | 상위 20%가 월 +0.49 ~ +0.56%p, 통제 후에도 t 2.3 ~ 3.1 |
| 🔸 약함 | 저변동성, 1/PER, 1/PBR | 저변동은 통제 후 t 5.3로 가장 강하지만 주로 하위 20%(월 −1.7%p)를 피하는 효과 |
| 🛡 하위 회피용 | ROE, 단기 급등 회피, 거래량 과열 회피 | 고르는 데보다 나쁜 종목을 걸러 내는 데 쓸모 |
| ❌ 효과 없음 | 12개월 모멘텀, 52주 신고가, 공매도 잔고, 외국인 순매수 | 10년 동안 의미 있는 차이 없음 |
| 🔄 반대 방향 | 기관 순매수, 소형주 | 기관이 많이 산 종목은 다음 달 부진(IC t −3.2), 이 기간엔 대형주가 우세 |
흔히 알려진 ‘모멘텀’과 ’52주 신고가’가 한국 시장 10년 데이터에서 효과가 없었다는 점, 그리고 기관 순매수가 오히려 반대로 움직였다는 점은 저도 의외였습니다. 남의 매매를 따라가는 신호는 대체로 이미 가격에 반영돼 있었던 셈입니다.
3. 과거에 맞춘 결과가 아닌지 — 워크포워드 검증
2편에서 다뤘던 과최적화를 피하려고 워크포워드 검증을 했습니다. 매달 “그때까지의 과거 자료만” 보고 쓸 팩터를 고른 다음, 다음 달 성과를 기록하는 방식입니다. 2018년 11월부터 2026년 9월까지 95개월입니다.
| 항목 | 결과 |
|---|---|
| 점수 상위 20% vs 같은 달 아무 종목 | 월 +0.71%p (t 2.7), 9년 중 8년 플러스 |
| 앞 절반 / 뒤 절반 | +0.60%p / +0.81%p — 뒤로 갈수록 약해지지 않음 |
| 실제 추천 규칙 (20종목·업종당 3종목·희석 공시 제외) | 연 +7.6%, 최대 낙폭 −37% |
| 같은 기간 아무 종목 동일 비중 | 연 −0.8%, 최대 낙폭 −50% |
| 같은 기간 시가총액 가중 (지수와 비슷) | 연 +12.7%, 최대 낙폭 −36% |
| 석 달마다 교체 | 연 +9.7% (t 2.0) |
| 소형주(시총 600위 밖) / 대형주(상위 300) | 월 +1.35%p (t 5.7) / +0.17%p (t 0.5) |
| 60일 안 +10%에 먼저 닿은 비율 | 42% (아무 종목 40%) |
| 60일 안 −7%에 먼저 닿은 비율 | 49% (아무 종목 57%) |
숫자만 보면 그럴듯하지만, 한 줄을 꼭 같이 보셔야 합니다. 같은 기간 시가총액 가중이 연 +12.7%로 더 높았습니다. 2019~2026년은 대형주 쏠림 장이었고, 멀티팩터의 힘은 주로 소형주 구간에서 나왔습니다. 2026년 9월 한 달만 해도 대형주 급등장에서 −4.7%p를 기록했습니다. 또 −7% 손절을 붙이면 월 −0.34%p가 줄었습니다. 이 모델의 장점은 ‘대박 종목 찾기’가 아니라 −7%로 먼저 떨어질 종목을 덜 고르는 것에 가깝습니다.

사진: RDNE Stock project · Pexels (Pexels 라이선스)
우연이 아닌지 확인한 두 가지 시험
- 위약 시험 — 종목 점수를 무작위로 섞어서 같은 과정을 돌렸더니 t값이 가장 높아도 1.4였습니다. 실제 모델의 2.7은 우연으로 나오기 어려운 숫자입니다.
- 시점 일치 시험 — 2026년 8월 31일까지의 자료로 계산한 과거 점수와 전체 자료로 계산한 점수를 비교했더니 120개월 동안 차이가 0이었습니다. 미래 정보가 섞이지 않았다는 뜻입니다(5편 백테스트 함정 체크리스트의 ‘미래 참조’ 항목).
4. 교차 검증: 사건 신호 × 팩터 점수
마지막으로 두 방향을 겹쳐 봤습니다. 사건(거래량 흡수, 영업이익 공시)이 나온 종목을 ‘사건 직전 월말 팩터 점수’로 세 그룹으로 나눠 다시 채점했습니다.
| 조합 | 60일 초과수익 | 쓰는 법 |
|---|---|---|
| 거래량 흡수 × 팩터 하위 1/3 | −4.2%p (t −5.3, 9년 중 플러스 0년) | 추천에서 제외 |
| 거래량 흡수 × 팩터 중간·상위 | −0.7%p / −0.2%p | 효과 없음 |
| 영업이익 정체 × 팩터 하위 1/3 | −2.9%p (t −3.0) | 추천에서 제외 |
| 영업이익 개선 × 팩터 점수 | 하위와 나머지 차이 t 0.3 | 같은 순위끼리 정렬할 때만 사용 |
교차 검증의 가장 큰 쓸모는 ‘고르기’보다 ‘빼기’였습니다. 나쁜 사건과 낮은 팩터 점수가 겹친 종목은 10년 동안 일관되게 부진했습니다. 반대로 좋은 공시에 높은 점수를 더한다고 성과가 더 좋아지지는 않았습니다.

사진: Anna Nekrashevich · Pexels (Pexels 라이선스)
5. 프로그램은 이렇게 바꿨습니다
- 멀티팩터 모듈 추가 — 매달 15개 팩터 점수와 워크포워드 순위를 계산합니다.
- 종합 추천 순서 — 영업이익 개선 공시(5거래일 안) → 멀티팩터 상위 20종목 → 나머지 사건 신호(팩터 점수순).
- 제외 규칙 — 유상증자 등 희석 공시, ‘거래량 흡수 × 하위 1/3’, ‘영업이익 정체 × 하위 1/3’. 상장 120거래일 미만 종목도 뺐고, 업종당 3종목까지만 담습니다.
- 관찰 기록 — 한 달에 한 번 순위를 기록해 두고, 21거래일 뒤 아무 종목과 비교하는 점검 시트를 자동으로 만듭니다.
- 손절 안내 수정 — 기계적인 −7% 손절 대신 “보유 기간을 정해 두고 다음 점검일에 순위를 다시 본다”로 바꿨습니다.
이 글의 모든 표를 만든 원자료입니다. 시트 7개(읽는 법 · 멀티팩터 검증 10년 · 워크포워드 성과 · 손절·익절 검증 · 교차 검증 · 신호 검증 10년 · 팩터 회귀·상관). 특정 종목 이름은 넣지 않았습니다.
⬇ stock-screener-part7-verification.xlsx (약 29KB)

사진: Ann H · Pexels (Pexels 라이선스)
6. 그래서 어떻게 쓸 것인가
이번 검증으로 6편의 코어·위성 전략은 더 단단해졌습니다. 10년 동안 가장 높은 수익을 낸 건 결국 시가총액 가중, 즉 지수였습니다. 그래서 저는 계속 지수 ETF를 중심(코어)에 두고, 멀티팩터 순위는 작은 비중의 위성으로 관찰만 하려 합니다. 직접 스크리너를 만들고 계신 분이라면 “무엇을 살까”보다 “무엇을 빼야 할까”부터 검증해 보시길 권합니다. 저에게는 그게 가장 많이 남는 공부였습니다.
자주 묻는 질문
Q. 멀티팩터 백테스트에서 t값 2.7이면 믿어도 되나요?
A. 우연일 가능성은 낮다는 뜻이지 앞으로도 같다는 보장은 아닙니다. 그래서 위약 시험과 시점 일치 시험을 함께 했고, 그래도 시가총액 가중보다 낮았다는 점을 같이 봐야 합니다.
Q. 워크포워드 검증이 일반 백테스트와 뭐가 다른가요?
A. 일반 백테스트는 10년 전체를 보고 가장 좋은 조합을 고르기 쉬워 과최적화되기 쉽습니다. 워크포워드는 매달 그 시점까지의 자료만으로 고르고 다음 달 결과를 기록하므로 실제 투자와 더 비슷합니다.
Q. 손절을 하지 말라는 뜻인가요?
A. 아닙니다. 이 데이터에서 기계적인 −7% 손절이 평균 수익을 줄였다는 결과일 뿐입니다. 감당할 수 있는 손실 한도는 각자 정해 두는 것이 맞습니다.
Q. 엑셀에 종목 이름이 없는 이유는요?
A. 이 시리즈는 개발·검증 기록이고 종목 추천이 아니기 때문입니다. 방법과 집계 결과만 공개합니다.
정리
- ‘거래량 흡수’와 기관·외국인 추종 신호는 10년 데이터에서 효과가 없거나 반대였습니다.
- 영업이익 개선 공시는 유효했지만 공시 후 5거래일 안에서만 의미가 있었습니다.
- 15개 팩터 멀티팩터 순위는 워크포워드에서 월 +0.71%p(t 2.7)였지만, 시가총액 가중보다는 낮았습니다.
- 교차 검증은 ‘고르기’보다 ‘빼기’에 쓸모가 컸습니다.
- −7% 손절·+10% 익절은 평균 수익을 줄였습니다.
“멀티팩터 퀀트 투자 백테스트 검증 | 10년 워크포워드 결과 엑셀 공개”에 대한 3개의 생각