Nothing
## ----echo = FALSE, message = FALSE, warning = FALSE---------------------------
knitr::opts_chunk$set(message = FALSE,
warning = FALSE,
fig.width = 8,
fig.height = 4.5,
fig.align = 'center',
out.width='95%',
dpi = 150)
# devtools::load_all() # Travis CI fails on load_all()
## ----include=FALSE------------------------------------------------------------
# Loads packages for R CMD CHECK
library(lubridate)
library(dplyr)
library(purrr)
library(ggplot2)
library(tidyr)
library(tidyquant)
## -----------------------------------------------------------------------------
c("AAPL", "GOOG", "META") %>%
tq_get(get = "stock.prices", from = "2016-01-01", to = "2017-01-01")
## -----------------------------------------------------------------------------
stock_list <- tibble(stocks = c("AAPL", "JPM", "CVX"),
industry = c("Technology", "Financial", "Energy"))
stock_list
## -----------------------------------------------------------------------------
stock_list %>%
tq_get(get = "stock.prices", from = "2016-01-01", to = "2017-01-01")
## -----------------------------------------------------------------------------
tq_index("DOW")
## ----eval=FALSE---------------------------------------------------------------
# tq_exchange("NYSE")
## -----------------------------------------------------------------------------
tq_index("DOW") %>%
slice(1:3) %>%
tq_get(get = "stock.prices")
## -----------------------------------------------------------------------------
FANG
## -----------------------------------------------------------------------------
FANG_returns_yearly <- FANG %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "yearly",
col_rename = "yearly.returns")
## -----------------------------------------------------------------------------
FANG_returns_yearly %>%
ggplot(aes(x = year(date), y = yearly.returns, fill = symbol)) +
geom_bar(position = "dodge", stat = "identity") +
labs(title = "FANG: Annual Returns",
subtitle = "Mutating at scale is quick and easy!",
y = "Returns", x = "", color = "") +
scale_y_continuous(labels = scales::percent) +
coord_flip() +
theme_tq() +
scale_fill_tq()
## -----------------------------------------------------------------------------
AAPL <- tq_get("AAPL", from = "2007-01-01", to = "2016-12-31")
AAPL
## -----------------------------------------------------------------------------
get_annual_returns <- function(stock.returns) {
stock.returns %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
type = "log",
period = "yearly")
}
## -----------------------------------------------------------------------------
AAPL_annual_log_returns <- get_annual_returns(AAPL)
AAPL_annual_log_returns
## -----------------------------------------------------------------------------
AAPL_annual_log_returns %>%
ggplot(aes(x = year(date), y = yearly.returns)) +
geom_hline(yintercept = 0, color = palette_light()[[1]]) +
geom_point(size = 2, color = palette_light()[[3]]) +
geom_line(linewidth = 1, color = palette_light()[[3]]) +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "AAPL: Visualizing Trends in Annual Returns",
x = "", y = "Annual Returns", color = "") +
theme_tq()
## -----------------------------------------------------------------------------
mod <- lm(yearly.returns ~ year(date), data = AAPL_annual_log_returns)
mod
## -----------------------------------------------------------------------------
library(broom)
tidy(mod)
## -----------------------------------------------------------------------------
get_model <- function(stock_data) {
annual_returns <- get_annual_returns(stock_data)
mod <- lm(yearly.returns ~ year(date), data = annual_returns)
tidy(mod)
}
## -----------------------------------------------------------------------------
get_model(AAPL)
## -----------------------------------------------------------------------------
set.seed(10)
stocks_tbl <- tq_index("SP500") %>%
sample_n(5)
stocks_tbl
## -----------------------------------------------------------------------------
stocks_model_stats <- stocks_tbl %>%
select(symbol, company) %>%
tq_get(from = "2007-01-01", to = "2016-12-31") %>%
# Nest
group_by(symbol, company) %>%
nest() %>%
# Apply the get_model() function to the new "nested" data column
mutate(model = map(data, get_model)) %>%
# Unnest and collect slope
unnest(model) %>%
filter(term == "year(date)") %>%
arrange(desc(estimate)) %>%
select(-term)
stocks_model_stats
## -----------------------------------------------------------------------------
tq_get("XYZ", "stock.prices")
## ----warning = TRUE-----------------------------------------------------------
c("AAPL", "GOOG", "BAD APPLE") %>%
tq_get(get = "stock.prices", complete_cases = TRUE)
## ----warning = TRUE-----------------------------------------------------------
c("AAPL", "GOOG", "BAD APPLE") %>%
tq_get(get = "stock.prices", complete_cases = FALSE)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.