You are considering three index funds that follow the three major market indexes: the Dow Jones Industrial Average, the S&P 500, and the NASDAQ Compsite Index.

Q1. Load tidyquant and tidyverse packages.

library(tidyquant)
library(tidyverse)

Q2. Import the Dow Jones Industrial Average, the S&P 500, and the NASDAQ Compsite Index for the last 30 years. Save the imported data under Stocks.

Hint: Add group_by(symbol) at the end of the code so that calculations below will be done per stock.

from = today() - years(30)
Stocks <- tq_get(c("^DJI","^GSPC", "^IXIC"), get = "stock.prices", from = from) %>% group_by(symbol)
Stocks
## # A tibble: 22,677 x 8
## # Groups:   symbol [3]
##    symbol date        open  high   low close   volume adjusted
##    <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 ^DJI   1989-04-17 2332. 2348. 2324. 2338. 13760000    2338.
##  2 ^DJI   1989-04-18 2357. 2386  2351. 2379. 25240000    2379.
##  3 ^DJI   1989-04-19 2377. 2398. 2370. 2387. 21700000    2387.
##  4 ^DJI   1989-04-20 2390. 2399. 2357. 2377. 21410000    2377.
##  5 ^DJI   1989-04-21 2383. 2413. 2373. 2409. 27210000    2409.
##  6 ^DJI   1989-04-24 2397. 2416. 2385. 2403. 18550000    2403.
##  7 ^DJI   1989-04-25 2408. 2422. 2379. 2387. 21850000    2387.
##  8 ^DJI   1989-04-26 2393. 2404. 2374. 2389. 17050000    2389.
##  9 ^DJI   1989-04-27 2393. 2433. 2388. 2419. 25780000    2419.
## 10 ^DJI   1989-04-28 2420. 2430. 2404. 2419. 17410000    2419.
## # ... with 22,667 more rows

Q3. Calculate yearly returns, and save the result under returns_yearly.

Hint: Take Stocks and pipe it to tidyquant::tq_transmute. Assign the result to returns_yearly.

returns_yearly <-
  Stocks %>%
  tq_transmute(select = adjusted, mutate_fun =  periodReturn,
period = "yearly")

returns_yearly
## # A tibble: 93 x 3
## # Groups:   symbol [3]
##    symbol date       yearly.returns
##    <chr>  <date>              <dbl>
##  1 ^DJI   1989-12-29         0.178 
##  2 ^DJI   1990-12-31        -0.0434
##  3 ^DJI   1991-12-31         0.203 
##  4 ^DJI   1992-12-31         0.0417
##  5 ^DJI   1993-12-31         0.137 
##  6 ^DJI   1994-12-30         0.0214
##  7 ^DJI   1995-12-29         0.335 
##  8 ^DJI   1996-12-31         0.260 
##  9 ^DJI   1997-12-31         0.226 
## 10 ^DJI   1998-12-31         0.161 
## # ... with 83 more rows

Q4. Create a density plot for returns of all considered index funds.

Hint: Refer to the ggplot2 cheatsheet. Look for geom_density under One Variable. Use the fill argument to create the plot per each stock.

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

Q5. Which of the considered index funds has the highest expected yearly return?

Hint: Take returns_yearly and pipe it to summarise. Calculate the mean yearly returns.

returns_yearly %>%
  summarize(mean = mean(yearly.returns))
## # A tibble: 3 x 2
##   symbol   mean
##   <chr>   <dbl>
## 1 ^DJI   0.0917
## 2 ^GSPC  0.0895
## 3 ^IXIC  0.134

The NASDAQ has the highest expected return at about 13.4% return per year.

Q6. Which of the considered index funds is the riskiest?

Hint: Discuss your answer in terms of standard deviation. Take returns_yearly and pipe it to tidyquant::tq_performance. Use the performance_fun argument to compute sd (standard deviation).

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

The NASDAQ has the highest standard deviation at about 27% standard deviation, much higher than the other indexes.

Q7. Would you consider the standard deviation as an appropriate measure of risk for the considered index funds?

Hint: Discuss your answer in terms of whether the returns are normally distributed. The normality of the distribution may be measured by skewness and kurtosis. To compute the metrics, take returns_yearly and pipe it to tidyquant::tq_performance. Use the performance_fun argument to compute skewness. Do the same for kurtosis.

returns_yearly %>%
  tq_performance(Ra = yearly.returns, performance_fun = skewness)
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol skewness.1
##   <chr>       <dbl>
## 1 ^DJI       -0.777
## 2 ^GSPC      -0.819
## 3 ^IXIC       0.179
returns_yearly %>%
  tq_performance(Ra = yearly.returns, performance_fun = kurtosis)
