Stock Analysis of Facebook

install.packages("quantmod")
## 
##   There is a binary version available but the source version is later:
##          binary source needs_compilation
## quantmod 0.4.18 0.4.20             FALSE
library(quantmod)

First requirement of at least 1000 rows of data

df <- data.frame(getSymbols("FB", auto.assign = F))
#confirm data dimension (size)
dim(df)
## [1] 2508    6
str(df)
## 'data.frame':    2508 obs. of  6 variables:
##  $ FB.Open    : num  42 36.5 32.6 31.4 33 ...
##  $ FB.High    : num  45 36.7 33.6 32.5 33.2 ...
##  $ FB.Low     : num  38 33 30.9 31.4 31.8 ...
##  $ FB.Close   : num  38.2 34 31 32 33 ...
##  $ FB.Volume  : num  5.74e+08 1.68e+08 1.02e+08 7.36e+07 5.02e+07 ...
##  $ FB.Adjusted: num  38.2 34 31 32 33 ...
summary(df)
##     FB.Open          FB.High           FB.Low          FB.Close     
##  Min.   : 18.08   Min.   : 18.27   Min.   : 17.55   Min.   : 17.73  
##  1st Qu.: 76.19   1st Qu.: 77.24   1st Qu.: 75.38   1st Qu.: 76.22  
##  Median :141.07   Median :142.39   Median :139.75   Median :141.13  
##  Mean   :147.85   Mean   :149.64   Mean   :146.03   Mean   :147.87  
##  3rd Qu.:194.16   3rd Qu.:196.21   3rd Qu.:191.66   3rd Qu.:193.46  
##  Max.   :381.68   Max.   :384.33   Max.   :378.81   Max.   :382.18  
##    FB.Volume          FB.Adjusted    
##  Min.   :  5913100   Min.   : 17.73  
##  1st Qu.: 15857325   1st Qu.: 76.22  
##  Median : 22505250   Median :141.13  
##  Mean   : 30946432   Mean   :147.87  
##  3rd Qu.: 36004750   3rd Qu.:193.46  
##  Max.   :573576400   Max.   :382.18
head(df)
##            FB.Open FB.High FB.Low FB.Close FB.Volume FB.Adjusted
## 2012-05-18   42.05   45.00  38.00    38.23 573576400       38.23
## 2012-05-21   36.53   36.66  33.00    34.03 168192700       34.03
## 2012-05-22   32.61   33.59  30.94    31.00 101786600       31.00
## 2012-05-23   31.37   32.50  31.36    32.00  73600000       32.00
## 2012-05-24   32.95   33.21  31.77    33.03  50237200       33.03
## 2012-05-25   32.90   32.95  31.11    31.91  37149800       31.91
#Rename dataframe
FB <- df
#rename columns for ease
colnames(FB) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted")
#load PerformanceAnalytics library
library(PerformanceAnalytics)
#for plotting comparison, get data for the big fives
GOOG <- dailyReturn(Ad(getSymbols("GOOG", auto.assign = F)))
charts.PerformanceSummary(GOOG)

AAPL <- dailyReturn(Ad(getSymbols("AAPL", auto.assign = F)))
charts.PerformanceSummary(AAPL)

AMZN <- dailyReturn(Ad(getSymbols("AMZN", auto.assign = F)))
charts.PerformanceSummary(AMZN)

NFLX <- dailyReturn(Ad(getSymbols("NFLX", auto.assign = F)))
charts.PerformanceSummary(NFLX)

FB <- dailyReturn(Ad(getSymbols("FB", auto.assign = F)))
charts.PerformanceSummary(FB)

#assign them to columns in the data frame
colnames(FB) <- "FB"
colnames(GOOG) <- "GOOG"
colnames(AAPL) <- "AAPL"
colnames(AMZN) <- "AMZN"
colnames(NFLX) <- "NFLX"
#merge into one dataframe and view
FacebookVsFAANG <- merge(FB, GOOG, AMZN, NFLX, AAPL, all = F)
#plot to view daily returns compare
charts.PerformanceSummary(FacebookVsFAANG, main = "Facebook daily returns vs FAANG Comparables")

#get fortune 500 data
SP500 <- dailyReturn(Ad(getSymbols("SPY", auto.assign = F)))
#rename column
colnames(SP500) <- "S&P 500 ETF"
#merge into data with the others
FBvsSP500 <- merge(FB, SP500, all = F)
#plot agaoinst facebook
charts.PerformanceSummary(FBvsSP500, main = "Facebook Performance Vs S&P 500 Index")

#get data for other social media
TWTR <- dailyReturn(Ad(getSymbols("TWTR", auto.assign = F)))
charts.PerformanceSummary(TWTR)

SNAP <- dailyReturn(Ad(getSymbols("SNAP", auto.assign = F)))
charts.PerformanceSummary(SNAP)

PINS <- dailyReturn(Ad(getSymbols("PINS", auto.assign = F)))
charts.PerformanceSummary(PINS)

#rename columns
colnames(TWTR) <- "TWTR"
colnames(SNAP) <- "SNAP"
colnames(PINS) <- "PINS"
#merge and plot against social media data
merge(FB, SNAP, PINS, TWTR, all = F)
FacebookVsSocials <- merge(FB, SNAP, PINS, TWTR, all = F)
charts.PerformanceSummary(FacebookVsSocials, main = "Facebook daily returns vs Social Media Comparables")

table.AnnualizedReturns(FacebookVsFAANG, scale = 252, Rf = 0.0299/251)
##                               FB   GOOG   AMZN   NFLX   AAPL
## Annualized Return         0.1857 0.2248 0.2685 0.3393 0.2561
## Annualized Std Dev        0.3841 0.2578 0.3092 0.4851 0.2843
## Annualized Sharpe (Rf=3%) 0.3922 0.7315 0.7469 0.6179 0.7702
table.AnnualizedReturns(FacebookVsSocials, scale = 252, Rf = 0.0299/251)
##                               FB   SNAP    PINS   TWTR
## Annualized Return         0.0513 0.3177 -0.0244 0.1322
## Annualized Std Dev        0.4130 0.7577  0.6975 0.5337
## Annualized Sharpe (Rf=3%) 0.0490 0.3679 -0.0764 0.1849
table.AnnualizedReturns(FBvsSP500, scale = 252, Rf = 0.0299/251)
##                               FB S.P.500.ETF
## Annualized Return         0.1857      0.1443
## Annualized Std Dev        0.3841      0.1657
## Annualized Sharpe (Rf=3%) 0.3922      0.6667