josw123 / dart-fss

한국 금융감독원에서 운영하는 다트(Dart) 시스템 크롤링을 위한 라이브러리
https://github.com/josw123/dart-fss
MIT License
319 stars 111 forks source link

22년도 재무제표 추출 오류 문의 #146

Closed 0x68756d8616e6f69664 closed 8 months ago

0x68756d8616e6f69664 commented 8 months ago

안녕하세요. dart-fss API를 너무나도 쉽게 활용할 수 있게 해주셔서 먼저 감사드립니다. 다른건 아니고 #143 제보 후 추출에 관해 이상한 점이 있어서요.

아래와 같은 코드로 진행하였습니다.

import sys import dart_fss as dart from dart_fss.fs.extract import analyze_xbrl

print(f'Python {sys.version} \ndadrt-fss version: {dart.version}')

dart.set_api_key(api_key=api_key)

corp_list = dart.get_corp_list()

corp = corp_list.find_by_stock_code('095570') reports = dart.search(corp_code=corp.corp_code, bgn_de = '20220101', end_de = '20231130', pblntf_ty='a')

fs_list = [] for report in reports: fs = analyze_xbrl(report, separate=True, show_abstract=False, show_class=False, show_concept=True) fs_list.append(fs)

print(fs_list[0]['bs']['20220930'])

결과물은 아래와 같습니다. 제가 기존에 사용했던 결과물이랑 비교해보니 NaN으로 추출되는 것은 옳지 않은 것 같아서요? 확인 부탁드려요. *티커 무관하게 발생하는 것으로 보아 모든 케이스에 적용되는 것 같긴합니다.

Python 3.8.16 (default, Mar 2 2023, 03:18:16) [MSC v.1916 64 bit (AMD64)] dadrt-fss version: 0.4.5 (별도재무제표,) 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 NaN 9 NaN 10 NaN 11 NaN 12 NaN 13 NaN 14 NaN 15 NaN 16 NaN 17 NaN 18 NaN 19 NaN 20 NaN 21 NaN 22 NaN 23 NaN 24 NaN 25 NaN 26 NaN 27 NaN 28 NaN 29 NaN 30 NaN 31 NaN 32 NaN 33 NaN 34 NaN 35 NaN 36 NaN 37 NaN 38 NaN 39 NaN 40 NaN 41 NaN 42 NaN 43 413,745,414,283.0 44 NaN

josw123 commented 8 months ago

안녕하세요.

올려주신 NaN 문제는, DART에 공시되는 2023년 XBRL 파일에 2022년 09월 30일 데이터가 자본총계만 존재하기 때문에 발생하는 문제입니다.

올려주신 코드를 분석하면 AJ네트워크(095570)의 2023년 9월 분기 보고서의 XBRL 데이터를 추출하게 되는데

2023년 9월 AJ네트워크 분기보고서의 XBRL Viewer를 보면 아래와 같이 2022년 09월 30일 데이터가 빠져있는 것을 확인할 수 있습니다.

Screenshot 2023-11-24 at 9 57 52 PM

즉, 대부분의 2022년 3분기 데이터는 XBRL 파일에는 2022년 3분기 데이터가 없기 때문에 NaN으로 표기되는 것이며, 오직 자본총계 데이터만 XBRL 추가 처리를 위해 포함된 것으로 생각됩니다.

다른 티커에서도 동일한 형태로 공시되기 때문에 위와 비슷하게 데이터 추출이 됩니다.

extract 혹은 extract_fs 함수를 사용하시는 경우에는 일정 기간의 공시정보를 모두 추출하여 합쳐서 출력하기 때문에 이러한 문제가 대부분 발생하지 않습니다.

0x68756d8616e6f69664 commented 8 months ago

import dart_fss as dart

Open DART API KEY 설정

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='20220101', report_tp='quarter')

재무제표 검색 결과를 엑셀파일로 저장 ( 기본저장위치: 실행폴더/fsdata )

fs.save()

-> 샘플 코드로도 동일한 결과 같은데 (NaN) dart에서 제공되는 정보가 불완전하기 때문에 기존처럼 추출하는 데 사용하는건 불가능으로 보는게 맞는건가요?

josw123 commented 8 months ago

확인해 보니, NaN으로 인해 문제가 생기는 것이 맞는거 같습니다.

코드 수정을 통해 수정이 가능한지 확인해보도록 하겠습니다.

josw123 commented 8 months ago

관련 문제 수정을 진행하였으며, 테스트 후 곧바로 배포하도록 하겠습니다.

0x68756d8616e6f69664 commented 8 months ago

애써주셔서 감사합니다.

josw123 commented 8 months ago

dart-fss v0.4.6 배포를 통해 패치되었습니다. 버그 리포트 감사합니다.