#install.packages("quantmod")
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
data = new.env()
tickers = c("F", "SBUX", "AAPL")
getSymbols(tickers, from = "2007-01-01", to = "2018-12-31", auto.assign = TRUE)
## 'getSymbols' currently uses auto.assign=TRUE by default, but will
## use auto.assign=FALSE in 0.5-0. You will still be able to use
## 'loadSymbols' to automatically load data. getOption("getSymbols.env")
## and getOption("getSymbols.auto.assign") will still be checked for
## alternate defaults.
##
## This message is shown once per session and may be disabled by setting
## options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details.
## [1] "F" "SBUX" "AAPL"
ls(data)
## character(0)
names(data)
## character(0)
head(data$AAPL)
## NULL
firm3<-merge(Ad(AAPL), Ad(SBUX), Ad(F))
head(firm3)
## AAPL.Adjusted SBUX.Adjusted F.Adjusted
## 2007-01-03 7.982585 14.13297 5.529016
## 2007-01-04 8.159763 14.14900 5.668897
## 2007-01-05 8.101658 14.08886 5.609998
## 2007-01-08 8.141665 14.03674 5.690983
## 2007-01-09 8.817995 13.97660 5.735155
## 2007-01-10 9.239983 13.93249 5.690983
colnames(firm3)<-c("AAPL", "SBUX", "F")
head(firm3)
## AAPL SBUX F
## 2007-01-03 7.982585 14.13297 5.529016
## 2007-01-04 8.159763 14.14900 5.668897
## 2007-01-05 8.101658 14.08886 5.609998
## 2007-01-08 8.141665 14.03674 5.690983
## 2007-01-09 8.817995 13.97660 5.735155
## 2007-01-10 9.239983 13.93249 5.690983
#install.packages("magrittr")
library(magrittr)
simple_returns01<-function(x) {
na.omit(x/lag(x) - 1)
}
head(simple_returns01(firm3))
## AAPL SBUX F
## 2007-01-04 0.022195567 0.001134723 0.025299438
## 2007-01-05 -0.007120918 -0.004250406 -0.010389852
## 2007-01-08 0.004938125 -0.003699447 0.014435834
## 2007-01-09 0.083070232 -0.004284470 0.007761752
## 2007-01-10 0.047855323 -0.003155989 -0.007701971
## 2007-01-11 -0.012371127 0.030503588 0.005174677
#install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
head(na.omit(Return.calculate(firm3)))
## AAPL SBUX F
## 2007-01-04 0.022195567 0.001134723 0.025299438
## 2007-01-05 -0.007120918 -0.004250406 -0.010389852
## 2007-01-08 0.004938125 -0.003699447 0.014435834
## 2007-01-09 0.083070232 -0.004284470 0.007761752
## 2007-01-10 0.047855323 -0.003155989 -0.007701971
## 2007-01-11 -0.012371127 0.030503588 0.005174677
firm3.mon<-firm3 %>% to.monthly(indexAt = "lastof", OHLC=FALSE) %>%
Return.calculate()
head(firm3.mon)
## AAPL SBUX F
## 2007-01-31 NA NA NA
## 2007-02-28 -0.013064215 -0.11562681 -0.027060188
## 2007-03-31 0.098097433 0.01488688 -0.002528718
## 2007-04-30 0.074157590 -0.01084200 0.019011400
## 2007-05-31 0.214328834 -0.07124424 0.037313588
## 2007-06-30 0.007013698 -0.08920529 0.129496075
head(na.omit(Return.calculate(firm3)))
## AAPL SBUX F
## 2007-01-04 0.022195567 0.001134723 0.025299438
## 2007-01-05 -0.007120918 -0.004250406 -0.010389852
## 2007-01-08 0.004938125 -0.003699447 0.014435834
## 2007-01-09 0.083070232 -0.004284470 0.007761752
## 2007-01-10 0.047855323 -0.003155989 -0.007701971
## 2007-01-11 -0.012371127 0.030503588 0.005174677
firm3.year<-firm3 %>% to.yearly(indexAt = "lastof", OHLC=FALSE) %>%
Return.calculate()
head(firm3.year)
## AAPL SBUX F
## 2007-12-31 NA NA NA
## 2008-12-31 -0.5691136 -0.5378603 -0.6597326
## 2009-12-31 1.4690102 1.4376328 3.3668129
## 2010-12-31 0.5306794 0.4318587 0.6790003
## 2011-12-31 0.2555798 0.4757278 -0.3591425
## 2012-12-31 0.3990632 0.2002676 0.2260050
tickers<-c("AAPL", "SBUX", "F")
getSymbols(tickers, from = '2010-01-01', to = '2012-12-31', auto.assign = TRUE)
## [1] "AAPL" "SBUX" "F"
data <- new.env()
getSymbols(tickers, from = '2010-01-01', to = '2012-12-31', env = data, auto.assign = TRUE)
## [1] "AAPL" "SBUX" "F"
firm36<-merge((AAPL),(SBUX),(F))
head(firm36)
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
## 2010-01-04 30.49000 30.64286 30.34000 30.57286 123432400
## 2010-01-05 30.65714 30.79857 30.46429 30.62571 150476200
## 2010-01-06 30.62571 30.74714 30.10714 30.13857 138040000
## 2010-01-07 30.25000 30.28571 29.86429 30.08286 119282800
## 2010-01-08 30.04286 30.28571 29.86572 30.28286 111902700
## 2010-01-11 30.40000 30.42857 29.77857 30.01572 115557400
## AAPL.Adjusted SBUX.Open SBUX.High SBUX.Low SBUX.Close
## 2010-01-04 20.38607 11.660 11.665 11.455 11.525
## 2010-01-05 20.42132 11.480 12.000 11.445 11.795
## 2010-01-06 20.09649 11.740 11.810 11.630 11.710
## 2010-01-07 20.05934 11.640 11.765 11.595 11.680
## 2010-01-08 20.19270 11.600 11.800 11.595 11.640
## 2010-01-11 20.01457 11.685 11.685 11.435 11.605
## SBUX.Volume SBUX.Adjusted F.Open F.High F.Low F.Close F.Volume
## 2010-01-04 16370000 9.241555 10.17 10.28 10.05 10.28 60855800
## 2010-01-05 30058800 9.458060 10.45 11.24 10.40 10.96 215620200
## 2010-01-06 14209600 9.389901 11.21 11.46 11.13 11.37 200070600
## 2010-01-07 10256000 9.365845 11.46 11.69 11.32 11.66 130201700
## 2010-01-08 10274800 9.333771 11.67 11.74 11.46 11.69 130463000
## 2010-01-11 11387000 9.305705 11.90 12.14 11.78 12.11 170626200
## F.Adjusted
## 2010-01-04 7.568344
## 2010-01-05 8.068974
## 2010-01-06 8.370827
## 2010-01-07 8.584332
## 2010-01-08 8.606414
## 2010-01-11 8.915629
str(firm36)
## An 'xts' object on 2010-01-04/2012-12-28 containing:
## Data: num [1:753, 1:18] 30.5 30.7 30.6 30.2 30 ...
## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr [1:18] "AAPL.Open" "AAPL.High" "AAPL.Low" "AAPL.Close" ...
## Indexed by objects of class: [Date] TZ: UTC
## xts Attributes:
## List of 2
## $ src : chr "yahoo"
## $ updated: POSIXct[1:1], format: "2019-04-04 00:42:28"
firm36$date
## NULL
#install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
head(na.omit(Return.calculate(firm36)))
## AAPL.Open AAPL.High AAPL.Low AAPL.Close
## 2010-01-05 0.005481896 0.005081576 0.0040964074 0.001728854
## 2010-01-06 -0.001025210 -0.001669818 -0.0117233016 -0.015906307
## 2010-01-07 -0.012267894 -0.015007183 -0.0080664246 -0.001848595
## 2010-01-08 -0.006847736 0.000000000 0.0000478498 0.006648338
## 2010-01-11 0.011887818 0.004716976 -0.0029178273 -0.008821591
## 2010-01-12 -0.016964309 -0.015164366 -0.0097385798 -0.011375008
## AAPL.Volume AAPL.Adjusted SBUX.Open SBUX.High
## 2010-01-05 0.21909807 0.001729122 -0.015437393 0.028718388
## 2010-01-06 -0.08264563 -0.015906463 0.022648084 -0.015833333
## 2010-01-07 -0.13588235 -0.001848731 -0.008517888 -0.003810330
## 2010-01-08 -0.06187061 0.006648425 -0.003436426 0.002974926
## 2010-01-11 0.03265962 -0.008821653 0.007327586 -0.009745763
## 2010-01-12 0.28606995 -0.011374964 -0.020111254 -0.007702182
## SBUX.Low SBUX.Close SBUX.Volume SBUX.Adjusted
## 2010-01-05 -0.0008729812 0.023427332 0.836212584 0.023427334
## 2010-01-06 0.0161642639 -0.007206443 -0.527273211 -0.007206446
## 2010-01-07 -0.0030094583 -0.002561913 -0.278234433 -0.002561901
## 2010-01-08 0.0000000000 -0.003424658 0.001833073 -0.003424571
## 2010-01-11 -0.0137990513 -0.003006873 0.108245416 -0.003006930
## 2010-01-12 -0.0161783997 -0.016803102 0.355018881 -0.016802918
## F.Open F.High F.Low F.Close F.Volume
## 2010-01-05 0.027531957 0.093385214 0.034825871 0.066147860 2.543133111
## 2010-01-06 0.072727273 0.019572954 0.070192308 0.037408759 -0.072115692
## 2010-01-07 0.022301517 0.020069808 0.017070979 0.025505717 -0.349221225
## 2010-01-08 0.018324607 0.004277160 0.012367491 0.002572899 0.002006886
## 2010-01-11 0.019708655 0.034071550 0.027923211 0.035928144 0.307851268
## 2010-01-12 0.006722689 -0.009060956 -0.005093379 -0.019818332 -0.044719392
## F.Adjusted
## 2010-01-05 0.066147892
## 2010-01-06 0.037409093
## 2010-01-07 0.025505843
## 2010-01-08 0.002572361
## 2010-01-11 0.035928437
## 2010-01-12 -0.019818344
firm36.month<-firm36 %>% to.monthly(indexAt = "lastof", OHLC=FALSE) %>%
Return.calculate()
head(firm36.month)
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
## 2010-01-31 NA NA NA NA NA
## 2010-02-28 0.006465079 0.014688403 0.06176082 0.06539620 -0.59271253
## 2010-03-31 0.163603195 0.153238866 0.16069307 0.14847041 -0.15134410
## 2010-04-30 0.143615417 0.143527330 0.11319623 0.11102128 0.25961107
## 2010-05-31 -0.036834903 -0.041283233 -0.02931034 -0.01612472 0.50353830
## 2010-06-30 -0.010331983 -0.005512783 -0.01318332 -0.02082685 -0.09338085
## AAPL.Adjusted SBUX.Open SBUX.High SBUX.Low SBUX.Close
## 2010-01-31 NA NA NA NA NA
## 2010-02-28 0.06539628 0.03616637 0.02041722 0.04275862 0.051399725
## 2010-03-31 0.14847012 0.06544503 0.06742062 0.06701940 0.059362724
## 2010-04-30 0.11102142 0.09500410 0.08964955 0.07355372 0.070457355
## 2010-05-31 -0.01612445 -0.02804787 -0.01533283 -0.01193226 -0.003464203
## 2010-06-30 -0.02082721 -0.03501347 -0.03873908 -0.05453837 -0.061413673
## SBUX.Volume SBUX.Adjusted F.Open F.High F.Low
## 2010-01-31 NA NA NA NA NA
## 2010-02-28 -0.354384317 0.051399682 0.01982759 0.02067183 0.08504673
## 2010-03-31 0.246991736 0.059362747 0.08368555 0.09282700 0.06976744
## 2010-04-30 -0.005447822 0.079363079 0.06396256 0.06023166 0.04347826
## 2010-05-31 0.101103529 -0.003464168 -0.11656891 -0.12017480 -0.10339506
## 2010-06-30 1.053426614 -0.061413911 -0.16182573 -0.12913907 -0.13597246
## F.Close F.Volume F.Adjusted
## 2010-01-31 NA NA NA
## 2010-02-28 0.08302583 -0.5469647 0.08302553
## 2010-03-31 0.07069847 4.9923820 0.07069849
## 2010-04-30 0.03579952 -0.6625854 0.03579951
## 2010-05-31 -0.09907834 -0.4613051 -0.09907832
## 2010-06-30 -0.14066496 1.3195054 -0.14066479
#install.packages("xts")
library(xts)
firm36.month.xts = as.xts(firm36.month[,-1])
#install.packages("fbasics")
library(fBasics)
## Loading required package: timeDate
##
## Attaching package: 'timeDate'
## The following objects are masked from 'package:PerformanceAnalytics':
##
## kurtosis, skewness
## Loading required package: timeSeries
##
## Attaching package: 'timeSeries'
## The following object is masked from 'package:zoo':
##
## time<-
##
## Attaching package: 'fBasics'
## The following object is masked from 'package:TTR':
##
## volatility
Sigma = cov(firm36[,2:4])
std = sqrt(diag(Sigma))
ones = rep(1,3)
one.vec = matrix(ones, ncol=1)
a = inv(Sigma)%*%one.vec
b = t(one.vec)%*%a
mvp.w =a / as.numeric(b)
mvp.w
## [,1]
## AAPL.High -12.687807
## AAPL.Low 11.822011
## AAPL.Close 1.865796
mvp.ret<-sum((mvp.w)*colMeans(firm36[,2:4]))
mvp.ret
## [1] 42.79961