Fred API를 이용해서 달러 인덱스를 수집하고 yfinance로 금, 은, 구리의 데이터를 가져와서 그래프를 그려보겠습니다.
1. Fred 가입 후 API KEY 신청 및 확인하기
2. 달러 인덱스 데이터 및 금, 은, 구리 데이터 수집
3. 그래프 확인
1. Fred 가입 후 API KEY 신청 및 확인하기
2. 달러 인덱스 데이터 및 금, 은, 구리 데이터 수집
fred에서 달러 인덱스를 불러옵니다. symbol은 'DTWEXBGS'입니다.
import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
#fp.api_key = 'YOUR_API_KEY'
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
dol= fp.series('DTWEXBGS',enddate)
dol.data
2006-01-02부터의 데이터가 확인이 됩니다.
금, 은, 구리 데이터를 수집하기 위해 yfinance를 설치합니다.
pip install yfinance
라이브러리를 import 하고 각 데이터 금(GC=F), 은(SI=F), 구리(HG=F) 데이터를
달러 인덱스의 기간과 맞추기 위해 시작 날짜를 2006-01-01부터로 설정했습니다.
import yfinance as yf
gld=yf.download('GC=F', '2006-01-01', enddate, auto_adjust=True)
silv=yf.download('SI=F', '2006-01-01', enddate, auto_adjust=True)
hg=yf.download('HG=F', '2006-01-01', enddate, auto_adjust=True)
금 데이터만 확인해 볼까요
gld
수집이 된 것을 알 수 있습니다.
3. 그래프 확인
달러 인덱스와 금 그래프입니다.
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(
go.Line(x=dol.data.index, y=dol.data.values, name="달러인덱스"),
secondary_y=True,
)
fig.add_trace(
go.Line(x=gld.index, y=gld['Close'], name="금"),
secondary_y=False,
)
fig.show()
달러인덱스와 은 그래프를 확인하겠습니다.
코드에서 go.Line(x=gld.index, y=gld['Close'], name="금")에서 gld -> silv로 변경하면 됩니다.
달러 인덱스와 구리 그래프입니다.
코드에서 go.Line(x=gld.index, y=gld['Close'], name="금")에서 gld -> hg로 변경하면 됩니다.
달러 인덱스의 2006-01-03의 데이터는 100.7558입니다.
금, 은, 구리의 데이터도 2006-01-03을 100.7558로 설정하고
이후의 변동량을 확인할 수 있도록 아래와 같이 gld_index column을 추가합니다.
gld['Close_change']=gld['Close'].pct_change()
gld['Close_changecum']=(1+gld['Close_change']).cumprod()
gld.loc['2006-01-03','Close_changecum']=1
gld['gld_index']=gld['Close_changecum']*100.7558
gld
gld_index가 생성되었는데 2006-01-03일이 100.7558로 설정되었습니다.
마찬가지로 은, 구리 데이터도 각각 index column을 추가하겠습니다.
silv['Close_change']=silv['Close'].pct_change()
silv['Close_changecum']=(1+silv['Close_change']).cumprod()
silv.loc['2006-01-03','Close_changecum']=1
silv['silv_index']=silv['Close_changecum']*100.7558
hg['Close_change']=hg['Close'].pct_change()
hg['Close_changecum']=(1+hg['Close_change']).cumprod()
hg.loc['2006-01-03','Close_changecum']=1
hg['hg_index']=hg['Close_changecum']*100.7558
그럼 이제 하나의 그래프에서 달러 인덱스, 금, 은, 구리를 확인해 보겠습니다.
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(
go.Line(x=dol.data.index, y=dol.data.values, name="달러인덱스"),
secondary_y=True,
)
fig.add_trace(
go.Line(x=gld.index, y=gld['gld_index'], name="금"),
secondary_y=False,
)
fig.add_trace(
go.Line(x=silv.index, y=silv['silv_index'], name="은"),
secondary_y=False,
)
fig.add_trace(
go.Line(x=hg.index, y=hg['hg_index'], name="구리"),
secondary_y=False,
)
fig.update_layout(
title_text='달러인덱스와 금,은,구리',
title={'x':0.5, 'y':0.85}
)
fig.show()
이상으로 달러 인덱스와 금, 은, 구리의 데이터를 수집하고 그래프를 그려봤습니다.
'API' 카테고리의 다른 글
[FinanceDataReader] 주가 및 소르티노비율 소르티노지수(sortino) 계산 (4) | 2022.12.07 |
---|---|
[FinanceDataReader] 주가 및 샤프비율 샤프지수(sharp) 계산 (9) | 2022.12.06 |
[Fred API] 원달러 환율, 달러 인덱스 비교 그래프 (4) | 2022.12.02 |
[Fred API] CPI(소비자물가지수), CoreCPI 데이터 수집 (7) | 2022.12.01 |
[공공데이터포털 API] 아파트 매매 실거래 자료 수집 (4) | 2022.11.28 |