# Load packages
library(tidyquant)
library(tidyverse)

# Import stock prices and calculate returns
returns_yearly <- c("^DJI", "^GSPC", "^IXIC") %>%
    tq_get(get  = "stock.prices",
           from = "1990-01-01",
           to   = "2020-11-01") %>%
    group_by(symbol) %>%
    tq_transmute(select     = adjusted,
                 mutate_fun = yearlyReturn)
returns_yearly
## # A tibble: 91 x 3
## # Groups:   symbol [3]
##    symbol date       yearly.returns
##    <chr>  <date>              <dbl>
##  1 ^DJI   1992-12-31         0.0406
##  2 ^DJI   1993-12-31         0.137 
##  3 ^DJI   1994-12-30         0.0214
##  4 ^DJI   1995-12-29         0.335 
##  5 ^DJI   1996-12-31         0.260 
##  6 ^DJI   1997-12-31         0.226 
##  7 ^DJI   1998-12-31         0.161 
##  8 ^DJI   1999-12-31         0.252 
##  9 ^DJI   2000-12-29        -0.0617
## 10 ^DJI   2001-12-31        -0.0710
## # ... with 81 more rows

Q1 Create a density plot for the returns of the given stocks.

ggplot(returns_yearly, aes(x = yearly.returns, fill = symbol)) +
  geom_density(alpha = 0.3)

Q2 Which stock has higher expected yearly return?

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = mean
    )
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol mean.1
##   <chr>   <dbl>
## 1 ^DJI   0.0871
## 2 ^GSPC  0.0880
## 3 ^IXIC  0.143

The Nasdaq outperformed the S&P500 index in terms of mean. The Nasdaq had annual returns of 14.3% and the S&P500 index had an annual return of 8.8%.

Q3 Which stock is riskier?

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = sd
    )
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol  sd.1
##   <chr>  <dbl>
## 1 ^DJI   0.151
## 2 ^GSPC  0.169
## 3 ^IXIC  0.279

The dow has the least amount of risk than Nasdaq has it has a higher standard deviation spread. ## Q4 Is the standard deviation enough as a risk measure? Or do you need additional downside risk measurements? Why? Or why not?

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = skewness
    )
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol skewness.1
##   <chr>       <dbl>
## 1 ^DJI      -0.669 
## 2 ^GSPC     -0.700 
## 3 ^IXIC      0.0914

The dow has and S&P500 index have scews that are both negative. Which explains the ability to show returns.

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = kurtosis
    )
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol kurtosis.1
##   <chr>       <dbl>
## 1 ^DJI        0.410
## 2 ^GSPC       0.357
## 3 ^IXIC       0.289

Each of the indices have a kurtosis that is greater than zero. Meaning that there is more risk because the standard deviation, or volatility, is not a normal distribution.

Q5 Calculate the downside risk measures. Which stock has the greatest downside risk? Discuss HistoricalES(95%), HistoricalVaR(95%), and SemiDeviation.

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = table.DownsideRisk
    ) %>%
  t()
##                                           [,1]      [,2]      [,3]     
## symbol                                    "^DJI"    "^GSPC"   "^IXIC"  
## DownsideDeviation(0%)                     "0.0743"  "0.0882"  "0.1270" 
## DownsideDeviation(MAR=0.833333333333333%) "0.0775"  "0.0913"  "0.1304" 
## DownsideDeviation(Rf=0%)                  "0.0743"  "0.0882"  "0.1270" 
## GainDeviation                             "0.0935"  "0.1023"  "0.2005" 
## HistoricalES(95%)                         "-0.2530" "-0.3093" "-0.3991"
## HistoricalVaR(95%)                        "-0.1291" "-0.1820" "-0.3541"
## LossDeviation                             "0.1078"  "0.1254"  "0.1605" 
## MaximumDrawdown                           "0.3384"  "0.4012"  "0.6718" 
## ModifiedES(95%)                           "-0.2632" "-0.3017" "-0.4179"
## ModifiedVaR(95%)                          "-0.1831" "-0.2161" "-0.2995"
## SemiDeviation                             "0.1131"  "0.1275"  "0.1931"

The stock that has the greatest amount of downside risk is the Nasdaq. This is because Nasdaq exceeds in Down side risk, VAR, and ES.

Q6 Which stock would you choose? Calculate and interpret the Sharpe Ratio.

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = SharpeRatio
    )
## # A tibble: 3 x 4
## # Groups:   symbol [3]
##   symbol `ESSharpe(Rf=0%,p=95%~ `StdDevSharpe(Rf=0%,p=95~ `VaRSharpe(Rf=0%,p=95~
##   <chr>                   <dbl>                     <dbl>                  <dbl>
## 1 ^DJI                    0.331                     0.576                  0.476
## 2 ^GSPC                   0.292                     0.520                  0.407
## 3 ^IXIC                   0.342                     0.512                  0.477

The Nasdaw has the best Sharpe in all three categories.

Q7 Redo Q6 at the 99% confidence level instead of the 95% confidence level. Which stock would you choose now? Is your answer different from Q6? Why? Or why not?

returns_yearly %>%
    tq_performance(
        Ra = yearly.returns, 
        Rb = NULL, 
        performance_fun = SharpeRatio, 
        p  = 0.99
    )
## # A tibble: 3 x 4
## # Groups:   symbol [3]
##   symbol `ESSharpe(Rf=0%,p=99%~ `StdDevSharpe(Rf=0%,p=99~ `VaRSharpe(Rf=0%,p=99~
##   <chr>                   <dbl>                     <dbl>                  <dbl>
## 1 ^DJI                    0.193                     0.576                  0.271
## 2 ^GSPC                   0.169                     0.520                  0.239
## 3 ^IXIC                   0.237                     0.512                  0.289

Personally, I would decide to invest in Nasdaq because it has the highest of all ratios.

Q8 Hide the messages and warnings, but display the code and its results on the webpage.

Hint: Use message, warning, echo and results in the chunk options. Refer to the RMarkdown Reference Guide.

Q9 Display the title and your name correctly at the top of the webpage.

Q10 Use the correct slug.