# 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

Q1 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

Q2 Which of the three stocks performed best on January 31, 2020?

According to the data, Amazon performed the best of the three, as it is the only company with a positive daily return.

Q3 Plot the distribution of daily returns by stock using boxplots.

ggplot(stock_returns,
       aes(x = symbol,
           y = daily.returns)) +
  geom_boxplot() +
  labs(title = "Distribution of Daily Returns", x = "Symbol", y = "Daily Returns")

Q4 Based on the boxplot above, which of the three stocks performed best this year?

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.

Q5 Calculate mean daily returns for each stock.

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

Q6 Plot mean daily returns using bar charts.

ggplot(avgreturns,
       aes(x = symbol, 
           y = mean_returns)) +
  geom_bar(stat = "identity") +
  labs(title = "Mean Daily Returns", x = "Symbol", y = "Mean Returns")

Q7 Create the line plot of stock prices for all three stocks in one graph.

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")

Q7.a Remove Amazon from the line plot you created in Q7.

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")