백테스트 실험

미너비니의 펀더멘털 조건을 분기 재무로 다시 검증했다: 책의 조건에 가까울수록 결과가 나빴다

readtest 2026. 10. 1. 19:41

정정 안내 (2026-10-03): 백테스트를 다시 점검하다가 국내 주가 데이터의 거래량이 액면분할 전후로 보정되지 않은 문제를 발견했다. 돌파 신호의 거래량 조건에 영향을 줘서, 분할과 장기 거래정지 이후 구간을 제외하고 다시 계산했다. 기술적 조건만 쓴 기준선이 연 20.8%에서 18.0%로 낮아졌고, 그 결과 결과 3(우선순위)의 결론이 "효과 없음"에서 "작은 개선"으로 바뀌었다. 필터 결과와 신호별 분석은 거의 그대로다. 점검 과정은 별도 글에 정리했다.

앞선 글(/14)에서는 분기 재무를 구하지 못해 미너비니의 펀더멘털 조건을 연간 재무로 거칠게 근사했고, 그것이 가장 큰 한계였다. 이번에는 DART에서 분기 재무를 받아 분기 단독 실적의 전년 동기 대비 성장률로 다시 검증했다. 책이 말하는 "최근 분기와 지난 분기 모두 양호", "성장률의 가속", "코드 33(영업이익·매출·마진 증가율이 연속 상승)"에 훨씬 가까운 조건이다. 먼저 결론부터 말하면, 분기 데이터로 바꿔도 결론은 같았고, 책의 조건에 가까울수록 오히려 결과가 나빠졌다.

관련 글: 미너비니 방식 국내 백테스트(기술적) · 미너비니 후기

먼저 밝혀 둘 것

  • 종목 추천이나 투자 권유가 아니다. 어떤 종목도 언급하지 않는다.
  • 조건의 정의와 기준값(25%, 15%)은 책의 성격을 참고한 내 해석이고, 성과가 좋아지도록 조정하지 않았다.
  • 책이 강조하는 어닝 서프라이즈와 애널리스트 추정치 상향은 컨센서스 데이터가 없어 검증하지 못했다.
  • 생존 편향이 있다. 지금 상장된 종목만 대상이다.

분기 데이터를 어떻게 만들었나

  • DART의 1분기, 반기, 3분기 보고서에서 분기 단독 매출, 영업이익, 순이익과 전년 같은 분기 금액을 받았다. (반기 보고서의 "당기" 금액은 2분기 단독 금액이다.)
  • 4분기는 직접 공시되지 않아서 "연간 금액 − 3분기 누적 금액"으로 계산했다. 전년 4분기도 같은 방식이다.
  • 공시 접수일 다음 날부터 그 실적을 사용했고, 한 분기 실적은 최대 약 2분기(거래일 130일)까지만 썼다.
  • 성장률은 전년 동기 영업이익이 흑자일 때만 계산할 수 있다. 그렇지 않으면 "판정 불가"로 분류했다.

분기 기준 조건 정의

이름 정의 (가장 최근 분기 기준)
영업이익 25%↑ 분기 영업이익이 흑자이고 전년 동기 대비 25% 이상 증가
순이익 25%↑ 분기 순이익이 흑자이고 전년 동기 대비 25% 이상 증가
영업이익 25%↑ & 매출 15%↑ 위 영업이익 조건에 더해 분기 매출도 전년 동기 대비 15% 이상 증가
영업이익 25%↑ 2분기 연속 최근 분기와 바로 직전 분기 모두 영업이익이 전년 동기 대비 25% 이상 증가
위(25%↑ & 15%↑) & 성장 가속 영업이익 25%↑ & 매출 15%↑에 더해, 이번 분기의 영업이익 증가율이 직전 분기보다 높을 것
영업이익·매출 성장률 연속 상승 & 마진 개선
(코드 33 근사)
영업이익 증가율이 2분기 연속 상승하고, 매출 증가율도 상승하며, 영업이익률이 전년 동기보다 높을 것. 책의 "세 가지가 3분기 연속 상승"을 단순화한 근사

어떻게 테스트했나

