콘텐츠로 이동

기본적 분석 1장: 재무지표가 미래 수익률을 구분하는가?

재무지표와 가격 데이터

기본적 분석에서 먼저 답해야 할 질문은 “이 재무지표가 유명한가?”가 아니라 “이 지표가 매수 시점에서의 가격을 낮추는가, 아니면 미래 수익률을 구분하는가?”입니다. PER이 5배인 종목보다 PER이 20배인 종목이 더 높은 미래 수익률을 보일 가능성이 높은가? 아니면 그저 Per이 높은 성장주일 뿐일까요?

이번 분석은 같은 표본과 같은 규칙으로 PER, PBR, ROE, 부채비율, 영업이익 성장률, 배당수익률 등 주요 재무지표를 수집하고, 각 지표의 분위수별로 5·20·60거래일 선행수익률을 비교합니다. 이 장에서는 분석에 사용할 데이터와 계산 규칙을 고정한 뒤, 전체 재무지표 결과를 먼저 훑어봅니다. 이후 각 장에서 지표를 하나씩 정의하고, 이 결과가 어떤 조건에서 유지되거나 무너지는지 확인합니다.

따라서 이 글의 결론은 “재무지표 목록을 나열했다”가 아닙니다. 어떤 신호가 미래 수익률과 더 강하게 연결됐고, 어떤 신호는 평균수익률만 좋아 보였는지를 구분하는 것이 이 장의 목적입니다.

분석 기준일은 2026년 9월 4일입니다. 기준일 거래대금이 큰 일반 주식 300개를 표본으로 선정하고, 2024년 1월 1일부터 2026년 9월 4일까지의 일봉과 연간 재무제표를 사용했습니다. ETF, ETN, 인버스, 레버리지, 채권형 상품은 제외했습니다.

항목
표본 종목 수300개
OHLCV 원자료 행 수185,309개
120일 워밍업 이후 지표 행 수약 180,000개
가격 데이터 기간2024-01-01 ~ 2026-09-04
재무지표 데이터 (연간)2023~2025 결산
학습 구간2024-01-01 ~ 2025-12-31
검증 구간2026-01-01 ~ 2026-09-04
KOSPI / KOSDAQ 비중170 / 130

재무지표 커버리지는 다음과 같습니다.

지표 종류2025년 재무데이터 보유 종목 수비고
연간 재무지표 (WiseReport)294종PER, PBR, ROE, ROA, 부채비율, 영업이익률, 매출액, 당기순이익, 영업활동현금흐름 등
일간 PER/PBR (KRX)295종KRX가 computes PER/PBR daily from 실시간 주가

표본은 모든 상장 종목을 대표하지 않습니다. 거래대금 상위 종목을 사용했기 때문에 유동성이 낮은 종목의 체결 문제를 줄이는 대신, 대형주와 관심 종목에 유리한 표본 편향이 생깁니다. 또한 재무제표는 연 1회(사업보고서) 또는 반기공시 기준으로 업데이트되므로, 최신 재무지표가 발표되기 전까지는 과거 값을 forward-fill하여 사용합니다. 이 한계를 숨기지 않고 원자료와 조건을 함께 공개합니다.

import pandas as pd
df = pd.read_csv(
"ohlcv.csv",
dtype={"code": str},
parse_dates=["date"],
)
df = df.sort_values(["code", "date"])
df["return_1d"] = df.groupby("code")["close"].pct_change()
df["return_5d"] = df.groupby("code")["close"].pct_change(5).shift(-5)
df["return_20d"] = df.groupby("code")["close"].pct_change(20).shift(-20)
df["return_60d"] = df.groupby("code")["close"].pct_change(60).shift(-60)
print(df.shape)
print(df[["code", "date", "close", "return_20d"]].tail())

이 코드의 핵심은 종목별로 날짜를 정렬한 뒤 수익률을 계산하는 것입니다. 전체 데이터를 날짜만 기준으로 정렬하면 서로 다른 회사의 가격이 이어지는 오류가 생깁니다. shift(-N)을 사용해 신호 당일 종가가 아닌 N거래일 후 종가 대비 수익률을 계산하므로, 신호 발생 이후의 결과만 측정합니다.

재무지표가 가격과 연결되는 방식

섹션 제목: “재무지표가 가격과 연결되는 방식”

재무지표는 연간 단위로 발표되지만, 주가는 일별로 움직입니다. 따라서 재무지표를 일별 데이터와 연결하려면 forward-fill이 필요합니다. 예를 들어 2025년 결산이 2025년 12월 31일에 발표된다면, 2026년 1월 1일부터 2026년 6월 30일(다음 분기 공시)까지의 PER은 2025년 12월 31일 기준 PER로 채워집니다.

