반응형
yahoo finance를 이용해서 금 은 구리 및 비트코인 데이터를 수집하고 각각 비트코인과의 비교 그래프를 확인하겠습니다.
그리고 금-은 스프레드, 금-구리 스프레드를 구하고 비트코인과 비교하겠습니다.
1. 금, 은, 구리와 비트코인
2. 금-은 스프레드, 금-구리 스프레드와 비트코인
1. 금, 은, 구리와 비트코인
데이터를 가져오기 위해서는 yfinance의 설치가 필요합니다.
아래의 명령어로 설치가 가능합니다.
pip install yfinance
금(GC=F), 은(SI=F), 구리(HG=F) 및 비트코인 USD(BTC-USD)를 수집하겠습니다.
기간은 2017-01-01부터 오늘까지입니다.
startdate='2017-01-01'
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
gld=yf.download('GC=F', startdate, enddate, auto_adjust=True)
silv=yf.download('SI=F', startdate, enddate, auto_adjust=True)
hg=yf.download('HG=F', startdate, enddate, auto_adjust=True)
btc=yf.download('BTC-USD', startdate, enddate, auto_adjust=True)
비트코인 데이터가 정상 수집된 것을 알 수 있습니다.
btc
금과 비트코인 데이터를 그래프로 확인하겠습니다.
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=btc.index, y=btc['Close'], name="비트코인"),
secondary_y=True,
)
fig.add_trace(
go.Line(x=gld.index, y=gld['Close'], name="금"),
secondary_y=False,
)
fig.update_layout(
title_text='금과 비트코인',
title={'x':0.5, 'y':0.85}
)
fig.show()
다음은 은과 비트코인입니다.
구리와 비트코인을 보겠습니다.
반응형
2. 금-은 스프레드, 금-구리 스프레드와 비트코인
금-은 스프레드를 계산하기 위해 금-은 데이터를 병합하겠습니다.
import pandas as pd
gs=pd.concat([gld[['Close']],silv[['Close']]], axis=1)
gs.columns=['gold','silver']
gs
금과 은은 데이터의 Scale이 달라서 MinMaxScaler를 이용해서 정규화를 하겠습니다.
그리고 금데이터와 은데이터의 차분을 구해서 spread에 저장합니다.
from sklearn.preprocessing import MinMaxScaler
# MinMaxcaler객체 생성
scaler = MinMaxScaler()
# MinMaxScaler 로 데이터 셋 변환 .fit() 과 .transform() 호출.
scaler.fit(gs)
df1 = scaler.transform(gs)
gldscal=pd.DataFrame(df1, index=gs.index,columns=['gld','silv'])
gldscal['spread']=gldscal['gld']-gldscal['silv']
gldscal
금-은 스프레드와 비트코인을 그래프로 확인하겠습니다.
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(
go.Line(x=btc.index, y=btc['Close'], name="비트코인"),
secondary_y=True,
)
fig.add_trace(
go.Line(x=gldscal.index, y=gldscal['spread'], name="금-은 스프레드"),
secondary_y=False,
)
fig.update_layout(
title_text='금-은 스프레드와 비트코인',
title={'x':0.5, 'y':0.85}
)
fig.show()
반응형
다음으로는 금과 구리 데이터를 병합하고, 정규화 후에 spread데이터를 구하겠습니다.
gh=pd.concat([gld[['Close']],hg[['Close']]], axis=1)
gh.columns=['gold','hg']
# MinMaxcaler객체 생성
scaler = MinMaxScaler()
# MinMaxScaler 로 데이터 셋 변환 .fit() 과 .transform() 호출.
scaler.fit(gh)
df2 = scaler.transform(gh)
hgscal=pd.DataFrame(df2, index=gh.index,columns=['gld','hg'])
hgscal['spread']=hgscal['gld']-hgscal['hg']
hgscal
그래프로 볼까요
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(
go.Line(x=btc.index, y=btc['Close'], name="비트코인"),
secondary_y=True,
)
fig.add_trace(
go.Line(x=hgscal.index, y=hgscal['spread'], name="금-구리 스프레드"),
secondary_y=False,
)
fig.update_layout(
title_text='금-구리 스프레드와 비트코인',
title={'x':0.5, 'y':0.85}
)
fig.show()
역상관이 있는 것처럼 보이기도 합니다.
이상으로 yahoo finance를 이용해서 금 은 구리 및 비트코인 데이터 및 금-은 스프레드, 금-구리 스프레드를 구하고 비트코인과 비교했습니다.
반응형
'API' 카테고리의 다른 글
[Fred Yahoo API] 비트코인과 달러인덱스 및 원달러 환율 (4) | 2023.05.30 |
---|---|
[Fred Yahoo API] 비트코인과 미국 장단기 국채 수익률 (4) | 2023.05.14 |
[한국은행 API] 소비자동향조사 CSI(금리수준, 현재경기판단)와 코스피, 국채10년 (8) | 2023.04.17 |
[한국은행 API] 제조업 재고율 및 설비투자지수와 코스피 (4) | 2023.04.04 |
[한국은행 API] 예금 대출 금리 스프레드 및 가계-기업대출 스프레드와 국채 수익률 (4) | 2023.03.27 |