filter Select stock returns of January 31, 2020.# Load packages
library(tidyquant)
library(tidyverse)
library(dplyr)
# Import stock prices
stock_prices <- tq_get(c("WMT", "TGT", "AMZN"), get = "stock.prices", from = "2020-01-01")
# Calculate daily returns
stock_returns <-
stock_prices %>%
group_by(symbol) %>%
tq_mutate(select = adjusted, mutate_fun = periodReturn, period = "daily")
stock_returns
## # A tibble: 114 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 WMT 2020-01-02 119. 120. 119. 119. 6764900 119. 0
## 2 WMT 2020-01-03 118. 119. 118. 118. 5399200 118. -0.00883
## 3 WMT 2020-01-06 117. 118. 117. 118. 6445500 118. -0.00204
## 4 WMT 2020-01-07 117. 118. 116. 117. 6846900 117. -0.00926
## 5 WMT 2020-01-08 116. 117. 116. 116. 5875800 116. -0.00343
## 6 WMT 2020-01-09 116. 117. 116. 117. 5563700 117. 0.0103
## 7 WMT 2020-01-10 117. 117. 116. 116. 6054800 116. -0.00835
## 8 WMT 2020-01-13 116. 117. 115. 116. 6112600 116. -0.00430
## 9 WMT 2020-01-14 115. 116. 115. 116. 6585800 116. 0.00259
## 10 WMT 2020-01-15 115. 116. 115. 115. 7454200 115. -0.00775
## # … with 104 more rows
filter Select stock returns of January 31, 2020.stock_returns013120 <- filter(stock_returns, date == "2020-01-31")
stock_returns013120
## # A tibble: 3 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 WMT 2020-01-31 116. 116. 114. 114. 7775800 114. -0.0179
## 2 TGT 2020-01-31 113. 114. 110. 111. 6961900 110. -0.0343
## 3 AMZN 2020-01-31 2051. 2056. 2002. 2009. 15567300 2009. 0.0738
According to the data, Amazon performed the best of the three, as it is the only company with a positive daily return.
ggplot(stock_returns,
aes(x = symbol,
y = daily.returns)) +
geom_boxplot() +
labs(title = "Distribution of Daily Returns", x = "Symbol", y = "Daily Returns")
Based on the boxplot, Amazon has performed the best this year, with the best median return, the highest 25%ile and 75%ile, and the only positive outlier.
avgreturns <- stock_returns %>%
group_by(symbol) %>%
summarize(mean_returns = mean(daily.returns))
avgreturns
## # A tibble: 3 x 2
## symbol mean_returns
## <chr> <dbl>
## 1 AMZN 0.00126
## 2 TGT -0.00315
## 3 WMT -0.00113
ggplot(avgreturns,
aes(x = symbol,
y = mean_returns)) +
geom_bar(stat = "identity") +
labs(title = "Mean Daily Returns", x = "Symbol", y = "Mean Returns")
ggplot(stock_prices, aes(x = date, y = adjusted, group = symbol)) +
geom_line(aes(color = symbol)) +
scale_color_manual(values = c("goldenrod", "darkred", "steelblue")) +
labs(y = "Adjusted Stock Price", x = "Date", title = "Daily Stock Prices")
stock_prices2 <- tq_get(c("WMT", "TGT"), get = "stock.prices", from = "2020-01-01")
ggplot(stock_prices2, aes(x = date, y = adjusted, group = symbol)) +
geom_line(aes(color = symbol)) +
scale_color_manual(values = c("darkred", "steelblue")) +
labs(y = "Adjusted Stock Price", x = "Date", title = "Daily Stock Prices for Target vs. Walmart")