Set Up Libraries

library(hts)
## Loading required package: forecast
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
library(fpp2)
## -- Attaching packages ---------------------------------------------- fpp2 2.4 --
## v ggplot2   3.3.3     v expsmooth 2.3  
## v fma       2.4
## 
library(ggplot2)
library(ggfortify)
## Registered S3 methods overwritten by 'ggfortify':
##   method                 from    
##   autoplot.Arima         forecast
##   autoplot.acf           forecast
##   autoplot.ar            forecast
##   autoplot.bats          forecast
##   autoplot.decomposed.ts forecast
##   autoplot.ets           forecast
##   autoplot.forecast      forecast
##   autoplot.stl           forecast
##   autoplot.ts            forecast
##   fitted.ar              forecast
##   fortify.ts             forecast
##   residuals.ar           forecast
library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(quantmod)
## Loading required package: xts
## Loading required package: TTR
library(eventstudies)
setwd("C:/Users/Lawrence Fulton/OneDrive - Texas State University/Publications-Complete & Working/Minoo/DJSI")

Load Data

mydata=read.csv("djsifinal2.csv")

myf=function(sym, date1, date2){
  return(zoo(dailyReturn(na.omit(getSymbols.yahoo(sym, from=date1, to=date2, auto.assign=FALSE, return.class="xts")))))
}

Set Dates

d2015=c(as.Date('2015-03-26'),as.Date('2015-09-30'), as.Date('2015-09-10'))
d2016=c(as.Date('2016-03-24'),as.Date('2016-09-30'), as.Date('2016-09-08'))
d2017=c(as.Date('2017-03-23'),as.Date('2017-09-30'), as.Date('2017-09-07'))
d2018=c(as.Date('2018-03-29'),as.Date('2018-09-30'), as.Date('2018-09-13'))
d2019=c(as.Date('2019-03-24'),as.Date('2019-09-30'), as.Date('2019-09-23'))

Load Stock Return Additions

#2015 Additions
BAC=myf('BAC', d2015[1],d2015[2])
BBL=myf('BBL', d2015[1], d2015[2])
BNP.PA=myf('BNP.PA', d2015[1], d2015[2])
BMY=myf('BMY', d2015[1], d2015[2])
DTEGY=myf('DTEGY', d2015[1], d2015[2])
ECL=myf('ECL', d2015[1], d2015[2])
ENGQF=myf('ENGQF', d2015[1], d2015[2])
GM1=myf('GM', d2015[1], d2015[2])
GS=myf('GS', d2015[1], d2015[2])
PG=myf('PG', d2015[1], d2015[2])
SAN.PA=myf('SAN.PA', d2015[1], d2015[2])
GLE.PA=myf('GLE.PA', d2015[1], d2015[2])
TEF=myf('TEF', d2015[1], d2015[2])
DG.PA=myf('DG.PA', d2015[1], d2015[2])

#2016 Additions
ADBE=myf('ADBE', d2016[1], d2016[2])
CSCO1=myf('CSCO', d2016[1], d2016[2])
PEP=myf('PEP', d2016[1], d2016[2])
#AGN=myf('AGN', d2016[1], d2016[2])
MRK1=myf('MRK', d2016[1], d2016[2])
NVO=myf('NVO', d2016[1], d2016[2])
RDS_A=myf('RDS-A', d2016[1], d2016[2])
SLB1=myf('SLB', d2016[1], d2016[2])
TOT1=myf('TOT', d2016[1], d2016[2])
EONGY1=myf('EONGY', d2016[1], d2016[2])
ESLOF=myf('ESLOF', d2016[1], d2016[2])
HENKY1=myf('HENKY', d2016[1], d2016[2])
IBDRY=myf('IBDRY', d2016[1], d2016[2])
NOKBF=myf('NOKBF', d2016[1], d2016[2])
RAI=read.csv.zoo("RAI.csv", format="%m/%d/%Y", index.column=1)
#RAI calculated manually

#2017 Additions
ASML=myf('ASML', d2017[1], d2017[2])
CMCSA=myf('CMCSA', d2017[1], d2017[2])
BTI=myf('BTI', d2017[1], d2017[2])
CI=myf('CI', d2017[1], d2017[2])
CL=myf('CL', d2017[1], d2017[2])
CRH=myf('CRH', d2017[1], d2017[2])
GM2=myf('GM', d2017[1], d2017[2])
MO1=myf('MO', d2017[1], d2017[2])
Tf=myf('T', d2017[1], d2017[2])
V=myf('V', d2017[1], d2017[2])
CGEMY=myf('CGEMY', d2017[1], d2017[2])
CMPGY1=myf('CMPGY', d2017[1], d2017[2])
HENKY2=myf('HENKY', d2017[1], d2017[2])

#2018 Additions

ANTM=myf('ANTM', d2018[1], d2018[2])
BBVA1=myf('BBVA', d2018[1], d2018[2])
CRM=myf('CRM', d2018[1], d2018[2])
DEO1=myf('DEO', d2018[1], d2018[2])
GIS=myf('GIS', d2018[1], d2018[2])
JNJ1=myf('JNJ', d2018[1], d2018[2])
MA=myf('MA', d2018[1], d2018[2])
RELX1=myf('RELX', d2018[1], d2018[2])
SLB2=myf('SLB', d2018[1], d2018[2])
SRE=myf('SRE', d2018[1], d2018[2])
STM=myf('STM', d2018[1], d2018[2])
WM=myf('WM', d2018[1], d2018[2])
ARZGY=myf('ARZGY', d2018[1], d2018[2])
#ESSYY =myf('ESSYY', d2018[1], d2018[2])
SIEGY1=myf('SIEGY', d2018[1], d2018[2])

#2019 Additions

#Additions: 
#lphabet Inc
#CVS Health Corp
#Reckitt Benckiser Group PLC



#2019 Deletions
#Citigroup Inc1
#Royal Dutch Shell PLC
#3M Co

Load Stock Return Deletions

