본문 바로가기
Python

파이썬 이용 주식 분석 - 저평가 & 고평가 분석

by 아짱이아빠 2021. 8. 29. 16:23
반응형

파이썬을 이용하여 주식 현재 가격이 저평가되어있는지 아니면 고평가 되어있는지 분석하는 방법에 대해 알아보겠다.

 

분석방법의 기본적인 원리는 다음과 같다.

분석에는 현재의 주가와 PER 그리고 EPS를 이용한다.

먼저 PER(Price Earning Ratio)은 주가 수익비율이라 하고 기업의 주가가 1주당 수익의 몇 배인지를 나타낸다.

그리고 EPS(Earning Per Share)는 주당 순이익이며 1주당 이익을 얼마나 창출했는지를 나타낸다.

 

PER은 1주당 주가를 EPS로 나누어서 계산한다. 

다시 얘기하면 PER에 EPS를 곱하면 주가가 된다.

여기서 PER은 동종 업계 평균 PER을 구하여 이를 EPS에 곱함으로써 적정 주가가 어느 정도 인지 구하고 현재의 주가와 비교하여 높은지 아니면 낮은 지를 분석하는 것이 되겠다.

이를 파이썬 코드로 구현하는 것을 알아보겠다

 

참고로 파이썬 코드는 유투브 Computer Science를 참고하였다.

 

[모듈 import 및 파일 업로드]

 

import pandas as pd
import numpy as np

from google.colab import files
files.upload()

df = pd.read_excel('Game Entertainment Stocks.xlsx')

 

위는 분석에 사용될 라이브러리를 import 하고 분석할 파일을 업로드하는 내용이다.

분석할 파일은 “게임 엔터테인먼트” 업종으로 구분되는 30개 기업의 주가와 각 PER, EPS 데이터를 담고 있는 xlsx 확장자의 파일이며 위 코드로 파일을 업로드한 결과는 아래와 같다.

 

게임 엔터테인먼트 업종 기업의 주가
(게임 엔터테인먼트 업종 기업의 주가)

 

 

그 다음 아래의 코드는 종목명을 index로 바꾸어 준다.

df = df.set_index('종목명')

index를 종목명으로 바꿔주는 이유는 마지막에 나오겠지만 저평가 또는 고평가로 분석된 기업명을 쉽게 출력하기 위해서이다.

 

바꿔준 결과는 다음과 같이 index에 종목명이 들어가게 된다.

index로 종목명 변경
(index로 종목명 변경)

 

[데이터 분석]

 

먼저 업로드된 게임 엔터테인먼드 업종의 평균 PER을 계산한다.

그리고 이를 각 업체의 EPS에 곱하여 적정 가격을 구한다.

이러한 것은 아래의 코드로 간단히 구현한다.

PER_Mean = df.PER.mean()

df['적정가격'] = PER_Mean * df['EPS']

 

평균은 .mean 함수를 이용하여 쉽게 구할 수 있고 각 EPS coulumn의 값과 곱하여 그 결과로 새로운 ‘적정 가격’이란 column을 만들어 저장한다.

 

결과는 아래와 같다.

종목별 적정가격 계산
(종목별 적정가격 계산)

 

그 다음은 현재의 주가를 계산한 적정주가로 나누고 새로운 column에 저장한다.

df['저평가_고평가_여부'] = df['현재가'] / df['적정가격']

 

위 계산의 결과 1보다 작은 수면 저평가이고 1보다 높으면 적정 가격보다 현재가가 높은 것이므로 고평가 되었다고 볼 수 있다.

그러므로 아래의 코드를 통해 쉽게 저평가와 고평가를 확인할 수 있도록 할 수 있다.

df['가치평가'] = np.where(df['저평가_고평가_여부'] < 1.0, '저평가', '고평가')

 

np.where 함수는 괄호 안의 조건이 참이면 첫 번째 있는 결과인 ‘저평가’가 출력되고 거짓이면 ‘고평가’를 출력하게 한다.

조건문을 여러 줄로 쓰지않고 한 줄로 간단히 표현할 수 있는 유용한 함수인 것 같다.

 

반응형

 

결과를 ‘가치평가’ column에 저장하며 그 결과는 아래와 같다.

종목에대한 가치평가 결과
(종목에대한 가치평가 결과)

 

다음은 얼마큼 저평가 되었는지 또는 고평가 되었는지 확인이 쉽도록 가치율을 구해본다.

가치율은 앞에서 현재주가를 적정주가로 나눈 것을 백분율로 나타내는 것이며 코드는 아래와 같다.

df['가치율'] = abs(df['저평가_고평가_여부']-1)*100

 

종목별 가치율 계산 결과
(종목별 가치율 계산 결과)

 

마지막은 저평가 되어있는 종목만을 뽑아내는 코드이다.

df[df.가치평가 == '저평가'].index

 

"가치평가" colunm에 있는 내용 중 저평가로 표시된 것들에 대한 index를 출력하면 업체명이 나오게 된다. 

이를 위해 앞에서 index를 업체명으로 바꾸어 주었다.

 

저평가 종목 출력
(저평가 종목 출력)

 

 

여기까지 파이썬을 이용하여 주가의 저평가 또는 고평가 여부를 분석하는 내용에 대해 알아봤다.

파이썬은 이러한 데이터 분석을 하는데 몇 줄 안 되는 코드로 가능할 만큼 확실히 파이썬은 쉬우면서도 강력한 툴인 것 같다.

 

참고로 여기서 얘기한 PER은 주가를 분석하는 지표 중 하나로서 실제 기업에 대한 가치를 포함하고 있는 것이 아니므로 투자 시에 참고만 해야 할 것이다. 

 

반응형

댓글