Introduction: Writing the Function

library(quantmod); library(dygraphs); library(RColorBrewer)

year <- 2010

# Function to calculate stock monthly returns
stock_return <- function(ticker)
{
  symbol <- getSymbols(ticker, src = "yahoo", auto.assign = FALSE)
  symbol <- na.omit(symbol)
  symbol <- symbol[,6] # Extracts the adjusted closing stock price (accounts for stock splits)
  
  return <- monthlyReturn(symbol, type = "arithmetic")
  
  assign(ticker, return, .GlobalEnv) # Assign xts objects to global environment
}

Preparing the Data

stock_return("FB")
stock_return("NFLX")
stock_return("AMZN")

merged_return <- merge.xts(FB, NFLX, AMZN, all = FALSE)
colnames(merged_return) <- c("FB", "NFLX", "AMZN")

head(merged_return)
##                     FB        NFLX        AMZN
## 2012-05-31 -0.22573895 -0.20838531 -0.08188870
## 2012-06-29  0.05067568  0.07960282  0.07251891
## 2012-07-31 -0.30192929 -0.16995190  0.02167724
## 2012-08-31 -0.16812530  0.05048373  0.06416631
## 2012-09-28  0.19933561 -0.08841251  0.02436864
## 2012-10-31 -0.02539238  0.45554736 -0.08426395
dygraph(merged_return, main = "Facebook vs. Netflix vs. Amazon") %>%
  dyAxis("y", label = "") %>%
  dyOptions(colors = brewer.pal(3, "Set1"))

Portfolio Analysis

The Sharpe Ratio