#2015
APD=myf('APD', d2015[1], d2015[2])
CSCO=myf('CSCO', d2015[1], d2015[2])
DEO=myf('DEO', d2015[1], d2015[2])
EXPN=myf('EXPN.L', d2015[1], d2015[2])
F=myf('F', d2015[1], d2015[2])
HELKF=myf('HELKF', d2015[1], d2015[2])
NVO1=myf('NVO', d2015[1], d2015[2])
PEP1=myf('PEP', d2015[1], d2015[2])
SLB3=myf('SLB', d2015[1], d2015[2])
SIEGY=myf('SIEGY', d2015[1], d2015[2])
TOT=myf('TOT', d2015[1], d2015[2])
UCG=myf('UCG', d2015[1], d2015[2])
WM1=myf('WM', d2015[1], d2015[2])


#2016
BATS.L=myf('BATS.L', d2016[1], d2016[2])
INTC=myf('INTC', d2016[1], d2016[2])
E=myf('E', d2016[1], d2016[2])
BBVA=myf('BBVA', d2016[1], d2016[2])
BT.A=myf('BT-A.L', d2016[1], d2016[2])
WPP=myf('WPP', d2016[1], d2016[2])
TGT=myf('TGT', d2016[1], d2016[2])
HAL1=myf('HAL', d2016[1], d2016[2])
XOM=myf('XOM', d2016[1], d2016[2])
ALL=myf('ALL', d2016[1], d2016[2])
BKR=myf('BKR', d2016[1], d2016[2])


#2017
ADSK=myf('ADSK', d2017[1], d2017[2])
BAESY=myf('BAESY', d2017[1], d2017[2])
BASFY1=myf('BASFY', d2017[1], d2017[2])
CAH=myf('CAH', d2017[1], d2017[2])
MGDDY=myf('MGDDY', d2017[1], d2017[2])
EONGY=myf('EONGY', d2017[1], d2017[2])
HAL2=myf('HAL', d2017[1], d2017[2])
JNJ=myf('JNJ', d2017[1], d2017[2])
NVO2=myf('NVO', d2017[1], d2017[2])
RBGLY=myf('RBGLY', d2017[1], d2017[2])
RELX=myf('RELX', d2017[1], d2017[2])
RIO=myf('RIO', d2017[1], d2017[2])
SNY=myf('SNY', d2017[1], d2017[2])
SLB4=myf('SLB', d2017[1], d2017[2])
VCISY=myf('VCISY', d2017[1], d2017[2])
WM2=myf('WM', d2017[1], d2017[2])

#2018
MO=myf('MO', d2018[1], d2018[2])
NGLOY=myf('NGLOY', d2018[1], d2018[2])
BCS=myf('BCS', d2018[1], d2018[2])
BASFY2=myf('BASFY', d2018[1], d2018[2])
BAYRY=myf('BAYRY', d2018[1], d2018[2])
BNPQY=myf('BNPQY', d2018[1], d2018[2])
CMPGY=myf('CMPGY', d2018[1], d2018[2])
DASTY=myf('DASTY', d2018[1], d2018[2])
HENOY=myf('HENOY', d2018[1], d2018[2])
HUM=myf('HUM', d2018[1], d2018[2])
MRK=myf('MRK', d2018[1], d2018[2])
MS=myf('MS', d2018[1], d2018[2])
PEP2=myf('PEP', d2018[1], d2018[2])
TEF1=myf('TEF', d2018[1], d2018[2])

Load Market Model

GSPC=myf('^GSPC', as.Date("2015-03-26"), as.Date("2018-10-1"))

Event Study Models by Year

add2015=merge(BAC, BBL, BNP.PA, BMY, DTEGY, ECL, ENGQF, GM1, GS, PG, SAN.PA, GLE.PA, TEF,DG.PA, retclass="zoo")

add2016=merge(ADBE, CSCO1, PEP, MRK1, NVO, RDS_A, SLB1, TOT1, EONGY1, ESLOF, HENKY1, IBDRY, NOKBF, RAI, retclass='zoo')

add2017=merge(ASML, CMCSA,BTI,CI,CL,CRH,GM2,MO1,Tf,V,CGEMY,CMPGY1,HENKY2,retclass='zoo')

add2018=merge(ANTM, BBVA1,CRM,DEO1,GIS,JNJ1,MA,RELX1,SLB2,SRE,STM,WM,ARZGY, SIEGY1,retclass='zoo')

del2015=merge(WM,UCG,TOT,SIEGY,SLB3,PEP1,NVO1,HELKF,F,EXPN,DEO,CSCO,APD,retclass='zoo')

del2016=merge(BKR,ALL,XOM,HAL1,TGT,WPP,BT.A,BBVA,E,INTC,BATS.L,retclass='zoo')

del2017=merge(ADSK,BAESY, BASFY1, CAH, MGDDY, EONGY, HAL2, JNJ, NVO2, RBGLY, RELX, RIO, SNY, SLB4, VCISY, WM, retclass='zoo')

del2018=merge(MO, NGLOY,BCS,BASFY2,BAYRY,BNPQY,CMPGY,DASTY,HENOY,HUM,MRK,MS,PEP2,TEF1,retclass='zoo')

Event Study Models by Sector

a_basic=merge(BBL, ECL, CRH,retclass='zoo')
a_bmdate=c(d2015[3], d2015[3], d2017[3])
d_basic=merge(APD, BASFY1, RIO, NGLOY, BASFY2)
d_bmdate=c(d2015[3], d2017[3], d2017[3], d2018[3], d2018[3])

a_cc=merge(GM1, GM2, CMPGY1)
a_ccdate=c(d2015[3], d2017[3], d2017[3])
d_cc=merge(F, MGDDY, CMPGY)
d_ccdate=c(d2015[3], d2017[3], d2018[3])

a_cd=merge(PG, PEP, RAI, HENKY1, BTI, CL, MO1, HENKY2, DEO1, GIS)
a_cddate=c(d2015[3], rep(d2016[3], 3),rep(d2017[3], 3), rep(d2018[3], 3))
d_cd=merge(DEO, HELKF,PEP1, BATS.L, TGT, RBGLY, MO, HENOY, PEP2)
d_cddate=c(rep(d2015[3],3), rep(d2016[3], 2),d2017[3], rep(d2018[3], 3))