기술적 규칙 국내 백테스트 글과 동일 (돌파 + 거래량, 상대강도 상위 30%, 시장 필터, 10종목 보유, -10% 손절과 추적 청산)
기간 2016년 6월 ~ 2026년 9월. 분기 실적을 쓸 수 있는 첫 시점에 모든 전략의 시작일을 맞췄다. 그래서 "기술적 조건만"의 수치가 앞선 글들(연 17.3%, 18.9%)과 다르다.
데이터 보정 액면분할·병합이나 장기 거래정지 뒤 거래가 재개된 날부터 60거래일은 거래량을 쓰지 않았다(거래량이 분할 보정되지 않은 데이터 문제)
비교 앞선 글의 연간 조건(영업이익 25%↑ & 매출 15%↑)을 같은 기간으로 다시 돌려 함께 놓았다.
비용 수수료, 거래세 0.20%, 슬리피지 0.1% (0.3%도 시험)
세 가지 분석 ① 통과한 종목만 진입하는 필터 ② 돌파 신호 하나하나의 이후 60일 수익률 ③ 통과 종목을 먼저 고르는 우선순위

결과 1. 필터로 썼을 때

조건 (통과한 종목만 진입) 연 수익률 최대 낙폭 샤프 거래 수 승률 손익비(PF) 평균 주식 비중 슬리피지 0.3%일 때
기술적 조건만 18.0% -32.5% 0.80 641 44.1% 1.91 57.6% 14.2%
[연간] 영업이익 25%↑ & 매출 15%↑ (비교) 12.5% -20.7% 0.80 272 56.6% 2.20 28.4% 12.2%
[분기] 영업이익 25%↑ 12.1% -26.1% 0.66 438 46.8% 1.60 43.7% 10.6%
[분기] 순이익 25%↑ 14.5% -30.4% 0.79 377 50.9% 2.07 39.0% 13.5%
[분기] 영업이익 25%↑ & 매출 15%↑ 11.3% -29.4% 0.65 351 48.7% 1.63 34.5% 10.2%
[분기] 영업이익 25%↑ 2분기 연속 13.5% -21.2% 0.78 308 49.4% 1.98 34.3% 12.5%
[분기] 위 조건 & 성장 가속 2.7% -21.7% 0.27 239 51.0% 1.26 22.2% 2.1%
[분기] 코드 33 근사 -0.2% -21.2% 0.00 136 51.5% 0.96 12.0% -0.5%
KOSPI 12.6% -43.9% 약 0.6 - - - - -

앞선 글의 결론이 그대로 유지됐다. 분기 조건을 필터로 쓰면 연 수익률이 18.0%에서 11.3~14.5%로 내려갔다. 그리고 연간 조건과 분기 조건의 차이는 크지 않았다. 같은 성격의 조건(영업이익 25%↑ & 매출 15%↑)이 연간으로는 12.5%/-20.7%, 분기로는 11.3%/-29.4%였다. 분기 데이터로 정밀도를 높였다고 해서 결과가 나아지지는 않았다.

눈에 띄는 것은 책의 조건에 가까운 두 가지다. "성장 가속"은 연 2.7%, "코드 33 근사"는 연 -0.2%로 사실상 수익이 없었다. 이유는 조건을 통과하는 종목이 드물어서 주식 비중이 22%, 12%에 그쳤기 때문이다(거래 수 239건, 136건). 대부분의 기간 현금으로 있었다는 뜻이다. 자산 곡선에서 빨간 선이 거의 평평한 이유다.

구간별 연 수익률 2016-06~2019 2020~2022 2023~2026-09 ~2024
기술적 조건만 -0.5% 0.9% 58.6% 9.9%
[분기] 영업이익 25%↑ 6.9% 3.2% 25.3% 12.1%
[분기] 순이익 25%↑ 5.8% 6.3% 31.2% 11.0%
[분기] 영업이익 25%↑ & 매출 15%↑ 9.0% 4.3% 19.3% 14.0%
[분기] 영업이익 25%↑ 2분기 연속 7.2% 5.3% 27.1% 12.8%
KOSPI 2.9% 0.9% 34.8% 2.3%

구간별 성격도 앞선 글과 같다. 약한 시기(2016~2022)에는 조건을 붙인 쪽이 훨씬 나았고(2016~2019년 -0.5% 대 5.8~9.0%, 2020~2022년 0.9% 대 3.2~6.3%), 2023년 이후 강세장에서는 기술적 조건만 쓴 쪽이 훨씬 많이 벌었다(58.6% 대 19.3~31.2%).

