fred API와 yahoo finance API를 이용해서 미시간대 소비자 심리 지수와 S&P500 및 달러 인덱스,
금 데이터를 각각 비교해 보겠습니다.
fred API가 가입이 되어 있어야 합니다.
1. fred API 가입
2. 소비자 심리지수 vs S&P500
3. 소비자 심리지수 vs 달러 인덱스
4. 소비자 심리지수 vs 금
1. fred API 가입
2. 소비자 심리지수 vs S&P500
필요 라이브러리를 import 합니다.
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'
우선 fred API를 이용해서 미시간대 소비자 심리지수 데이터를 불러오겠습니다.
1978년 ~ 오늘 날짜까지의 데이터를 설정하고 소비자 심리지수 symbol('UMCSENT')로 데이터를 수집합니다.
startdate='1978-01-01'
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
# 미시간대 소비자 심리지수
umc = fp.series('UMCSENT',enddate)
df = umc.data.loc[umc.data.index >= startdate]
df
yfinance를 이용해서 yahoo finance의 S&P500 데이터를 수집합니다.
시작 및 종료 날짜는 소비자 심리지수의 기간과 동일하게 설정했습니다.
snp=yf.download('^GSPC', startdate, enddate, auto_adjust=True)
snp
그래프로 확인해볼까요
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=df.index, y=df.values, name='소비자심리지수'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=snp.index, y=snp['Close'], name='S&P500'),
secondary_y=True
)
fig.update_layout(
title_text = '미시간대 소비자심리지수 S&P500',
title = {'x':0.5, 'y':0.9}
)
fig.show()
기간을 2000년 이전과 이후로 나누어 그래프로 확인해보겠습니다.
date1='2000-01-01'
df1=df.loc[df.index > date1]
snp1=snp.loc[snp.index > date1]
df2=df.loc[df.index <= date1]
snp2=snp.loc[snp.index <= date1]
fig = make_subplots(specs=[[{'secondary_y':True}],[{'secondary_y':True}]],
rows=2, cols=1, subplot_titles=("2000년 이후", "2000년 이전"))
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
secondary_y=False, row=1, col=1
)
fig.add_trace(
go.Scatter(x=snp1.index, y=snp1['Close'], name='S&P500'),
secondary_y=True, row=1, col=1
)
fig.add_trace(
go.Scatter(x=df2.index, y=df2.values, name='소비자심리지수'),
secondary_y=False, row=2, col=1
)
fig.add_trace(
go.Scatter(x=snp2.index, y=snp2['Close'], name='S&P500'),
secondary_y=True, row=2, col=1
)
fig.update_layout(
title = {'x':0.5, 'y':0.9}
)
fig.show()
3. 소비자 심리지수 vs 달러 인덱스
다음으로는 달러 인덱스와 비교해 보겠습니다.
소비자 심리지수는 위의 데이터를 그대로 사용하고, 달러 인덱스만 yahoo finance에서 불러옵니다.
dol=yf.download('DX-Y.NYB', startdate, enddate, auto_adjust=True)
dol
그래프로 보겠습니다.
fig=go.Figure()
fig.add_trace(
go.Scatter(x=df.index, y=df.values, name='소비자심리')
)
fig.add_trace(
go.Scatter(x=dol.index, y=dol['Close'], name='달러인덱스')
)
fig.update_layout(
title_text = '미시간대 소비자심리지수 vs 달러 인덱스',
title = {'x':0.5, 'y':0.9}
)
fig.show()
기간을 2000년 기준으로 나누어서 보겠습니다.
date1='2000-01-01'
df1=df.loc[df.index > date1]
dol1=dol.loc[dol.index > date1]
df2=df.loc[df.index <= date1]
dol2=dol.loc[dol.index <= date1]
fig = make_subplots(rows=2, cols=1, subplot_titles=("2000년 이후", "2000년 이전"))
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
row=1, col=1
)
fig.add_trace(
go.Scatter(x=dol1.index, y=dol1['Close'], name='달러인덱스'),
row=1, col=1
)
fig.add_trace(
go.Scatter(x=df2.index, y=df2.values, name='소비자심리지수'),
row=2, col=1
)
fig.add_trace(
go.Scatter(x=dol2.index, y=dol2['Close'], name='달러인덱스'),
row=2, col=1
)
fig.update_layout(
title = {'x':0.5, 'y':0.9}
)
fig.show()
4. 소비자 심리지수 vs 금
마지막으로 금(GOLD)와 비교해보겠습니다.
gld=yf.download('GC=F', startdate, enddate, auto_adjust=True)
gld
금은 2000-08-30 일부터 데이터가 있으니 소비자 심리지수도 기간을 동일하게 설정하고
그래프로 확인해보겠습니다.
df1=df.loc[df.index >= '2000-08-30']
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=gld.index, y=gld['Close'], name='GOLD'),
secondary_y=True
)
fig.update_layout(
title_text = '미시간대 소비자심리지수 vs GOLD',
title = {'x':0.5, 'y':0.9}
)
fig.show()
한 번에 확인해 보겠습니다.
date1='2000-01-01'
df1=df.loc[df.index > date1]
snp1=snp.loc[snp.index > date1]
dol1=dol.loc[dol.index > date1]
gld1=gld.loc[gld.index > date1]
fig = make_subplots(specs=[[{'secondary_y':True}],[{'secondary_y':True}],[{'secondary_y':True}]],
rows=3, cols=1,
subplot_titles=("소비자 심리지수 vs S&P500",
"소비자 심리지수 vs 달러인덱스",
"소비자 심리지수 vs GOLD"))
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
secondary_y=False, row=1, col=1
)
fig.add_trace(
go.Scatter(x=snp1.index, y=snp1['Close'], name='S&P500'),
secondary_y=True, row=1, col=1
)
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
secondary_y=False, row=2, col=1
)
fig.add_trace(
go.Scatter(x=dol1.index, y=dol1['Close'], name='S&P500'),
secondary_y=True, row=2, col=1
)
fig.add_trace(
go.Scatter(x=df1.index, y=df1.values, name='소비자심리지수'),
secondary_y=False, row=3, col=1
)
fig.add_trace(
go.Scatter(x=gld1.index, y=gld1['Close'], name='GOLD'),
secondary_y=True, row=3, col=1
)
fig.update_layout(
title = {'x':0.5, 'y':0.9}
)
fig.show()
이상으로 미시간대 소비자 심리 지수와 S&P500 및 달러 인덱스, 금 데이터를 비교해 봤습니다.
'API' 카테고리의 다른 글
[fred 한국은행 API] 한국과 미국의 M1(협의통화), M2(광의통화) 비교 (4) | 2022.12.15 |
---|---|
[한국은행 API] 주요 국가의 중앙은행 정책금리 비교 (4) | 2022.12.13 |
[fred 한국은행 API] 한국과 미국의 장단기 금리차 비교하기 (6) | 2022.12.10 |
[한국은행 API] 인증키 신청 및 100대 통계 지표 수집 (8) | 2022.12.09 |
[FinanceDataReader] CAGR, MDD, 샤프지수,소르티노지수 계산 및 코스피 회사에 대한 결과 시각화 (4) | 2022.12.09 |