프로그래머의 지혜/Python_파이썬

[재테크 파이썬] 금융감독원 전자공시 분석기 만들기 - 0

LonleyEngineer 2023. 4. 29. 20:53
반응형

※ 제가 쓴 글이 모두 옳지 않을 수 있습니다. 날선 비판보다는 좋은 알고리즘이나 수정할 부분이 있으면 의견 남겨주시면 겸허히 수용하겠습니다.

 

 

 

1. 시작하며

- 요즘 코딩을 그냥 하는 것 보다 급관심이 생겨서 하고 있는 재테크와 관련된 코딩을 해서 유용하게 사용하면 어떨까 하는 생각이 들어 그 일환으로 요즘 보고 있는 책의 내용을 이해하며 활용해보기 위해 재무제표 전자공시 정보를 분석하는 프로그램을 만들기로 했다.

 

이름은 "(가칭)금융감독원 전자공시 분석기"이다. 만들다가 괜찮은 이름이 생각나면 제대로 이름도 지어주려고 한다.

 

이 프로그램을 개발하는 목적은 사실 단순하면서도 굉장히 중요한 이유가 있어서이다.

워렌버핏의 투자 규칙에서 출발한 것이다.

1. 돈을 절대 잃지 마라.(Never lose money)
2. 1번 규칙을 잊지 마라.(Never forget rule No.1)

라는 말때문이다. 정말 단순한 말이지만 아주 많은 사람들이 지키지 못하고 나역시도 지키지 못할 가능성이 높은 원칙이다.

수익이 손실 때문에 빛을 못보는 상황을 만들지 않기 위해 일명 손실을 최대한 줄이는 낙법을 잘치기 위해서 공시를 분석해보고 싶어서 였다.

 

 

 

2. 준비사항

- 나는 pycharm IDE를 사용한다. 그래서 pycharm 기준으로 설명하려고 한다. 

 

① DART-FSS 모듈 설치

- 대한민국 금융감독원에서 운영하는 DART(다트) 사이트의 정보를 크롤링하고 재무제표를 입맛에 맞게 추출할 수 있도록 도와주는 라이브러리 이다. 정말 이 모듈 만드신분 상줘야 한다고 생각한다. 이걸 쌩으로 처음부터 하려고 했다면 엄청 고생이 많았을 것이다.

 

모듈 정보의 사이트는 다음과 같다.

https://pypi.org/project/dart-fss/

 

dart-fss

Web-scraping https://dart.fss.or.kr

pypi.org

 

사용법 관련 도큐먼트 사이트는

https://dart-fss.readthedocs.io/en/latest/

 

DART-FSS — dart-fss documentation v0.3.10 documentation

© Copyright 2021, Sungwoo Jo Revision 3a8f0b92.

dart-fss.readthedocs.io

 

 

 

설치는 간단하다. pycharm의 경우 프로젝트를 만들고 file-settings-project:프로젝트명 settings -> project interpreter 에서 '+' 버튼을 눌러 모듈을 검색하고 추가해주면 된다.

 

 

pip를 이용한 설치는

pip install dart-fss

만 해주면 된다.

 

 

② OpenDART API Key 발급받기

-  dart-fss 모듈의 설명페이지를 보니 

import dart_fss as dart

# Open DART API KEY 설정
api_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
dart.set_api_key(api_key=api_key)

# DART 에 공시된 회사 리스트 불러오기
corp_list = dart.get_corp_list()

# 삼성전자 검색
samsung = corp_list.find_by_corp_name('삼성전자', exactly=True)[0]

# 2012년부터 연간 연결재무제표 불러오기
fs = samsung.extract_fs(bgn_de='20120101')

# 재무제표 검

API Key가 필요하였고 키의 신청은

https://opendart.fss.or.kr/

 

전자공시 OPENDART 시스템

--> 시스템 점검으로 모든 서비스 이용이 일시적으로 중단되어니 양해 부탁드립니다. 시스템 점검 일정 2019년12월30일 23:00 ~ 12월31일 24:00 (1시간) *상기 작업 시간은 사정에 의해 변경 될 수 있습니

opendart.fss.or.kr

에서 신청이 가능하였다. email을 이용하여 인증을 받고 계정을 생성한 다음 로그인하면 계정정보에 API Key가 발급되어 있음을 확인할 수 있다.

API키는 웹용과 앱용, 둘다 선택이 가능한데 언제 어떻게 써먹을지 모르니 둘다로 신청해봤다.

 

③ 테스트 해보기

- 일단 발급받은 API Key를 이용해서 위 예제의 Quick Starts 코드를 실행해보았다.

기본 예제는 역시 한국의 대표기업인 삼성전자의 공시를 불러오는 것이었다.

 

실행해보면 

이렇게 나오며 2012년 1월 1일부터의 재무제표를 크롤링한다음 실행폴더/fsdata 하위에 생성해주는 것을 확인할 수 있었다.

생각보다 양이 방대한지 한참을 받아온다.

 

한참을 기다려 생성된 데이터를 보니 엑셀파일 형태이다. 하지만 파일 사이즈는 굉장히 작아서 놀랬다. 

아마도 모듈 개발자의 설명에서처럼 분당 100회 이상의 API 요청이 있는 경우 문제가 생기기 때문에 천천히 받아서 그런 것이 아닌가 싶다.

 

파일명은 종목코드가 아닌 기업코드로 되어 있다. 파일을 열어보면 다음과 같이 되어 있다.

 

여러 시트가 있고 시작연도(bgn_de) 부터 기업코드(corp_code) 등이 기록되어 있다. 다른 시트에는 우리가 일반적으로 보는 재무제표에 있는 내용이 표로 작성되어 나온다.

 

④ 준비과정을 마치며 - 앞으로의 계획

- 일단 코드 동작은 잘되는 것이 확인되었다. 앞으로 이것으로 무엇을 어떻게 할 것인지는 좀 더 많이 생각해봐야겠다.

우선은 가져온 정보를 PySide6을 이용하여 UI에 표시해주고 원하는 조건대로 필터링 하고 보여주는 프로그램을 목표로 진행하고자 한다.

 

코스피(KOSPI) 시총순 10대 기업이야 딱히 내가 재무제표를 안봐도 크게 문제가 안되지만 코스닥기업이나 아차 하는 순간에 나락가는 종목을 투자하기 앞서 손실날 가능성이 있는지 손실을 보더라도 들어갈 가치가 있는지 판단하기 위한 기초정보를 얻기 위해서이다.

 

 

개발이 주업이 아니다보니 속도가 안날 수 있지만 주식투자에서 낙법을 잘치고 싶으니 끝까지 해서 결실을 만들어야겠다.

 

반응형