Fred API를 이용해서 미국 국채의 장단기 국채의 데이터를 수집해서 그래프로 확인하고,
2022년 수익률 곡선을 그려보겠습니다.
Fredpy로 데이터를 수집하는데 Fred API Key가 필요합니다.
1. Fred 가입 후 API KEY 신청 및 확인하기
2. 장단기 수익률 데이터 수집 및 확인(2년, 3년, 5년, 10년, 20년, 30년)
3. 수익률 곡선 그리기(2022년)
1. Fred 가입 후 API KEY 신청 및 확인하기
2. 장단기 수익률 데이터 수집 및 확인(2년, 3년, 5년, 10년, 20년, 30년)
필요 라이브러리를 import 합니다. API_KEY는 본인의 데이터가 필요합니다.
import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
#fp.api_key = 'YOUR_API_KEY'
오류를 막기 위해 enddate(어제 날짜)를 지정하고 장단기 국채 수익률 데이터를 수집합니다.
symbol DGS2(2년물), DGS3(3년물), DGS20(20년물).
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
dgs2 = fp.series('DGS2',enddate)
dgs3 = fp.series('DGS3',enddate)
dgs5 = fp.series('DGS5',enddate)
dgs10 = fp.series('DGS10',enddate)
dgs20 = fp.series('DGS20',enddate)
dgs30 = fp.series('DGS30',enddate)
각 데이터별 시작 날짜가 조금씩 달라 통일시키기 위해 기간을 1980-01-01일부터로 하겠습니다.
dgs2data=dgs2.data.loc[dgs2.data.index>'1980-01-01']
dgs3data=dgs3.data.loc[dgs3.data.index>'1980-01-01']
dgs5data=dgs5.data.loc[dgs5.data.index>'1980-01-01']
dgs10data=dgs10.data.loc[dgs10.data.index>'1980-01-01']
dgs20data=dgs20.data.loc[dgs20.data.index>'1980-01-01']
dgs30data=dgs30.data.loc[dgs30.data.index>'1980-01-01']
dgs2data
2년물 데이터인데 정상적으로 데이터가 들어와 있습니다.
각 기간별 데이터를 그래프로 확인하겠습니다.
plotly의 subplot을 이용해서 그렸습니다.
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=3, cols=2,
subplot_titles=("2년", "3년", "5년", "10년","20년","30년"))
fig.add_trace(
go.Scatter(x=dgs2data.index, y=dgs2data.values, name="2년"),
row=1,col=1,
)
fig.add_trace(
go.Scatter(x=dgs3data.index, y=dgs3data.values, name="3년"),
row=1,col=2,
)
fig.add_trace(
go.Scatter(x=dgs5data.index, y=dgs5data.values, name="5년"),
row=2,col=1,
)
fig.add_trace(
go.Scatter(x=dgs10data.index, y=dgs10data.values, name="10년"),
row=2,col=2,
)
fig.add_trace(
go.Scatter(x=dgs20data.index, y=dgs20data.values, name="20년"),
row=3,col=1,
)
fig.add_trace(
go.Scatter(x=dgs30data.index, y=dgs30data.values, name="30년"),
row=3,col=2
)
fig.update_layout(title_text='미국 장단기 국채', title_x=0.5)
fig.show()
이 그래프 상으로는 그래프가 다 동일하게 보입니다.
그럼 하나로 합쳐서 확인해볼까요.
fig = go.Figure()
fig.add_trace(
go.Scatter(x=dgs2data.index, y=dgs2data.values, name="2년"),
)
fig.add_trace(
go.Scatter(x=dgs3data.index, y=dgs3data.values, name="3년"),
)
fig.add_trace(
go.Scatter(x=dgs5data.index, y=dgs5data.values, name="5년"),
)
fig.add_trace(
go.Scatter(x=dgs10data.index, y=dgs10data.values, name="10년"),
)
fig.add_trace(
go.Scatter(x=dgs20data.index, y=dgs20data.values, name="20년"),
)
fig.add_trace(
go.Scatter(x=dgs30data.index, y=dgs30data.values, name="30년"),
)
fig.show()
겹쳐서 보니 차이가 보이는 구간이 있습니다.
1993년 근처, 2003년, 2010년~2015년, 2021년 정도에서 장 단기 수익률 차가 벌어진 것이 확인이 됩니다.
3. 수익률 곡선 그리기(2022년)
2022년 전체 데이터는 많으므로 일부 데이터로 축소해서 확인하겠습니다.
df에서 22년 1일, 3일의 데이터만 뽑아서 df1에 저장했습니다.
df1=df.loc[df.index.strftime('%y%d').isin(['2201','2203'])]
df1
df1을 transpose 해서 수익률 그래프를 그리기 좋은 형태로 변형시킵니다.
df2=df1.transpose()
df2
이제 그래프 그릴 준비가 되었으니, 그래프로 확인해 보겠습니다.
fig=px.line(data_frame=df2,x=df2.index, y=list(df2.columns.strftime("%Y-%m-%d")),
facet_col='variable',facet_col_wrap=4)
fig.update_layout(title_text='2022년 미국채 장단기금리 수익률곡선',title_x=0.5)
fig.show()
올해 초의 그래프는 우상향 하는 모습을 보였는데, 중반부터는 장단기 비슷한 형태로 변화하고,
11월에는 단기물의 수익률이 더 높은 것을 확인할 수 있습니다.
이것을 응용해서 다른 해 또는 장기 데이터 확인도 가능할 것 같습니다.
국내 국채 데이터 비교해보셔도 좋을 것 같습니다.
이상으로 미국 국채의 장단기 국채의 데이터를 수집해서 그래프로 확인하고,
2022년 수익률 곡선을 그려봤습니다.
'API' 카테고리의 다른 글
[Fred API] CPI(소비자물가지수), CoreCPI 데이터 수집 (7) | 2022.12.01 |
---|---|
[공공데이터포털 API] 아파트 매매 실거래 자료 수집 (4) | 2022.11.28 |
[Fred API FinanceDataReader] 주가와 장단기금리차 데이터 수집 및 그래프 확인 (4) | 2022.11.24 |
[Fred API] 미국 실업률과 경기 침체 데이터 수집 및 그래프 그리기 (4) | 2022.11.23 |
[Fred API] 가입 후 API KEY 신청 및 확인하기 (4) | 2022.11.23 |