본문 바로가기
Python

파이썬을 이용한 주식 연 수익률 계산

by 아짱이아빠 2022. 4. 1. 22:25
반응형

파이썬을 이용하여 관심 있는 종목의 주가를 가져와서 각 종목의 연 수익률을 구하는 방법에 대해 정리하였다.

 

연 수익률을 계산하는 방법은 먼저 일일 수익률을 계산하고 이에 대한 평균을 구한다.

이 평균에 년 거래 일수 약 252일을 곱한다.

비교적 간단한 계산이고 파이썬 코드도 이전 글에서 모두 알아봤던 내용이다.

 

우선 필요한 모듈을 불러온다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import FinanceDataReader as fdr

위의 코드에서 마지막에 있는 부분은 주식 데이터를 받아오기 위한 모듈이다.

 

다음의 코드는 원하는 주식 종목을 2019년도부터 현재까지 불러와서 각 변수에 저장한다.

#삼성전자
stock_data_1 = fdr.DataReader('005930', '2019')

#LG디스플레이
stock_data_2 = fdr.DataReader('034220', '2019')

#호텔신라
stock_data_3 = fdr.DataReader('008770', '2019')

#제일기획
stock_data_4 = fdr.DataReader('030000', '2019')

#유니셈
stock_data_5 = fdr.DataReader('036200', '2019')

#현대바이오
stock_data_6 = fdr.DataReader('048410', '2019')

#삼성SDI
stock_data_7 = fdr.DataReader('006400', '2019')

#네이버
stock_data_8 = fdr.DataReader('035420', '2019')

#SK하이닉스
stock_data_9 = fdr.DataReader('000660', '2019')

#카카오
stock_data_10 = fdr.DataReader('035720', '2019')

다음은 각 변수 stock_data_x에 저장된 각 종목의 데이터를 하나의 데이터 프레임의 column에 넣는다.

그러기 위해서 먼저 빈 dataframe인 new_data를 만들고 여기에 각 종목별 column을 만들어 위의 변수에 있는 정보를 넣는다.

new_data = pd.DataFrame()

new_data['삼성전자'] = stock_data_1['Close']
new_data['LG디스플레이'] = stock_data_2['Close']
new_data['호텔신라'] = stock_data_3['Close']
new_data['제일기획'] = stock_data_4['Close']
new_data['유니셈'] = stock_data_5['Close']
new_data['현대바이오'] = stock_data_6['Close']
new_data['삼성SDI'] = stock_data_7['Close']
new_data['네이버'] = stock_data_8['Close']
new_data['SK하이닉스'] = stock_data_9['Close']
new_data['카카오'] = stock_data_10['Close']

 

여기까지의 결과는 아래와 같다.

하나의 데이터프레임으로 만든 주식 종목별 종가 데이터
(하나의 데이터프레임으로 만든 주식 종목별 종가 데이터)

데이터는 2019년 1월부터 2022년 3월까지 약 3년간의 데이터이다.

 

이제 일일 수익률을 구한다.

파이썬에서 일일 수익률은 .pct_change() 함수로 쉽게 구할 수 있다.

daily_simple_returns = new_data.pct_change()

위와 같이 일일 수익률은 daily_simple_returns 변수에 저장된다.

 

다음은 연 수익률 계산이다.

글 앞에서 언급했듯이 연 수익률은 일일 수익률 평균에 대략적인 년간 거래일수인 252를 곱하여 구한다.

annualized_returns = daily_simple_returns.mean()*252

 

이렇게 구한 연 수익률 결과는 다음과 같다.

주식 종목별 연 수익률 결과
(주식 종목별 연 수익률 결과)

 

반응형

 

여기서 연 수익률이 높은 순서데로 정리하려면 아래와 같이 한다.

sorted_annualized_returns = annualized_returns.sort_values(ascending=False)

sorted_annualized_returns = annualized_returns.sort_values(ascending=False)

 

마지막은 앞에서 구한 결과를 Bar 그래프로 표현하는 것이다.

plt.bar(sorted_annualized_returns.index, sorted_annualized_returns)
plt.ylabel('연 수익율')
plt.xlabel('주식 종목')
plt.title('주식 종목별 연 수익률')
plt.xticks(rotation = 90)

 

참고로, google colab에서는 matplotlib 그래프에 한글을 표현하기 위해서는 다음과 같은 추가적인 설치가 필요하다. 

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

그리고 설치 이후에는 다음의 코드와 함께 전체 런타임을 재실행해 준다.

plt.rc('font', family='NanumBarunGothic')

 

한글 글씨체도 추가하여 그래프로 결과를 보면 다음과 같다.

 

주식 종목별 연 수익률 결과 그래프
(주식 종목별 연 수익률 결과 그래프)

 

 

개인적으로 관심있는 주식 종목 10가지에 대해서 3년간 데이터를 받아 연 수익률을 계산하고 이에 대한 결과를 그래프로 표현해 보았다.

현대바이오가 90%가 넘는 가장 높은 연 수익률을 보였고 그다음은 카카오로 약 60% 수익률이었다.

제일 낮은 연 수익률은 제일기획이며 약 8% 수준이다.

 

관심 있는 종목에 대해 이와 같이 연 수익률을 계산해보면 투자에 도움이 될 것 같다.

 

반응형

댓글