본문 바로가기

API

[FinanceDataReader] 주가 및 CAGR(연평균 성장률) 확인

반응형

FinanceDataReader를 이용해서 주가를 확인하고 CAGR을 계산해보겠습니다.

 

FinanceDataReader의 설치 및 기본 사용법이 필요하신 분은 1번 참조 부탁드립니다. 

 

1. FinanceDataReader 설치 및 주가정보확인(Skip가능)

2. 주가 확인 및 CAGR계산

 

1. FinanceDataReader 설치(Skip가능)

https://yenpa.tistory.com/19

 

[FinanceDataReader] 설치 및 주식 주가 정보 가져오기(코스피, 코스닥)

국내 주식 정보를 가져와 보겠습니다. FinanceDataReader의 수집데이터의 변경이 있었네요. 내용 수정했습니다(2022/11/09) 1. FinanceDataReader 설치 2. 종목 정보 가져오기 3. 주가 정보 가져오기 1. FinanceDataR

yenpa.tistory.com

 

2. 주가 확인 및 CAGR계산

필요 라이브러리 import 하고 거래소 전체 회사 리스트를 저장합니다.

import FinanceDataReader as fdr
df_list=fdr.StockListing('KRX')

삼성전자의 주가를 2010-01-01 ~ 2022-10-30까지 불러옵니다.

name='삼성전자'
df_filter=df_list.loc[df_list['Name']==name]
code=df_filter['Code'].values[0]
startdate='2010-01-01'
enddate='2022-10-30'

df_result=fdr.DataReader(code,startdate,enddate)
df_result

 

일별 누적수익률을 계산해보겠습니다.

2022-10-28일 기준으로 258%의 누적수익률이 확인이 됩니다.(매수기준은 2009-12-30 Close : 15980)

df_result['누적수익률']=((df_result['Change'] + 1).cumprod()-1)
df_result['누적수익률(%)']=df_result['누적수익률']*100
df_result['누적수익률(%)']

 

CAGR을 계산해 볼까요

wikipedia의 계산식 정의는 아래와 같습니다.

CAGR = (마지막날주가/시작날주가) ^ (1/경과년도) - 1

인데 

(마지막날주가/시작날주가)  = (df_result['누적수익률'] +1)의 마지막 날 데이터와 같습니다.

 

코드로 확인해보겠습니다.

cagr_result=df_result['누적수익률']+1

경과년도=(cagr_result.index[-1]-cagr_result.index[0]).days / 365
cagr = cagr_result.iloc[-1] ** (1/경과년도) -1

print('CAGR은 ' + str(cagr * 100) + '% 입니다.')

 

 

그래프로 누적수익률 변화를 살펴볼까요

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style("whitegrid")
plt.rc('font', family='NanumGothic') 

sns.lineplot(data=df_result,x=df_result.index,y='누적수익률(%)')
plt.title('삼성전자 2010년~2022년의 누적수익률')
plt.show()

 

 

이상으로 FinanceDataReader를 이용해서 주가를 확인하고 CAGR을 계산해봤습니다.

반응형