기본적 분석 11장: 백테스트하는 기본적 전략
10장에서 복합 점수를 사용해 20개의 후보 종목을 스크리닝했습니다. 이제 이 후보군들을 실제 포트폴리오로 운용했을 때 어떤 성과가 나왔는지 백테스트합니다. 밸류, 퀄리티, 복합 전략 3가지로 월별 리밸런싱을 시뮬레이션하고, 누적수익률, 샤프 비율, 최대낙폭을 비교합니다.
백테스트 설정
섹션 제목: “백테스트 설정”| 항목 | 값 |
|---|---|
| 검증 기간 | 2026-01-01 ~ 2026-09-04 (166거래일) |
| 표본 | 기준일 거래대금 상위 300종 |
| 리밸런싱 주기 | 월별 (매월 첫 거래일) |
| 보유 비중 | 조건을 만족한 종목에 동일 비중 (상위 25%) |
| 거래비용 | 거래 시 0.15% (왕복) |
| 벤치마크 | 전체 300종의 등비중 평균 |
전략 정의
섹션 제목: “전략 정의”| 전략 | 팩터 | 방향성 | 설명 |
|---|---|---|---|
| Value | PER + PBR | 낮을수록 좋음 | 밸류 주식 선택 |
| Quality | ROE + ROA + 영업이익률 | 높을수록 좋음 | 퀄리티 주식 선택 |
| Composite | PER + PBR + ROE + ROA + 배당 + 매출성장 + 현금흐름 | 종합 | 밸류 + 퀄리티 + 성장 + 배당 |
import pandas as pdimport numpy as np
df = pd.read_csv("fundamental_daily.csv", dtype={"code": str})df["month"] = df["date"].str[:6]val_cols = ["per", "pbr", "roe", "roa", "div_yield", "revenue_growth", "cash_flow"]for col in val_cols: df[col] = df[col].fillna(df[col].median())
# Value: low PER + low PBR (rank within month, ascending)df["score"] = df.groupby("month")["per"].rank() + df.groupby("month")["pbr"].rank()# Quality: high ROE + high ROA + high operating_margindf["score"] = df.groupby("month")["roe"].rank(ascending=False) + df.groupby("month")["roa"].rank(ascending=False) + df.groupby("month")["operating_margin"].rank(ascending=False)# Composite: combination of all factorsdf["score"] = ( df.groupby("month")["per"].rank() + df.groupby("month")["pbr"].rank() + df.groupby("month")["roe"].rank(ascending=False) + df.groupby("month")["roa"].rank(ascending=False) + df.groupby("month")["div_yield"].rank(ascending=False) + df.groupby("month")["revenue_growth"].rank(ascending=False) + df.groupby("month")["cash_flow"].rank(ascending=False))백테스트 결과
섹션 제목: “백테스트 결과”| 전략 | 누적수익률 | 연환산수익률 | Sharpe | 최대낙폭 | 보유 종목 수(평균) |
|---|---|---|---|---|---|
| Value | +35.39% | +58.41% | 1.44 | -25.52% | 76 |
| Quality | +58.26% | +100.76% | 1.56 | -34.12% | 76 |
| Composite | +48.80% | +82.82% | 1.63 | -19.00% | 76 |
| 벤치마크(등비중) | +54.33% | +89.47% | 0.79 | -19.08% | 300 |
결과 분석
섹션 제목: “결과 분석”1. Quality가 유일하게 벤치마크를 능가했다
섹션 제목: “1. Quality가 유일하게 벤치마크를 능가했다”| 전략 | 벤치마크 대비 |
|---|---|
| Value | -18.94%p (하방) |
| Quality | +3.93%p (우위) |
| Composite | -5.53%p (하방) |
검증 기간(2026년 1~9월)에는 Quality 전략만이 벤치마크(등비중 300종)를 능가했습니다. Value와 Composite는 각각 -18.94%p, -5.53%p 하방에서 마감했습니다.
2. Sharpe 비율은 모두 높은 편
섹션 제목: “2. Sharpe 비율은 모두 높은 편”| 전략 | Sharpe | 벤치마크 Sharpe |
|---|---|---|
| Value | 1.44 | 0.79 |
| Quality | 1.56 | 0.79 |
| Composite | 1.63 | 0.79 |
샤프 비율(위험조정수익)은 모든 전략이 벤치마크(0.79)를 2배 이상 높게 기록했습니다. 이는 개별 지표 기반 포트폴리오가 동일 비중 전략에 비해 더 안정적인 수익을 낸다는 것을 보여줍니다(단, 높은 샤프는 낮은 변동성에서도 나올 수 있음).
3. 최대낙폭은 Quality가 가장 컸다
섹션 제목: “3. 최대낙폭은 Quality가 가장 컸다”| 전략 | 최대낙폭 |
|---|---|
| Value | -25.52% |
| Quality | -34.12% |
| Composite | -19.00% |
Quality 전략은 가장 높은 수익률을 냈지만 가장 큰 낙폭(-34.12%)도 기록했습니다. 반면 Composite는 수익률은 Value보다 높고 낙폭은 더 작아(-19.00%), 위험 조정 수익률 면에서 가장 균형 잡힌 전략이었습니다.
인사이트
섹션 제목: “인사이트”- 검증 기간의 시장 구조가 설명한다: 2026년 1~9월은 퀄리티/성장 주가 강세였습니다. 밸류 주식(저PER)은 상대적으로 하방 성과가 좋지 않았습니다.
- 하나의 구간으로 전략을 평가하면 안 된다: 기술적 분석 시리즈 12장에서도 강조했듯이, 이 결과는 “밸류 전략이 절대 안 좋다”는 것이 아니라 “2026년 1~9월 시장에서는 밸류가 어려웠다”는 것입니다. 다른 시장 국면에서는 역순일 수 있습니다.
- 샤프 비율 vs 누적수익률: Composite은 샤프(1.63)가 가장 높고 낙폭(-19.00%)도 가장 작지만, 누적수익률(48.80%)은 벤치마크를 못 넘어섰습니다. 이는 ‘변화성이 낮다’는 것이 ‘수익이 높다’는 것을 의미하지 않는다는 교훈을 줍니다.
- 거래비용의 영향: 300종 대상 상위 25%(≈75종)를 매월 리밸런싱하면 연간 거의 12회의 리밸런싱이 발생합니다. 0.15% 비용은 총 누적수익률에 약 3~5%p의 마이너스 영향을 미칩니다.
결과 원본은 전략 결과 CSV, Value equity CSV, Quality equity CSV에서 확인할 수 있습니다.
이 글은 투자 판단을 위한 참고 자료이며, 특정 종목의 매수·매도를 권유하지 않습니다. 과거의 검증 결과는 미래의 수익을 보장하지 않습니다.