결과 2. 돌파 신호 하나하나의 이후 수익률

기술적 돌파 신호 2,206건(같은 종목은 20거래일 간격으로 솎음)의 신호 후 60거래일 수익률을 분기 조건 통과 여부별로 나눴다. 전체 평균은 +3.5%(중앙값 -3.9%, 승률 44%)였다.

조건 통과 (신호 수, 평균) 미통과 판정 불가
[연간] 영업이익 25%↑ & 매출 15%↑ (비교) 469건, +5.4% 1,152건, +0.3% 585건, +8.2%
[분기] 영업이익 25%↑ 937건, +3.9% 785건, +0.4% 484건, +7.6%
[분기] 순이익 25%↑ 808건, +3.6% 751건, +1.2% 647건, +6.0%
[분기] 영업이익 25%↑ & 매출 15%↑ 636건, +4.2% 1,049건, +1.0% 521건, +7.6%
[분기] 영업이익 25%↑ 2분기 연속 581건, +5.2% 946건, +0.7% 679건, +5.9%
[분기] 위 조건 & 성장 가속 390건, +2.1% 1,107건, +2.4% 709건, +5.9%
[분기] 코드 33 근사 204건, -0.2% 1,108건, +3.1% 894건, +4.7%
조건 통과 − 미통과 (평균 차이, 95% 구간) 통과 − 나머지 전체(미통과+판정 불가)
[분기] 영업이익 25%↑ +3.5%p (+0.2 ~ +6.8) +0.7%p (-2.4 ~ +3.9)
[분기] 순이익 25%↑ +2.4%p (-1.2 ~ +6.0) +0.2%p (-3.2 ~ +3.6)
[분기] 영업이익 25%↑ & 매출 15%↑ +3.2%p (-0.1 ~ +6.8) +1.0%p (-2.4 ~ +4.6)
[분기] 영업이익 25%↑ 2분기 연속 +4.5%p (+0.9 ~ +8.2) +2.3%p (-1.3 ~ +6.0)
[분기] 위 조건 & 성장 가속 -0.3%p (-3.8 ~ +3.2) -1.6%p (-4.9 ~ +1.9)
[분기] 코드 33 근사 -3.3%p (-7.4 ~ +0.8) -4.0%p (-7.8 ~ -0.1)
  • "영업이익 25%↑ 2분기 연속"이 가장 일관된 효과를 보였다. 통과 신호가 미통과보다 +4.5%p 높았고 95% 구간이 0보다 위에 있다. 책이 말하는 "최근 분기뿐 아니라 지난 분기도 양호해야 한다"와 같은 성격이다.
  • 성장 가속과 코드 33 근사는 오히려 효과가 없었다. 통과 신호의 평균이 미통과와 같거나 낮았다(-0.3%p, -3.3%p).
  • "판정 불가"(전년 동기 적자 등) 신호의 수익률이 여전히 높았다(+4.7~+7.6%). 앞선 글과 같은 패턴이다.
  • 통과 대 나머지 전체로 비교하면 대부분 구간이 0을 포함해서 우연과 구별되지 않았다. 코드 33 근사만 구간이 0보다 아래(-7.8 ~ -0.1)로, 통과한 쪽이 오히려 나빴다.
  • 신호끼리 독립적이지 않아서 실제 불확실성은 이 구간보다 클 수 있다.

결과 3. 우선순위로만 쓰면

조건 (통과 종목을 먼저) 연 수익률 최대 낙폭 샤프
기술적 조건만 18.0% -32.5% 0.80
[연간] 영업이익 25%↑ & 매출 15%↑ (비교) 20.5% -28.8% 0.89
[분기] 영업이익 25%↑ 20.6% -29.4% 0.88
[분기] 순이익 25%↑ 20.5% -25.2% 0.89
[분기] 영업이익 25%↑ & 매출 15%↑ 19.3% -31.7% 0.85
[분기] 영업이익 25%↑ 2분기 연속 16.6% -32.8% 0.75
[분기] 위 조건 & 성장 가속 18.6% -33.3% 0.83
[분기] 코드 33 근사 18.5% -33.7% 0.84

