본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
금융 데이터 분석

환율 데이터 가져오기 in R

by 아참형인간 2022. 7. 7.
환율.knit

priceR 패키지를 사용한 환율 가져오기

금융 데이터 중에 주식 가격만큼 우리 주위에서 많이 사용되는 데이터가 환율 데이터이다. 환율 데이터는 priceR 패키지를 사용하면 가져올 수 있다.

priceR 패키지는 경제와 금융에서 필요한 각종 가격 정보를 가져오는 함수들과 가격정보를 분석하는데 필요한 함수들을 제공한다. priceR은 다음의 네가지 기능을 제공한다.

  • 환율 : 즉각 활용이 가능한 환율 정보 검색
  • 인플레이션 : 과거 가격 정보와 현재 가격 정보의 비교를 통한 인플레이션 정보 검색
  • 정규식 : 텍스트에서 일반적인 가격 패턴을 쉽게 추출
  • 서식 지정 : 보고서 작업(Rmarkdown 문서를 포함)에서 통화를 쉽게 처리

우선 priceR을 설치한다.

if(!require(priceR)) {
  install.packages('priceR')
  library(priceR)
}

현재 환율 데이터 가져오기

priceR 패키지에서 현재의 환율 데이터를 가져오는데 사용하는 함수는 exchange_rate_latest()이다. 이 함수는 약 170개 국가의 환율을 가져올 수 있다. 매개변수로 가져오고자 하는 환율 코드를 전달하면 현재의 170여개의 환율를 검색해준다. 매개변수로 사용되는 환율 코드는 currencies()로 검색할 수 있다.

currencies() |> head(10)
##                      description code
## 1    United Arab Emirates Dirham  AED
## 2                 Afghan Afghani  AFN
## 3                   Albanian Lek  ALL
## 4                  Armenian Dram  AMD
## 5  Netherlands Antillean Guilder  ANG
## 6                 Angolan Kwanza  AOA
## 7                 Argentine Peso  ARS
## 8              Australian Dollar  AUD
## 9                  Aruban Florin  AWG
## 10             Azerbaijani Manat  AZN
exchange_rate_latest('KRW') |> head(10)
## Daily KRW exchange rate as at end of day 2022-07-07 GMT
##    currency one_krw_is_equivalent_to
## 1       AED                 0.002815
## 2       AFN                 0.067233
## 3       ALL                 0.088895
## 4       AMD                 0.308826
## 5       ANG                 0.001382
## 6       AOA                 0.327972
## 7       ARS                 0.096826
## 8       AUD                 0.001132
## 9       AWG                 0.001377
## 10      AZN                 0.001303
exchange_rate_latest('USD') |> filter(currency == 'KRW')
## Daily USD exchange rate as at end of day 2022-07-07 GMT
##   currency one_usd_is_equivalent_to
## 1      KRW                 1304.678

과거 환율 데이터 가져오기

앞에서는 170여개의 통화에 대한 현재 환율 데이터를 가져오는 방법이었다. 하지만 특정 통화에 대한 과거 환율의 변화를 보고자 한다면 historical_exchange_rates()를 사용할 수 있다.

historical_exchange_rates(from = 'USD', to = 'KRW', start_date = '2022-01-01', end_date =  '2022-06-30') |> tail(10)
##           date one_USD_equivalent_to_x_KRW
## 172 2022-06-21                    1290.733
## 173 2022-06-22                    1296.087
## 174 2022-06-23                    1298.731
## 175 2022-06-24                    1287.772
## 176 2022-06-25                    1288.353
## 177 2022-06-26                    1287.951
## 178 2022-06-27                    1285.477
## 179 2022-06-28                    1291.284
## 180 2022-06-29                    1301.540
## 181 2022-06-30                    1287.301

만약 두 개이상의 환율표를 만들고자 한다면 어떻게 해야할까? 각각의 환율표를 만들고 날짜를 기준으로 조인해주면 만들수 있다. 다음은 원화에 대한 달러와 유로의 환율표를 만드는 방법이다.

USD_KRW <- historical_exchange_rates(from = 'USD', to = 'KRW', start_date = '2022-01-01', end_date =  '2022-06-30')

EUR_KRW <- historical_exchange_rates(from = 'EUR', to = 'KRW', start_date = '2022-01-01', end_date =  '2022-06-30')

left_join(USD_KRW, EUR_KRW, by = 'date') |> tail(10)
##           date one_USD_equivalent_to_x_KRW one_EUR_equivalent_to_x_KRW
## 172 2022-06-21                    1290.733                    1360.268
## 173 2022-06-22                    1296.087                    1369.985
## 174 2022-06-23                    1298.731                    1366.801
## 175 2022-06-24                    1287.772                    1360.385
## 176 2022-06-25                    1288.353                    1360.264
## 177 2022-06-26                    1287.951                    1361.523
## 178 2022-06-27                    1285.477                    1359.432
## 179 2022-06-28                    1291.284                    1358.808
## 180 2022-06-29                    1301.540                    1358.334
## 181 2022-06-30                    1287.301                    1348.164

환율 정보 그래프 그리기

앞서 얻어낸 원화에 대한 달러와 유로에 대한 환율 변화를 그래프로 그리면 다음과 같이 그릴 수 있다.

우선 ggplot2로 그려보겠다.

library(ggplot2)
library(lubridate)

left_join(USD_KRW, EUR_KRW, by = 'date') |>
  ggplot(aes(x = date)) +
  geom_line(aes(y = one_USD_equivalent_to_x_KRW, group = 1, color = 'USD')) +
  geom_line(aes(y = one_EUR_equivalent_to_x_KRW, group = 1, color = 'EUR')) + 
  geom_text(data = USD_KRW |> filter(date == max(date)), 
            aes(x = date, y = one_USD_equivalent_to_x_KRW, label = round(one_USD_equivalent_to_x_KRW, 0)), 
            hjust = 0, size = 8) +
  geom_text(data = EUR_KRW |> filter(date == max(date)), 
            aes(x = date, y = one_EUR_equivalent_to_x_KRW, label = round(one_EUR_equivalent_to_x_KRW, 0)), 
            hjust = 0, size = 8) +
  scale_x_date(limits = c(min(USD_KRW$date), max(USD_KRW$date+5)), date_breaks = '1 month', date_labels = '%y %B') + 
  scale_color_manual(name = '환율', values = c('USD' = 'red', 'EUR' = 'blue')) +
  labs(title = '2022년 원화의 달러와 유로 환율', x = '날짜', y = '원') + 
  theme(text = element_text(size = 25))

이를 plotly로 그리면 다음과 같이 그릴 수 있다.

library(plotly)

left_join(USD_KRW, EUR_KRW, by = 'date') |>
  plot_ly() |>
  add_lines(x = ~date, y = ~one_USD_equivalent_to_x_KRW, name = 'USD') |>
  add_lines(x = ~date, y = ~one_EUR_equivalent_to_x_KRW, name = 'EUR') |>
  layout(title = '2022년 원화의 달러와 유로 환율', 
         xaxis = list(title = '날짜'), 
         yaxis = list(title = '원'), 
         margin =  list(t = 50, b = 25, l = 25, r = 25))

댓글