## # A tibble: 3 x 2
## # Groups:   symbol [3]
##   symbol kurtosis.1
##   <chr>       <dbl>
## 1 ^DJI        0.750
## 2 ^GSPC       0.631
## 3 ^IXIC       0.435

Standard deviation is a good measure of risk for all considered indexes. Standard deviation can show an investor the probability of expected returns are. Using standard deviation, skewness, and kurtosis, an investor can see how often either positive or negative returns are.

The Dow Jones negative skewness and a positive kurtosis, which means a large negative return is more likely than a large postive return. The S&P 500 also had negative skewness and a positive kurtosis, which means a large negative return is more likely than a large postive return. The NASDAQ, unlike the other indexes considered, had a postiive skewness and positive kurtosis, making a large positive return more likely than a large negative return. As these stocks are not normally distributed, using standard deviation, skewness, and kurtosis helps to show the real distribution of the indexes.

Q8. Which of the considered index funds poses the greatest downside risks?

Hint: Discuss your answer in terms of HistoricalES(95%), HistoricalVaR(95%), and SemiDeviation. To compute the metrics, take returns_yearly and pipe it to tidyquant::tq_performance. Use the performance_fun argument to compute table.DownsideRisk.

returns_yearly %>%
  tq_performance(Ra = yearly.returns, performance_fun = table.DownsideRisk) %>%
  t()
##                                           [,1]      [,2]      [,3]     
## symbol                                    "^DJI"    "^GSPC"   "^IXIC"  
## DownsideDeviation(0%)                     "0.0712"  "0.0877"  "0.1266" 
## DownsideDeviation(MAR=0.833333333333333%) "0.0741"  "0.0908"  "0.1300" 
## DownsideDeviation(Rf=0%)                  "0.0712"  "0.0877"  "0.1266" 
## GainDeviation                             "0.0888"  "0.0928"  "0.2028" 
## HistoricalES(95%)                         "-0.2530" "-0.3093" "-0.3991"
## HistoricalVaR(95%)                        "-0.1193" "-0.1820" "-0.3541"
## LossDeviation                             "0.1092"  "0.1261"  "0.1606" 
## MaximumDrawdown                           "0.3384"  "0.4012"  "0.6718" 
## ModifiedES(95%)                           "-0.2584" "-0.3013" "-0.4083"
## ModifiedVaR(95%)                          "-0.1718" "-0.2116" "-0.2957"
## SemiDeviation                             "0.1105"  "0.1268"  "0.1883"

Of the considered indexes, the NASDAQ has historically had the greatest downside risk. The NASDAQ has the highest standard deviation below the mean return at about 18%, using semi-deviation. The NASDAQ has the greatest historical losses at 95% confidence at about a -35% return, using VAR. The average of the 5% most negative monthly returns is largest for the NASDAQ at about a -40% loss, using ES. Overall through these three calculations, the NASDAQ is the most volatile and has the greatest losses historically.

Q9. Which of the considered index funds would you choose if you were a risk-averse investor?

Hint: Discuss your answer in terms of Sharpe Ratio. Take returns_yearly and pipe it to tidyquant:: tq_performance. Use the performance_fun argument to compute SharpeRatio. The function returns Sharpe Ratios adjusted to three different types of risks: 1) standard deviation, 2) expected shortfall (5% worst loss), and 3) value at risk (the largest loss at the 95% confidence level).

returns_yearly %>%
  tq_performance(Ra = yearly.returns, performance_fun = SharpeRatio)
## # A tibble: 3 x 4
## # Groups:   symbol [3]
##   symbol `ESSharpe(Rf=0%,p=95~ `StdDevSharpe(Rf=0%,p=~ `VaRSharpe(Rf=0%,p=~
##   <chr>                  <dbl>                   <dbl>                <dbl>
## 1 ^DJI                   0.355                   0.630                0.534
## 2 ^GSPC                  0.297                   0.542                0.423
## 3 ^IXIC                  0.328                   0.486                0.454

When investing, you should invest in the Dow Jones as it has a higher expected return per unit of risk. The Sharpe ratio calculates the expected return per unit of risk, meaning that all values above are adjusted to the same unit of risk. As a risk averse investor would wish to invest in a stock with the lowest risk, the Dow Jones brings the highest returns when adjusted to risk.

Q10.a. Display both code and the results of the code on the webpage.

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

Q10.c. Use the correct slug.