한국은행 API를 이용해서 경기 선행지수 및 동행지수의 순환변동치 데이터를 불러오고 KOSPI 지수와 비교해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. 경기 선행지수 및 동행지수 순환변동치
3. 선행지수 및 동행지수와 KOSPI
4. 선행지수-동행지수 차분 데이터와 KOSPI
1. 한국은행 API 가입
2. 경기 선행지수 및 동행지수 순환변동치
선행지수 및 동행지수 순환 변동치는 STAT_CODE=901Y067(8.1.2. 경기종합지수)에서 확인이 가능합니다.
월 단위로 데이터를 제공하고 있는데 2000년 1월 ~ 2022년 12월까지의 데이터를 수집하겠습니다.
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/901Y067/M/200101/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 + '/901Y067/M/200101/202212'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
df=pd.DataFrame(rows)
df
datetime type의 date column을 생성하고, DATA_VALUE column을 float으로 변경하겠습니다.
df['datetime']=pd.to_datetime(df['TIME'].str[:4] + '-' + \
df['TIME'].str[4:6] + '-01')
df=df.astype({'DATA_VALUE':'float'})
수집 데이터중에서 선행지수순환변동치와 동행지수순환변동치만 따로 저장하겠습니다.
df1=df.loc[df['ITEM_NAME1']=='동행지수순환변동치']
df2=df.loc[df['ITEM_NAME1']=='선행지수순환변동치']
그래프로 확인해볼까요
import plotly.graph_objects as go
from plotly.subplots import make_subplots
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=df2['datetime'], y=df2['DATA_VALUE'], name="선행지수순환변동치"),
secondary_y=True,
)
fig.update_layout(
title_text='선행지수순환변동치와 동행지수순환변동치',
title={'x':0.5, 'y':0.9}
)
fig.show()
선행지수가 동행지수보다 전체적으로 먼저 수치가 변동되는 것이 확인이 됩니다.
3. 선행지수 및 동행지수와 KOSPI
우선 KOSPI 데이터를 수집하겠습니다.
import yfinance as yf
from datetime import datetime
enddate=datetime.now().strftime('%Y-%m-%d')
kospi=yf.download('^KS11', '2001-01-01', enddate, auto_adjust=True)
kospi
선행지수순환변동치와 KOSPI를 비교하겠습니다.
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="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='선행지수순환변동치와 코스피',
title={'x':0.5, 'y':0.9}
)
fig.show()
다음으로는 동행지수순환변동치와 KOSPI를 보겠습니다.
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="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='동행지수순환변동치 코스피',
title={'x':0.5, 'y':0.9}
)
fig.show()
4. 선행지수-동행지수 차분 데이터와 KOSPI
선행지수와 동행지수 데이터를 병합하고 선행지수-동행지수의 차분 데이터를 계산하겠습니다.
diff=pd.concat([df1[['datetime','DATA_VALUE']].set_index('datetime'), \
df2[['datetime','DATA_VALUE']].set_index('datetime')], axis=1)
diff.columns=['동행','선행']
diff['선행-동행']=diff['선행']-diff['동행']
diff
그럼 그래프로 확인해 볼까요
선행지수 KOSPI와 동행지수 KOSPI와 어떻게 다른지 비교해 보셔도 좋을 것 같습니다.
fig = make_subplots(specs=[[{"secondary_y":True}]])
fig.add_trace(
go.Scatter(x=diff.index, y=diff['선행-동행'], name="선행-동행"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=kospi.index, y=kospi['Close'], name="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='선행지수-동행지수 차분데이터와 코스피',
title={'x':0.5, 'y':0.9}
)
fig.show()
선행지수와 차분 데이터를 한 번에 확인하겠습니다.
이상으로 경기 선행지수 및 동행지수의 순환변동치 데이터를 불러오고 KOSPI 지수와 비교해 봤습니다.
'API' 카테고리의 다른 글
[농림축산식품 API] 농수축산물 물가조사가격 수집 및 가격비교 (4) | 2023.02.02 |
---|---|
[Fred API] 물가연동채권(TIPS)과 기준금리 및 소비자물가지수(CPI) (15) | 2023.01.31 |
[fred_한국은행 API] 미시간대 소비자심리, 경제심리지수와 주가 비교 (4) | 2023.01.25 |
[yahoo finance API] 천연가스와 러시아 루블, 달러인덱스 비교 (1223) | 2023.01.21 |
[yahoo finance API] Crude oil과 달러인덱스 ,금, S&P500 비교 (1605) | 2023.01.20 |