josw123 / dart-fss

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

네온테크 'bs' 보고서 추출 문의 #121

Closed 0x68756d8616e6f69664 closed 1 year ago

0x68756d8616e6f69664 commented 1 year ago

안녕하세요? 먼저 손쉽게 재무제표를 추출할 수 있는 강력한 라이브러리를 의도에 맞게 잘 사용하고 있어 매우 감사드립니다. 다름이 아니오라 네온테크 티커 306620 재무제표를 추출하던 중 의문이 생겨 문의드립니다. 문제는 20190930, 20190630, 20190331 인데 실제로 재무제표를 검색하면 존재하지만 아래와 같은 코드로는 추출이 안되는 상황입니다.

fs = dart.fs.extract(corp_code='306620', bgn_de='20180101', end_de='20220830', fs_tp=('bs', 'is', 'cis', 'cf'), report_tp='quarter', cumulative=True, progressbar=True, separate=False)

현재 추측한 바로는 직접 재무제표를 다운받아 확인해보면 기존 재무제표는 아래와 같은데 보면 같은 col로 내용이 적혀있습니다.

image

반면에 문제가 되는 시기에는 아래 처럼 나누어져 있습니다.

image

그런데 사실 20181231 재무제표는 위와 같이 나누어져있음에도 잘 추출이 되는데 영문을 모르겠어서 이렇게 문의드립니다. 그럼에도 불구하고 다양한 전처리를 통해 정보를 쉽게 처리할 수 있어 큰 도움을 받고 있습니다. 덕분에 퀀트투자에 대한 재미보다 코딩에대한 재미도 생겨 감사드리며 위에 말씀드린 부분 확인 부탁드립니다.

0x68756d8616e6f69664 commented 1 year ago

추가로 혹시 동일한 문제는 아닌데 아래와 같이 티커만 변경해서 동일한 코드로 추출시 EDGC의 경우 'bs'는 20180331이 추출이 안되는데 나머지의 경우 20180101-20180331로 추출이 되더라구요 혹시 이부분은 어떤 이유일까요? 공시자료로는 20180331 재무제표가 확인이 되지는 않습니다. 감사합니다.

fs = dart.fs.extract(corp_code='245620', bgn_de='20180101', end_de='20220830', fs_tp=('bs', 'is', 'cis', 'cf'), report_tp='quarter', cumulative=True, progressbar=True, separate=False)

josw123 commented 1 year ago

확인해보고 답변드리도록 하겠습니다.

josw123 commented 1 year ago

안녕하세요.

먼저 아래의 코드에서 corp_code는 주식 종목 코드명이 아닌 DART에서 자체적으로 사용하는 코드명을 넣으셔야 됩니다.

fs = dart.fs.extract(corp_code='306620',
bgn_de='20180101', end_de='20220830',
fs_tp=('bs', 'is', 'cis', 'cf'),
report_tp='quarter', cumulative=True,
progressbar=True, separate=False)

그러므로 네온테크의 티커가 아닌 DART 자체 분류 코드명인 '01325429'을 넣으셔야 됩니다. 확인해보니 DART 자체적으로 stock 코드 검색이 되어 문제가 없이 동작은 하나, 버그가 생길 수 있으므로 get_corp_list 함수를 이용하여 종목을 검색하시는 것을 추천드립니다.

import dart_fss as dart

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

fs = corp.extract_fs(bgn_de='20180101', end_de='20220830', report_tp='quarter', cumulative=True, progressbar=True, separate=False)

또한 올려 주신 코드는 연결재무제표를 검색하도록 설정되어 있습니다. 이는 따로 아래와 같이 separate 옵션을 설정하지 않으면 default 값이 False이므로 연결재무제표만 검색하게 됩니다.

# 연결재무제표 검색
fs = dart.fs.extract(corp_code='01325429', bgn_de='20180101', end_de='20220830', fs_tp=('bs', 'is', 'cis', 'cf'), report_tp='quarter', cumulative=True, progressbar=True, separate=False)

# 개별 회사 재무제표 검색
fs = dart.fs.extract(corp_code='01325429', bgn_de='20180101', end_de='20220830', fs_tp=('bs', 'is', 'cis', 'cf'), report_tp='quarter', cumulative=True, progressbar=True, separate=False, separate=True)

또한 확인해보니 네온테크의 2020.03.30 발행된 사업보고서에는 연결재무제표가 없는 것으로 확인됩니다.

image

대신 올려 주신 것과 같이 개별 재무제표는 있습니다. 결국 문의주신 코드는 연결재무제표를 검색하고 있으므로 아무런 데이터가 추출되지 않은 것입니다.

josw123 commented 1 year ago

또한 EDGC에서 발생하는 재무상태표('bs')의 문제는 재무상태표만 '20180331 '에 관한 내용이 없기 때문입니다. 일단 올려 주시 기간에 발행된 공시를 찾아보면 아래와 같습니다.

image

그러므로 가장 오래전 발행된 보고서는 반기보고서 (2018.06) 입니다. 그러므로 2018년 3월까지의 데이터는 2018년 1/4분기에서 발행된 내용에서 추출된 것이 아닌, 분기보고서 (2019.03)에서 추출된 것입니다. 그런데 2019.03 분기보고서의 내용을 보면 아래와 같습니다.

image

image

image

즉, 보고서 내용을 보면 재무상태표를 제외한 나머지에는 2018-01-01~2018-03-31까지의 데이터가 있으나 재무상태표에는 이러한 내용이 없으므로 추출되지 않은 것입니다.