josw123 / dart-fss

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

"현금흐름표, 간접법 - 별도재무제표"에서 비표준 계정의 값들이 대부분 누락되는 것으로 보입니다. #161

Closed ISeeTheFuture closed 4 months ago

ISeeTheFuture commented 4 months ago

안녕하세요.

"entity00378363_udf_CF_2020623172323632_AdjustmentsForReconcileProfitLoss" 와 같이 concept_id가 dart나 ifrs로 시작하지 않는 표준이 아닌 계정들이 있는데요.

"현금흐름표, 간접법 - 별도재무제표"에서는 이러한 비표준 계정들의 값들이 대부분 90% 정도 누락됩니다.

케이스를 확인해보시려면, "NAVER", "corp_code = 00266961", "반기보고서", "현금흐름표-별도"에서 "기타포괄손익-공정가치 측정 금융자산의 처분" 계정을 확인해보시면 될 것 같습니다.

공시보고서(https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20230811001363) 에는 해당 값이 존재하지만, dart_fss로 받아온 df에서는 해당 값이 존재하지 않습니다.

이 현상을 확인하고 그동안 수집했던 DB를 확인했더니, "현금흐름표, 간접법 - 별도재무제표"에서는 concept_id가 비표준이면 90%이상 값들이 누락되어 있었습니다.

OS : 윈도우10 Python 버전 : 3.10 dart-fss 버전 : 0.4.7 / 0.4.8 오류코드 : 없음

감사합니다.

ISeeTheFuture commented 4 months ago

혹시 xbrl.get_cash_flows() 함수에서 나오는 df의 개별, 별도 재무제표 값을 둘 다 쓰면 안되는 것인가요? 제가 사용법을 잘못알고 있어서 생긴 문제인가 싶네요.

separate 옵션에 따라서 concept_id의 기준으로 별도, 연결을 다르게 넣는 것으로 보여서요.

josw123 commented 4 months ago

안녕하세요.

separate 옵션에 따라 반환하는 XBRL Table이 다릅니다. 즉, separate=True 인경우 D510005으로 별도재무제표를 기준으로 반환하며, separate=False인 경우 연결재무제표의 현금흐름표를 반환하게 됩니다.

import dart_fss as dart

corp_list = dart.get_corp_list()
corp = corp_list.find_by_corp_name('NAVER', exactly=True)[0]
reports = corp.search_filings('20230101', pblntf_detail_ty='a002')

r = reports[-1]
xbrl = r.xbrl

cf1 = xbrl.get_cash_flows(separate=True)[0] # [D510005] 현금흐름표, 직접법 - 별도재무제표
cf2 = xbrl.get_cash_flows()[0] # [D510000] 현금흐름표, 직접법 - 연결재무제표 / xbrl.get_cash_flows(separate=False) 동일

이는, Korean Taxonomy를 기준으로 반환하게 됩니다. K-IFRS표준계정과목체계(계정과목)에 첨부된 엑셀파일을 참고하시면 좀 더 쉽게 파악하실 수 있습니다.

즉, 개별재무제표를 추출하기 위해서는 xbrl.get_cash_flows(separate=True)에서 반환된 값을 이용하셔야 개별재무제표에 포함된 모든 회계정보를 추출하실 수 있습니다.

ISeeTheFuture commented 4 months ago

감사합니다. 연결재무제표에 포함된 별도 재무제표 데이터는 사용하지 말고, 연결과 별도 재무제표를 따로 받아야하는 것이군요. 이슈 닫겠습니다.