目录
时间序列分析工具箱——tidyquant
本文翻译自《Demo Week: class(Monday) <- tidyquant》
原文链接:http://www.business-science.io/code-tools/2017/10/23/demo_week_tidyquant.html
tidyquant
的用途
使用 tidyquant
的六大理由:
- 直接从 Yahoo! Finance、FRED Database、Quandl 等数据源获得网络数据
- 简化 xts、zoo、quantmod、TTR 和 PerformanceAnalytics 中金融及时间序列函数的调用
- 可视化: 漂亮的主题以及针对金融的 geom(例如
geom_ma
) - 构建投资组合
- 财务分析以及投资组合归因方法
- 为金融与时间序列分析提供坚实的基础:
tidyquant
会自动加载tidyverse
和各种金融、时间序列分析包,这使得它成为任何金融或时间序列分析的理想起点。
该教程将会介绍前两个主题。其他主题请查看 tidyquant 的文档。
加载包
请先安装 tidyquant
:
# Install libraries
install.packages("tidyquant")
加载 tidyquant
。
# Load libraries
library(tidyquant) # Loads tidyverse, financial pkgs, used to get and manipulate data
tq_get
:获得数据
使用 tq_get()
获得网络数据。tidyquant
提供了大量 API 用于连接包括 Yahoo! Finance、FRED Economic Database、Quandl 等等在内的数据源。
从 Yahoo! Finance 获得股票数据
将一列股票代码传入 tq_get()
,同时设置 get = "stock.prices"
。可以添加 from
和 to
参数设置数据的起始和结束日期。
# Get Stock Prices from Yahoo! Finance
# Create a vector of stock symbols
FANG_symbols <- c("FB", "AMZN", "NFLX", "GOOG")
# Pass symbols to tq_get to get daily prices
FANG_data_d <- FANG_symbols %>%
tq_get(
get = "stock.prices",
from = "2014-01-01", to = "2016-12-31")
# Show the result
FANG_data_d
## # A tibble: 3,024 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FB 2014-01-02 54.83 55.22 54.19 54.71 43195500 54.71
## 2 FB 2014-01-03 55.02 55.65 54.53 54.56 38246200 54.56
## 3 FB 2014-01-06 54.42 57.26 54.05 57.20 68852600 57.20
## 4 FB 2014-01-07 57.70 58.55 57.22 57.92 77207400 57.92
## 5 FB 2014-01-08 57.60 58.41 57.23 58.23 56682400 58.23
## 6 FB 2014-01-09 58.65 58.96 56.65 57.22 92253300 57.22
## 7 FB 2014-01-10 57.13 58.30 57.06 57.94 42449500 57.94
## 8 FB 2014-01-13 57.91 58.25 55.38 55.91 63010900 55.91
## 9 FB 2014-01-14 56.46 57.78 56.10 57.74 37503600 57.74
## 10 FB 2014-01-15 57.98 58.57 57.27 57.60 33663400 57.60
## # ... with 3,014 more rows
可以使用 ggplot2
画出上述结果。使用 tidyquant
提供的主题(调用 theme_tq()
和 scale_color_tq()
)实现金融、商务风格的可视化效果。
# Plot data
FANG_data_d %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line() +
facet_wrap(~ symbol, ncol = 2, scales = "free_y") +
theme_tq() +
scale_color_tq() +
labs(title = "Visualize Financial Data")
从 FRED 获得经济数据
下面的例子来自房地美副首席经济学家 Leonard Kieffer 近期的文章——《A (TIDYQUANT)UM OF SOLACE》。我们将使用 tq_get()
并设置参数 get = "economic.data"
来从 FRED 经济数据库获取数据。
将一列 FRED 代码传递到 tq_get()
。
# Economic Data from the FRED
# Create a vector of FRED symbols
FRED_symbols <- c('ETOTALUSQ176N', # All housing units
'EVACANTUSQ176N', # Vacant
'EYRVACUSQ176N', # Year-round vacant
'ERENTUSQ176N') # Vacant for rent
# Pass symbols to tq_get to get economic data
FRED_data_m <- FRED_symbols %>%
tq_get(get="economic.data", from = "2001-04-01")
# Show results
FRED_data_m
## # A tibble: 260 x 3
## symbol date price
## <chr> <date> <int>
## 1 ETOTALUSQ176N 2001-04-01 117786
## 2 ETOTALUSQ176N 2001-07-01 118216
## 3 ETOTALUSQ176N 2001-10-01 118635
##