1 tidyquant 데이터 가져오기 1

tidyquant 팩키지 tq_get() 함수를 통해 다양한 소스(source)를 통해 금융, 경제, 재무 데이터를 손쉽게 가져올 수 있다.

금융/경제/재무 데이터 저장소

과거 quantmod, quandl 팩키지를 활용하여 많이 사용되는 금융데이터를 다양한 곳에서 R로 바로 불러올 수 있다. 예를 들어, quantmod 팩키지 getSymbols() 함수는 Yahoo! Finance, Google Finance, FRED, Oanda 등에서 바로 데이터를 원하는 형태로 가져오고 가져온 데이터는 기본적으로 xts 자료구조로 일관되게 후속처리를 할 수 있었다면, 이제 tq_get() 함수를 통해서 동일하게 데이터를 가져와서 작업을 수행할 수 있다.

금융/경제/재무 데이터 가져오기

2 금융/경제/재무 데이터

종합주가지수(Kospi)에 대해 구글 금융 웹사이트 검색창에 kospi를 타이핑하면 KRX:KOSPI 이 확인된다. 이를 해당 기간에 맞춰 가져온다. 야후 금융(Yahoo Finance)에서 SK 이노베이션 주식을 검색하면 096770.KS 코드가 확인된다. 마찬가지로 방법으로 환율은 oanda 웹사이트에서 불러오는데 환종을 확인해야 한다. 환종정보는 quantmod::oanda.currencies에서 주요국에 대한 환종을 확인한다. 마찬가지로 대한민국 실업률도 FRED 웹사이트에 검색하게 되면 LRHUTTTTKRA156N 확인된다. 이를 가져와서 시각화한다.

2.1 인덱스 및 주식거래소

tq_index_options(), tq_exchange_options() 함수를 사용해서 인덱스 데이터와 주식거래소(Stock Exchanges) 데이터를 가져온다. 다만, 자바 의존성이 있어 자바환경을 맞춰 설치하고 XLConnect 팩키지를 연결하면 된다.

# 0. 환경설정 -----
library(tidyverse)
library(tidyquant)
library(XLConnect)
library(timetk)
library(sweep)
library(extrafont)
library(forecast)
loadfonts()

# 1. 주식 데이터 -----
## 1.1. 인덱스 데이터
tq_index_options()
# down_df <- tq_index("SP500")

## 1.2. 주식거래소(Stock Exchanges)
tq_exchange_options()
# tq_exchange("NASDAQ")

2.2 주식

주식관련하여 주가 정보 및 재무제표, 기술분석지표가 차례로 제공되고 있다.

Google Finance stopped providing data in March, 2018. You could try setting src = “yahoo” instead.

SK 이노베이션 주식은 앞서 확인한 096770.KS으로 “2010-01-01” 시점부터 현재까지 주식시세 데이터를 가져온다. 재무제표는 tq_get() 함수에 인자로 get = "financials", 기술분석지표(Key Ratios & Key Stats)는 get = "key.ratios" 명령어로 가져올 수 있다.

## 1.3. 주식 데이터
ski_prices  <- tq_get("096770.KS", get = "stock.prices", from = "2010-01-01")
ski_prices 
# A tibble: 2,087 x 7
   date         open   high    low  close  volume adjusted
   <date>      <dbl>  <dbl>  <dbl>  <dbl>   <dbl>    <dbl>
 1 2010-01-04 118000 118500 116500 117000  598112   96376.
 2 2010-01-05 119000 123000 118500 121500 1714028  100083.
 3 2010-01-06 123000 124000 121000 122000  882393  100495.
 4 2010-01-07 124000 124500 121000 121500  853069  100083.
 5 2010-01-08 122500 123000 118000 122500  827690  100907.
 6 2010-01-11 123500 126000 123000 123500  729640  101730.
 7 2010-01-12 124000 124000 121000 123500  489140  101730.
 8 2010-01-13 121500 122500 117000 118000 1086518   97200.
 9 2010-01-14 118500 120500 117500 119000  878582   98024.
10 2010-01-15 119500 120500 117000 118500  571581   97612.
# ... with 2,077 more rows
## 1.4. 재무제표
aapl_financials <- tq_get("AAPL", get = "financials")
Warning: Google Finance stopped providing data in March, 2018. 
We are currently looking for alternative financial data sources.
## 1.5. 기술분석지표(Key Ratios & Key Stats)
appl_key_ratios <- tq_get("AAPL", get = "key.ratios")
appl_key_ratios
# A tibble: 7 x 2
  section           data              
  <chr>             <list>            
