Ok.
I did the following code:
if(!require("quantmod")) {install.packages("quantmod"); require("quantmod")}
# Define Start and end dates #########
DStart <- "2007-12-31" #define start data for getting the data
today <- "2019-03-31" # write current date (from system) in variable today
today
DEnd <- today # end data should be today
DAX <- getSymbols("^GDAXI", src="yahoo", from=DStart, to=DEnd, quote="Close", compression="m",auto.assign=FALSE)
TickersDAX=c('BEI.DE','ADS.DE','DBK.DE','DAI.DE','DB1.DE','BMW.DE','ALV.DE','BAYN.DE','CON.DE','BAS.DE', "^GDAXI")
#Name list of current constituencies of DAX index (as of 01.04.2019)
NamesDAX = c('Beiersdorf','Adidas','Deutsche Bank','Daimler','Deutsche Boerse','BMW',
'Allianz','Bayer','Continental','BASF', "DAX Index")
#Define time period for which DAX data should be downloaded
#Start date
DStart="2007-12-31"
#End date should be current date
#Get current date 'today'
today <- "2019-03-31"
today
DEnd=today
#Create a list that contains data for all stocks
getSymbols(TickersDAX, from=DStart, to=DEnd, warnings=F)
# Open, High, Low, Close, Volume and Adjusted for every stock
# are saved in a variable
#List that contains data for all stocks
Ticker_list <- list(BEI.DE,ADS.DE,DBK.DE,DAI.DE,DB1.DE,BMW.DE,ALV.DE,BAYN.DE,CON.DE,BAS.DE,GDAXI)
head(Ticker_list)
DAXClosing = merge((ADS.DE[,6]),(ALV.DE[,6]),(BAS.DE[,6]),(BAYN.DE[,6]),(BEI.DE[,6]),(BMW.DE[,6]),(CON.DE[,6]),(DAI.DE[,6]),(DB1.DE[,6]),(DBK.DE[,6]))
head(DAXClosing)
tail(DAXClosing)
sum(is.na(DAXClosing))
names(DAXClosing) = c("Adidas","Allianz","BASF", "Bayer","Beiersdorf","BMW","Continental", "Daimler", "Deutsche Boerse","Deutsche Bank") #rename columns of the data
head(DAXClosing)
# "lag" function returns previous observation for each point
lag(DAXClosing[,1])
lag(DAXClosing[,2])
lag(DAXClosing[,3])
lag(DAXClosing[,4])
lag(DAXClosing[,5])
lag(DAXClosing[,6])
lag(DAXClosing[,7])
lag(DAXClosing[,8])
lag(DAXClosing[,9])
lag(DAXClosing[,10])
# Computing discrete returns #############
# R[t]=P[t]/P[t-1]-1
DAX_ClosingReturns1 <- (DAXClosing[,1]/lag(DAXClosing[,1]))-1
DAX_ClosingReturns2 <- (DAXClosing[,2]/lag(DAXClosing[,2]))-1
DAX_ClosingReturns3 <- (DAXClosing[,3]/lag(DAXClosing[,3]))-1
DAX_ClosingReturns4 <- (DAXClosing[,4]/lag(DAXClosing[,4]))-1
DAX_ClosingReturns5 <- (DAXClosing[,5]/lag(DAXClosing[,5]))-1
DAX_ClosingReturns6 <- (DAXClosing[,6]/lag(DAXClosing[,6]))-1
DAX_ClosingReturns7 <- (DAXClosing[,7]/lag(DAXClosing[,7]))-1
DAX_ClosingReturns8 <- (DAXClosing[,8]/lag(DAXClosing[,8]))-1
DAX_ClosingReturns9 <- (DAXClosing[,9]/lag(DAXClosing[,9]))-1
DAX_ClosingReturns10 <- (DAXClosing[,10]/lag(DAXClosing[,10]))-1
DAX_ClosingReturns1
DAX_ClosingReturns2
DAX_ClosingReturns3
DAX_ClosingReturns4
DAX_ClosingReturns5
DAX_ClosingReturns6
DAX_ClosingReturns7
DAX_ClosingReturns8
DAX_ClosingReturns9
DAX_ClosingReturns10
DAX_ClosingReturn <- merge(DAX_ClosingReturns1,DAX_ClosingReturns2,DAX_ClosingReturns3,DAX_ClosingReturns4,DAX_ClosingReturns5,DAX_ClosingReturns6,DAX_ClosingReturns7,DAX_ClosingReturns8,DAX_ClosingReturns9,DAX_ClosingReturns10)
DAX_ClosingReturn
#first return observation is NA, sine no return could be computed
DAX_ClosingReturn <- DAX_ClosingReturn[-1]
DAX_ClosingReturn
plot(DAX_ClosingReturn)
DAX_ClosingReturns