-
퀀트 프로젝트 | CompanyGuide 재무비율 ROA, ROE 크롤링Capital/Quant 2024. 4. 5. 18:00
1. 재무비율 크롤링
이번 프로젝트에서는 CompanyGuide에서 제공하는 재무비율을 살펴볼 것이다. 아래 링크로 접속하면 CompanyGuide에서 제공하는 재무비율을 볼 수 있다. 링크를 따라 접속하면 해당 종목의 연도별 유동비율, 부채비율, ROA, ROE 등이 정리되어 있다. 종목코드를 바꿔가면서 해당 페이지를 크롤링하면 모든 종목의 재무비율을 불러올 수 있을 것이다. 이번 프로젝트에서는 앞서 만들었던 종목코드 파일을 불러온 뒤 CompanyGuide 재무비율 페이지에서 모든 종목의 재무비율, 특히 ROA와 ROE를 자동으로 크롤링하는 기능을 파이썬 코드로 구현해보자.
2. 프로젝트
# 라이브러리 추가 import requests import pandas as pd import io import time # 재무비율 ROA, ROE 크롤링 함수 def crawling_financeRatio(firm_code): url = 'https://comp.fnguide.com/SVO2/ASP/SVD_FinanceRatio.asp?pGB=1&cID=&MenuYn=Y&ReportGB=D&NewMenuID=103&stkGb=701&gicode=' + firm_code page = requests.get(url) table = pd.read_html(io.StringIO(page.text)) total_table = table[0] total_table = total_table.set_index(total_table.columns[0]) total_table = total_table.loc[['ROA계산에 참여한 계정 펼치기', 'ROE계산에 참여한 계정 펼치기']] total_table.index = ['ROA', 'ROE'] return total_table # 저장된 종목코드 불러오기 code_data = pd.read_excel('KRX_stock_list.xlsx') code_data = code_data[['Code']] # 재무비율 크롤링 for idx, firm_code in enumerate(code_data['Code']): print(idx + 1, '/', len(code_data['Code'])) try: # 종목별 재무비율 크롤링 try: sub_finance_table = crawling_financeRatio(firm_code) except requests.exceptions.Timeout: time.sleep(60) sub_finance_table = crawling_financeRatio(firm_code) # 종목별 재무비율 정리 for num, col in enumerate(sub_finance_table.columns): temp = pd.DataFrame({firm_code : sub_finance_table[col]}).T temp.columns = [[col] * len(sub_finance_table), temp.columns] if num == 0: temp_arranged = temp else: temp_arranged = pd.merge(temp_arranged, temp, how='outer', left_index=True, right_index=True) # 재무비율 통합 if idx == 0: financeRatio_table = temp_arranged else: financeRatio_table = pd.concat([financeRatio_table, temp_arranged]) except ValueError: continue except KeyError: continue # 재무비율 저장 financeRatio_table.to_excel('financeRatio_table.xlsx')
[함께 읽으면 좋은 페이지]
참고문헌
- 박준규. (2019). 퀀트 전략 파이썬으로 세워라. 비제이퍼블릭.
반응형'Capital > Quant' 카테고리의 다른 글
퀀트 프로젝트 | PER+PBR 콤보 전략 구현하기 (1) 2024.11.10 퀀트 프로젝트 | CompanyGuide 투자지표 PER, PBR 크롤링 (0) 2024.04.12 퀀트 프로젝트 | CompanyGuide 재무제표 크롤링 (0) 2024.03.29 퀀트 프로젝트 | FinanceDataReader 코스피 코스닥 종목코드 불러오기 (1) 2024.03.22 추세 지표(2): 정량 모멘텀 (0) 2024.03.15