a_comm=merge(DTEGY, TEF, CMCSA, Tf, RELX1)
a_commdate=c(d2015[3], d2015[3], d2017[3], d2017[3], d2018[3])
d_comm=merge(BT.A, WPP, RELX, TEF1)
d_commdate=c(d2016[3], d2016[3], d2017[3], d2018[3])

a_fin=merge(BAC, BNP.PA, GS, GLE.PA, V, BBVA1, MA, ARZGY)
a_findate=c(rep(d2015[3],4), d2017[3], rep(d2017[3], 3))
d_fin=merge(UCG, BBVA, ALL, BCS, BNPQY, MS)
d_findate=c(d2015[3], d2016[3],d2016[3], rep(d2018[3], 3))

a_hc=merge(BMY, SAN.PA, MRK1, NVO, ESLOF, CI, ANTM, JNJ1)
names(a_hc)=c("BMY", "SAN.PA",  "MRK1", "NVO", "ESLOF", "CI", "ANTM", "JNJ1")
a_hcdate=c(rep(d2015[3],2),rep(d2016[3], 3), d2017[3], rep(d2018[3], 2))
d_hc=merge(NVO1, CAH, JNJ, NVO2, SNY, BAYRY, HUM, MRK)
d_hcdate=c(rep(d2015[3],2),rep(d2017[3], 4), rep(d2018[3], 2))

a_ind=merge(DG.PA, WM, SIEGY1)
a_inddate=c(d2015[3],d2018[3], d2018[3])
d_ind=merge(EXPN, SIEGY, WM1, BAESY, VCISY, WM2)
d_inddate=c(rep(d2015[3],3),rep(d2017[3],3))

a_nrg=merge(SLB1, TOT1, RDS_A, SLB2)
a_nrgdate=c(d2016[3],d2016[3],d2016[3], d2018[3])
d_nrg=merge(SLB3, TOT, E, HAL1, XOM, BKR, HAL2, SLB4)
d_nrgdate=c(rep(d2015[3],2),rep(d2016[3],4), rep(d2017[3],2))

a_tech=merge(ADBE, CSCO1, NOKBF, ASML, CGEMY, CRM, STM)
a_techdate=c(rep(d2016[3],3),rep(d2017[3],2), rep(d2018[3],2))
d_tech=merge(CSCO, INTC, ADSK, DASTY)
d_techdate=c(d2015[3],d2016[3], d2017[3], d2018[3])

a_util=merge(ENGQF, EONGY1, IBDRY, SRE)
a_utildate=c(d2015[3], d2016[3], d2016[3], d2018[3])
d_util=merge(EONGY)
d_utildate=c(d2017[3])

Event Analysis, Dirty vs. Clean

add_dirty=merge(a_basic,a_nrg,a_util,a_ind)
dirtydates=c(a_bmdate,a_nrgdate,a_utildate,a_inddate)
add_other=merge(a_cc,a_cd, a_comm,a_fin,a_hc,a_tech)
otherdates=c(a_ccdate,a_cddate,a_commdate,a_findate, a_hcdate, a_techdate)

del_dirty=merge(d_basic,d_nrg,d_util,d_ind)
dirtydates1=c(d_bmdate,d_nrgdate,d_utildate,d_inddate)
del_other=merge(d_cc,d_cd, d_comm,d_fin,d_hc,d_tech)
otherdates1=c(d_ccdate,d_cddate,d_commdate,d_findate, d_hcdate, d_techdate)

Event Analysis, EU vs. US

EUadd=merge(BBL,BNP.PA,DTEGY,ENGQF,SAN.PA,GLE.PA,TEF,DG.PA,
            NVO,RDS_A,TOT1,EONGY1,ESLOF,HENKY1,IBDRY,NOKBF,
            ASML,BTI,CRH,CGEMY,CMPGY1,HENKY2,
            BBVA1,DEO,RELX1,STM,ARZGY,SIEGY1)
EUadddate=c(rep(as.Date("2015-09-10"), 8), 
            rep(as.Date("2016-09-08"), 8), 
            rep(as.Date("2017-09-07"), 6), 
            rep(as.Date("2018-09-13"), 6))


EUdel=merge(DEO,EXPN,HELKF,NVO1,SIEGY,TOT,UCG,
            BATS.L,E,BBVA,BT.A,WPP,
            BAESY,BASFY1,MGDDY,EONGY,NVO2,RBGLY,RELX,RIO,SNY,VCISY,
            NGLOY,BCS,BASFY2,BAYRY,BNPQY,CMPGY,DASTY,HENOY,TEF1)

EUdeldate=c(rep(as.Date("2015-09-10"), 7), 
            rep(as.Date("2016-09-08"), 5), 
            rep(as.Date("2017-09-07"), 10), 
            rep(as.Date("2018-09-13"), 9))


USadd=merge(BAC,BMY,ECL,GM1,GS,PG,
            ADBE,CSCO1,PEP,RAI, MRK1,SLB1,
            CMCSA,CI,CL,GM2,MO1,Tf,V,
            ANTM,CRM,GIS,JNJ1,MA,SLB2,SRE,WM)
USadddate=c(rep(as.Date("2015-09-10"), 6), 
            rep(as.Date("2016-09-08"), 6), 
            rep(as.Date("2017-09-07"), 7),
            rep(as.Date("2018-09-13"), 8))

USdel=merge(APD,CSCO,F,PEP1,SLB3,WM1,
            INTC,TGT,HAL1,XOM,ALL,BKR,
            ADSK,CAH,HAL2,JNJ,SLB4,WM2,
            MO,HUM,MRK,MS,PEP2)
USdeldate=c(rep(as.Date("2015-09-10"), 6), 
            rep(as.Date("2016-09-08"), 6), 
            rep(as.Date("2017-09-07"), 6), 
            rep(as.Date("2018-09-13"), 5))

