filter Select Apple stock prices and save it under plotdata.In this exercise, use Chapter 4.2 Quantitative vs. Quantitative Data Visualization with R.
# Load packages
library(tidyquant)
library(tidyverse)
# Import stock prices
stock_prices <- tq_get(c("AAPL", "MSFT", "AMZN"), get = "stock.prices", from = "2021-01-01")
stock_prices
## # A tibble: 120 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2021-01-04 134. 134. 127. 129. 143301900 129.
## 2 AAPL 2021-01-05 129. 132. 128. 131. 97664900 131.
## 3 AAPL 2021-01-06 128. 131. 126. 127. 155088000 126.
## 4 AAPL 2021-01-07 128. 132. 128. 131. 109578200 131.
## 5 AAPL 2021-01-08 132. 133. 130. 132. 105158200 132.
## 6 AAPL 2021-01-11 129. 130. 128. 129. 100620900 129.
## 7 AAPL 2021-01-12 128. 130. 127. 129. 91951100 129.
## 8 AAPL 2021-01-13 129. 131. 128. 131. 88636800 131.
## 9 AAPL 2021-01-14 131. 131 129. 129. 90221800 129.
## 10 AAPL 2021-01-15 129. 130. 127 127. 111598500 127.
## # ... with 110 more rows
# Calculate daily returns
stock_returns <-
stock_prices %>%
group_by(symbol) %>%
tq_mutate(select = adjusted, mutate_fun = periodReturn, period = "daily")
stock_returns
## # A tibble: 120 x 9
## # Groups: symbol [3]
## symbol date open high low close volume adjusted daily.returns
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2021-01-04 134. 134. 127. 129. 143301900 129. 0
## 2 AAPL 2021-01-05 129. 132. 128. 131. 97664900 131. 0.0124
## 3 AAPL 2021-01-06 128. 131. 126. 127. 155088000 126. -0.0337
## 4 AAPL 2021-01-07 128. 132. 128. 131. 109578200 131. 0.0341
## 5 AAPL 2021-01-08 132. 133. 130. 132. 105158200 132. 0.00863
## 6 AAPL 2021-01-11 129. 130. 128. 129. 100620900 129. -0.0232
## 7 AAPL 2021-01-12 128. 130. 127. 129. 91951100 129. -0.00140
## 8 AAPL 2021-01-13 129. 131. 128. 131. 88636800 131. 0.0162
## 9 AAPL 2021-01-14 131. 131 129. 129. 90221800 129. -0.0151
## 10 AAPL 2021-01-15 129. 130. 127 127. 111598500 127. -0.0137
## # ... with 110 more rows
Hint: In your interpretation, make sure to use all variables.
Row two of stock_returns includes: symbol, date, open, high, low, close, volume, and adjusted.
filter Select Apple stock prices and save it under plotdata.Hint: See the code in 4.2.2 Line plot.
plotdata <- filter(stock_prices,
symbol == "AAPL")
plotdata
## # A tibble: 40 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AAPL 2021-01-04 134. 134. 127. 129. 143301900 129.
## 2 AAPL 2021-01-05 129. 132. 128. 131. 97664900 131.
## 3 AAPL 2021-01-06 128. 131. 126. 127. 155088000 126.
## 4 AAPL 2021-01-07 128. 132. 128. 131. 109578200 131.
## 5 AAPL 2021-01-08 132. 133. 130. 132. 105158200 132.
## 6 AAPL 2021-01-11 129. 130. 128. 129. 100620900 129.
## 7 AAPL 2021-01-12 128. 130. 127. 129. 91951100 129.
## 8 AAPL 2021-01-13 129. 131. 128. 131. 88636800 131.
## 9 AAPL 2021-01-14 131. 131 129. 129. 90221800 129.
## 10 AAPL 2021-01-15 129. 130. 127 127. 111598500 127.
## # ... with 30 more rows
Hint: See the code in 4.2.2 Line plot. Use plotdata you created in Q3.
ggplot(plotdata,
aes(x = date,
y = open)) +
geom_line()
Hint: Interpret the line plot you created in Q4.
This year, Apple stock began with a sell off. After some volatility, it surged to its peak toward the middle to end of January. It decreased into the beginning of February, then started to recover. In the middle of February, the stock had its biggest sell off taking it to the lowest level this year. At the beginning of March, Apple began to increase again, but is still at a lower level than the start of the year.
Hint: See the code in 4.3.1 Bar chart (on summary statistics).
plotdata <- stock_returns %>%
group_by(symbol) %>%
summarize(mean_daily.returns = mean(daily.returns))
plotdata
## # A tibble: 3 x 2
## symbol mean_daily.returns
## * <chr> <dbl>
## 1 AAPL -0.000592
## 2 AMZN -0.000600
## 3 MSFT 0.00197
Hint: See the code in 4.3.1 Bar chart (on summary statistics). Use plotdata you created in Q5.
I would expect the highest daily return from MFST as it has the highest average daily return.
ggplot(plotdata,
aes(x = symbol,
y = mean_daily.returns)) +
geom_bar(stat = "identity")
Hint: Refer to the RMarkdown Reference Guide.