반응형
FinanceDataReader를 이용해서 지정한 년도(여기서는 2021년)의 CAGR 상위 회사를 알아보겠습니다.
CAGR계산에 대한 기본 정보는 1번에서 확인이 가능하니 필요하신 분은 참조 부탁드립니다.
1. FinanceDataReader 주가 확인 및 CAGR계산
2. 전체 회사에 대한 CAGR계산
3. 전체 및 Market별 상위 회사 확인
1. FinanceDataReader 주가 확인 및 CAGR계산(Skip가능)
2. 전체 회사에 대한 CAGR계산
데이터 수집에 대한 전체코드 남겨드립니다.
총 2600개 정도의 회사리스트가 있고, 각 회사에 대해서 2021년 1년 치의 주가 데이터를 수집한 후
CAGR을 계산해서 전체 결과를 DataFrame에 저장하는 흐름입니다.
year='2021'
startdate=year + '-01-01'
enddate=year + '-12-31'
result_all=[]
for i, r in df_list.iterrows():
result_dic={}
#if i == 3:
# break
result_dic['name']=r['Name']
result_dic['code']=r['Code']
result_dic['market']=r['Market']
#print(result_dic['code'])
df_result=fdr.DataReader(result_dic['code'],startdate,enddate)
#6개월정도 미만은 skip
if df_result.shape[0] < 130:
continue
df_result['누적수익률']=((df_result['Change'] + 1).cumprod()-1)
cagr_result=df_result['누적수익률']+1
경과년도=(cagr_result.index[-1]-cagr_result.index[0]).days / 365
result_dic['cagr'] = cagr_result.iloc[-1] ** (1/경과년도) -1
result_dic['cagr(%)'] = result_dic['cagr'] * 100
result_all.append(result_dic)
df=pd.DataFrame(result_all)
df
회사 리스트 정보와 cagr 계산 정보가 잘 저장이 되었습니다.
전체 회사리스트를 수집하고 각 회사별 주가 확인을 위해 for문을 넣었습니다.
df_list=fdr.StockListing('KRX')
for i, r in df_list.iterrows():
result_dic은 각 회사별 정보 및 cagr 등을 저장하는 dictionary이고,
전체 회사의 정보는 result_all list에 담았습니다.
result_all=[]
result_dic={}
회사 정보 수집 및 주가 정보를 수집하는 단계입니다.
result_dic['name']=r['Name']
result_dic['code']=r['Code']
result_dic['market']=r['Market']
#print(result_dic['code'])
df_result=fdr.DataReader(result_dic['code'],startdate,enddate)
거래일수가 6개월정도 미만의 회사는 제외했습니다.
#6개월정도 미만은 skip
if df_result.shape[0] < 130:
continue
cagr을 계산해서 result_all list에 저장했습니다.
df_result['누적수익률']=((df_result['Change'] + 1).cumprod()-1)
cagr_result=df_result['누적수익률']+1
경과년도=(cagr_result.index[-1]-cagr_result.index[0]).days / 365
result_dic['cagr'] = cagr_result.iloc[-1] ** (1/경과년도) -1
result_dic['cagr(%)'] = result_dic['cagr'] * 100
result_all.append(result_dic)
list -> DataFrame으로 변환했습니다.
df=pd.DataFrame(result_all)
3. 전체 및 Market별 상위 회사 확인
시장 전체에서의 상위 20개만 확인해볼까요.
top20=df.sort_values('cagr',ascending=False).iloc[:20,]
sns.barplot(data=top20,x='cagr(%)',y='name')
plt.title('2021년 CAGR 상위 20위 회사')
plt.show()
코스피의 경우는 아래와 같습니다.
top20_kospi=df.loc[df['market']=='KOSPI',:].sort_values('cagr',ascending=False).iloc[:20,]
sns.barplot(data=top20,x='cagr(%)',y='name')
plt.title('2021년 KOSPI CAGR 상위 20위 회사')
plt.show()
코스닥입니다.
top20_kodaq=df.loc[df['market']=='KOSDAQ',:].sort_values('cagr',ascending=False).iloc[:20,]
sns.barplot(data=top20,x='cagr(%)',y='name')
plt.title('2021년 KOSDAQ CAGR 상위 20위 회사')
plt.show()
KONEX입니다.
top20_konex=df.loc[df['market']=='KONEX',:].sort_values('cagr',ascending=False).iloc[:20,]
sns.barplot(data=top20_konex,x='cagr(%)',y='name')
plt.title('2021년 KONEX CAGR 상위 20위 회사')
plt.show()
FinanceDataReader를 이용해서 2021년의 CAGR 상위 회사를 알아봤습니다.
반응형
'API' 카테고리의 다른 글
[전자공시 Dart API] PBR 계산 및 낮은 회사 리스트 수집 (6) | 2022.11.14 |
---|---|
[공공데이터_data API] 1++ 한우 경매가 월별 트렌드 확인 (4) | 2022.11.12 |
[FinanceDataReader] 주가 및 CAGR(연평균 성장률) 확인 (4) | 2022.11.09 |
[전자공시 Dart API] 전체 상장 회사의 재무제표(단일회사 전체 재무제표) 수집 (4) | 2022.11.07 |
[전자공시 Dart API] 전체 상장 회사의 상세정보(기업개황) 수집 및 저장 (19) | 2022.11.07 |