UK

UKadd=merge(BBL,RDS_A,CMPGY1,DEO,RELX1)
UKadddate=c(as.Date("2015-09-10"),
            as.Date("2016-09-08"),
            as.Date("2017-09-07"), 
            as.Date("2017-09-07"), 
            as.Date("2018-09-13"))
UKdel=merge(DEO,EXPN,
            BATS.L,BT.A,WPP,
            BAESY,RBGLY,RELX,RIO,
            NGLOY,BCS,CMPGY)
UKdeldate=c(rep(as.Date("2015-09-10"),2),
            rep(as.Date("2016-09-08"), 3),
            rep(as.Date("2017-09-07"), 4), 
            rep(as.Date("2018-09-13"), 3))

Event Study Function

Flexible function

myes=function(d, e, f){
  es = eventstudy(firm.returns = d,
    event.list = e,
    event.window = f,
    type = "marketModel",
    to.remap = TRUE,
    remap = "cumsum",
    inference = TRUE,
    inference.strategy = "bootstrap", 
    model.args = list(market.returns=GSPC)
  )
  return(es)
}

myes2=function(d, e, f){
  es = eventstudy(firm.returns = d,
    event.list = e,
    event.window = f,
    type = "marketModel",
    to.remap = FALSE,
    inference = TRUE,
    inference.strategy = "bootstrap", 
    model.args = list(market.returns=GSPC)
  )
  return(es)
}

Graphing and Testing Function

mygraph=function(data,nm,ev){
myseq=seq(-ev,ev, length.out=2*ev)
    matplot(myseq,data$result, type="l", lty=c(5,1,5), col=c("blue", "black", "blue"), lwd=c(1,2,1), main=nm, ylab="Cum % Returns", xlab="Days Before/After Press Release")
  lines(seq(-ev,ev, length.out=100), rep(0, 100), col="red", lwd=2)
  a=round(wilcox.test(data$result[,2], exact=FALSE)$p.value, 3)
  if(a<.05){print(paste0(nm," CAA(-", i, "," ,i , "):  ", a))}
    
}

2015-2018 Event Study

par(mfrow=c(2,2))

name1=paste0(rep("Day: ", 10),seq(1,10))
event1=paste0(rep("Year Added: ", 4),seq(2015,2018))
window1=paste0(rep("Window: ", 5), seq(1,5))
mylist=array(rep(NA,10*4*5), dim=c(10,4,5), dimnames=list(name1,event1,window1))

j=0
for (i in 1:5){

a=data.frame(name=names(add2015), when=rep(d2015[3], length(names(add2015))))
a2015=myes(add2015, a, i)
mygraph(a2015, "Year 2015, Add", i)
mylist[1:length(a2015$result[,2]), 1, i]=a2015$result[,2]

a=data.frame(name=names(add2016), when=rep(d2016[3], length(names(add2016))))
a2016=myes(add2016, a, i)
mygraph(a2016, "Year 2016, Add",i)
j=j+1
mylist[1:length(a2016$result[,2]), 2, i]=a2016$result[,2]

a=data.frame(name=names(add2017), when=rep(d2017[3], length(names(add2017))))
a2017=myes(add2017, a, i)
mygraph(a2017, "Year 2017, Add",i )
j=j+1
mylist[1:length(a2017$result[,2]), 3, i]=a2017$result[,2]

a=data.frame(name=names(add2018), when=rep(d2018[3], length(names(add2018))))
a2018=myes(add2018, a, i)
mygraph(a2018, "Year 2018, Add", i)
j=j+1
mylist[1:length(a2018$result[,2]), 4, i]=a2018$result[,2]

}

## [1] "Year 2016, Add CAA(-4,4):  0.035"

## [1] "Year 2016, Add CAA(-5,5):  0.013"
## [1] "Year 2017, Add CAA(-5,5):  0.009"

## [1] "Year 2018, Add CAA(-5,5):  0.013"
mylist
## , , Window: 1
## 
##         Year Added: 2015 Year Added: 2016 Year Added: 2017 Year Added: 2018
## Day: 1       0.000000000      0.000000000      0.000000000     0.0000000000
## Day: 2      -0.008222737      0.004727891      0.001384681    -0.0006118621
## Day: 3                NA               NA               NA               NA
## Day: 4                NA               NA               NA               NA
## Day: 5                NA               NA               NA               NA
## Day: 6                NA               NA               NA               NA
## Day: 7                NA               NA               NA               NA
## Day: 8                NA               NA               NA               NA
## Day: 9                NA               NA               NA               NA
## Day: 10               NA               NA               NA               NA
## 
## , , Window: 2
## 
##         Year Added: 2015 Year Added: 2016 Year Added: 2017 Year Added: 2018
## Day: 1       0.000000000      0.000000000     0.0000000000      0.000000000
## Day: 2      -0.006186486      0.000994413     0.0004307339      0.006460465
## Day: 3      -0.014371647      0.005707224     0.0018197291      0.005871956
## Day: 4      -0.014727449     -0.002440290    -0.0034218795      0.006409293
## Day: 5                NA               NA               NA               NA
## Day: 6                NA               NA               NA               NA
## Day: 7                NA               NA               NA               NA
## Day: 8                NA               NA               NA               NA
## Day: 9                NA               NA               NA               NA
## Day: 10               NA               NA               NA               NA
## 
## , , Window: 3
## 
##         Year Added: 2015 Year Added: 2016 Year Added: 2017 Year Added: 2018
## Day: 1       0.000000000     0.0000000000     0.0000000000     0.0000000000
## Day: 2       0.012305586    -0.0012936252     0.0006609178     0.0026661950
## Day: 3       0.006132861    -0.0002634795     0.0010979618     0.0090986015
## Day: 4      -0.002039745     0.0044407784     0.0024957884     0.0084889506
## Day: 5      -0.002396080    -0.0036374396    -0.0027607088     0.0090132209
## Day: 6      -0.003238637    -0.0028693445    -0.0038906648     0.0008355357
## Day: 7                NA               NA               NA               NA
## Day: 8                NA               NA               NA               NA
## Day: 9                NA               NA               NA               NA
## Day: 10               NA               NA               NA               NA
## 
## , , Window: 4
## 
##         Year Added: 2015 Year Added: 2016 Year Added: 2017 Year Added: 2018
## Day: 1      0.0000000000      0.000000000     0.0000000000     0.0000000000
## Day: 2      0.0009310864      0.004906591     0.0006143411    -0.0024937118
## Day: 3      0.0130744300      0.003640893     0.0013259571     0.0002095516
## Day: 4      0.0068956330      0.004694867     0.0018036242     0.0066831182
## Day: 5     -0.0012894869      0.009378935     0.0032380820     0.0061104683
## Day: 6     -0.0017281859      0.001357904    -0.0019442277     0.0066668839
## Day: 7     -0.0025152987      0.002124940    -0.0030227691    -0.0014695691
## Day: 8      0.0020876394     -0.000542253    -0.0040075313    -0.0052418143
## Day: 9                NA               NA               NA               NA
## Day: 10               NA               NA               NA               NA
## 
## , , Window: 5
## 
##         Year Added: 2015 Year Added: 2016 Year Added: 2017 Year Added: 2018
## Day: 1      0.0000000000      0.000000000     0.0000000000      0.000000000
## Day: 2     -0.0060858887      0.003739375     0.0048620400      0.004234852
## Day: 3     -0.0050488401      0.008622747     0.0054738583      0.001704866
## Day: 4      0.0071499655      0.007332831     0.0061897289      0.004361535
## Day: 5      0.0010514729      0.008361924     0.0066695520      0.010803533
## Day: 6     -0.0070543673      0.013013997     0.0081053340      0.010184041
## Day: 7     -0.0074248978      0.004973479     0.0029321723      0.010675784
## Day: 8     -0.0081219208      0.005711612     0.0018580349      0.002508027
## Day: 9     -0.0034342381      0.003020060     0.0008760223     -0.001308078
## Day: 10    -0.0008383954     -0.001790843     0.0018619050      0.010635473

