본문 바로가기

API

[한국은행 API] 주요국가 외환보유액과 2022년 변동율 비교

반응형

한국은행 API를 이용해서 주요 국가의 외환 보유액을 확인하고,  22년 금리 상승기의 외환 보유액 변동을 확인해 보겠습니다.

확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.

 

1. 한국은행 API 가입

2. 주요 국가의 외환 보유액

3. 22년도 외환보유액 변동

 

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

[한국은행 API] 인증키 신청 및 100대 통계 지표 수집

한국은행 API에 가입하고 서비스 항목 중 100대 통계지표에 대해 데이터 수집하고 그래프로 확인해보겠습니다. 1. 인증키 신청 2. 인증키 확인 3. 100대 통계 지표 수집 1. 인증키 신청 사이트 접속

yenpa.tistory.com

 

 

 

2. 주요국가의 외환 보유액

외환 보유액은 STAT_CODE=902Y014(9.1.3.6. 국제 주요국 외환보유액 )에서 확인이 가능합니다.

2000년 1월에서 2022년 12월까지 설정했고, 월 단위로 설정했습니다.

그럼 데이터를 불러오겠습니다.

import requests

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/902Y014/M/200101/202212'
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 + '/902Y014/M/200101/202212'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df=pd.DataFrame(rows)
df

 

아래의 41개의 국가들의 데이터가 제공됩니다.

df['ITEM_NAME1'].unique()

 

필요한 column들만 저장하고, datetime type의 date column을 생성하겠습니다.

df1=df[['ITEM_NAME1','TIME','DATA_VALUE']]
df1['date']=pd.to_datetime((df1['TIME'].str[:4] + '-' + df1['TIME'].str[4:6] + '-01'))
df1=df1.astype({'DATA_VALUE':'float'})
df1=df1.drop_duplicates()
df1

 

2022년 11월 기준으로 외환 보유액 순위입니다.

중국이 가장 많고, 우리나라는 6번째로 많은 것으로 확인이 됩니다.

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

df202211=df1.loc[df1['date']=='2022-11-01'].sort_values('DATA_VALUE')
fig=px.bar(data_frame=df202211, x='DATA_VALUE', y='ITEM_NAME1')
fig.update_layout(
    title_text='주요국가의 정책금리(2022년 11월)',
    title={'x':0.5},
    height=700
)
fig.show()

 

반응형

 

 

외환보유액 상위 8개 국가들에 대해서 장기 트렌드를 확인하겠습니다.

country=['중국','일본','스위스','러시아','인도','한국','브라질','독일']

df2=df1.loc[df['ITEM_NAME1'].isin(country)]
df2

fig=px.line(data_frame=df2, x='date', y='DATA_VALUE', 
            color='ITEM_NAME1', facet_col='ITEM_NAME1', facet_col_wrap=4, 
           labels={'ITEM_NAME1':'국가','DATA_VALUE':'외환보유액','TIME':'날짜'})
fig.update_layout(
    title_text='주요국가의 정책금리',
    title={'x':0.5}
)
fig.show()

중국은 2015년 이후 외환 보유액이 감소했고, 나머지는 증가하는 모습을 보입니다.

스위스의 경우는 2009년 이후 증가 폭이 큰 것을 알 수 있습니다.

2022년 근처에서는 보유액이 감소하는데 기준 금리 이상이 영향이 있는 것 같습니다.

 

 

3. 22년도 외환보유액 변동

2022년 1월부터 2022년 11월까지의 데이터만 저장하고,

각 국가의 변동률 및 누적 변동률을 계산했습니다.

df3=df1.loc[(df1['date']>='2022-01-01') & (df1['date']<='2022-11-01')]
df3['변동율']=0
df3['누적변동율']=0
countries=df3['ITEM_NAME1'].unique()

for country in countries:
    df3.loc[df3['ITEM_NAME1']==country,'변동율'] = \
        df3.loc[df3['ITEM_NAME1']==country,'DATA_VALUE'].pct_change()
    df3.loc[df3['ITEM_NAME1']==country,'누적변동율'] = \
        ((df3.loc[df3['ITEM_NAME1']==country,'변동율'] + 1).cumprod()-1) * 100
df3

 

반응형

 

 

그럼 2022년 1월 ~ 11월의 외환보유액의 누적변동률을 확인해 보겠습니다.

df3_11=df3.loc[df3['date']=='2022-11-01'].sort_values('누적변동율')

fig=px.bar(data_frame=df3_11, x='누적변동율', y='ITEM_NAME1')
fig.update_layout(
    title_text='외환보유액 누적변동(2022/01 ~ 2022/11)',
    title={'x':0.5},
    height=700
)
fig.show()

대부분의 국가들이 보유액이 감소했지만, 터키, 슬로바키아, 남아공등의 몇 개의 국가들은 증가했습니다.

체코, 칠레, 그리스, 라트비아는 감소 비율이 큰 국가들입니다.

 

 

 

이상으로 주요 국가의 외환 보유액을 확인하고,  22년 금리 상승기의 외환 보유액 변동을 확인해 보겠습니다.

 

 

반응형