본문 바로가기

API

[fred yahoo API] 소비자심리지수와 S&P500, 달러인덱스, 금 데이터 비교하기

반응형

fred API와 yahoo finance API를 이용해서 미시간대 소비자 심리 지수와 S&P500 및 달러 인덱스, 

금 데이터를 각각 비교해 보겠습니다.

 

fred API가 가입이 되어 있어야 합니다.

 

1. fred API 가입

2. 소비자 심리지수 vs S&P500

3. 소비자 심리지수 vs 달러 인덱스

4. 소비자 심리지수 vs 금

 

 

1. fred API 가입

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. 소비자 심리지수 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 및 달러 인덱스, 금 데이터를 비교해 봤습니다.

 

반응형