2015 Event Study Deletions

par(mfrow=c(2,2))

event1=paste0(rep("Year Deleted: ", 4),seq(2015,2018))
window1=paste0(rep("Window: ", 5), seq(1,5))
mylist1=array(rep(NA,10*4*5), dim=c(10,4,5), dimnames=list(name1,event1,window1))


for (i in 1:5){
a=data.frame(name=names(del2015), when=rep(d2015[3], length(names(del2015))))
d_2015=myes(del2015, a,i)
mygraph(d_2015, "Year 2015, Delete",i)
mylist1[1:length(d_2015$result[,2]), 1, i]=d_2015$result[,2]

a=data.frame(name=names(del2016), when=rep(d2016[3], length(names(del2016))))
d_2016=myes(del2016, a,i)
mygraph(d_2016, "Year 2016, Delete",i)
mylist1[1:length(d_2016$result[,2]), 2, i]=d_2016$result[,2]

a=data.frame(name=names(del2017), when=rep(d2017[3], length(names(del2017))))
d_2017=myes(del2017, a,i)
mygraph(d_2017, "Year 2017, Delete",i)
mylist1[1:length(d_2017$result[,2]), 3, i]=d_2017$result[,2]

a=data.frame(name=names(del2018), when=rep(d2018[3], length(names(del2018))))
d_2018=myes(del2018, a,i)
mygraph(d_2018, "Year 2018, Delete", i)
mylist1[1:length(d_2018$result[,2]), 4, i]=d_2018$result[,2]

}

## [1] "Year 2016, Delete CAA(-4,4):  0.022"
## [1] "Year 2017, Delete CAA(-4,4):  0.022"

## [1] "Year 2015, Delete CAA(-5,5):  0.009"
## [1] "Year 2016, Delete CAA(-5,5):  0.009"
## [1] "Year 2017, Delete CAA(-5,5):  0.009"