import pandas as pd
# ohlcv: 일별 가격 데이터
ohlcv = pd.read_csv("ohlcv.csv", dtype={"code": str}, parse_dates=["date"])
# annual: 연간 재무지표 (WiseReport)
annual = pd.read_csv("fundamental_annual.csv", dtype={"code": str})
annual["annual_date"] = annual["year"].astype(str) + "1231"
annual["annual_date_int"] = annual["annual_date"].astype(int)
# merge_asof: 각 거래일의 종목에게, 그날짜보다 가장 최근인 연간 재무지표를 할당
ohlcv["date_int"] = ohlcv["date"].astype(int)
merged = pd.merge_asof(
ohlcv.sort_values("date_int"),
annual.sort_values("annual_date_int"),
left_on="date_int",
right_on="annual_date_int",
by="code",
direction="backward",
)

이렇게 하면 각 (종목, 날짜) 조합에 대해 사용 가능한 가장 최근의 재무지표가 할당됩니다. KRX의 일간 PER/PBR은 이미 일별 데이터이므로 별도로 merge합니다.

전체 재무지표의 미래 수익률 구분 능력

섹션 제목: “전체 재무지표의 미래 수익률 구분 능력”

검증 구간(2026년 1월 1일 ~ 9월 4일)의 모든 재무지표를 4분위수로 나누어 20거래일 선행수익률을 비교해 봅시다. Q1은 지표값이 낮은(저평가) 그룹, Q4는 높은(고평가) 그룹을 의미합니다(단, ROE/ROA/부채비율은 Q4가 높은 값).

지표Q1 평균수익률Q4 평균수익률Q1>Q4 격차
PER+9.01%+0.49%+8.52%p
PBR+8.39%-0.79%+9.18%p
ROE+4.85%+5.32%-0.47%p
부채비율+5.15%+5.79%-0.64%p
매출성장률+4.51%+5.93%-1.42%p
배당수익률+2.40%+7.24%-4.84%p
영업이익률+4.35%+5.29%-0.94%p

재무지표별 20일 선행수익률

이 표에서 가장 먼저 보이는 것은 평균수익률만으로 지표의 질을 판단하면 안 된다는 점입니다. 특히 ROE와 부채비율은 Q1과 Q4의 평균수익률이 거의 동일하거나 심지어 Q4가 더 좋을 수 있습니다. 이는 “높은 ROE는 좋은 기업”이라는 일반적인 믿음이 시장 상황에 따라 달라질 수 있음을 보여줍니다.

반면 PER과 PBR은 뚜렷한 단조성을 보입니다. PER이 가장 낮은 Q1 그룹은 20거래일 평균 +9.01%를 기록했고, 가장 높은 Q4 그룹은 +0.49%에 머물렀습니다. 격차는 +8.52%p로 통계적으로 의미 있는 수준입니다.

하지만 배당수응률은 반대 방향의 관계를 보입니다. 배당수익률이 높은 Q4 그룹(7.24%)이 낮은 Q1 그룹(2.40%)보다 더 높은 수익률을 기록했습니다. 이는 “배당주도 수익이 좋다”는 가치 투자의 전제가 검증 기간에서는 성립하지 않을 수 있음을 시사합니다.

다만 이 결과가 “PER이 낮은 종목을 무조건 사야 한다”는 뜻은 아닙니다. 가장 높은 Q1의 양수 비율도 약 61.6%에 불구하고, 모든 지표의 하위 25% 수익률은 마이너스였습니다(표 미기재). 즉 재무지표는 방향을 맞추는 단독 예언 도구라기보다, 어떤 상황에서 상대적으로 유리한 후보를 좁히는 필터로 해석하는 편이 적절합니다.

또한 이 표는 각 지표별 사건을 독립적으로 집계한 결과입니다. 지표가 겹치는 종목을 하나의 포트폴리오로 운용했을 때의 거래비용, 보유 비중, 최대낙폭은 아직 반영하지 않았습니다. 그래서 다음 장부터는 개별 지표의 의미를 확인하고, 결국 8장에서 복합 점수를 통해 포트폴리오 성과를 별도로 비교합니다.

이번 결과는 다음 순서를 정하는 기준이 됩니다.

결과 원본은 이벤트_results CSV, 표본 CSV에서 확인할 수 있습니다.


이 글은 투자 판단을 위한 참고 자료이며, 특정 종목의 매수·매도를 권유하지 않습니다. 과거의 검증 결과는 미래의 수익을 보장하지 않습니다.