tidyquant
데이터 가져오기 1tidyquant
팩키지 tq_get()
함수를 통해 다양한 소스(source)를 통해 금융, 경제, 재무 데이터를 손쉽게 가져올 수 있다.
금융/경제/재무 데이터 저장소
- 야후 금융: https://finance.yahoo.com/
구글 금융: https://www.google.com/finance, 2018년 3월부터 금융데이터 제공 안됨.- 블룸버그(Bloomberg): Rblpapi: R Interface to ‘Bloomberg’
- Alpha Vantage: 실시간, 과거 주식, 환율, 암호화폐 시세 정보
- 모닝스타(Morningstar): 기술분석지표(Key Ratios & Key Stats)
- OANDA 환율: https://www.oanda.com/
quantmod::oanda.currencies
각국환종에 대한 요약표를 제공- 경제 데이터: https://fred.stlouisfed.org/
과거 quantmod
, quandl
팩키지를 활용하여 많이 사용되는 금융데이터를 다양한 곳에서 R로 바로 불러올 수 있다. 예를 들어, quantmod
팩키지 getSymbols()
함수는 Yahoo! Finance, Google Finance, FRED, Oanda 등에서 바로 데이터를 원하는 형태로 가져오고 가져온 데이터는 기본적으로 xts
자료구조로 일관되게 후속처리를 할 수 있었다면, 이제 tq_get()
함수를 통해서 동일하게 데이터를 가져와서 작업을 수행할 수 있다.
종합주가지수(Kospi)에 대해 구글 금융 웹사이트 검색창에 kospi
를 타이핑하면 KRX:KOSPI 이 확인된다. 이를 해당 기간에 맞춰 가져온다. 야후 금융(Yahoo Finance)에서 SK 이노베이션 주식을 검색하면 096770.KS
코드가 확인된다. 마찬가지로 방법으로 환율은 oanda
웹사이트에서 불러오는데 환종을 확인해야 한다. 환종정보는 quantmod::oanda.currencies
에서 주요국에 대한 환종을 확인한다. 마찬가지로 대한민국 실업률도 FRED
웹사이트에 검색하게 되면 LRHUTTTTKRA156N
확인된다. 이를 가져와서 시각화한다.
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")
주식관련하여 주가 정보 및 재무제표, 기술분석지표가 차례로 제공되고 있다.
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]>
원자재 가격은 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
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.
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.
대한민국 실업률도 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