한국은행 API와 fred API를 이용해서 한국의 M1, M2와 미국의 M1, M2를 비교해보겠습니다.
한국은행 API 및 fred API가 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. fred API 가입
3. 한국 M1, M2 데이터 수집
4. 미국 M1, M2 데이터 수집
5. 데이터 비교
1. 한국은행 API 가입
2. fred API 가입
3. 한국 M1, M2 데이터 수집
우리나라의 M1, M2를 불러와 보겠습니다.
우선 M1 데이터 수집입니다. 코드는 '101Y016'이고 통계항목 코드 1은 'BBKS00'입니다.
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/101Y016/M/200001/202212/BBKS00'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
rows=[]
for i in range(0,list_count):
start = str(i * 100 + 1)
end = str((i + 1) * 100)
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
+ start + '/' + end + '/101Y016/M/200001/202212/BBKS00'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
dfkom1=pd.DataFrame(rows)
dfkom1
TIME Column이 202212 형식으로 되어 있는데 2022-12-01 형식으로 바꾸고 타입을 datetime으로 변경하겠습니다.
이후 필요한 column만 추려서 dfkom1에 저장후 column type을 float으로 변경하겠습니다.
dfkom1['date']=pd.to_datetime(dfkom1['TIME'].str[:4] + '-' + dfkom1['TIME'].str[4:6] + '-01')
dfkom1 = dfkom1[['date','DATA_VALUE']].set_index('date')
dfkom1=dfkom1.astype('float')
dfkom1
M2 데이터도 마찬가지로 수집하겠습니다.
코드는 '101Y001'이고 통계항목 코드 1은 'BBGS00'입니다.
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/101Y001/M/200001/202212/BBGS00'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
rows=[]
for i in range(0,list_count):
start = str(i * 100 + 1)
end = str((i + 1) * 100)
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
+ start + '/' + end + '/101Y001/M/200001/202212/BBGS00'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
dfkom2=pd.DataFrame(rows)
dfkom2['date']=pd.to_datetime(dfkom2['TIME'].str[:4] + '-' + dfkom2['TIME'].str[4:6] + '-01')
dfkom2 = dfkom2[['date','DATA_VALUE']].set_index('date')
dfkom2 = dfkom2.astype('float')
dfkom2
4. 미국 M1, M2 데이터 수집
미국의 M1, M2 데이터를 수집해보겠습니다.
우선 필요라이브러리를 import 합니다.
import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
#fp.api_key = 'YOUR_API_KEY'
M1은 dfusm1에 M2는 dfusm2에 저장하겠습니다.
enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
dfusm1 = fp.series('M1SL',enddate)
dfusm2 = fp.series('M2SL',enddate)
dfusm1.data
M1 데이터가 1959년 부터 있네요. 우리나라의 M1기간과 통일시키기 위해 아래와 같이 기간을 설정합니다.
dfusm1.data = dfusm1.data.loc[dfusm1.data.index>'2001-01-01']
dfusm1.data
M2도 동일하게 설정합니다.
dfusm2.data = dfusm2.data.loc[dfusm2.data.index>'2001-01-01']
5. 데이터 비교
데이터를 그래프로 확인하고 한국과 미국의 M1, M2 데이터를 비교해보겠습니다.
우선 한국의 M1, M2그래프입니다.
import plotly.graph_objects as go
from plotly.subplots import make_subplots
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=dfkom1.index, y=dfkom1['DATA_VALUE'],name='한국 M1'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=dfkom2.index, y=dfkom2['DATA_VALUE'],name='한국 M2'),
secondary_y=False
)
fig.show()
M1, M2모두 꾸준히 상승하다가 M1 통화는 2022년 5월 이후 조금 꺾인 것을 알 수 있습니다.
미국의 M1, M2입니다.
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=dfusm1.data.index, y=dfusm1.data.values,name='미국 M1'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=dfusm2.data.index, y=dfusm2.data.values,name='미국 M2'),
secondary_y=False
)
fig.show()
미국은 M1, M2모두 2020년 4월 급격히 상승 후 2022년 3월경부터 꺾이는 모습을 보입니다.
한국 M1과 미국 M1의 비교입니다.
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=dfusm1.data.index, y=dfusm1.data.values,name='미국 M1'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=dfusm2.data.index, y=dfusm2.data.values,name='미국 M2'),
secondary_y=False
)
fig.show()
미국 M1이 코로나 때 2020년 4월경 상승폭이 큰것을 알 수 있고 2022년 5월 경부터는
한국 미국 모두 하락 한 것을 알 수 있습니다.
한국 M2와 미국 M2의 비교입니다.
fig = make_subplots(specs=[[{'secondary_y':True}]])
fig.add_trace(
go.Scatter(x=dfkom2.index, y=dfkom2['DATA_VALUE'],name='한국 M2'),
secondary_y=False
)
fig.add_trace(
go.Scatter(x=dfusm2.data.index, y=dfusm2.data.values,name='미국 M2'),
secondary_y=True
)
fig.show()
M2 역시 미국이 202년 4월의 상승폭이 큰 것을 알 수 있습니다.
이상으로 한국의 M1, M2와 미국의 M1, M2를 확인하고 비교해 봤습니다.
'API' 카테고리의 다른 글
[한국은행 API] 주요 국가의 소비자 물가 비교 (5) | 2022.12.22 |
---|---|
[한국은행 API] 한국 장단기 국채 수익률 곡선 그래프(1년, 3년, 5년, 10년, 20년) (4) | 2022.12.17 |
[한국은행 API] 주요 국가의 중앙은행 정책금리 비교 (4) | 2022.12.13 |
[fred yahoo API] 소비자심리지수와 S&P500, 달러인덱스, 금 데이터 비교하기 (4) | 2022.12.12 |
[fred 한국은행 API] 한국과 미국의 장단기 금리차 비교하기 (6) | 2022.12.10 |