## [1] "Year 2018, Delete CAA(-5,5):  0.024"
mylist1
## , , Window: 1
## 
##         Year Deleted: 2015 Year Deleted: 2016 Year Deleted: 2017
## Day: 1         0.000000000        0.000000000        0.000000000
## Day: 2        -0.005936888        0.009689045       -0.003605351
## Day: 3                  NA                 NA                 NA
## Day: 4                  NA                 NA                 NA
## Day: 5                  NA                 NA                 NA
## Day: 6                  NA                 NA                 NA
## Day: 7                  NA                 NA                 NA
## Day: 8                  NA                 NA                 NA
## Day: 9                  NA                 NA                 NA
## Day: 10                 NA                 NA                 NA
##         Year Deleted: 2018
## Day: 1        0.0000000000
## Day: 2        0.0008290126
## Day: 3                  NA
## Day: 4                  NA
## Day: 5                  NA
## Day: 6                  NA
## Day: 7                  NA
## Day: 8                  NA
## Day: 9                  NA
## Day: 10                 NA
## 
## , , Window: 2
## 
##         Year Deleted: 2015 Year Deleted: 2016 Year Deleted: 2017
## Day: 1        0.000000e+00        0.000000000        0.000000000
## Day: 2        4.766896e-05        0.008775832        0.007623889
## Day: 3       -5.874731e-03        0.018465086        0.004049689
## Day: 4       -8.206565e-03        0.003407937        0.002080264
## Day: 5                  NA                 NA                 NA
## Day: 6                  NA                 NA                 NA
## Day: 7                  NA                 NA                 NA
## Day: 8                  NA                 NA                 NA
## Day: 9                  NA                 NA                 NA
## Day: 10                 NA                 NA                 NA
##         Year Deleted: 2018
## Day: 1         0.000000000
## Day: 2         0.003968146
## Day: 3         0.004877099
## Day: 4         0.012103704
## Day: 5                  NA
## Day: 6                  NA
## Day: 7                  NA
## Day: 8                  NA
## Day: 9                  NA
## Day: 10                 NA
## 
## , , Window: 3
## 
##         Year Deleted: 2015 Year Deleted: 2016 Year Deleted: 2017
## Day: 1        0.0000000000       0.000000e+00        0.000000000
## Day: 2        0.0046572648       2.560485e-05        0.004772334
## Day: 3        0.0046595915       8.813539e-03        0.012454459
## Day: 4       -0.0013044532       1.849973e-02        0.008961764
## Day: 5       -0.0036378366       3.466177e-03        0.006854932
## Day: 6       -0.0006289694       5.164540e-03        0.003725900
## Day: 7                  NA                 NA                 NA
## Day: 8                  NA                 NA                 NA
## Day: 9                  NA                 NA                 NA
## Day: 10                 NA                 NA                 NA
##         Year Deleted: 2018
## Day: 1         0.000000000
## Day: 2         0.009138551
## Day: 3         0.013026077
## Day: 4         0.013874284
## Day: 5         0.021063343
## Day: 6         0.022816779
## Day: 7                  NA
## Day: 8                  NA
## Day: 9                  NA
## Day: 10                 NA
## 
## , , Window: 4
## 
##         Year Deleted: 2015 Year Deleted: 2016 Year Deleted: 2017
## Day: 1         0.000000000        0.000000000        0.000000000
## Day: 2        -0.001920553        0.001671065        0.005504348
## Day: 3         0.002483206        0.001727966        0.010282878
## Day: 4         0.002475167        0.010542045        0.017969967
## Day: 5        -0.003509271        0.020199065        0.014481749
## Day: 6        -0.005971799        0.005233578        0.012383984
## Day: 7        -0.002877523        0.006926809        0.009261235
## Day: 8         0.004372001        0.003179410        0.003032819
## Day: 9                  NA                 NA                 NA
## Day: 10                 NA                 NA                 NA
##         Year Deleted: 2018
## Day: 1         0.000000000
## Day: 2        -0.007267213
## Day: 3         0.001883033
## Day: 4         0.005783545
## Day: 5         0.006643425
## Day: 6         0.013842626
## Day: 7         0.015609070
## Day: 8         0.022746038
## Day: 9                  NA
## Day: 10                 NA
## 
## , , Window: 5
## 
##         Year Deleted: 2015 Year Deleted: 2016 Year Deleted: 2017
## Day: 1         0.000000000        0.000000000       0.0000000000
## Day: 2        -0.009529246        0.003682932       0.0006429862
## Day: 3        -0.011387969        0.005391163       0.0061121289
## Day: 4        -0.006950329        0.005486795       0.0109500317
## Day: 5        -0.006910737        0.014340643       0.0186672055
## Day: 6        -0.012848112        0.024048585       0.0151974664
## Day: 7        -0.015269726        0.009114415       0.0132273589
## Day: 8        -0.012122404        0.010853721       0.0101660665
## Day: 9        -0.004822793        0.007145272       0.0039760200
## Day: 10       -0.003256171        0.004777972       0.0044166485
##         Year Deleted: 2018
## Day: 1         0.000000000
## Day: 2         0.001311197
## Day: 3        -0.005988993
## Day: 4         0.003118893
## Day: 5         0.006990705
## Day: 6         0.007808000
## Day: 7         0.014948406
## Day: 8         0.016686391
## Day: 9         0.023783486
## Day: 10        0.036103933

Deletions in 2018 improved returns relative to the market (Day 1 through 5).

Basic Materials

par(mfrow=c(1,2))

event1=c("Basic, Add", "Basic, Delete")
mylist2=array(rep(NA,10*2*5), dim=c(10,2,5), dimnames=list(name1,event1,window1))

for (i in 5:5){
a=data.frame(name=names(a_basic), when=a_bmdate)
addbasic=myes(a_basic, a,i)
addbasic2=myes2(a_basic,a,i)
mygraph(addbasic, "Basic Materials, Add",i)
mylist2[1:length(addbasic$result[,2]), 1, i]=addbasic$result[,2]


a=data.frame(name=names(d_basic), when=d_bmdate)
delbasic=myes(d_basic, a,i)
delbasic2=myes2(d_basic, a,i)
mygraph(delbasic, "Basic Materials, Delete",i)
mylist2[1:length(delbasic$result[,2]), 2, i]=delbasic$result[,2]

}

## [1] "Basic Materials, Delete CAA(-5,5):  0.024"
mylist2
## , , Window: 1
## 
##         Basic, Add Basic, Delete
## Day: 1          NA            NA
## Day: 2          NA            NA
## Day: 3          NA            NA
## Day: 4          NA            NA
## Day: 5          NA            NA
## Day: 6          NA            NA
## Day: 7          NA            NA
## Day: 8          NA            NA
## Day: 9          NA            NA
## Day: 10         NA            NA
## 
## , , Window: 2
## 
##         Basic, Add Basic, Delete
## Day: 1          NA            NA
## Day: 2          NA            NA
## Day: 3          NA            NA
## Day: 4          NA            NA
## Day: 5          NA            NA
## Day: 6          NA            NA
## Day: 7          NA            NA
## Day: 8          NA            NA
## Day: 9          NA            NA
## Day: 10         NA            NA
## 
## , , Window: 3
## 
##         Basic, Add Basic, Delete
## Day: 1          NA            NA
## Day: 2          NA            NA
## Day: 3          NA            NA
## Day: 4          NA            NA
## Day: 5          NA            NA
## Day: 6          NA            NA
## Day: 7          NA            NA
## Day: 8          NA            NA
## Day: 9          NA            NA
## Day: 10         NA            NA
## 
## , , Window: 4
## 
##         Basic, Add Basic, Delete
## Day: 1          NA            NA
## Day: 2          NA            NA
## Day: 3          NA            NA
## Day: 4          NA            NA
## Day: 5          NA            NA
## Day: 6          NA            NA
## Day: 7          NA            NA
## Day: 8          NA            NA
## Day: 9          NA            NA
## Day: 10         NA            NA
## 
## , , Window: 5
## 
##            Basic, Add Basic, Delete
## Day: 1   0.0000000000  0.0000000000
## Day: 2  -0.0036983406 -0.0006350708
## Day: 3  -0.0034525205 -0.0007898217
## Day: 4   0.0035226860  0.0079816781
## Day: 5   0.0017573678  0.0169842511
## Day: 6  -0.0004423692  0.0136125042
## Day: 7  -0.0038079440  0.0197750660
## Day: 8  -0.0072713123  0.0243747859
## Day: 9   0.0103704276  0.0338979321
## Day: 10  0.0135255914  0.0412083758
par(mfrow=c(2,1))
plot(addbasic2)
plot(delbasic2)

