본문 바로가기

API

[Fred API] 미국 장단기 국채 수익률 곡선 그래프(2년, 3년, 5년, 10년, 20년, 30년)

반응형

Fred API를 이용해서 미국 국채의 장단기 국채의 데이터를 수집해서 그래프로 확인하고,

2022년 수익률 곡선을 그려보겠습니다.

Fredpy로 데이터를 수집하는데 Fred API Key가 필요합니다.

 

1. Fred 가입 후 API KEY 신청 및 확인하기

2. 장단기 수익률 데이터 수집 및 확인(2년, 3년, 5년, 10년, 20년, 30년)

3. 수익률 곡선 그리기(2022년)

 

 

1. Fred 가입 후 API KEY 신청 및 확인하기

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. 장단기 수익률 데이터 수집 및 확인(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월에는 단기물의 수익률이 더 높은 것을 확인할 수 있습니다.

 

이것을 응용해서 다른 해 또는 장기 데이터 확인도 가능할 것 같습니다.

 

 

국내 국채 데이터 비교해보셔도 좋을 것 같습니다.

https://yenpa.tistory.com/86

 

[한국은행 API] 한국 장단기 국채 수익률 곡선 그래프(1년, 3년, 5년, 10년, 20년)

한국은행 API를 이용해서 우리나라 국채의 장단기 국채의 데이터를 수집해서 그래프로 확인하고, 2022년 수익률 곡선을 그려보겠습니다. 확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니

yenpa.tistory.com

 

이상으로  미국 국채의 장단기 국채의 데이터를 수집해서 그래프로 확인하고,

2022년 수익률 곡선을 그려봤습니다.

 

반응형