본문 바로가기

API

[한국은행 API] 경기심리지수, 뉴스심리지수와 코스피 주가

반응형

한국은행 API를 이용해서 경기심리지수 및 뉴스심리지수와 코스피 주가를 비교해 보겠습니다.

확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.

 

 

1. 한국은행 API 가입

2. 경기 심리지수 확인

3. 뉴스 심리지수 확인

4. 경기 심리지수 및 뉴스 심리지수와 코스피

 

 

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

[한국은행 API] 인증키 신청 및 100대 통계 지표 수집

한국은행 API에 가입하고 서비스 항목 중 100대 통계지표에 대해 데이터 수집하고 그래프로 확인해보겠습니다. 1. 인증키 신청 2. 인증키 확인 3. 100대 통계 지표 수집 1. 인증키 신청 사이트 접속

yenpa.tistory.com

 

 

2. 경기 심리지수 확인

경기심리지수의 설명은 아래와 같습니다.

 

경기 심리지수를 불러오겠습니다.

경기 심리지수는 STAT_CODE=513Y001 (6.3. 경제심리지수)에서 확인이 가능합니다.

그럼 데이터를 불러오겠습니다.

import requests

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/513Y001/M/200501/202212'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1


rows=[]
for i in range(0,list_count):
    start = str(i * 100 + 1)
    end = str((i + 1) * 100)
    
    url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
            + start + '/' + end + '/513Y001/M/200501/202212'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df=pd.DataFrame(rows)
df

 

Plotly를 이용해서 그래프로 확인해 보겠습니다.

import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px

fig=px.line(data_frame=df, x='datetime', y='DATA_VALUE', 
            color='ITEM_NAME1', 
           labels={'ITEM_NAME1':'구분','DATA_VALUE':'경제심리지수','TIME':'날짜'})
fig.update_layout(
    title_text='경제심리지수',
    title={'x':0.5}
)
fig.show()

 

반응형

 

 

3. 뉴스 심리지수 확인

다음으로는 뉴스 심리지수를 확인해 보겠습니다.

 

뉴스 심리지수는 STAT_CODE=521Y001 (6.4. 뉴스심리지수(실험적 통계) )에서 확인이 가능합니다.

경기 심리지수는 데이터가 한 달 간격이고, 뉴스 심리지수는 하루 간격입니다.

그럼 데이터를 불러오겠습니다.

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/521Y001/D/20050101/20221231'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1


rows=[]
for i in range(0,list_count):
    start = str(i * 100 + 1)
    end = str((i + 1) * 100)
    
    url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
            + start + '/' + end + '/521Y001/D/20050101/20221231'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df2=pd.DataFrame(rows)
df2

 

그래프로 확인해 보겠습니다.

fig=px.line(data_frame=df2, x='datetime', y='DATA_VALUE', 
            color='ITEM_NAME1', 
           labels={'ITEM_NAME1':'구분','DATA_VALUE':'뉴스심리지수','TIME':'날짜'})
fig.update_layout(
    title_text='뉴스심리지수',
    title={'x':0.5}
)
fig.show()

 

 

 

반응형

 

 

4. 경기 심리지수 및 뉴스 심리지수와 코스피

경기 심리지수와 뉴스 심리지수를 하나의 그래프에서 확인하겠습니다.

df1=df.loc[df['ITEM_CODE1']=='E1000']

fig = make_subplots(specs=[[{'secondary_y':True}]])


fig.add_trace(
    go.Scatter(x=df2['datetime'], y=df2['DATA_VALUE'], name='뉴스심리지수'),
    secondary_y=False
)

fig.add_trace(
    go.Scatter(x=df1['datetime'], y=df1['DATA_VALUE'], name='경기심리지수'),
    secondary_y=False
)


fig.update_layout(
    title_text = '경기심리지수와 뉴스심리지수',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

뉴스 심리지수가 경기 심리지수보다 선행하는 그래프처럼 보입니다.

 

다음은 경기 심리지수와 코스피를 보겠습니다.

df1=df.loc[df['ITEM_CODE1']=='E1000']

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=df1['datetime'], y=df1['DATA_VALUE'], name='경기심리지수'),
    secondary_y=False
)

fig.add_trace(
    go.Scatter(x=kospi.index, y=kospi['Close'], name='코스피지수'),
    secondary_y=True
)

fig.update_layout(
    title_text = '경기심리지수와 코스피',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

뉴스 심리지수와 코스피를 보겠습니다.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=df2['datetime'], y=df2['DATA_VALUE'], name='뉴스심리지수'),
    secondary_y=False
)

fig.add_trace(
    go.Scatter(x=kospi.index, y=kospi['Close'], name='코스피지수'),
    secondary_y=True
)

fig.update_layout(
    title_text = '뉴스심리지수와 코스피',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

2016년부터로 기간을 축소해 보겠습니다. 뉴스심리지수가 살짝 선행하는 것처럼 보이기도 합니다.

 

이상으로 경기심리지수 및 뉴스심리지수와 코스피 주가를 비교해 보겠습니다.

반응형