반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.


오늘은 어제 오늘 도전해봤던 코스피, 코스닥 상장기업 영업이익 성장세로 필터링 해보기 프로젝트를 중간 정리하는 시간을 가져보겠습니다.

모두 완료하고 포스팅을 해보려 했으나, 부족한 실력으로 인해서 시간이 조금 더 걸릴 듯해서 중간 정리 글을 써보려 합니다.

1. 프로젝트에 사용된 패키지


우선 사용한 패키지는 예전에 소개드렸던 dart-fss 패키지입니다.

<DART-FSS 관련 지난 글>

2021.06.10 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 1편_ DART API와 DART-FSS 패키지 소개
2021.06.22 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 2편_ 상장된 회사 재무제표 EXCEL로 저장하기
2021.06.25 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 3편_특정회사 혹은 특정 공시유형 가져오기
2021.06.27 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 4편_재무제표 4종 골라서 DataFrame으로 추출하기(ft. 재무상태표, 손익계산서, 포괄손익계산서, 현금흐름표)
2021.06.27 - [파이썬 패키지/전자공시시스템(DART)] - [Python/Dart] 파이썬으로 공시 정보 가져오기 5편_dart-fss 재무제표 다운로드 안될 때 해결법
2021.06.30 - [파이썬 패키지/주식투자] - [Python/Dart] 파이썬으로 공시 정보 가져오기 6편_XBRL 데이터 추출(ft. 제무재표, 감사 정보, 작성자 정보, 공시문서 정보 등등)


공부하면서 느꼈지만 해당 패키지는 하나의 목적을 이루기 위한 방법이 여러 루트가 있어서 조금 정리를 할 필요가 있다고 느꼈습니다.

2. 프로젝트의 목적


프로젝트의 목적은 다음과 같습니다.

주식 시장에 상장된 모든 기업들을 살펴보기엔 시간은 한정적입니다. 그래서 원하는 재무상태나 매출/영업이익의 증가세를 가진 기업들을 공시정보를 토대로 필터링하여 엑셀로 저장하고, 이 정보를 투자 판단에 활용하는 것이 프로젝트의 목적입니다.

참고로, 이번 프로젝트에서는 dart-fss 패키지만으로도 충분하지만, 추후에 회사의 현금 및 환금성 높은 자본과 현재의 시가총액을 비교하는 프로젝트를 해볼 때에는 FinanceDataReader 패키지도 함께 다루어 볼 예정입니다.

일단 이번 프로젝트는 모든 코스피 상장 기업의 가장 최근 사업보고서(연간)를 가져와서 3년간 영업이익을 비교하고, 3년간 계속 상승했다면 해당 기업의 이름을 저장하는 것을 목표로 할 것입니다.


3. 프로젝트의 컨셉 및 장애요소


프로젝트의 큰 그림을 그려보겠습니다. 대략적인 컨셉이며 추후에 조금 변경될 수도 있습니다.

1) 상장회사 리스트 불러오기

# DART 에 공시된 회사 리스트 불러오기 corp_list = dart.get_corp_list()


2) 코스피 상장사의 회사코드와 회사명 각각 리스트에 저장

# 전체 상장기업 리스트 중 코스피만 골라서 담기 kospi_list = corp_list.find_by_sector(sector='', market='Y')

여기서 kospi_list는 821개의 요소를 가지는데, 네이버 증권에서 코스피 탭을 들어가보면 1730개가 뜸.
(이건 정확히 무슨 차이인지 확인해볼 필요가 있음)

<네이버 증권_코스피 종목>
https://m.stock.naver.com/index.html#/domestic/capitalization/KOSPI

3) for문으로 회사코드를 모두 참조하며, xbrl 다운로드
- 기업이 아닌 펀드 종목의 경우엔 xbrl이 없으므로 예외처리(try, except)
- ex. 한국ANKOR유전, 베트남개발1 등등

4) 다운받은 xbrl에서 연결/개별 재무제표 여부 판단
- xbrl.exist_consolidated( )로 True/False 리턴 받아서 if/else문
- 쉽게 요약하면, 자회사가 있으면 연결 재무제표, 없으면 개별 재무제표

5) 연결/개별에 따라서 손익계산서를 데이터 프레임 형태로 가져오기
- 연결 재무제표라고 받아서, 손익계산서를 보면 연결/개별이 열을 번갈아가면서 함께 표현되어있음

연결 재무제표 모습

