안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
<DART-FSS 관련 지난 글>
2021.06.10 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 1편_ DART API와 DART-FSS 패키지 소개
2021.06.22 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 2편_ 상장된 회사 재무제표 EXCEL로 저장하기
2021.06.25 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 3편_특정회사 혹은 특정 공시유형 가져오기
2021.06.27 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 5편_dart-fss 재무제표 다운로드 안될 때 해결법
이번 시간에 배울 내용은 XBRL을 추출하는 방법입니다.
그런데 도대체 XBRL이 뭘까요? 궁금해서 찾아봤습니다.
XBRL이란?
XBRL(eXtensible Business Reporting Language)은 기업의 비즈니스 리포트에서 복잡한 기업 정보가 보다 더 효율적으로 생성, 교환, 비교될 수 있도록 하기 위하여 XML(eXtensible Markup Language)을 비즈니스 리포팅 영역에 응용한 표준입니다. 주로 재무제표와 같은 재무 정보를 정의하고 교환하는 일에 사용한다고 합니다.
자세한 내용은 아래의 글을 참고해주세요.
https://www.2e.co.kr/news/articleView.html?idxno=210265
그럼 지금부터 dart-fss 패키지에서 어떻게 XBRL 파일을 추출하고 사용할 수 있는지 알아보겠습니다.
XBRL 데이터 추출
XBRL 파일을 추출하는 방법은 아주 간단합니다. 복잡한 설명보다 코드로 설명드리겠습니다.
# 삼성전자 code
corp_code = '00126380'
reports = dart.filings.search(corp_code=corp_code, bgn_de='20210101', pblntf_detail_ty='a001')
# 가장 최신 보고서 선택
report = reports[0]
# report에서 xbrl 파일 추출
xbrl = report.xbrl
2021.06.25 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 3편_특정회사 혹은 특정 공시유형 가져오기
지난 글에서 아직 report에 들어가있는 데이터를 어떻게 사용할지 모르겠다고 했던 것 기억하시나요?
바로 그 report에 .xbrl만 붙여주면 report의 데이터를 종류별로 꺼내어 쓸 수 있습니다. (모두 다는 아니고 특정 데이터들만 가능합니다)
어떻게 꺼내어 쓰는지는 아래에서 설명드리겠습니다.
XBRL 데이터 분석
방금 전 추출한 xbrl 안에는 수 많은 데이터들이 분류되어 있습니다. 각각의 데이터들을 아래의 함수들로 가져올 수가 있답니다.
메소드 | 기능 | 매개변수 | 반환 자료형 |
exist_consolidated( ) | 연결 재무제표 존재 여부 확인 | - | True/False |
get_cash_flows( ) | 현금흐름표 | separate = True or False (True: 개별, False: 연결) 미입력 시, False가 기본값 |
list of Table (여기서 Table은 DataFrame과 같은 말) |
get_changes_in_equity( ) | 자본변동표 | ||
get_financial_statement( ) | 재무상태표 | ||
get_income_statement( ) | 포괄손익계산서 | ||
get_audit_information( ) | 감사 정보 | lang = 'ko' or 'en' 미입력 시, 'ko'가 기본값 |
DataFrame |
get_author_information( ) | 작성자 정보 | ||
get_document_information( ) | 공시 문서 정보 | ||
get_entity_address_information( ) | 주소 정보 | ||
get_entity_information( ) | 공시 대상 정보 | ||
get_financial_statement_information( ) | 재무제표 정보 | ||
get_period_information( ) | 공시 문서 기간 정보 | ||
get_table_by_code( ) | Table 코드와 일치하는 Table 반환 | code = 'Table 코드번호' 꼭 입력해주어야 함 |
Table or None |
<예시 코드>
연결재무제표 존재 여부 확인 (True / False)
xbrl.exist_consolidated()
>>> True
연결 현금흐름표 추출
# 연결 현금흐름표 추출 (리스트 반환)
list_cf = xbrl.get_cash_flows()
# 연결 현금프름표 출력
cf = list_cf[0]
>>> {'code': 'D520000', 'definition': '[D520000] Statement of cash flows, indirect method - Consolidated financial statements'}
해당 내용을 Pandas 패키지의 DataFrame 형태로 나타내는 방법은 아래에서 이어서 설명드리겠습니다.
공시 작성자 정보 출력
# 공시 작성자 정보
xbrl.get_author_information( )
재무제표 4종 DataFrame으로 가져오기
사실 재무제표를 가져오는 방법은 지난 글에서도 소개드린 적이 있습니다. 개인적으로 생각하기에 재무제표를 가져오는 것이 목적이라면 아래의 글에서 소개드린 방법을 추천드리지만, 그래도 이런 방법이 있다는 정도만 설명드리고 넘어가도록 하겠습니다.
(*여기까지 공부하고 보니 지난 시간에 배웠던 dart.fs.extract( ) 함수가 xbrl 문서를 다운로드 받는 것이었다는 것을 알 수 있었습니다.)
연결 현금흐름표 DataFrame 추출
# 연결 현금흐름표 추출 (리스트 반환)
list_cf = xbrl.get_cash_flows()
# 연결 현금흐름표 출력
cf = list_cf[0]
# 연결 현금흐름표 DataFrame 형태로 출력
cf.to_DataFrame()
출력 결과는 너무 길어서 5개만 잘라서 캡쳐했으니 직접 확인해보시면 좋을 것 같아요.
오늘 배운 내용은 아래의 참고자료를 참고하였으며, 필요하다고 생각되는 내용만 다루었습니다.
더 자세한 내용이 필요하신 분은 아래의 링크를 참고해주세요.
오늘을 마지막으로 dart-fss 사용법에 대한 내용은 모두 다루어보았습니다. 하지만 dart-fss라는 패키지를 공부해보니 함수는 다르나 중복되는 결과들이 많아서 총정리를 할 필요성을 느낍니다.
다음에는 지금까지 배운 dart-fss 패키지에서 목적별로 어떤 함수를 사용하는 것이 좋을지 정리하는 시간을 가지도록 하겠습니다.