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