본문 바로가기

API

[전자공시 Dart API] 회사합병결정 공시후 주가 확인

반응형

전자공시 Dart API의 회사합병결정 공시의 데이터를 가져와서 공시접수일 이후

주가 변동을 확인하는 방법을 알아보겠습니다.

본인의  인증키(API Key)가 필요하니 필요하신분은 아래를 참고 부탁드립니다.

 

1. 가입 및 인증키 확인(Skip 가능)

2. 회사합병결정 공시 리스트 가져오기

3. 주가 확인

 

1. 가입 및 인증키 확인(Skip 가능)

https://yenpa.tistory.com/23

 

[전자공시 Dart API] 가입 및 인증키(API Key) 확인하기

1. 사이트 가입 2. 인증키(API Key) 확인하기 1. 사이트 가입 사이트에 접속합니다. https://opendart.fss.or.kr/ 시스템 점검으로 모든 서비스 이용이 일시적으로 중단되어니 양해 부탁드립니다. 시스템 점

yenpa.tistory.com

 

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()

 

 

이상으로 회사합병결정 공시의 데이터를 가져와서 공시접수일 이후 주가 변동을 알아봤습니다.

반응형