library(quantmod)
library(readr)
library(xts)
library(PerformanceAnalytics)

#sp500 <- getSymbols("^GSPC", from = "1985-12-31", to = "2016-08-01", auto.assign = FALSE)
nasdaq <- getSymbols("^IXIC", from = "1985-12-31", to = "2016-08-01", auto.assign = FALSE)

# Convert the daily frequency to monthly frequency: (2.1 Exploring the monthly S&P 500 returns)
nasdaq_monthly <- to.monthly(nasdaq)
head(nasdaq_monthly)
##          nasdaq.Open nasdaq.High nasdaq.Low nasdaq.Close nasdaq.Volume
## Dec 1985       323.6       324.9      323.2        324.9     112700000
## Jan 1986       325.0       335.8      322.1        335.8    2410850000
## Feb 1986       336.1       359.8      335.8        359.5    2345500000
## Mar 1986       360.0       374.7      359.1        374.7    2595900000
## Apr 1986       375.8       393.0      368.0        383.2    2814600000
## May 1986       383.2       400.4      381.5        400.2    2412320000
##          nasdaq.Adjusted
## Dec 1985           324.9
## Jan 1986           335.8
## Feb 1986           359.5
## Mar 1986           374.7
## Apr 1986           383.2
## May 1986           400.2

# Define nasdaq_returns (2.2 The monthly mean and volatility)
nasdaq_returns <- Return.calculate(nasdaq_monthly$nasdaq.Close)
head(nasdaq_returns)
##          nasdaq.Close
## Dec 1985           NA
## Jan 1986   0.03354877
## Feb 1986   0.07057776
## Mar 1986   0.04228098
## Apr 1986   0.02268481
## May 1986   0.04436326

nasdaq_returns <- nasdaq_returns[-1, ]
colnames(nasdaq_returns) <- "nasdaq"
head(nasdaq_returns)
##              nasdaq
## Jan 1986 0.03354877
## Feb 1986 0.07057776
## Mar 1986 0.04228098
## Apr 1986 0.02268481
## May 1986 0.04436326
## Jun 1986 0.01324335

# Import rf (2.3 Excess returns and the portfolio’s Sharpe ratio)
rf <- read.csv("~/resources/rstudio/New Folder With Items 2/rf.csv")

rf$Date <- as.Date(rf$Date, format("%m/%d/%Y"))
rf <- rf[order(rf$Date), ]
rf <- as.xts(rf[, 2], order.by = rf$Date)
head(rf)
##              [,1]
## 1986-01-31 0.0053
## 1986-02-28 0.0060
## 1986-03-31 0.0052
## 1986-04-30 0.0049
## 1986-05-31 0.0052
## 1986-06-30 0.0052


# Align dates of nasdaq_returns
merged <- merge(rf, nasdaq_returns)
head(merged)
##                rf     nasdaq
## 1986-01-01     NA 0.03354877
## 1986-01-31 0.0053         NA
## 1986-02-01     NA 0.07057776
## 1986-02-28 0.0060         NA
## 1986-03-01     NA 0.04228098
## 1986-03-31 0.0052         NA

merged <- na.locf(merged)
head(merged)
##                rf     nasdaq
## 1986-01-01     NA 0.03354877
## 1986-01-31 0.0053 0.03354877
## 1986-02-01 0.0053 0.07057776
## 1986-02-28 0.0060 0.07057776
## 1986-03-01 0.0060 0.04228098
## 1986-03-31 0.0052 0.04228098

merged <- merged[index(rf)]
head(merged)
##                rf     nasdaq
## 1986-01-31 0.0053 0.03354877
## 1986-02-28 0.0060 0.07057776
## 1986-03-31 0.0052 0.04228098
## 1986-04-30 0.0049 0.02268481
## 1986-05-31 0.0052 0.04436326
## 1986-06-30 0.0052 0.01324335

nasdaq_returns <- merged[, 2]
head(nasdaq_returns)
##                nasdaq
## 1986-01-31 0.03354877
## 1986-02-28 0.07057776
## 1986-03-31 0.04228098
## 1986-04-30 0.02268481
## 1986-05-31 0.04436326
## 1986-06-30 0.01324335

# Compute the annualized risk free rate
annualized_rf <- (1 + rf)^12 - 1

# Plot the annualized risk free rate
plot.zoo(annualized_rf)




# Compute the series of excess portfolio returns
# Adjust date for nasdaq_returns. This code below doesn't work b/c two objects date don't match
nasdaq_excess <- nasdaq_returns - rf

head(nasdaq_returns)
##                nasdaq
## 1986-01-31 0.03354877
## 1986-02-28 0.07057776
## 1986-03-31 0.04228098
## 1986-04-30 0.02268481
## 1986-05-31 0.04436326
## 1986-06-30 0.01324335

head(rf)
##              [,1]
## 1986-01-31 0.0053
## 1986-02-28 0.0060
## 1986-03-31 0.0052
## 1986-04-30 0.0049
## 1986-05-31 0.0052
## 1986-06-30 0.0052

# Compare the mean
mean(nasdaq_returns)
## [1] 0.009794148

mean(nasdaq_excess)
## [1] 0.007056104


# Compute the Sharpe ratio
nasdaq_sharpe <- mean(nasdaq_excess) / sd(nasdaq_returns)
nasdaq_sharpe
## [1] 0.1107234

I would assume the Sharpe Ration for the S&P 500 would be less than that of the NASDAQ composite because the S&P 500 contains 500 large firms. These large firms will assumibly have a lower risk and lower yield than that of small/medium/large firms listed on the NASDAQ.