안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
<DART-FSS 관련 지난 글>
지난 시간에 배운 내용이 기업을 선택한 후, 해당 기업의 재무제표를 가져오거나 공시보고서를 검색하는 것이었다면, 이번 시간에 배울 함수는 특정 기간의 특정 공시 유형의 보고서들을 가져올 수 있습니다. 지금부터 어떤 매개변수들을 설정해줄 수 있는지 알아보겠습니다.
공시보고서 검색
(함수) dart_fss.filings.search( )
<매개변수>
옵션 | 기능 | 기본 값 | 자료형 |
corp_code | 공시대상회사의 고유번호(8자리) | 미입력 시, 모든 회사 검색 검색기간은 3개월로 제한 |
str |
bgn_de | 검색시작 접수일자(YYYYMMDD) | 종료일(end_de) | str |
end_de | 검색종료 접수일자(YYYYMMDD) | 오늘 날짜 | str |
last_reprt_at | 최종보고서만 검색여부(Y or N) | N | str |
pblntf_ty | 공시유형 및 공시상세유형 참고 | None | str |
pblntf_detail_ty | 공시유형 및 공시상세유형 참고 | None | str |
corp_cls | 법인구분 : Y(유가), K(코스닥), N(코넥스), E(기타) | 전체 조회 | str |
sort | 정렬, {접수일자: date, 회사명: crp, 고서명: rpt} | ?? | str |
sort_mth | 오름차순(asc), 내림차순(desc) | 내림차순('desc') | str |
page_no | 페이지 번호(1~n) | 1 | int |
page_count | 페이지당 건수(1~100) | 10 | int |
<예시 코드>
import dart_fss as dart
# 오늘 나온 공시 검색
reports = dart.filings.search()
# 2021년 1월 1일부터 2021년 3월 31일까지 검색 (페이지당 표시 건수: 100)
reports = dart.filings.search(bgn_de='20190101', end_de='20190331', page_count=100)
# 2019년 5월 1일부터 2019년 7월 1일까지 연간보고서만 검색
reports = dart.filings.search(bgn_de='20190501', end_de='20190701', pblntf_detail_ty='a001')
# 2019년 5월 1일부터 2019년 7월 1일까지 연간보고서 및 반기보고서 검색
reports = dart.filings.search(bgn_de='20190501', end_de='20190701', pblntf_detail_ty=['a001', 'a002'])
공시보고서 검색 결과
(클래스) dart_fss.filings.search.SearchResults
위에서 dart_fss.filings.search( )로 얻은 결과, 즉 reports라는 변수 안에는 어떤 것이 들어있을까요?
아래와 같이 크게 5가지 요소를 가집니다.
요소 | 기능 |
page_no | 표시된 페이지 번호 |
page_count | 페이지당 표시할 리포트수 |
total_count | 총 건수 |
total_page | 총 페이지수 |
report_list | 검색된 리포트 리스트 |
주피터 노트북으로 검색결과를 출력해보았습니다.
import dart_fss as dart
# 2021년 1월 1일부터 2021년 3월 31일까지 검색
reports = dart.filings.search(bgn_de='20210101', end_de='20210331')
reports
<출력 결과>
잘 보시면 page_no는 1, page_count는 10, total_count는 68908, total_page는 6891인 것을 확인 하실 수 있습니다.
이게 무슨의미인지 잠시 알아보겠습니다.
먼저 page_count의 10은 기본값입니다. 우리가 저기 위에서 함수를 사용할 때, 따로 인자를 넣어주지 않았기에 10이라는 기본 값이 들어갔고, 총 검색결과가 1페이지에 10개씩 나뉘어서 저장된 상태입니다.
즉, 2021년 1월 1일부터 2021년 3월 31일까지 나온 공시 보고서의 총 갯수가 68908개이며, 이걸 10개씩 나누어 총 6891개의 페이지를 가지는 것이죠.
마지막으로 page_no가 1이므로 1페이지의 공시 10개만 report_list에 들어가 있는 것을 확인할 수 있습니다.
실제 사용 예시
지금까지 배운 것을 가지고 실제로 삼성전자의 최신 공시보고서 하나를 가져와보겠습니다.
import dart_fss as dart
# 삼성전자 code
corp_code = '00126380'
reports = dart.filings.search(corp_code=corp_code, bgn_de='20210101', pblntf_detail_ty='a001')
# 가장 최신 보고서 선택
newest_report = reports[0]
# 참고
# 0-4번 보고서 선택
# zero_to_fourth_report = reports[0:5]
# 가장 오래된 보고서 선택
# oldest_report = reports[-1]
<주피터 노트북 실행 결과>
아직은 이 자료를 어떻게 사용할 수 있는지는 모르겠네요. 어떻게 활용하는지는 조금 더 공부한 후 포스팅 하도록 하겠습니다.
참고로, 지난 시간 배운 함수를 이용하면 같은 결과를 얻을 수 있습니다.
# 삼성전자 code
corp_code = '00126380'
# 모든 상장된 기업 리스트 불러오기
corp_list = get_corp_list()
# 삼성전자
samsung = corp_list.find_by_corp_code(corp_code=corp_code)
# 연간보고서 검색
reports = samsung.search_filings(bgn_de='20210101', pblntf_detail_ty='a001')
# 가장 최신 보고서 선택
newest_report = reports[0]
<참고 자료>
DART-FSS 공식 문서