- 개별 재무제표는 당연히 연결에 대한 내용은 없음
- 참고로 손익계산서(is)와 포괄손익계산서(cis) 두 가지 개념이 있음 (is는 없고 cis만 있는 경우가 있음)
- 일반적으로 손익계산서는 매출(수익)에서 비용을 뺀 당기순이익까지를 나타내며, 기타포괄손익(미실현손익) 등을 포함한 손익계산서를 포괄손익계산서(국제회계기준, K-IFRS)라고 함

일단, 3, 4, 5번 컨셉을 지금까지 함수로 구현한 것은 아래와 같음 (추후 보완 예정)

def search_annual_report(corp_code, bgn_de): data_company = corp_list.find_by_corp_code(corp_code) try: # 사업보고서 검색 reports = data_company.search_filings(bgn_de= bgn_de, pblntf_detail_ty='a001') # 첫번째 리포트 선택 report = reports[0] # 리포트의 xbrl 데이터 받아오기 xbrl = report.xbrl # 연결/개별 재무제표 여부 판단 (True/False) boolean = xbrl.exist_consolidated() if boolean == True: print('연결 재무제표') # 0에는 전체, 1에는 당기순이익부터 계산한 손익계산서가 들어있음 income_statement = xbrl.get_income_statement()[0] df = income_statement.to_DataFrame(show_concept=False, show_class=False) print(df.info) else: print('개별 재무제표') # 여기서는 True가 개별 손익계산서임에 주의 income_statement = xbrl.get_income_statement(separate=True)[0] df = income_statement.to_DataFrame(show_concept=False, show_class=False) print(df.info) return(boolean, df) except: print(data_company.corp_name + ':' + 'xbrl 없음(상품, 펀드)') return(False, False)


6) 데이터 프레임에서 원하는 정보 추출 (영업이익)
- 기업마다 양식이 통일 되지 않아서, 규칙을 잡기가 쉽지 않음 (해결해야하는 문제)
- 재무제표의 column index가 멀티 index로 되어 있음 (해결해야하는 문제)

7) 추출한 정보로 원하는 규칙을 적용하여 기업을 필터링

8) 나중에 더 나아가면 FinanceDataReader를 이용해 과거 주가를 토대로 백테스트를 할 수도 있음


이번 글은 스스로 정리하는 시간을 갖기 위해서 작성했으며, 빠른 시일 내로 해당 프로젝트를 완성하도록 하겠습니다.

관심있으신 분들은 또 들려주세요.

감사합니다.

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

<DART-FSS 관련 지난 글>

 

2021.06.10 - [파이썬 패키지/전자공시시스템(DART)] - [Python / Dart] 파이썬으로 재무제표 정보 가져오기 1편_ DART API와 DART-FSS 패키지 소개

2021.06.22 - [파이썬 패키지/전자공시시스템(DART)] - [Python / Dart] 파이썬으로 재무제표 정보 가져오기 2편_ 상장된 모든 회사 재무제표 EXCEL로 저장하기

 


지난 시간에 배운 내용이 기업을 선택한 후, 해당 기업의 재무제표를 가져오거나 공시보고서를 검색하는 것이었다면, 이번 시간에 배울 함수는 특정 기간의 특정 공시 유형의 보고서들을 가져올 수 있습니다. 지금부터 어떤 매개변수들을 설정해줄 수 있는지 알아보겠습니다.

 

공시보고서 검색

(함수) 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 공식 문서

https://dart-fss.readthedocs.io/en/latest/dart_search.html#dart_fss.filings.search.SearchResults.page_count

 

공시정보 검색 — dart-fss documentation v0.3.10 documentation

© Copyright 2021, Sungwoo Jo Revision 2a7bb3e6.

dart-fss.readthedocs.io

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

오늘은 지난 글에 이어서 DART-FSS 패키지로 원하는 회사 혹은 모든 회사의 재무제표를 엑셀 파일로 저장하는 것을 해보겠습니다.

향후 저장받은 데이터를 Pandas 모듈로 가공해서 유의미한 투자 정보를 얻고, 실제 투자에도 적용해 볼 계획입니다.

 

<DART-FSS 관련 지난 글>

 

2021.06.10 - [파이썬 패키지/전자공시시스템(DART)] - [Python / Dart] 파이썬으로 재무제표 정보 가져오기 1편_ DART API와 DART-FSS 패키지 소개

 


 

1. 공시된 기업 정보 불러오기

 

