본문 바로가기

API

[Fred API] 미국 회사채 수익률과 S&P500 주가 비교

반응형

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

S&P500과 비교해 보겠습니다.

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

 

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

2. 미국 회사채 데이터 수집

3. S&P500과 비교

 

 

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. 미국 회사채 데이터 수집

필요 라이브러리를 import 합니다. API_KEY는 본인의 데이터가 필요합니다.

import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
#fp.api_key = 'YOUR_API_KEY'

enddate(어제 날짜)를 지정하고 장단기 국채 수익률 데이터를 수집합니다.

symbol은 AAA 'BAMLC0A1CAAAEY', AA 'BAMLC0A2CAAEY' 나머지는 아래 참고 하시기 바랍니다.

enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
aaa = fp.series('BAMLC0A1CAAAEY',enddate)
aa = fp.series('BAMLC0A2CAAEY',enddate)
a = fp.series('BAMLC0A3CAEY',enddate)
bbb = fp.series('BAMLC0A4CBBBEY',enddate)
bb = fp.series('BAMLH0A1HYBBEY',enddate)
b = fp.series('BAMLH0A2HYBEY',enddate)
ccc = fp.series('BAMLH0A3HYCEY',enddate)

회사채 AAA의 수익률 데이터를 확인해 볼까요.

1996-12-31부터의 데이터가 확인이 되고 나머지 AA, A, BBB, BB, B, CCC이하의

데이터도 동일한 기간이 제공됩니다.

aaa.data

 

각 기간별 데이터를 그래프로 확인하겠습니다.

plotly의 subplot을 이용해서 그렸습니다.

import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=4, cols=2, 
       subplot_titles=("AAA", "AA", "A", "BBB","BB","B","CCC"))


fig.add_trace(
    go.Scatter(x=aaa.data.index, y=aaa.data.values, name="AAA"),
    row=1,col=1,
)
fig.add_trace(
    go.Scatter(x=aa.data.index, y=aa.data.values, name="AA"),
    row=1,col=2,
)
fig.add_trace(
    go.Scatter(x=a.data.index, y=a.data.values, name="A"),
    row=2,col=1,
)
fig.add_trace(
    go.Scatter(x=bbb.data.index, y=bbb.data.values, name="BBB"),
    row=2,col=2,
)
fig.add_trace(
    go.Scatter(x=bb.data.index, y=bb.data.values, name="BB"),
    row=3,col=1,
)
fig.add_trace(
    go.Scatter(x=b.data.index, y=b.data.values, name="B"),
    row=3,col=2
)
fig.add_trace(
    go.Scatter(x=ccc.data.index, y=ccc.data.values, name="CCC"),
    row=4,col=1
)

fig.update_layout(title_text='미국 회사채 수익률', title_x=0.5)

fig.show()

 

반응형

 

 

하나의 그래프에 합쳐서 그려보겠습니다.

fig = go.Figure()

fig.add_trace(
    go.Scatter(x=aaa.data.index, y=aaa.data.values, name="AAA"),
)
fig.add_trace(
    go.Scatter(x=aa.data.index, y=aa.data.values, name="AA"),
)
fig.add_trace(
    go.Scatter(x=a.data.index, y=a.data.values, name="A"),
)
fig.add_trace(
    go.Scatter(x=bbb.data.index, y=bbb.data.values, name="BBB"),
)
fig.add_trace(
    go.Scatter(x=bb.data.index, y=bb.data.values, name="BB"),
)
fig.add_trace(
    go.Scatter(x=b.data.index, y=b.data.values, name="B"),
)
fig.add_trace(
    go.Scatter(x=ccc.data.index, y=ccc.data.values, name="CCC"),
)
fig.show()

 

 

3. S&P500과 비교

우선 yahoo finance를 이용해서 S&P500을 1996-12-31부터 수집합니다.

import yfinance as yf
snp=yf.download('^GSPC', '1996-12-31', enddate, auto_adjust=True)
snp

 

회사채 데이터와 S&P500을 하나의 그래프에 그려보겠습니다.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=aaa.data.index, y=aaa.data.values, name="AAA"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=aa.data.index, y=aa.data.values, name="AA"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=a.data.index, y=a.data.values, name="A"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=bbb.data.index, y=bbb.data.values, name="BBB"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=bb.data.index, y=bb.data.values, name="BB"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=b.data.index, y=b.data.values, name="B"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=ccc.data.index, y=ccc.data.values, name="CCC"),
    secondary_y=False
)

fig.update_layout(title_text='미국 회사채 수익률과 S&P500', title_x=0.5, title_y=0.9)

fig.add_trace(
    go.Scatter(x=snp.index, y=snp['Close'], name='S&P500'),
    secondary_y=True
)

fig.show()

 

반응형

 

회사채 AAA에서 CCC를 뺀 데이터와 AAA에서 BB를 뺀 데이터를 만들겠습니다.

S&P500 주가와 동일한 경향으로 보기 위해 AAA를 기준으로 CCC 및 BB를 뺐습니다.

aaa_ccc=aaa.data-ccc.data
aaa_bbb=aaa.data-bb.data

그래프로 확인해 볼까요.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=aaa_ccc.index, y=aaa_ccc.values, name='AAA-CCC'),
    secondary_y=True
)

fig.add_trace(
    go.Scatter(x=aaa_bbb.index, y=aaa_bbb.values, name='AAA-BB'),
    secondary_y=True
)

fig.add_trace(
    go.Scatter(x=snp.index, y=snp['Close'], name='S&P500'),
    secondary_y=False
)

fig.update_layout(
    title_text = '회사채(AAA-CCC, AAA-BB)와 S&P500',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

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

S&P500과 비교해 봤습니다.

반응형