파이썬으로 PER 밴드 만들기 1
본문 바로가기
파이썬으로 만든 것들/PER밴드

파이썬으로 PER 밴드 만들기 1

by Squat Lee 2022. 9. 5.


파이썬으로 PER 밴드를 만들어 보았습니다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kbomb2000&logNo=221295759491

 

PER band 그리기

해당 글에도 언급이 되어 있듯이 피터 린치는 주식의 고평가 기준을 '이익선' 을 기준으로 삼고 주가가 이...

blog.naver.com

네이버를 검색하다가 엑셀로 PER 밴드를 그리는 포스트를  쓰신 분을 발견하게 되었습니다. (위에 링크)

파이썬으로 PER을 그리면 훨씬 편리할 것 같은데, 그런 포스트는 검색을 해도 찾을 수가 없었습니다.

그래서 간단히 한 번 만들어 보았습니다.


기본 개념은 간단합니다. 저도 PER 밴드를 만드는 원리를 파이썬으로 구현하면서 알게 되었습니다.

1. 우선 PER을 가격으로 보여줘야 합니다. PER을 가격으로 보여주기 위해서는 PER X EPS를 하면 됩니다.

2. PER밴드는 EPS X 숫자로 표시하면 됩니다. 예를 들어 PER이 5이면 EPS X 5를 해 주면 됩니다.
3. 밴드 형식으로 나타내야 하기 때문에 PER을 범위를 다르게 해야 합니다. 저는 설정된 기간 동안에 중간값, 최대값, 최소값, 25% 구간, 75%구간으로 나타냈습니다.
4. 주가 데이터도 함께 그래프로 나타내야 합니다.


이런 개념을 파이썬으로 구현하기 위해서 pykrx, matplotlib 라이브러리를 사용했습니다.

pykrx에서 데이터를 DataFrame 형태로 가져올 수 있기 때문에 pandas 모듈을 별도로 사용하지는 않았습니다.

데이터프레임 형식은 최대값, 최소값 등 컬럼별 연산방법을 구현하기에 코드가 간단합니다.

만들어진 데이터프레임을 matplotlib을 이용해서 그래프로 그려주면 됩니다.

아래는 PER밴드를 구현하는 전체 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from pykrx import stock
import matplotlib.pyplot as plt
 
df = stock.get_market_fundamental('20190101''20220731''005930', freq='m'#PER, EPS 등 펀더멘털 가져오기
df['주가'= df['PER']*df['EPS'#별도로 주가 데이터를 가져오지 않고, PER과 EPS를 곱해서 주가를 구하기
 
# 밴드를 만들기 위해 범위를 만들기
per_med = int(df['PER'].median()) #중간값
per_max = int(df['PER'].max()+1#최대값
per_min = int(df['PER'].min()-1#최소값
per_25 = int(df['PER'].quantile(0.25)) #25%
per_75 = int(df['PER'].quantile(0.75)) #75%
 
#각 PER밴드 컬럼 만들기
df['PERx'+str(per_min)]=df['EPS'* per_min
df['PERx'+str(per_25)]=df['EPS'* per_25
df['PERx'+str(per_med)]=df['EPS'* per_med
df['PERx'+str(per_75)]=df['EPS'* per_75
df['PERx'+str(per_max)]=df['EPS'* per_max
 
# 필요한 컬럼만 가져오기
df = df[['주가''PERx'+str(per_min), 'PERx'+str(per_25), 'PERx'+str(per_med), 'PERx'+str(per_75),
         'PERx'+str(per_max)]]
df = df.astype(int)
 
print(df)
 
# 그래프로 그리기
df.plot(figsize=(125))
plt.show()
 
cs


코드가 길지 않고, 직관적으로 작성했습니다. 그래서 코드를 짜는데 오래걸리지는 않았어요.

PER 만들기 코드 실행결과

데이터는 데이터프레임 형태로 잘 나왔습니다.

그래프도 잘 나왔네요. 그런데, 그래프가 계단형으로 나왔습니다.

사실 EPS는 작년 회계년도 순이익을 기준으로 산출하기에 계단형으로 나오는 것이 당연하지요. 하지만 우리가 증권사에서 보는 PER 밴드는 선형 곡선으로 표시되어 있습니다.

fnguide PER밴드 캡쳐

다음 포스트에서 증권사에서 제공하는 PER 밴드 곡선처럼 그래프를 선형으로 그리는 방법에 대해 고민해서 남겨보도록 하겠습니다.

그리고, krx에서 가져온 데이터는 수정주가가 아니라고 하더라구요. 이부분도 함께 고민해 보도록 하겠습니다.

 

 

2022.09.07 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 만들기 2 - 수정주가 가져와서 선형으로 그래프 그리기

 

파이썬으로 PER 밴드 만들기 2 - 수정주가 가져와서 선형으로 그래프 그리기

2022.09.05 - [취미로 하는 파이썬/투자 실험실 with 파이썬] - 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드 만들기 1 파이썬으로 PER 밴드를 만들어 보았습니다. https://m.blog.naver.com/PostView.nave..

dotsnlines.tistory.com

 

728x90
반응형

댓글