Downloading and analyzing historical annual reports through crawling DART (Repository of Korea's Corporate Filings)
Update: Debt-to-equity ratio and operating margin graphs are added to the analysis code in dart_xls.ipynb.
- Clone this repository
- Download the needed libraries through running requirements.txt (type
pip install -r requirements.txt
in your command prompt and run)- If for some reason this doesn't work and an error occurs, try requirements_full.txt (
pip install -r requirements_full.txt
)
- If for some reason this doesn't work and an error occurs, try requirements_full.txt (
- (If you didn't already) Get an API Key from DART by going to this link and following their directions
- In the same folder that you cloned, add a simple text file with the given key and name it
api_key.txt
- Open dart_crawling.ipynb on Jupyter Notebook and run the code
- Input the information as directed (items such as company name). Running this code will download all annual reports for the given company and organize them neatly in folders
- Open dart_xls.ipynb on Jupyter Notebook and run the code
- Select a company that you downloaded annual reports for already
- You can check a company's total debt and equity trend as well as their debt-to-equity ratio trend over the years
- You can check a company's total operating profit and sales as well as their operating margin trend over the years
Below are example charts using Kakao corporation's data:
- http://quantkim.blogspot.kr/2018/01/dart-api-with.html
- http://tariat.tistory.com/31
- https://woosa7.github.io/fss_dart/
- dart_xls.ipynb is not 100% foolproof because the formatting of balance sheets are slightly different from company to company. If you discover a company that doesn't work, please let me know by raising an issue and I will look into fixing it as soon as I can.
- In addition, since error-handling is not perfect either, there may be a chance that the code fails silently and doesn't tell you an error occurred. Also, please let me know if you discover this.
- Finding a variable called
dm_no
was not easy, and could be done better using RegEx. May get on this in the future. - We only look at annual reports in this code, but DART has many other types of corporate filings that could be interesting to look into. The homepage's own API development guide demonstrates a wide variety of using their data, so this is only scratching the surface.
전자공시시스템 크롤링으로 한 회사의 역대 사업보고서 다운받기 및 트렌드 확인하기
전자공시시스템에서 한 회사의 역대 사업보고서를 한 번에 다운받는 script입니다.
Update: 부채비율 및 영업이익률 그래프 추가하였습니다. (dart_xls.ipynb)
- 다음 repository를 클론합니다
- requirements.txt를 이용해 필요한 라이브러리를 설치합니다. (
pip install -r requirements.txt
)- 만약 어떠한 이유로 계속 오류가 발생한다면 좀 더 강력한 조치로 requirements_full.txt를 이용해 전체 라이브러리 설치를 시도해봅니다.
- (아직 없다면) DART API Key 발급페이지에 접속해 API key를 발급받습니다 (쉬워요)
- 동 폴더에
api_key.txt
라는 텍스트파일을 만들어 발급받은 KEY를 저장합니다 - dart_crawling.ipynb를 Jupyter Notebook에서 열어 실행시킵니다
- 회사명 등의 입력사항을 넣으면 파일이 다운로드 됩니다
- dart_xls.ipynb를 Jupyter Notebook에서 열어 실행시킵니다
- 앞서 다운받은 회사의 사업보고서 중 하나를 선택해 회사명을 입력합니다
- "재무제표 크롤링"을 통해 연도별 총 자본ㆍ부채 규모 그래프를 확인할 수 있습니다
- "손익계산서 크롤링"을 통해 연도별 매출ㆍ영업이익 현황을 확인할 수 있습니다
아래는 카카오 데이터로 그린 그래프입니다:
- http://quantkim.blogspot.kr/2018/01/dart-api-with.html
- http://tariat.tistory.com/31
- https://woosa7.github.io/fss_dart/
- dart_xls.ipynb는 어느수준 정형화된 엑셀 데이터를 크롤링한 것이기 때문에 버그가 있을 수 있습니다. 해 봤는데 안 되는 회사명이 있으면 알려주세요! 조사해보고 코드를 업데이트하도록 하겠습니다
- 이에 더불어, error-handling을 완벽하게 하지 않았기 때문에 코드 자체에서 에러가 나오지 않더라도 틀린 데이터를 가져오는 경우가 있을 수 있습니다. 이 부분도 보이는 대로 알려주세요
- Regular Expressions를 사용하면
dm_no
같은 변수를 찾거나 폴더명을 정렬하는 게 좀 더 간편할 것 같아요. - 사업보고서는 코드가 A001인데, 이것 외에도 다운받을 수 있는 공식 문서들이 굉장히 많습니다 (홈페이지의 API 개발가이드 중 "상세 유형" 보면 이것저것 많이 나와있어요). 근데 어떤 방식으로 다운 받는 게 목적에 부합할 지 확신이 안 서서 우선은 사업보고서만 다운받는 형식으로 구성했습니다