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")
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")))))
}
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'))
#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
#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])
GSPC=myf('^GSPC', as.Date("2015-03-26"), as.Date("2018-10-1"))
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')
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])
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)
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))
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))
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)
}
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))}
}
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
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).
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.
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.
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.
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.
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"
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.
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"
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.
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.
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)
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"
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