본문 바로가기

Quant

PER+PBR 점수 전략 구현 – 파이썬 실전 코드 예시

반응형

퀀트 투자에서 가장 널리 알려진 전략 중 하나는 **‘저PER + 저PBR 점수 기반 전략’**입니다.

PER(주가수익비율, Price to Earnings Ratio)과 PBR(주가순자산비율, Price to Book Ratio)은
주식이 ‘저평가’되었는지를 판단하는 핵심 지표입니다.

이 전략은 두 지표를 동시에 고려하여 값이 낮을수록 점수를 부여하고, 총 점수가 낮은 상위 종목을 포트폴리오로 구성합니다.

 

오늘은 이 전략을 파이썬으로 구현하는 전 과정을 코드와 함께 소개해드리겠습니다.
프로그래밍을 처음 접하는 분도 복사해서 실행할 수 있도록 친절히 구성했습니다.

PER+PBR 점수 전략 구현

 

1. 전략 개요와 사용 데이터 정리

먼저 구현할 전략의 조건은 다음과 같습니다:

  • PER가 낮은 순으로 점수 부여 (낮을수록 1등)
  • PBR도 마찬가지로 낮을수록 높은 점수
  • 두 점수를 합산해 총합이 낮은 종목 상위 10개를 포트로 구성

데이터는 예제로 만든 가상의 종목 리스트를 사용하겠습니다.
실제로는 네이버금융, investing.com, 딥서치, FnGuide 등에서 수집한 데이터를 CSV 파일로 저장해서 불러올 수 있습니다.

엑셀에서 아래와 같은 CSV 파일을 만들고 저장합니다:

종목,PER,PBR
삼성전자,12.3,1.1
LG화학,8.7,0.9
현대차,11.5,0.8
POSCO홀딩스,6.2,0.6
셀트리온,32.1,3.2
...

이 파일을 data.csv로 저장한 후 파이썬에서 불러오겠습니다.


2. 파이썬 코드 – 점수 계산부터 종목 선정까지

아래 코드는 파이썬에서 직접 실행 가능한 버전입니다.
주피터 노트북이나 VSCode 등에서 사용하세요.

import pandas as pd

# 1. 데이터 불러오기
df = pd.read_csv("data.csv")  # 같은 폴더에 data.csv 파일이 있어야 합니다

# 2. 결측치 제거 (PER, PBR이 없는 종목 제외)
df = df.dropna(subset=["PER", "PBR"])

# 3. PER 순위 계산 (낮을수록 높은 순위)
df["PER_score"] = df["PER"].rank(method="min")

# 4. PBR 순위 계산 (낮을수록 높은 순위)
df["PBR_score"] = df["PBR"].rank(method="min")

# 5. 점수 합산 (낮을수록 고평가)
df["total_score"] = df["PER_score"] + df["PBR_score"]

# 6. 점수 기준 상위 10개 종목 선정
result = df.sort_values("total_score").head(10)

# 7. 출력
print("<< PER + PBR 점수 상위 10종목 >>")
print(result[["종목", "PER", "PBR", "total_score"]])

 

✅ 실행 결과 예시 (출력 화면)

<< PER + PBR 점수 상위 10종목 >>
        종목       PER      PBR  total_score
3   POSCO홀딩스    6.2     0.6          2.0  
1     LG화학      8.7     0.9          4.0  
2     현대차     11.5     0.8          6.0  
0   삼성전자     12.3     1.1          8.0  
...

 

이렇게 하면 가장 저평가된 종목 10개가 자동으로 계산됩니다.
엑셀보다 훨씬 빠르고 정확하게 결과를 얻을 수 있습니다.


3. 전략 확장: 리밸런싱과 성과 추적을 위한 기초

현재 코드는 ‘한 시점’ 기준으로만 종목을 선정합니다.
하지만 퀀트 전략의 핵심은 **정기적인 리밸런싱(포트 재구성)**입니다.

이를 위해선 다음과 같은 확장이 필요합니다:

  • 날짜별로 PER/PBR 데이터를 수집 (예: 분기별, 월별)
  • 매월 혹은 분기별로 위 코드를 반복 실행
  • 종목별로 수익률 계산 → 누적 수익률 계산

이를 실현하려면
**야후파이낸스(yfinance)**나 KRX 데이터 API를 사용해
주가와 지표 데이터를 자동 수집하는 기능을 붙이면 좋습니다.

또한 백테스트 결과로는 아래 지표들을 함께 계산해볼 수 있습니다:

  • CAGR (연복리 수익률)
  • MDD (최대 낙폭)
  • 승률 (리밸런싱마다 수익을 낸 비율)
  • Sharpe Ratio (샤프지수): 위험 대비 수익률

다음 글에서 이 확장 기능을 소개해드릴 예정입니다.


4. 마무리 – 나만의 전략을 데이터로 검증해보자

이번 글에서는 파이썬으로
저PER + 저PBR 전략을 직접 구현하는 기본 흐름을 다뤘습니다.

지표 데이터를 불러오고, 점수를 부여하고, 상위 종목을 선정하는 과정까지
엑셀이나 플랫폼보다 유연하고 자유롭게 조정할 수 있는 장점이 있습니다.

처음에는 코드가 어렵게 느껴질 수 있습니다.
하지만 작은 전략부터 반복해서 실행하다 보면
점점 복잡한 조건, 리스크 관리, 리밸런싱까지 다루는 수준으로 발전하게 됩니다.

단순히 전략을 쓰는 투자자가 아니라
전략을 설계하고 증명하는 투자자가 되어보세요.