전자공시 Dart API의 회사합병결정 공시의 데이터를 가져와서 공시접수일 이후
주가 변동을 확인하는 방법을 알아보겠습니다.
본인의 인증키(API Key)가 필요하니 필요하신분은 아래를 참고 부탁드립니다.
1. 가입 및 인증키 확인(Skip 가능)
2. 회사합병결정 공시 리스트 가져오기
3. 주가 확인
1. 가입 및 인증키 확인(Skip 가능)
2. 회사합병결정 공시 리스트 가져오기
공시검색에서 3개월치의 전체 공시리스트를 가져와서 리스트중 "주요사항보고서(회사합병결정)"에
해당하는 공시만 별도로 저장하도록 하겠습니다.
crtfc_key는 본인의 데이터가 필요합니다.
import requests
import pandas as pd
from IPython.display import display
crtfc_key='YOUR_APIKEY'
#요청인자(parameter설정)
page_no=1
page_count=100
bgn_de='20220101'
end_de='20220331'
pblntf_detail_ty='B001'
results_all=pd.DataFrame()
while(True):
url = 'https://opendart.fss.or.kr/api/list.json'
params = {
'crtfc_key': crtfc_key,
'page_no' : str(page_no),
'page_count' : str(page_count),
'bgn_de' : bgn_de,
'end_de' : end_de,
'pblntf_detail_ty' : pblntf_detail_ty,
}
#결과를 json형태로 저장
results = requests.get(url, params=params).json()
#결과중 실제 공시정보가 있는부분만 DataFrame으로 저장
results_df = pd.DataFrame(results['list'])
#하나의 DataFrame으로 만듬
results_all = pd.concat([results_all,results_df])
total_page=results['total_page']
# total_page와 page_no이 같으면 while문 종료
if page_no==total_page:
break
page_no=page_no+1
#주요사항 보고서(회사합병결정), 법인 Y(코스피), K(코스닥)
keyword='주요사항보고서(회사합병결정)'
df = results_all.loc[(results_all['report_nm']==keyword) &
((results_all['corp_cls']=='K') | (results_all['corp_cls']=='Y'))]
#rcept_no를 index로
df=df.set_index('rcept_no')
df['rcept_date'] = pd.to_datetime(df['rcept_dt'], format='%Y%m%d')
print(df.shape)
display(df)
입력 요청인자 설정부분입니다.
bgn_de(시작날짜), end_de(종료날짜) 를 2022/01/01 ~ 2022/03/31로 했고,
pblntf_detail_ty(공시유형)에서 B001(주요사항보고서)만 검색하도록 설정했습니다.
#요청인자(parameter설정)
page_no=1
page_count=100
bgn_de='20220101'
end_de='20220331'
pblntf_detail_ty='B001'
요청인자중 crtfc_key는 필수 인자이고 나머지는 옵션입니다. 이외에도 다른 인자들이 더 있으니 자세한 사항은
Opendart Homepage를 참조 부탁드립니다.
pblntf_detail_ty의 상세유형입니다. 사업보고서 및 반기보고서 들만 따로 검색이 되는데,
이번에는 회사합병결정이 들어가 있는 주요사항 보고서를 설정했습니다.
결과를 보면 주요사항보고서(회사합병결정) 공시를 한 회사가 2022/01/01~03/31 사이에
13건이 있는것이 확인 됩니다.
다음으로는 각 공시 보고서별 주가데이터를 확인해보겠습니다
3. 주가확인
회사합병결정 공시를 한 회사들의 주가를 확인해보겠습니다.
financedatareader를 이용해서 각 회사들의 2022/01/01~2022/09/30 주가를 가져와서 그래프로 표시 했습니다.
import matplotlib.pyplot as plt
import FinanceDataReader as fdr
plt.rc('font', family='NanumGothic')
cols=['corp_name','stock_code','rcept_dt','rcept_date']
for i, r in df[cols].iterrows():
corp_name = r['corp_name']
stock_code = r['stock_code']
rcept_date = r['rcept_date'] #공시 접수일자
print('corp_name : ' + corp_name)
print('접수일자 : ' + rcept_date.strftime('%Y-%m-%d'))
#주가정보
code=stock_code
startdate='2022-01-01'
enddate='2022-09-30'
df_stock=fdr.DataReader(code,startdate,enddate)[['Close']]
plt.figure(figsize=(6,2))
plt.plot(df_stock.index, df_stock['Close'])
plt.title(corp_name)
plt.xticks(rotation=90)
plt.axvline(x = rcept_date, color = 'red') #공시 접수일자
plt.show()
필요한 라이브러리를 import 했고, 3번째 행은 그래프상에서 한글이 깨지는 것에 대한 대책으로 넣었습니다.
import matplotlib.pyplot as plt
import FinanceDataReader as fdr
plt.rc('font', family='NanumGothic')
13개의 데이터를 각각 확인하기 위해 for문으로 이용했습니다.
cols=['corp_name','stock_code','rcept_dt','rcept_date']
for i, r in df[cols].iterrows():
financedatareader를 이용해서 stock_code(회사정보)를 받아와서 01/01~09/30의 주가 정보를 가져오는 부분입니다.
#주가정보
code=stock_code
startdate='2022-01-01'
enddate='2022-09-30'
df_stock=fdr.DataReader(code,startdate,enddate)[['Close']]
line그래프를 그렸고 코드 및 결과는 아래와 같습니다.
plt.figure(figsize=(6,2))
plt.plot(df_stock.index, df_stock['Close'])
plt.title(corp_name)
plt.xticks(rotation=90)
plt.axvline(x = rcept_date, color = 'red') #공시 접수일자
plt.show()
이상으로 회사합병결정 공시의 데이터를 가져와서 공시접수일 이후 주가 변동을 알아봤습니다.
'API' 카테고리의 다른 글
[아파트 실거래가 API] 월간 가격상승 Top 및 거래량 Top확인하기 (4) | 2022.11.03 |
---|---|
[전자공시 Dart API] 회사분할결정 공시후 주가 확인 (4) | 2022.11.02 |
[아파트 실거래가 API] 지역별 아파트 가격정보 비교 및 월별 트렌드 확인 (4) | 2022.10.26 |
[공공데이터포털 API] 데이터 가져오기 기초 (6) | 2022.10.26 |
[공공데이터포털 API] 가입하기 및 인증키(APPKey) 발급, 확인 (4) | 2022.10.25 |