아래의 코드를 이용하면 DART에 공시된 모든 회사의 [회사 코드] + 회사 이름을 리스트 형태로 받을 수 있습니다. 

 

# DART에 공시된 모든 회사 리스트 불러오기

corp_list = dart.get_corp_list()

 

참고로 corp_list를 DART API로부터 받아오는데에 시간이 걸리는데 측정해보니 11.72초 정도로 나오네요.

주로 사용하는 IDE인 VS Code를 사용하니깐 매번 코드를 실행할 때마다 리스트를 불러와서 시간이 아까우므로, 다음부터 Jupyter Notebook을 이용한다면 매번 12초씩 아낄 수 있겠습니다.

 

 

corp_list의 요소가 어떤 데이터 형태를 가지고 있는지, 요소는 몇 개나 있는지 확인해보았습니다. 리스트의 길이를 측정하는 len( ) 함수를 이용해 확인해보니 상장된 기업수가 8만 7천개가 넘네요!

# 리스트의 첫번째 종목정보 출력

print(corp_list[0])

>>> [00434003]다코


# 리스트 종목 갯수 출력

print(len(corp_list))

>>> 87098


# corp_list 자료형 확인

print(type(corp_list))

>>> <class 'dart_fss.corp.corp_list.CorpList'>

 

혹시 종목 87098개가 궁금하신분들은 for문을 이용해서 터미널창에 모두 출력해보세요. 저는 처음으로 터미널 창 스크롤 범위가 오버돼서 이전 정보가 안보이는 것을 경험할 수 있었답니다!

# 모든 회사 [코드]회사명 출력

for i in corp_list:
    print(i,end="")

 

 

2. corp_list 활용 메소드

 

사실 우리가 위에서 얻게된 corp_list는 클래스이며, 따로 메소드를 가지고 있습니다. 즉, corp_list.함수의 형태로 몇 가지 함수를 사용할 수 있습니다.

 

역시 말보다는 코드죠. 가장 자주 사용할 함수 2가지를 예시로 가져와봤습니다.

 

# 삼성전자 회사명으로 검색

samsung = corp_list.find_by_corp_name('삼성전자', exactly=True)[0]


# 삼성전자 회사 코드로 검색

samsung = corp_list.find_by_corp_code('00126380')[0]

 

참고로 exactly 옵션을 설정하지 않으면 기본적으로 False로 설정되어 있습니다. 여기서 특별히 True로 설정해주었는데, 그 이유는 False일 때는 '삼성전자'가 들어간 '삼성전자서비스씨에스'를 출력해주기 때문입니다.

 

또한 corp_list.find_by_corp_name( ) 함수의 결과 데이터는 [[종목 코드]종목 이름]의 형태로 리스트 [ ]로 한겹 쌓여져있습니다. 이를 벗겨내기 위해서 corp_list.find_by_corp_name( )[0]으로 코딩한 점 유의해 주세요.

 

<관련 메소드>

메소드 기능
find_by_corp_code(self, corp_code) DART에서 사용하는 회사 코드를 이용한 찾기
find_by_corp_name(self, corp_name[, …]) 회사 명칭을 이용한 검색
find_by_product(self, product[, market]) 취급 상품으로 검색(코스피, 코스닥, 코넥스만 지원)
find_by_sector(self, sector[, market]) 산업 섹터로 검색(코스피, 코스닥, 코넥스만 지원)
find_by_stock_code(self, stock_code[, …]) 주식 종목 코드를 이용한 찾기
load(self[, profile]) 회사 정보가 없을시 회사 정보 로딩

 

<여기서 잠깐! corp_code와 stock_code의 차이점>

 

corp_code는 dart에서 사용하는 코드를 말하며 stock_code는 아래와 같이 검색포털에서 주식정보를 검색하면 나오는 코드입니다.

위에서 다루었던 삼성전자의 corp_code (00126380)와 다른 것을 확인 할 수 있습니다.

 

3.  회사 정보로 재무제표 다운받기

 

위에서 samsung이란 변수에 회사 정보([종목 코드]종목 이름)을 저장했습니다. 이 samsung이란 변수도 사실 클래스의 인스턴스(객체)로서 메소드를 사용할 수 있습니다.

 

주로 사용할 만한 메소드는 아래의 5개 중 extract_fs와 search_fillings이며, 이번 시간에는 목표로 했던 재무제표를 정보를 가져오는 extract_fs( ) 메소드를 사용해 보겠습니다.

