본문 바로가기
데이터 분석/데이터 분석

Dart_fss 모듈을 활용한 배당금 예측 (그리고 실패)

by thomasito 2022. 1. 17.
반응형

내 배당금은 얼마일까?

 배당금 시즌이 다가오고 있다. 배당락일은 12월 말이기 때문에 이때 까지 보유한 사람들은 내가 배당금을 받을 주주 명부에는 들어가 있다는 것은 알고 있다. 하지만 배당금을 얼마나 받을지는 2월이나 되어야 회사에서 공시하고 있다. 그래서 사람들은 2개월 동안 내가 배당금을 얼마나 많이 받을지 궁금해 한다. (이것은 내 블로그의 배당금 관련 트래픽에서도 확인된다.)

 

 그래서 나는 이런 생각을 해보았다. 배당금 지급액 / 당기순이익 (=주당배당금 DPS /주당순이익 EPS)을 배당성향이라고 하며 회사가 번 돈 대비 얼마나 배당을 하는지를 나타내는 지표이다. 물론 정확하지는 않지만 1월에 잠정 실적이 발표되면 이 잠정 당기순이익과 전년도 배당성향을 곱하여 배당금을 추측해보지 않을까 생각을 해보았다.

 

올해 배당금지급액 추정 = 전년도 배당성향 * 전년도 재무제표기준 잠정 당기순이익

 

 그렇다면 회사별로 배당금 지급액/당기순이익을 어디서 구할지 뒤적 뒤적 거리다 보니까 DART 전자공시시스템에서 던져주는 API를 기초로 개발한 DART-FSS라는 놀라운 모듈을 어떤 능력자 분께서 개발해두셨다.

 

DART_FSS 모듈 기초

 다행히 어떤 능력자 개발자 분께서 DART에서 제공한 OPEN API를 활용할 수 있는 DART-FSS 모듈을 개발해 놓으셨다. 먼저 DART 전자공시에서 OPEN API를 제공하고 있는데 우선 이것을 신청해야 DART-FSS 모듈을 활용할 수 있다. 아래 페이지로 접속해서 API key를 발급받아야 한다.

https://opendart.fss.or.kr/mng/userApiKeyListView.do

 

전자공시 OPENDART 시스템 | 로그인

 

opendart.fss.or.kr

그리고 기본적으로 DART_FSS 모듈에 대한 자세한 설명은 아래 사이트를 참조하면 된다.

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

 

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

© Copyright 2021, Sungwoo Jo Revision 816d0fc6.

dart-fss.readthedocs.io

 

우선 인증키 입력위치에 인증키를 복사 붙여넣기로 넣어주고, 공시된 회사리스트를 불러온다.

# Open DART API KEY 설정

api_key='인증키 입력위치<<<<<여기!!!'
dart.set_api_key(api_key=api_key)

# DART 에 공시된 회사 리스트 (코드명, 회사명)
corp_list = dart.get_corp_list()

 dart 기준으로 등록된 기업이 89000개 정도 되고 아래와 같이 '[코드명] 회사명' 이런 식으로 출력되는 것을 볼 수 있다.

 

포스코인터내셔널 재무제표 가져오기 연습

 내가 애정하는 주식인 포스코인터내셔널의 재무제표를 가져오는 연습을 해보겠다. 사실 이 모듈을 활용하면 너무너무 간단하다. 우선 POSCOI 변수에 할당된 값은 '[00124504]포스코인터내셔널'이다. 이 변수를 문자로 만든 후에 슬라이싱을 해서 '00124504'만 추출한다.

 

dart.fs.extract 를 통해 전체 재무상태표, 손익계산서, 포괄손익계산서, 현금흐름표를 모두 추출할 수 있다. POSCOI.extract_fs(bgn_de='20170101') 이렇게 추출하는 경우는 변수를 앞에 써준 후 extract_fs 함수를 쓰고 파라미터를 시작일자만 넣어주면 되고, dart.fs.extract(corp_code=corp_code, bgn_de='20120101') 이렇게 추출하는 경우는 파라미터를 회사 코드와 시작일자를 동시에 넣어주면 된다.

import dart_fss as dart

# Open DART API KEY 설정

# api_key='인증키 입력위치'
dart.set_api_key(api_key=api_key)

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

# 포스코 인터내셔널 검색
POSCOI = corp_list.find_by_corp_name('포스코인터내셔널', exactly=True)[0]
corp_code = str(POSCOI)[1:9]

# 2017년부터 연간 연결재무제표 
# 추출 방법 1. POSCOI.extract_fs()
fs = POSCOI.extract_fs(bgn_de='20170101')

# 추출 방법 2. dart.fs.extract(corp_code=회사코드)
fs2= dart.fs.extract(corp_code=corp_code, bgn_de='20120101')

 이렇게 재무제표를 추출한 뒤에는 fs.show('bs')나 fs['bs'] 두 가지 방법으로 각각 데이터를 데이터 프레임의 변수로 넣을 수 있다. bs (데이터프레임)나 bs2 (데이터프레임)이나 결과는 동일할 것이다.

# bs 재무상태표, is 손익계산서, cis 포괄손익계산서, cf 현금흐름표
# 방법 1. fs.show
bs = fs.show('bs')
cis = fs.show('cis')
cf = fs.show('cf')

# 방법 2. fs['bs']
bs2 = fs2['bs']
cis2 = fs2['cis']
cf2 = fs2['cf']

 액셀로 확인하고 싶으면 아래와 같이 저장하면 된다.

# 재무제표 검색 결과를 엑셀파일로 저장
fs.save()

00124504_annual.xlsx
0.05MB

 

 이렇게 추출하는 과정까지는 간편한데 데이터 프레임을 활용하는게 조금 복잡하다. 왜냐하면 재무상태표, 손익계산서, 현금흐름표가 표준화 되어있지 않아서 내가 원하는 데이터를 추출하는 데는 어려움이 있어서 조금만 더 고민하고 어떻게 디벨롭할 수 있을지 고민을 좀 해봐야 겠다.

반응형

댓글