1 Financials        <tibble [150 x 5]>
2 Profitability     <tibble [170 x 5]>
3 Growth            <tibble [160 x 5]>
4 Cash Flow         <tibble [50 x 5]> 
5 Financial Health  <tibble [240 x 5]>
6 Efficiency Ratios <tibble [80 x 5]> 
7 Valuation Ratios  <tibble [40 x 5]> 

2.3 원자재

원자재 가격은 WTI 원유가격은 quandl을 통해 가져올 수 있고, 자료제공 기간의 한계가 있기 때문에 FRED를 통해 데이터를 가져오는 것도 가능하다.

# 2. 원자재 -----

# quandl_api_key(quandl_apikey)
# quandl_search(query = "Oil", database_code = "NSE", per_page = 3)

# 3. 경제데이터 -----
## 3.1. WTI 원유가격
wti_price_usd <- tq_get("DCOILWTICO", get = "economic.data")
wti_price_usd 
# A tibble: 2,725 x 2
   date       price
   <date>     <dbl>
 1 2008-01-01  NA  
 2 2008-01-02  99.6
 3 2008-01-03  99.2
 4 2008-01-04  97.9
 5 2008-01-07  95.1
 6 2008-01-08  96.4
 7 2008-01-09  95.6
 8 2008-01-10  93.9
 9 2008-01-11  92.7
10 2008-01-14  94.2
# ... with 2,715 more rows

2.4 환율

FRED에서 제공하는 환율정보도 가져오는 것이 가능한데 get = "exchange.rates"을 설정하고 해당 환종을 지정하면 환율데이터를 쉽게 가져올 수 있다.

## 3.2. 환율 데이터
usd_krw <- tq_get("USD/KRW", 
                  get = "exchange.rates", 
                  from = Sys.Date() - lubridate::days(10))
usd_krw
# A tibble: 10 x 2
   date       exchange.rate
   <date>             <dbl>
 1 2018-06-08         1075.
 2 2018-06-09         1075.
 3 2018-06-10         1075.
 4 2018-06-11         1075.
 5 2018-06-12         1077.
 6 2018-06-13         1084.
 7 2018-06-14         1085.
 8 2018-06-15         1098.
 9 2018-06-16         1103.
10 2018-06-17         1103.

2.5 귀금속

FRED에서 제공하는 귀금속 정보도 가져올 수 있다. get = "metal.prices"을 설정하고 해당 귀금속, 예를 들어 XAU(gold), XAG(silver), XPD(palladium), XPT (platinum)을 지정하면 귀금속 데이터를 쉽게 가져올 수 있다.

## 3.3. 금속 데이터
gold_price_krw <- tq_get("gold", get = "metal.prices", 
                         from = Sys.Date() - lubridate::days(10),
                         base.currency = "KRW")
gold_price_krw
# A tibble: 10 x 2
   date          price
   <date>        <dbl>
 1 2018-06-08 1395146.
 2 2018-06-09 1396745.
 3 2018-06-10 1396619.
 4 2018-06-11 1396418.
 5 2018-06-12 1397570.
 6 2018-06-13 1405702.
 7 2018-06-14 1412820.
 8 2018-06-15 1417366.
 9 2018-06-16 1411420.
10 2018-06-17 1411627.

2.6 거시경제 지표

대한민국 실업률도 FRED 웹사이트에 검색하게 되면 LRHUTTTTKRA156N 확인된다. 대한민국 현시점(2018-06-18) 이후 12개월 예측 실업률에 대한 자세한 사항은 데이터 과학 – 금융(Finance), 실업률 예측 - tidyquant을 참조한다.

# 1. 데이터 -----
unemp_tbl <- tq_get("LRUN64TTKRM156N", 
                            get  = "economic.data", 
                            from = "2000-01-01",
                            to   = Sys.Date())
(unemp_tbl <- unemp_tbl %>% 
  rename(실업률 = price,
            연월 = date))
# A tibble: 220 x 2
   연월       실업률
   <date>      <dbl>
 1 2000-01-01   5.93
 2 2000-02-01   5.87
 3 2000-03-01   5.29
 4 2000-04-01   4.66
 5 2000-05-01   4.29
 6 2000-06-01   4.06
 7 2000-07-01   4.14
 8 2000-08-01   4.26
 9 2000-09-01   4.22
10 2000-10-01   3.90
# ... with 210 more rows