메소드 기능
extract_fs(bgn_de[, end_de, fs_tp, …]) 재무제표 검색
load(self) 종목 정보 로딩
search_filings([bgn_de, end_de, …]) 공시보고서 검색
to_dict() 종목에 관한 모든 정보를 Dictionary 형태로 반환
update(info) Update information

 

코드는 아래와 같이 간단합니다. 다만 실행하시면 자료를 가져오는데에 시간이 꽤 걸릴거예요.

 

# 2020년부터 연간 연결재무제표 불러오기
fs = samsung.extract_fs(bgn_de='20200101')

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

 

<여기서 잠깐! extract_fs 메소드의 인자(옵션)>

 

꼭 입력이 필요한 검색시작 일자(bgn_de)를 제외하고는 모두 기본값이 들어가 있습니다.

 

옵션 기능 기본 값 자료형
bgn_de 검색시작 접수일자('YYYYMMDD') 필수 입력 str
end_de 검색종료 접수일자('YYYYMMDD') 오늘 날짜 str
fs_tp 재무제표 종류 선택
(‘bs’:  재무상태표, ‘is’ : 손익계산서, ‘cis’ : 포괄손익계산서, ‘cf’ : 현금흐름표)
('bs', 'is', 'cis', 'cf) tuple,
str
separate 개별재무제표 여부 (True : 개별 재무제표 / False : 연결 재무제표) False str
report_tp 연간, 반기, 분기 보고서 선택
(‘annual’ : 연간, ‘half’ : 반기, ‘quarter’ : 분기)
None str
lang 언어 선택 ('ko' : 한글, 'en' : 영어) 'ko' str
separator 숫자 1000 단위 구분자 표시 여부 (True / False) True str
dataset 'xbrl' : xbrl 파일 우선 데이터 추출
'web' : web page 우선 데이터 추출
'xbrl' str

 

 

코드 실행 결과 아래와 같은 이름의 엑셀 파일이 저장됩니다. 참고로 excel 파일이 있는 fsdata 폴더는 현재 작업 디렉토리에 존재합니다.

 

엑셀 파일을 열어보면 아래와 같이 데이터들이 있습니다. 데이터들이 의미하는 바는 추후 정리하는 시간을 갖겠습니다.

 

 

참고로 위에서 설정했던 (bgn_de='20200101')은 아래의 그림에서 시작 기간을 의미합니다.

 

아래는 dart에서 검색한 연결 재무상태표입니다.

 

 


<참고자료>

 

DART-FSS 공식문서

https://dart-fss.readthedocs.io/en/latest/dart_corp.html

 

기업정보검색 — dart-fss documentation v0.3.10 documentation

© Copyright 2021, Sungwoo Jo Revision 2a7bb3e6.

dart-fss.readthedocs.io

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

오늘은 투자에 도움이 될 수 있는 파이썬 패키지를 소개드리려 합니다.

 

아마 투자를 조금 하신다는 분들은 DART(전자공시시스템)을 아실텐데요. 오늘 소개드릴 dart-fss 패키지는 DART에서 제공하는 API(Application Programming Interface)를 저희같은 초보자도 쉽게 다룰 수 있도록 해줍니다.

 

한마디로 파이썬으로 공시정보를 내맘대로 조회하고 가공해서 유의미한 투자 정보를 얻어낼 수 있다는 것입니다.

만약 투자에 관심이 있으신분들은 이번 기회에 배우셔서 투자에 꼭 적용해보시길 추천드립니다.


오늘의 주인공인 dart-fss 패키지에 대해 알아보기 전에 잠시 DART와 DART API에 대해 알아보도록 하겠습니다.

 

DART란?

 

출처. DART 홈페이지

 

DART(Data Analysis, Retrieval and Transfer System)은 데이터 분석, 검색 및 전송 시스템이라는 뜻을 가진, 대한민국 금융감독원에서 운영하는 기업정보 전자공시시스템입니다.

 

코스피, 코스닥 시장에 상장된 주식회사부터 비상장 주식회사까지 다양한 회사들이 회사의 경영상태에 대한 공시를 하는 사이트입니다. 이 시스템으로 인해 투자자 누구나 기업에 관한 정보를 손쉽게 얻을 수 있습니다.

 

 

DART API란?

 

감사하게도 DART에서 다른 사람들이 프로그램을 만들 때 사용하라고 API를 만들어 주었습니다. 여기서 API란 Application Programming Interface의 약자로 프로그램들이 서로 상호작용하는 것을 도와주는 매개체라고 이해하시면 됩니다.

 

API에 대해 조금 더 자세한 내용이 궁금하신 분들은 아래의 링크에 아주 쉽게 설명되어 있으니 참고하세요.

 

 

API란? 비개발자가 알기 쉽게 설명해드립니다! - Wishket

여러분은 API가 무엇인지 알고 계신가요? 자주 듣게 되지만 그 개념이 무엇인지 정확하게 알기란 쉽지 않은데요. 이번 시간 위시켓이  API란 무엇인지 알기 쉽게 설명해드리고자 합니다. 위시켓

blog.wishket.com

 

DART API 인증키 신청

 

DART API를 사용하기 위해서는 API 인증키를 신청해주셔야 하는데요.

 

우선 DART 회원가입을 해주셔야 합니다.

 

https://opendart.fss.or.kr/intro/main.do

 

회원 가입이 완료되신 분들은 DART 홈페이지에서 우측 상단의 '오픈API'를 클릭하시거나 위의 링크로 접속해주신 후, 로그인 하지 않으신 상태로 '인증키 신청'을 해주시면 됩니다. 크게 어렵지 않으니 아래의 gif를 참고하셔서 만들어주세요.

 

신청이 완료되셨으면 로그인 후, 인증키 관리 탭에 들어가셔서 승인이 되셨는지 확인하신 후에 좌측의 오픈API 이용현황을 클릭해주세요.

그러면 API Key가 아주 복잡한 숫자와 영어의 조합으로 나오실 거예요. 코딩하실 때 필요하니 한 곳에 Ctrl+C, Ctrl+V 해놓아주세요.

 

 

DART-FSS란?

 

대한민국 금융감독원에서 운영하는 다트 사이트 크롤링 및 재무제표 추출을 위한 라이브러리라고 공식 문서에 쓰여 있습니다.

저의 개념으로는 패키지가 맞는 말인 것 같은데 이 문서를 보니 조금 헷갈리네요.

 

https://dart-fss.readthedocs.io/en/latest/index.html

 

DART-FSS — dart-fss documentation v0.3.10 documentation

© Copyright 2021, Sungwoo Jo Revision 2a7bb3e6.

dart-fss.readthedocs.io

 

<주의 사항>

Open DART 및 DART 홈페이지의 경우 분당 100회 이상 요청시 서비스가 제한될 수 있음

 

 

 

DART-FSS 설치 방법

 

터미널(cmd) 창에서 아래와 같이 입력해주시면 됩니다. 혹시나 오타가 날 수 있으니 그냥 복사 붙여넣기해서 엔터 눌러주세요.

pip install dart-fss

 

 

DART-FSS 맛보기

 

위에서 알려드린 dart-fss 공식 문서에 들어가보시면 Quick Starts라는 이름으로 아래의 코드를 써두었습니다.

코드에 대한 것은 다음 시간에 차차 알아보기로 하고 일단 아래의 코드를 그대로 복사 붙여넣기 해서 코드를 실행해봅시다.

 

실행하실 때는 api_key = '아까 발급받은 API Key'로 바꿔주세요! 그리고 중요한 건 아닌데, 설치할 때 dart-fss이고 import 할 때는 dart_fss라는 신기한 사실! 그냥 그렇다구요ㅎㅎ..

 

혹시나 저처럼 dart_fss.py로 파일 이름을 만들었다가는 아래와 같은 에러가 뜨면서 패키지가 제대로 작동하지 않으니 주의하세요!

 

AttributeError: partially initialized module 'dart_fss' has no attribute 'set_api_key' (most likely due to a circular import)

 

import dart_fss as dart

# Open DART API KEY 설정
api_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
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='20120101')

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

 

위의 코드를 실행하시면 시간이 꽤 걸려서 fsdata라는 폴더 안에 엑셀 파일이 하나 만들어집니다. 총 8개의 시트가 있는데 참고로 말씀드리면, 각각 bs’ 재무상태표, ‘is’ 손익계산서, ‘cis’ 포괄손익계산서, ‘cf’ 현금흐름표를 뜻하며 시트 이름에 Data가 들어가는 것만 보시면 됩니다.

 

 


 

오늘 준비한 내용은 여기까지고, 다음 시간부터 자주 사용할만한 함수들에 대해서 공부해보겠습니다.

 

감사합니다.

반응형

+ Recent posts