한국은행 API를 이용해서 경기심리지수 및 뉴스심리지수와 코스피 주가를 비교해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. 경기 심리지수 확인
3. 뉴스 심리지수 확인
4. 경기 심리지수 및 뉴스 심리지수와 코스피
1. 한국은행 API 가입
[한국은행 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년부터로 기간을 축소해 보겠습니다. 뉴스심리지수가 살짝 선행하는 것처럼 보이기도 합니다.
이상으로 경기심리지수 및 뉴스심리지수와 코스피 주가를 비교해 보겠습니다.
'API' 카테고리의 다른 글
[한국은행 API] 위안, 엔, 달러 환율과 KOSPI (1978) | 2023.01.17 |
---|---|
[한국은행 API] 주요국가 외환보유액과 2022년 변동율 비교 (3433) | 2023.01.16 |
[한국은행 API] 수출금액지수 수집 및 전년도 동월과 전월 대비 변동 확인 (3422) | 2023.01.11 |
[한국은행 API] 수입금액지수 수집 및 전년도 동월과 전월 대비 변동 확인 (3450) | 2023.01.09 |
[농림축산식품 API] 가입하기 및 인증키(APPKey) 확인, API 데이터 신청 (8) | 2023.01.02 |