Due to the small number of additions and deletions, there is no evidence to support a change in either direction for the basic materials sector.

Consumer Cyclical

par(mfrow=c(1,2))

for (i in 5:5){
a=data.frame(name=names(a_cc), when=a_ccdate)
addcc=myes(a_cc, a, i)
mygraph(addcc, "Cyclicals, Add", i)



a=data.frame(name=names(d_cc), when=d_ccdate)
delcc=myes(d_cc, a, i)
mygraph(delcc, "Cyclicals, Delete", i)


}
## [1] "Cyclicals, Add CAA(-5,5):  0.009"

## [1] "Cyclicals, Delete CAA(-5,5):  0.009"

Immediately after addition, cyclical performance improved upon addition; however, they also improved by day 3 after deletion.

Consumer Defensive

par(mfrow=c(1,2))

for (i in 1:5){
a=data.frame(name=names(a_cd), when=a_cddate)
addcd=myes(a_cd, a, i)
mygraph(addcd, "Consumer Defensive, Add", i)


a=data.frame(name=names(d_cd), when=d_cddate)
delcd=myes(d_cd, a, i)
mygraph(delcd, "Consumer Defensive, Delete", i)



}

## [1] "Consumer Defensive, Add CAA(-4,4):  0.022"

## [1] "Consumer Defensive, Delete CAA(-5,5):  0.024"

The consumer defensive sector stayed flat for additions and deletions.

Communication Services

par(mfrow=c(1,2))

for (i in 5:5){
a=data.frame(name=names(a_comm), when=a_commdate)
addcom=myes(a_comm, a, i)
addcom2=myes2(a_comm, a, i)
mygraph(addcom, "Communications, Add", i)

a=data.frame(name=names(d_comm), when=d_commdate)
delcom=myes(d_comm, a, i)
delcom2=myes2(d_comm, a, i)
mygraph(delcom, "Communications, Delete", i)

}

## [1] "Communications, Delete CAA(-5,5):  0.009"

Interestingly, the communications sector saw statistically significant market return improvements after deletion from the DJSI.

Financial Sector

par(mfrow=c(1,2))

for (i in 1:5){

a=data.frame(name=names(a_fin), when=a_findate)
addfin=myes(a_fin, a, i)
mygraph(addfin, "Finance, Add", i)

a=data.frame(name=names(d_fin), when=d_findate)
delfin=myes(d_fin, a, i)
mygraph(delfin, "Finance, Delete", i)

}

## [1] "Finance, Add CAA(-5,5):  0.013"

Health Care

par(mfrow=c(1,2))

for (i in 1:5){

a=data.frame(name=names(a_hc), when=a_hcdate)
addhc=myes(a_hc, a,i)
mygraph(addhc, "Healthcare, Add", i)

a=data.frame(name=names(d_hc), when=d_hcdate)
delhc=myes(d_hc, a, i)
mygraph(delhc, "Healthcare, Delete", i)
}

## [1] "Healthcare, Add CAA(-4,4):  0.022"

## [1] "Healthcare, Delete CAA(-5,5):  0.033"

Being dropped off the DJSI has a negative association with market returns for the healthcare sector.

Industrials

par(mfrow=c(1,2))

for(i in 1:5){

a=data.frame(name=names(a_ind), when=a_inddate)
addind=myes(a_ind, a,i)
mygraph(addind, "Industrials, Add", i)

#a=data.frame(name=names(d_ind), when=d_inddate)
#delind=myes(d_ind, a, i)
#mygraph

}

## [1] "Industrials, Add CAA(-5,5):  0.009"

Energy

par(mfrow=c(1,2))

for (i in 1:5){
a=data.frame(name=names(a_nrg), when=a_nrgdate)
addnrg=myes(a_nrg, a, i)
addnrg2=myes2(a_nrg,a,i)
mygraph(addnrg, "Energy, Add", i)

a=data.frame(name=names(d_nrg), when=d_nrgdate)
delnrg=myes(d_nrg, a, i)
delnrg2=myes2(d_nrg, a, i)
mygraph(delnrg, "Energy, Delete", i)
}

## [1] "Energy, Add CAA(-4,4):  0.022"

## [1] "Energy, Delete CAA(-4,4):  0.022"
## [1] "Energy, Add CAA(-5,5):  0.009"

## [1] "Energy, Delete CAA(-5,5):  0.013"

There is a visible initial day effect on market returns for energy stocks added to the index.

Technology

par(mfrow=c(1,2))

for (i in 1:5){
a=data.frame(name=names(a_tech), when=a_techdate)
addtech=myes(a_tech, a, i)
mygraph(addtech, "Technology, Add", i)

a=data.frame(name=names(d_tech), when=d_techdate)
deltech=myes(d_tech, a, i)
mygraph(deltech, "Technology, Delete", i)
}

## [1] "Technology, Delete CAA(-4,4):  0.035"
## [1] "Technology, Add CAA(-5,5):  0.009"

Technology stocks see no effect.

Utilities

par(mfrow=c(1,2))

for (i in 1:5){
a=data.frame(name=names(a_util), when=a_utildate)
addutil=myes(a_util, a, i)
mygraph(addutil, "Utilities, Add", i)

#a=data.frame(name=names(d_util), when=d_utildate)
#delutil=myes(d_util, a)
#matplot(myseq,delutil$result, type="l", lty=c(5,1,5), col=c("blue", "black", "blue"), lwd=c(1,2,1), main="Utilities, Delete", ylab="Cum % Response Change")
#lines(seq(-5,5, length.out=100), rep(0, 100))
}

