josw123 / dart-fss

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

종목코드 068940의 반기보고서 (2019.06)의 xbrl에서 포괄손익계산서(cis) 추출시 비정상적인 결과 #123

Closed sukwoo1414 closed 1 year ago

sukwoo1414 commented 1 year ago

좋은 라이브러리 만들어주셔서 감사히 쓰고있습니다. 제목대로 068940의 2019.06 반기보고서에서, analyze_xbrl()함수를 직접 호출하여 xbrl에서 재무제표를 추출할 경우 bs와 cf는 정상적인 결과(실제 보고서의 내용과 동일)가 출력되는데 cis의 경우에만 아래와 같은 결과가 나옵니다.

,"[D431415] Statement of comprehensive income, by function of expense - Separate financial statements (Unit: KRW)","[D431415] Statement of comprehensive income, by function of expense - Separate financial statements (Unit: KRW)","[D431415] Statement of comprehensive income, by function of expense - Separate financial statements (Unit: KRW)"
,concept_id,label_ko,label_en
0,dart_CostOfSalesFromRenderingOfServicesDistribution,물류매출원가/유통매출원가,Cost of sales from rendering of services distribution
1,entity00308896_udf_IS_201973110271932_CostOfSalesFromRenderingOfServicesDistribution,새 계정과목 (1),"
    "

확인결과 dart.fss.or.kr에서 검색한 해당 보고서에 첨부된 xbrl 원본파일에는 데이터가 정상적으로 들어가 있는것으로 보입니다. 확인해주시면 감사하겠습니다.

josw123 commented 1 year ago

안녕하세요.

아래와 같이 확인해보니 최신 버전에서 문제 없이 동작되는 것으로 생각됩니다.

import dart_fss as dart

corp_list = dart.get_corp_list()
corp = corp_list.find_by_stock_code('068940')

# 2019-06-01~2020-01-01 사이의 반기보고서만 추출
# 이 경우에는 2019.06 반기보고서만 존재하므로 2019.06 반기보고서만 추출
fs = corp.extract_fs(bgn_de='20190601', end_de='20200101',report_tp=['half'])

# 추출된 정보 요약
print(fs)

# {'bgn_de': '20190601',
#  'corp_code': '00308896',
#  'end_de': '20200101',
#  'financial statement': [{'title': '[D210000] Statement of financial position, '
#                                    'current/non-current - Consolidated '
#                                    'financial statements (Unit: KRW)'},
#                          {'title': 'is is None'},
#                          {'title': '[D431410] Statement of comprehensive '
#                                    'income, by function of expense - '
#                                    'Consolidated financial statements (Unit: '
#                                    'KRW)'},
#                          {'title': '[D520000] Statement of cash flows, '
#                                    'indirect method - Consolidated financial '
#                                    'statements (Unit: KRW)'}],
#  'lang': 'ko',
#  'report_tp': ['half'],
#  'separate': False,
#  'separator': True}
fs.save()

추출된 정보는 다음 첨부파일과 같습니다. 00308896_['half'].xlsx

내용을 보시면 cis도 올바른 결과가 추출되는 것으로 확인됩니다. 혹시 안되시거나 제가 잘못이해한 것이면 추가적으로 코드나 실행환경을 첨부하여 알려주시면 감사하겠습니다.

sukwoo1414 commented 1 year ago

제가 깜빡하고 별도 재무제표인것을 말씀드리지 않았네요. 위 코드에서

fs = corp.extract_fs(bgn_de='20190601', end_de='20200101',report_tp=['half'])

fs = corp.extract_fs(bgn_de='20190601', end_de='20200101',report_tp=['half'], separate=True)

로 수정하고 fs['cis']를 확인해보면 제 환경에서는 테이블이 이상하게 나옵니다. dart-fss 라이브러리 버전은 최신입니다.

josw123 commented 1 year ago

안녕하세요.

올려 주신 버그를 확인해보니, 회사에서 첨부한 XBRL 파일 내부에 일부 잘못 작성된 데이터로 인해 발생하는 문제로 파악되었습니다.

코드 일부를 수정하면 해결되는 문제이므로 다음 버전에 해당 버그를 수정하여 배포하도록 하겠습니다.