본문 바로가기

API

[fred_한국은행 API] 미시간대 소비자심리, 경제심리지수와 주가 비교

반응형

Fred API를 이용해서 미시간대 소비자심리를 수집하고, 한국은행 API를 이용해서 경제 심리지수를 수집한 후,

두 데이터와 주가(코스피, S&P500)를 비교해 보겠습니다.

 

데이터 확인을 위해서는 Fred API Key 및 한국은행 API Key가 필요합니다.

 


1. Fred 가입 후 API KEY 신청 및 확인하기

2. 한국은행 API 가입

3. 미시간대 소비자심리 및 경제심리지수 데이터 수집

4. 미시간대 소비자심리 및 경제심리지수와 주가

 

 

1. Fred 가입 후 API KEY 신청 및 확인하기

https://yenpa.tistory.com/65

 

[Fred API] 가입 후 API KEY 신청 및 확인하기

Fred 사이트에 가입 후 API Key 확인하는 방법을 알아보겠습니다. 1. Fred 사이트 가입 아래의 사이트에 접속합니다 https://fred.stlouisfed.org/ Federal Reserve Economic Data | FRED | St. Louis Fed Welcome to FRED, your trust

yenpa.tistory.com

 

 

 

2. 한국은행 API 가입

https://yenpa.tistory.com/80

 

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

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

yenpa.tistory.com

 

 

3. 미시간대 소비자심리 및 경제심리지수 데이터 수집

Fred API에서 미시간대 소비자 심리 데이터를 수집하겠습니다.

기간은 2005-01-01 ~ 2022-12-31까지로 설정하고 symbol 'UMCSENT'로 데이터를 불러옵니다.

import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
import yfinance as yf
import plotly.graph_objects as go
from plotly.subplots import make_subplots
#fp.api_key = 'YOUR_API_KEY'

startdate='2005-01-01'
enddate='2022-12-31'

# 미시간대 소비자 심리지수
umc = fp.series('UMCSENT',enddate)
dfus = umc.data.loc[umc.data.index >= startdate]
dfus

 

 

한국은행 API로 경제 심리 지수를 수집하겠습니다.

기간은 미시간대 소비자심리 데이터와 동일한 기간을 설정하겠습니다.

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

 

TIME Column이 YYYYMM 형태로 되어있는데 datetime 형태로 변환하고,

경제심리지수(원계열) 데이터만 df1에 저장하도록 하겠습니다.

df=df.astype({'DATA_VALUE':'float'})
df['datetime']=pd.to_datetime(df['TIME'].str[:4] + '-' + df['TIME'].str[4:6] + '-01')
df1=df.loc[df['ITEM_CODE1']=='E1000']
df1=df1[['datetime','DATA_VALUE']]
df1

 

 

반응형

 

 

그럼 2개의 데이터를 그래프로 확인해 보겠습니다.

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

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=dfus.index, y=dfus.values, name='미시간대 소비자심리'),
    secondary_y=True
)


fig.update_layout(
    title_text = '경기심리지수와 미사간대 소비자심리',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

 

 

4. 미시간대 소비자심리 및 경제심리지수와 주가

우선 경제심리지수와 미시간대 소비자 심리 지수 데이터를 병합하겠습니다.

dfall=pd.concat([df1.set_index('datetime'), dfus], axis=1)
dfall.columns=['경제심리','미시간대소비자심리']
dfall

경제심리지수 - 미시간대 소비자 심리 지수 계산하겠습니다

dfall['diff']=dfall['경제심리']-dfall['미시간대소비자심리']
dfall

 

 

 

반응형

 

 

yahoo finance를 이용해서 코스피 주가를 수집하겠습니다.

import yfinance as yf
from datetime import datetime

kospi=yf.download('^KS11', '2005-01-01', '2022-12-31', auto_adjust=True)
kospi

 

그럼 경제심리지수 - 미시간대소비자심리 데이터와 코스피를 비교해 보겠습니다.

 

S&P500 주가 수집하고 코스피-S&P500 계산하겠습니다.

snp=yf.download('^GSPC', '2005-01-01', '2022-12-31', auto_adjust=True)

stock=pd.concat([kospi['Close'],snp['Close']], axis=1)
stock.columns=['kospi','snp']
stock['diff']=stock['kospi']-stock['snp']
stock

 

 

 

그럼 마지막으로 (경제심리지수 - 미시간대 소비자심리) 데이터와 (코스피 - S&P500) 데이터를 그래프로 확인하겠습니다.

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

fig.add_trace(
    go.Scatter(x=dfall.index, y=dfall['diff'], name='경기심리-미시간대소비자심리'),
    secondary_y=False
)

fig.add_trace(
    go.Scatter(x=stock.index, y=stock['diff'], name='코스피지수-S&P500'),
    secondary_y=True
)

fig.update_layout(
    title_text = '경기심리-미시간대소비자심리와 코스피지수-S&P500',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

 

이상으로 미시간대 소비자심리를 수집하고, 한국은행 API를 이용해서 경제 심리지수를 수집한 후,

두 데이터와 주가(코스피, S&P500)를 비교해 봤습니다.

 

반응형