## [1] "Utilities, Add CAA(-4,4):  0.022"
## [1] "Utilities, Add CAA(-5,5):  0.013"

No conclusions can be made about this sector

par(mfrow=c(2,2))



for (i in 5:5){
a=data.frame(name=names(EUadd), when=EUadddate)
EU=myes(EUadd, a, i)
EU2=myes2(EUadd, a, i)
mygraph(EU, "EU, Add", i)


a=data.frame(name=names(EUdel), when=EUdeldate)
EUdeletion=myes(EUdel, a, i)
EUdeletion2=myes2(EUdel, a, i)
mygraph(EUdeletion, "EU, Delete", i)

a=data.frame(name=names(USadd), when=USadddate)
US=myes(USadd, a, i)
US2=myes2(USadd, a, i)
mygraph(US, "US, Add", i)

a=data.frame(name=names(USdel), when=USdeldate)
USdeletion=myes(USdel, a, i)
USdeletion2=myes(USdel, a, i)
mygraph(USdeletion, "US, Delete", i)
}
## [1] "EU, Add CAA(-5,5):  0.009"
## [1] "EU, Delete CAA(-5,5):  0.013"

myadd=cbind(EU$result[,2], US$result[,2],c(-5,-4,-3,-2,-1,1,2,3,4,5))
colnames(myadd)=c("EU","US", "Day")

colors=c("EU"="blue", "US"="red")
ggplot(myadd)+
  geom_line(aes(x=Day, y=EU, color="EU"), size=2)+
  geom_line(aes(x=Day, y=US, color="US"), size=2)+
  labs(x = "Day",
         y = "Cumulative Abnormal Return %",
         color = "Legend")+
ggtitle("Additions to DJSI")+
  ylim(-.015,.015)

mydel=cbind(EUdeletion$result[,2], USdeletion$result[,2],c(-5,-4,-3,-2,-1,1,2,3,4,5))
colnames(mydel)=c("EU","US", "Day")


ggplot(mydel)+
  geom_line(aes(x=Day, y=EU, color="EU"), size=2)+
  geom_line(aes(x=Day, y=US, color="US"), size=2)+
  labs(x = "Day",
         y = "Cumulative Abnormal Return %",
         color = "Legend")+
ggtitle("Deletions from DJSI")+
   ylim(-.015,.015)

par(mfrow=c(2,2))
plot(EU2)
plot(EUdeletion2)
plot(US2)
plot(USdeletion2)

UK

par(mfrow=c(2,2))

for (i in 1:5){
a=data.frame(name=names(UKadd), when=UKadddate)
UK=myes(UKadd, a, i)
mygraph(UK, "UK, Add", i)

a=data.frame(name=names(UKdel), when=UKdeldate)
UKdeletion=myes(UKdel, a, i)
mygraph(UKdeletion, "UK, Delete", i)
}

## [1] "UK, Delete CAA(-5,5):  0.009"

Hierarchical Time Series Analysis

djsi=read.csv("djsifinal2.csv")
djsimat=as.matrix(t(djsi[, 21:ncol(djsi)]))
mynames=djsi
mynames=as.character(djsi$Name)
deletions=matrix(ts(djsimat[,1:55], frequency=1), ncol=55)
colnames(deletions)=mynames[1:55]

additions=matrix(ts(djsimat[,56:112], frequency=1),ncol=57)
colnames(additions)=mynames[56:length(mynames)]

bnames1=colnames(deletions)
bnames2=colnames(additions)
mygnames=c(
  "US / EU: ", 
  "US / EU x Year: ", 
  "Industry: ",
  "Industry x Stock: ",
  "US / EU x Sector: ", 
  "US / EU x Sector x Stock: ", 
  "US / EU x Year x Sector: ")
delhts=gts(deletions, gnames=mygnames, characters=list(c(2,2),c(4,4)))
addhts=gts(additions, gnames=mygnames, characters=list(c(2,2),c(4,4)))


myf=forecast.gts(addhts,h=5, weights="mint",fmethod="arima")

plot(myf, levels=0, xlim=c(10,150))
text(120, 1000,"PR Release", srt=90 )

plot(myf, levels=1, xlim=c(10,150))

plot(myf, levels=2, xlim=c(10,150))

plot(myf, levels=3, xlim=c(10,150))

plot(myf, levels=4, xlim=c(10,150))

plot(myf, levels=5, xlim=c(10,150))

plot(myf, levels=6, xlim=c(10,150))

plot(myf, levels=7, xlim=c(10,150))

plot(myf, levels=8, xlim=c(10,150))

myf2=forecast.gts(delhts,h=5, weights="mint",fmethod="arima")

plot(myf2, levels=0, xlim=c(10,150), legend=TRUE)
## Warning in plot.window(xlim, ylim, log, ...): "legend" is not a graphical
## parameter
## Warning in title(main = main, xlab = xlab, ylab = ylab, ...): "legend" is not a
## graphical parameter
## Warning in axis(1, ...): "legend" is not a graphical parameter
## Warning in axis(2, ...): "legend" is not a graphical parameter
## Warning in box(...): "legend" is not a graphical parameter
text(120, 1000,"PR Release", srt=90 )

plot(myf2, levels=1, xlim=c(10,150))

plot(myf2, levels=2, xlim=c(10,150))

plot(myf2, levels=3, xlim=c(10,150))

plot(myf2, levels=4, xlim=c(10,150))

plot(myf2, levels=5, xlim=c(10,150))

plot(myf2, levels=6, xlim=c(10,150))

plot(myf2, levels=7, xlim=c(10,150))

plot(myf2, levels=8, xlim=c(10,150))

There are no appreciable effects for stocks, sectors, US/EU, etc. However, from 0 to 120 days prior to addition, there is a rise in adjusted stock prices that outstrips the market. After deletion, this is not visible.

#Regression using Cumulative Abnormal Returns