우선순위로 쓰면 7개 조건 중 6개가 기술적 조건만 쓸 때(18.0%)보다 조금 높았다(18.5~20.6%, +0.5~2.6%p). 특히 연간 조건, 분기 영업이익 25%↑, 분기 순이익 25%↑가 20.5~20.6%로 가장 높았고, 순이익 조건은 최대 낙폭도 -32.5%에서 -25.2%로 줄었다. 반대로 신호 단위에서 가장 효과가 좋았던 "2분기 연속"은 16.6%로 오히려 낮았다. 정정 전에는 이 표가 "효과 없음"으로 보였는데, 기준선이 데이터 문제로 부풀려져 있었기 때문이다. 다만 차이가 2%p 안팎이고 조건마다 들쭉날쭉해서, 확실한 개선이라기보다 작은 개선의 가능성 정도로 읽는 것이 맞다.

이 결과를 어떻게 읽을까

  1. 분기 데이터로 바꿔도 결론은 같았다. 필터는 낙폭을 줄이지만 수익도 줄였다. 우선순위로 쓰면 대부분 조금 나아졌지만(+0.5~2.6%p) 크지 않았다. 연간 근사의 한계가 결론을 바꾼 것은 아니었다.
  2. 책에서 가장 강조하는 가속과 코드 33 근사가 가장 나빴다. 조건이 너무 엄격해서 통과 종목이 거의 없었고, 신호 단위에서도 통과 종목이 더 나은 이후 수익률을 보이지 않았다. 이 기간 국내 시장에서는 그 조건이 돌파 신호의 질을 가려내지 못한 것으로 보인다.
  3. 가장 일관된 효과는 "최근 분기와 직전 분기 모두 영업이익이 크게 증가"였다. 다만 포트폴리오 수준에서는 필터로 써도, 우선순위로 써도 이 조건이 수익을 높이지 못했다.
  4. 가장 큰 수익은 여전히 적자·반등 초기 종목에서 나왔다. 성장 조건은 이 종목들을 판정 불가로 분류해서 걸러냈다.

한계

  • 어닝 서프라이즈, 추정치 상향은 검증하지 못했다. 책의 펀더멘털 방식에서 중요한 부분이다.
  • 가속과 코드 33 근사의 정의가 엄격하다. 전년 동기 영업이익이 모두 흑자여야 계산되어서 판정 가능한 종목이 적고, 그 결과 거래 수가 적어(239건, 136건) 결과가 우연에 좌우되기 쉽다.
  • 조건 정의와 기준값은 내 해석이다. 기준을 바꾸면(예: 30~40% 이상) 달라질 수 있다.
  • 4분기는 연간에서 파생했고, 연결과 별도 재무제표가 섞여 있다.
  • 생존 편향: 상장폐지 종목이 없다. 적자 기업이 많이 걸리는 구간일수록 영향이 클 수 있다.
  • 기간은 약 10년이고, 최근 3년의 강세장이 결과를 크게 좌우한다.

정리

분기 재무로 다시 검증해도 결론은 바뀌지 않았다. 미너비니의 펀더멘털 조건은 이 기간 국내 돌파 매매에서 수익을 높이는 도구가 아니라 위험을 줄이는 도구에 가까웠고, 책의 조건에 충실할수록(가속, 코드 33) 오히려 투자 기회가 사라져 결과가 나빠졌다. 그렇다고 책의 방식이 틀렸다는 뜻은 아니다. 책은 어닝 서프라이즈와 추정치 같은 정보까지 함께 보고, 주로 다른 시기의 미국 시장을 다루기 때문이다. 이 실험이 보여 준 것은 "이익이 성장하는 종목만 산다"는 규칙이 국내 시장에서 이 기간에는 통하지 않았다는 사실이다.


※ 재무 데이터 출처: 금융감독원 전자공시시스템(DART) OpenAPI. 본 글은 과거 데이터를 이용한 개인 학습 기록이며 특정 종목의 매수·매도를 권유하지 않습니다. 백테스트 결과는 미래 수익을 보장하지 않으며, 투자 판단과 책임은 투자자 본인에게 있습니다.

반응형