Hint: Revise the given code below.
library(tidyquant)
library(tidyverse)
# Import data
from = today() - months(10)
stock <- tq_get("TSLA", get = "stock.prices", from = from)
stock
## # A tibble: 209 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TSLA 2019-06-14 211. 217. 210. 215. 7433400 215.
## 2 TSLA 2019-06-17 215. 227 214. 225. 12316800 225.
## 3 TSLA 2019-06-18 229. 235. 223. 225. 12715800 225.
## 4 TSLA 2019-06-19 225. 228. 221. 226. 6575100 226.
## 5 TSLA 2019-06-20 223 227. 216. 220. 11863500 220.
## 6 TSLA 2019-06-21 216. 222. 216. 222. 8202100 222.
## 7 TSLA 2019-06-24 223. 226. 221. 224. 5750800 224.
## 8 TSLA 2019-06-25 224. 225. 219. 220. 6182100 220.
## 9 TSLA 2019-06-26 220. 227. 218. 219. 8507200 219.
## 10 TSLA 2019-06-27 219. 223. 217. 223. 6339700 223.
## # … with 199 more rows
Hint: Rename 15-day moving average to SMA.short and 50-day moving average to SMA.long.
stock <-
stock %>%
tq_mutate(select = close, mutate_fun = SMA, n = 15) %>%
rename(SMA.short = SMA) %>%
tq_mutate(select = close, mutate_fun = SMA, n = 50) %>%
rename(SMA.long = SMA)
stock
## # A tibble: 209 x 10
## symbol date open high low close volume adjusted SMA.short SMA.long
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 TSLA 2019-06-14 211. 217. 210. 215. 7.43e6 215. NA NA
## 2 TSLA 2019-06-17 215. 227 214. 225. 1.23e7 225. NA NA
## 3 TSLA 2019-06-18 229. 235. 223. 225. 1.27e7 225. NA NA
## 4 TSLA 2019-06-19 225. 228. 221. 226. 6.58e6 226. NA NA
## 5 TSLA 2019-06-20 223 227. 216. 220. 1.19e7 220. NA NA
## 6 TSLA 2019-06-21 216. 222. 216. 222. 8.20e6 222. NA NA
## 7 TSLA 2019-06-24 223. 226. 221. 224. 5.75e6 224. NA NA
## 8 TSLA 2019-06-25 224. 225. 219. 220. 6.18e6 220. NA NA
## 9 TSLA 2019-06-26 220. 227. 218. 219. 8.51e6 219. NA NA
## 10 TSLA 2019-06-27 219. 223. 217. 223. 6.34e6 223. NA NA
## # … with 199 more rows
Hint: Select date, close, SMA.short, and SMA.long. Then, transform the data to long from so that you could have all three variables (close, SMA.short, and SMA.long) in one graph.
stock_long <-
stock %>%
select(date, close, SMA.short, SMA.long) %>%
gather(key = "type", value = "price", close:SMA.long)
stock_long
## # A tibble: 627 x 3
## date type price
## <date> <chr> <dbl>
## 1 2019-06-14 close 215.
## 2 2019-06-17 close 225.
## 3 2019-06-18 close 225.
## 4 2019-06-19 close 226.
## 5 2019-06-20 close 220.
## 6 2019-06-21 close 222.
## 7 2019-06-24 close 224.
## 8 2019-06-25 close 220.
## 9 2019-06-26 close 219.
## 10 2019-06-27 close 223.
## # … with 617 more rows
Hint: Map date to the x-axis and stock prices (close, SMA.short, and SMA.long) to the y-axis.
stock_long %>%
ggplot(aes(x = date, y = price, col = type)) +
geom_line() +
theme(legend.position="bottom") +
labs(title = "Simple Moving Averages are a Breeze with tidyquant",
x = "date",
y = "Stock Prices")
Hint: Elaborate your calculation. One word/number anwer is not enough.
the bearish crossover missed the high that was on Febuary 19th which is about a month in time lag on the crossover because the crossover was on march 17th making it a 27 day lag
Hint: Elaborate your answer. One word answer is not enough.
to reduce time lag i would reduce the SMA averages to 5 and 10 instead of 15 and 50
Hint: Use message, echo and results in the chunk options. Refer to the RMarkdown Reference Guide.