Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
R-code for Chapter 10: Case study: Dependence amongGerman DAX stocks
Claudia Czado04 March, 2019
ContentsRequired R packages 2
Chapter 10 Case study: Dependence among German DAX stocks 2Section 10.1: Data description and sector groupings . . . . . . . . . . . . . . . . . . . . . . . . . . 2Figure 10.2: DAX: Pairs plots for automotive, chemical/health (top row), financial, industrial
(middle row), transport/ultility/energy and retail sector (bottom row) (Within each panel:Upper: pairs plots of copula data, diagonal: histogram of copula margins, lower: normalizedcontour plots). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Figure 10.3: DAX: First C-vine trees for the sectors auto, chem.health, financial,industrial,trans.util.it and retail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Section 10.4 Dependence structure among representatives 13Figure 10.4: DAX: Upper: pairs plots of copula data, diagonal: histogram of copula margins, lower:
normalized contour plots for the representive companies of the sectors . . . . . . . . . . . . . 13Selecting the appropriate u data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Figure 10.4: DAX: Upper: pairs plots of copula data, diagonal: histogram of copula margins, lower:
normalized contour plots for the representive companies of the sectors . . . . . . . . . . . . . 13Figure 10.5: DAX: R-vine trees allowing for all pair copula families for sector representatives together
with their pair copula family and the fitted Kendall’s τ value for each edge based on jointmaximum likelihood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Figure 10.5: DAX: R-vine trees allowing only for Student t or Gaussian copulas (bottom) for sectorrepresentatives together with their pair copula family and the fitted Kendall’s τ value for eachedge based on joint maximum likelihood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Figure 10.6: DAX: Fitted R-vine normalized contour for sector representatives allowing forall paircopulas (rv) based on joint maximum likelihood (node abbreviations: 1 <-> DAI.DE, 2 <->BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . . . . . . . 20
Table 10.3: DAX: Sequential parameter estimates (par and if necessary par2) togetherwith impliedKendall’s τ (tau), upper (utd) and lower (ltd) tail dependence coefficient estimates for theR-vine copula (allowing for all implemented pair copula families) (node abbreviations: 1 =DAI.DE, 2 = BAS.DE, 3 = DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . 21
Table 10.3: DAX: Sequential parameter estimates (par and if necessary par2) togetherwith impliedKendall’s τ (tau), upper (utd) and lower (ltd) tail dependence coefficient estimates for theR-vine copula with only Student t and Gaussian paircopulas (node abbreviations: 1 <->DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) 22
Figure 10.7: DAX: C-vine trees for sector representatives together with their chosen pair copulafamilies and the corresponding fitted Kendall’s τ values based on joint maximum likelihoodestimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figure 10.7: DAX: D-vine trees for sector representatives together with their chosen pair copulafamilies and the corresponding fitted Kendall’s τ values based on joint maximum likelihoodestimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figure 10.8: DAX: Fitted D-vine normalized contours for sector representatives allowing for allpair copulas based on joint maximum likelihood (node abbreviations: 1 <-> DAI.DE, 2 <->BAS.DE, 3 <->DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . . . . . . . . 24
1
Figure 10.8: DAX: Fitted D-vine normalized contours for sector representatives allowing for allpair copulas based on joint maximum likelihood (node abbreviations: 1 <-> DAI.DE, 2 <->BAS.DE, 3 <->DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . . . . . . . . 25
Table 10.4: DAX: Sequential parameter estimates (par and if necessary par2) together with impliedKendall’s τ (tau), upper (utd) and lower (ltd) tail dependence coefficients for the C-vinespecification allowing all implemented pair copulas. (node abbreviations: 1 <-> DAI.DE, 2<-> BAS.DE, 3 <-> DBK.DE,4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . . . . . 26
Table 10.4: DAX: Sequential parameter estimates (par and if necessary par2) together with impliedKendall’s τ (tau), upper (utd) and lower (ltd) tail dependence coefficients for the D-vinespecification allowing all implemented pair copulas. (node abbreviations: 1 <-> DAI.DE, 2<-> BAS.DE, 3 <-> DBK.DE,4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE) . . . . . . 27
Section 10.5 Model comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Table 10.5: DAX: Estimated log likelihood (loglik), number of parameters (df), AIC and BIC for all
fitted models (seq=sequential estimation, mle=maximum likelihood, ind= asymptotic α levelindependence tests used, all= all implemented pair copula families used, t = only Student tand Gaussian pair copulas used, G = only Gaussian copulas used) . . . . . . . . . . . . . . . 28
Comparing R-vines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Comparing Gaussian vines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Comparing C-vines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Comparing D-vines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Table 10.6: DAX: Vuong test model comparison within each vine class using joint maximum
likelihood estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Table 10.7: DAX: Vuong test model comparison between each vine class using joint maximum
likelihood estimation allowing for all implemented pair copula families and without theindependence test (2.8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Required R packages
• VineCopula• rafalib• TSP• fGarch
Chapter 10 Case study: Dependence among German DAX stocks
Section 10.1: Data description and sector groupings
Load data, fit marginal models and create copula data
Marginal GARCH(1,1) models with t innovations are fitted to each of the 30 DAX components
Copula data is created using the fitted innovation distribution of the GARCH modelload("dax_df.RData")
fits = list()res = list()pvalues = rep(0,30)udata = matrix(0,dim(dax_df)[1]-1,30)
for(i in 1:30){
2
fits[[i]] = garchFit(formula=~garch(1,1), data=diff(log(dax_df[,i])),trace=FALSE, control=list(maxit=10000),include.mean=TRUE, cond.dist="std")
res[[i]] = residuals(fits[[i]], standardize=TRUE)pvalues[i] = ks.test(res[[i]], "pstd", 0, 1, coef(fits[[i]])[5])$p.valueudata[,i] = pstd(res[[i]], nu=coef(fits[[i]])[5])
}colnames(udata)<-colnames(dax_df)dim(dax_df)
## [1] 1659 30
rownames(udata)<-rownames(dax_df)[-1]
Subdivide data according to sector
The file “return.dat” includes the sector classification of the 30 DAX componentsreturn<-read.table("return.dat",header=T)attach(return)
ticker.auto<-rownames(return[type=="automobile",])ticker.chem<-rownames(return[type=="chem.health",])ticker.fin<-rownames(return[type=="financial",])ticker.indust<-rownames(return[type=="industrial",])ticker.retail<-rownames(return[type=="retail",])ticker.other<-rownames(return[type=="trans.util.it",])u.auto<-as.copuladata(udata[,ticker.auto])u.chem<-as.copuladata(udata[,ticker.chem])u.fin<-as.copuladata(udata[,ticker.fin])u.indust<-as.copuladata(udata[,ticker.indust])u.retail<-as.copuladata(udata[,ticker.retail])u.other<-as.copuladata(udata[,ticker.other])detach(return)
Figure 10.2: DAX: Pairs plots for automotive, chemical/health (top row), finan-cial, industrial (middle row), transport/ultility/energy and retail sector (bottomrow) (Within each panel: Upper: pairs plots of copula data, diagonal: histogramof copula margins, lower: normalized contour plots).
pairs(u.auto)
3
BMW.DE
0.51 0.34
z1
z 2
DAI.DE
0.37
z1
z 2
z1
z 2
VOW3.DE
pairs(u.chem)
4
BAS.DE
0.43 0.20 0.19 0.42 0.21 0.32
z1
z 2
BAYN.DE
0.21 0.17 0.36 0.22 0.27
z1
z 2
z1
z 2
FME.DE
0.28 0.18 0.20 0.13
z1
z 2
z1
z 2
z1
z 2
FRE.DE
0.18 0.19 0.15
z1
z 2
z1
z 2
z1
z 2
z1
z 2
LIN.DE
0.21 0.29
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
MRK.DE
0.16
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
SDF.DE
pairs(u.fin)
5
ALV.DE
0.44 0.34 0.52 0.52
z1
z 2
CBK.DE
0.31 0.50 0.36
z1
z 2
z1
z 2
DB1.DE
0.37 0.31
z1
z 2
z1
z 2
z1
z 2
DBK.DE
0.43
z1
z 2
z1
z 2
z1
z 2
z1
z 2
MUV2.DE
pairs(u.indust)
6
HEI.DE
0.27 0.31 0.33
z1
z 2
MAN.DE
0.39 0.37
z1
z 2
z1
z 2
SIE.DE
0.42
z1
z 2
z1
z 2
z1
z 2
TKA.DE
pairs(u.retail)
7
ADS.DE
0.25 0.28 0.28
z1
z 2
BEI.DE
0.29 0.26
z1
z 2
z1
z 2
HEN3.DE
0.28
z1
z 2
z1
z 2
z1
z 2
MEO.DE
pairs(u.other)
8
DPW.DE
0.29 0.30 0.28 0.34 0.30 0.25
z1
z 2
DTE.DE
0.32 0.25 0.29 0.33 0.27
z1
z 2
z1
z 2
EOAN.DE
0.21 0.24 0.58 0.26
z1
z 2
z1
z 2
z1
z 2
IFX.DE
0.31 0.21 0.31
z1
z 2
z1
z 2
z1
z 2
z1
z 2
LHA.DE
0.25 0.30
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
RWE.DE
0.27
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
SAP.DE
Dependence within sectors
options(digits=2)round(cor(u.auto,method="kendall"),digits=2)
## BMW.DE DAI.DE VOW3.DE## BMW.DE 1.00 0.51 0.34## DAI.DE 0.51 1.00 0.37## VOW3.DE 0.34 0.37 1.00
round(cor(u.chem,method="kendall"),digits=2)
## BAS.DE BAYN.DE FME.DE FRE.DE LIN.DE MRK.DE SDF.DE
9
## BAS.DE 1.00 0.43 0.20 0.19 0.42 0.21 0.32## BAYN.DE 0.43 1.00 0.21 0.17 0.36 0.22 0.27## FME.DE 0.20 0.21 1.00 0.28 0.18 0.20 0.13## FRE.DE 0.19 0.17 0.28 1.00 0.18 0.19 0.15## LIN.DE 0.42 0.36 0.18 0.18 1.00 0.21 0.29## MRK.DE 0.21 0.22 0.20 0.19 0.21 1.00 0.16## SDF.DE 0.32 0.27 0.13 0.15 0.29 0.16 1.00
round(cor(u.fin,method="kendall"),digits=2)
## ALV.DE CBK.DE DB1.DE DBK.DE MUV2.DE## ALV.DE 1.00 0.44 0.34 0.52 0.52## CBK.DE 0.44 1.00 0.31 0.50 0.36## DB1.DE 0.34 0.31 1.00 0.37 0.31## DBK.DE 0.52 0.50 0.37 1.00 0.43## MUV2.DE 0.52 0.36 0.31 0.43 1.00
round(cor(u.indust,method="kendall"),digits=2)
## HEI.DE MAN.DE SIE.DE TKA.DE## HEI.DE 1.00 0.27 0.31 0.33## MAN.DE 0.27 1.00 0.39 0.37## SIE.DE 0.31 0.39 1.00 0.42## TKA.DE 0.33 0.37 0.42 1.00
round(cor(u.other,method="kendall"),digits=2)
## DPW.DE DTE.DE EOAN.DE IFX.DE LHA.DE RWE.DE SAP.DE## DPW.DE 1.00 0.29 0.30 0.28 0.34 0.30 0.25## DTE.DE 0.29 1.00 0.32 0.25 0.29 0.33 0.27## EOAN.DE 0.30 0.32 1.00 0.21 0.24 0.58 0.26## IFX.DE 0.28 0.25 0.21 1.00 0.31 0.21 0.31## LHA.DE 0.34 0.29 0.24 0.31 1.00 0.25 0.30## RWE.DE 0.30 0.33 0.58 0.21 0.25 1.00 0.27## SAP.DE 0.25 0.27 0.26 0.31 0.30 0.27 1.00
round(cor(u.retail,method="kendall"),digits=2)
## ADS.DE BEI.DE HEN3.DE MEO.DE## ADS.DE 1.00 0.25 0.28 0.28## BEI.DE 0.25 1.00 0.29 0.26## HEN3.DE 0.28 0.29 1.00 0.28## MEO.DE 0.28 0.26 0.28 1.00
Determining representatives of the sectors using C-vines
Auto sector
fit.cv.auto=RVineStructureSelect(u.auto, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.auto=RVineStructureSelect(u.auto, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.auto)#summary(fit.cv.ind.auto)
10
Chemical sector
fit.cv.chem=RVineStructureSelect(u.chem, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.chem=RVineStructureSelect(u.chem, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.chem)#summary(fit.cv.ind.chem)
Financial sector
fit.cv.fin=RVineStructureSelect(u.fin, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.fin=RVineStructureSelect(u.fin, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.fin)#summary(fit.cv.ind.fin)
Industrial sector
fit.cv.indust=RVineStructureSelect(u.indust, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.indust=RVineStructureSelect(u.indust, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.indust)#summary(fit.cv.ind.indust)
Retail sector
fit.cv.retail=RVineStructureSelect(u.retail, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.retail=RVineStructureSelect(u.retail, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.retail)#summary(fit.cv.ind.retail)
Transport/Utility/IT sector
fit.cv.other=RVineStructureSelect(u.other, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.ind.other=RVineStructureSelect(u.other, familyset=c(1,2,5,6,4), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
#summary(fit.cv.other)#summary(fit.cv.ind.other)
11
Figure 10.3: DAX: First C-vine trees for the sectors auto, chem.health, finan-cial,industrial, trans.util.it and retail
bigpar(2,3)plot(fit.cv.auto,tree=1,edge.labels="family-tau",type=1)plot(fit.cv.chem,tree=1,edge.labels="family-tau",type=1)plot(fit.cv.fin,tree=1,edge.labels="family-tau",type=1)plot(fit.cv.indust,tree=1,edge.labels="family-tau",type=1)plot(fit.cv.other,tree=1,edge.labels="family-tau",type=1)plot(fit.cv.retail,tree=1,edge.labels="family-tau",type=1)
Tree 1
t(0.5)
t(0.37)
BMW.DE
DAI.DE
VOW3.DE
Tree 1
t(0.43)
SG(0.17)
t(0.21)
t(0.42)
SG(0.19)
t(0.32)
BAYN.DE
FRE.DE
MRK.DE
LIN.DE
FME.DEBAS.DE
SDF.DE
Tree 1
t(0.49)
F(0.38)t(0.52)
t(0.43)
CBK.DE
DB1.DEALV.DE
DBK.DE
MUV2.DE
Tree 1
t(0.31)
t(0.38)
t(0.41)
HEI.DE
MAN.DE
SIE.DE
TKA.DE
Tree 1
t(0.29)
t(0.57)
F(0.33)
t(0.21)
t(0.25)t(0.26)
DPW.DE
EOAN.DE
DTE.DE
IFX.DE
LHA.DE
RWE.DE
SAP.DE
Tree 1
SG(0.27)
t(0.28)
t(0.27)
ADS.DE
BEI.DE
HEN3.DE
MEO.DE
C-vines give
• DAI.DE for auto,• BAS.DE for chem,• DBK.DE for fin,• SIE.DE for indust,• RWE.DE for other,• HEN3.DE for retail,
as first node, we use them as representative of their group
12
Section 10.4 Dependence structure among representatives
Figure 10.4: DAX: Upper: pairs plots of copula data, diagonal: histogram ofcopula margins, lower: normalized contour plots for the representive companiesof the sectors
Selecting the appropriate u data
ticker.sum<-c("DAI.DE","BAS.DE","DBK.DE","SIE.DE","RWE.DE","HEN3.DE")u.sum<-udata[,ticker.sum]u.sum<-as.copuladata(u.sum)
Figure 10.4: DAX: Upper: pairs plots of copula data, diagonal: histogram ofcopula margins, lower: normalized contour plots for the representive companiesof the sectors
pairs(u.sum)
13
DAI.DE
0.39 0.42 0.43 0.29 0.29
z1
z 2
BAS.DE
0.40 0.46 0.35 0.30
z1
z 2
z1
z 2
DBK.DE
0.44 0.35 0.28
z1
z 2
z1
z 2
z1
z 2
SIE.DE
0.33 0.30
z1
z 2
z1
z 2
z1
z 2
z1
z 2
RWE.DE
0.22
z1
z 2
z1
z 2
z1
z 2
z1
z 2
z1
z 2
HEN3.DE
Fitting R-vines allowing for all pair copula families (Sequential and joint ml estimation)
fit.rv.sum=RVineStructureSelect(u.sum, familyset=NA, selectioncrit="AIC",indeptest=FALSE, level=0.05,type="RVine")
fit.rv.sum.mle=RVineMLE(u.sum,fit.rv.sum)
## iter 10 value -2142.910644## iter 20 value -2143.902089## iter 30 value -2143.947553## iter 40 value -2144.105360## iter 50 value -2144.146633## iter 60 value -2144.158747## iter 70 value -2144.212244
14
## iter 80 value -2144.226708## iter 90 value -2144.231724## iter 100 value -2144.259384## final value -2144.260392## converged
fit.rv.ind.sum=RVineStructureSelect(u.sum, familyset=NA, selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="RVine")
fit.rv.ind.sum.mle=RVineMLE(u.sum, fit.rv.ind.sum)
## iter 10 value -2141.363379## iter 20 value -2142.436284## iter 30 value -2142.598563## iter 40 value -2142.656682## iter 50 value -2142.686592## iter 60 value -2142.764439## iter 70 value -2142.854068## iter 80 value -2142.864206## iter 90 value -2142.869910## iter 100 value -2142.875691## iter 110 value -2142.886129## iter 120 value -2142.895636## final value -2142.897918## converged
Fitting R-vines allowing for only t and Gauss copula families
fit.trv.sum=RVineStructureSelect(u.sum, familyset=c(1,2), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="RVine")
fit.trv.sum.mle=RVineMLE(u.sum,fit.trv.sum)
## iter 10 value -2140.407346## iter 20 value -2140.492647## final value -2140.493480## converged
fit.trv.ind.sum=RVineStructureSelect(u.sum, familyset=c(1,2), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="RVine")
fit.trv.ind.sum.mle=RVineMLE(u.sum, fit.trv.ind.sum)
## iter 10 value -2139.217009## iter 20 value -2139.295293## final value -2139.295990## converged
Fitting R-vines allowing for only Gauss copula families
fit.grv.sum=RVineStructureSelect(u.sum, familyset=1, selectioncrit="AIC",indeptest=FALSE, level=0.05,type="RVine")
fit.grv.sum.mle=RVineMLE(u.sum,fit.grv.sum)
## final value -1952.742087## converged
15
fit.grv.ind.sum=RVineStructureSelect(u.sum, familyset=1, selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="RVine")
fit.grv.ind.sum.mle=RVineMLE(u.sum, fit.grv.ind.sum)
## final value -1952.742087## converged
Fitting C-vines allowing for only t and Gauss copula families (Sequential and joint ml estima-tion)
fit.tcv.sum=RVineStructureSelect(u.sum, familyset=c(1,2), selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.tcv.sum.mle=RVineMLE(u.sum,fit.tcv.sum)
## iter 10 value -2139.021443## final value -2139.026098## converged
fit.tcv.ind.sum=RVineStructureSelect(u.sum, familyset=c(1,2), selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
fit.tcv.ind.sum.mle=RVineMLE(u.sum, fit.tcv.ind.sum)
## iter 10 value -2137.801763## final value -2137.806331## converged
Fitting C-vines allowing for all pair copula families (Sequential and joint ml estimation)
fit.cv.sum=RVineStructureSelect(u.sum, familyset=NA, selectioncrit="AIC",indeptest=FALSE, level=0.05,type="CVine")
fit.cv.sum.mle=RVineMLE(u.sum,fit.cv.sum)
## iter 10 value -2158.339457## iter 20 value -2160.090029## iter 30 value -2160.387749## iter 40 value -2160.616153## iter 50 value -2160.662720## iter 60 value -2160.678996## iter 70 value -2160.698437## iter 80 value -2160.701437## iter 90 value -2160.704698## iter 100 value -2160.715159## iter 110 value -2160.728458## iter 120 value -2160.729505## final value -2160.729574## converged
fit.cv.ind.sum=RVineStructureSelect(u.sum, familyset=NA, selectioncrit="AIC",indeptest=TRUE, level=0.05,type ="CVine")
fit.cv.ind.sum.mle=RVineMLE(u.sum, fit.cv.ind.sum)
## iter 10 value -2158.339457## iter 20 value -2160.090029
16
## iter 30 value -2160.387749## iter 40 value -2160.616153## iter 50 value -2160.662720## iter 60 value -2160.678996## iter 70 value -2160.698437## iter 80 value -2160.701437## iter 90 value -2160.704698## iter 100 value -2160.715159## iter 110 value -2160.728458## iter 120 value -2160.729505## final value -2160.729574## converged
Fitting D-vines allowing for all pair copula families (Sequential and joint ml estimation)
Fix order to 5-6-1-3-4-2d = dim(u.sum)[2]M = 1 - abs(TauMatrix(u.sum))hamilton = insert_dummy(TSP(M),label="cut")sol = solve_TSP(hamilton,method="repetitive_nn")order = cut_tour(sol,"cut")order<-c(5,6,1,3,4,2)DVM= D2RVine(order,family=rep(0,d*(d-1)/2),par=rep(0,d*(d-1)/2))fit.dv.sum=RVineCopSelect(data=u.sum,familyset=NA,indeptest=FALSE,
level=0.05,Matrix=DVM$Matrix,selectioncrit="AIC")fit.dv.ind.sum=RVineCopSelect(data=u.sum,familyset=NA,indeptest=TRUE,
level=0.05,Matrix=DVM$Matrix,selectioncrit="AIC")fit.dv.sum.mle=RVineMLE(u.sum,fit.dv.sum)
## iter 10 value -2157.813832## iter 20 value -2158.209618## iter 30 value -2158.613747## iter 40 value -2158.662415## iter 50 value -2158.797994## iter 60 value -2158.815933## iter 70 value -2158.995210## iter 80 value -2159.118900## iter 90 value -2159.145982## iter 100 value -2159.177734## iter 110 value -2159.190981## iter 120 value -2159.194774## iter 130 value -2159.200723## iter 140 value -2159.215668## iter 150 value -2159.222026## iter 160 value -2159.236412## final value -2159.236456## converged
fit.dv.ind.sum.mle=RVineMLE(u.sum,fit.dv.ind.sum)
## iter 10 value -2157.813832## iter 20 value -2158.209618## iter 30 value -2158.613747## iter 40 value -2158.662415
17
## iter 50 value -2158.797994## iter 60 value -2158.815933## iter 70 value -2158.995210## iter 80 value -2159.118900## iter 90 value -2159.145982## iter 100 value -2159.177734## iter 110 value -2159.190981## iter 120 value -2159.194774## iter 130 value -2159.200723## iter 140 value -2159.215668## iter 150 value -2159.222026## iter 160 value -2159.236412## final value -2159.236456## converged
Fitting D-vines allowing for only t and Gauss copula families (Sequential and joint ml estima-tion)
Fix order to 5-6-1-3-4-2d = dim(u.sum)[2]M = 1 - abs(TauMatrix(u.sum))hamilton = insert_dummy(TSP(M),label="cut")sol = solve_TSP(hamilton,method="repetitive_nn")order = cut_tour(sol,"cut")order<-c(5,6,1,3,4,2)DVM= D2RVine(order,family=rep(0,d*(d-1)/2),par=rep(0,d*(d-1)/2))fit.tdv.sum=RVineCopSelect(data=u.sum,familyset=c(1,2),indeptest=FALSE,
level=0.05,Matrix=DVM$Matrix,selectioncrit="AIC")fit.tdv.ind.sum=RVineCopSelect(data=u.sum,familyset=c(1,2),indeptest=TRUE,
level=0.05,Matrix=DVM$Matrix,selectioncrit="AIC")fit.tdv.sum.mle=RVineMLE(u.sum,fit.tdv.sum)
## iter 10 value -2128.654589## iter 20 value -2128.762883## final value -2128.770324## converged
fit.tdv.ind.sum.mle=RVineMLE(u.sum,fit.tdv.ind.sum)
## iter 10 value -2128.654589## iter 20 value -2128.762883## final value -2128.770324## converged
Figure 10.5: DAX: R-vine trees allowing for all pair copula families for sectorrepresentatives together with their pair copula family and the fitted Kendall’s τvalue for each edge based on joint maximum likelihood
bigpar(2,3)junk<-fit.rv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")plot(junk,tree="ALL",edge.labels="family-tau",type=1)
18
Tree 1
t(0.42)
t(0.34)
t(0.44)
t(0.46)
t(0.3)
DAI
RWE
DBK
SIE
BAS
HEN3
Tree 2
t(0.23)
F(0.16)
SBB8(0.2)F(0.16)
SIE,DAI
BAS,RWE
SIE,DBK
BAS,SIE
HEN3,BAS
Tree 3
t(0.13)
F(0.15)
BB1(0.08)
DBK,DAI ; SIE
SIE,RWE ; BAS
BAS,DBK ; SIE
HEN3,SIE ; BAS
Tree 4
F(0.1) SBB1(0.05)
BAS,DAI ; DBK,SIEDBK,RWE ; SIE,BAS
HEN3,DBK ; BAS,SIE
Tree 5
F(0.03)
HEN3,DAI ; BAS,DBK,SIE
HEN3,RWE ; DBK,SIE,BAS
Figure 10.5: DAX: R-vine trees allowing only for Student t or Gaussian copulas(bottom) for sector representatives together with their pair copula family andthe fitted Kendall’s τ value for each edge based on joint maximum likelihood
bigpar(2,3)junk<-fit.trv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")plot(junk,tree="ALL",edge.labels="family-tau",type=1)
19
Tree 1
t(0.43)
t(0.35)
t(0.44)
t(0.46)
t(0.31)
DAI
RWE
DBK
SIE
BAS
HEN3
Tree 2
t(0.23)
t(0.15)
t(0.19) t(0.15)
SIE,DAI
BAS,RWE
SIE,DBK
BAS,SIE
HEN3,BAS
Tree 3
t(0.13)
t(0.14)
t(0.08)
DBK,DAI ; SIE
SIE,RWE ; BAS
BAS,DBK ; SIE
HEN3,SIE ; BAS
Tree 4
N(0.09)
t(0.05)
BAS,DAI ; DBK,SIE
DBK,RWE ; SIE,BAS
HEN3,DBK ; BAS,SIE
Tree 5
N(0.02)
HEN3,DAI ; BAS,DBK,SIE
HEN3,RWE ; DBK,SIE,BAS
Figure 10.6: DAX: Fitted R-vine normalized contour for sector representativesallowing forall pair copulas (rv) based on joint maximum likelihood (node ab-breviations: 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE,5 <-> RWE.DE, 6 <-> HEN3.DE)
junk<-fit.rv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")contour(junk)
20
5,1 ; 6,2,3,4
6,1 ; 2,3,4 6,5 ; 3,4,2
2,1 ; 3,4 3,5 ; 4,2 6,3 ; 2,4
3,1 ; 4 4,5 ; 2 2,3 ; 4 6,4 ; 2
4,1 2,5 4,3 2,4 6,2
Table 10.3: DAX: Sequential parameter estimates (par and if necessary par2)togetherwith implied Kendall’s τ (tau), upper (utd) and lower (ltd) tail depen-dence coefficient estimates for the R-vine copula (allowing for all implementedpair copula families) (node abbreviations: 1 = DAI.DE, 2 = BAS.DE, 3 =DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE)
summary(fit.rv.sum)
## tree edge | family cop par par2 | tau utd ltd## ----------------------------------------------------------------## 1 4,1 | 2 t 0.61 5.68 | 0.42 0.25 0.25## 2,5 | 2 t 0.51 6.37 | 0.34 0.17 0.17
21
## 4,3 | 2 t 0.63 5.56 | 0.44 0.27 0.27## 2,4 | 2 t 0.66 4.47 | 0.46 0.33 0.33## 6,2 | 2 t 0.45 8.32 | 0.30 0.09 0.09## 2 3,1;4 | 2 t 0.35 9.19 | 0.23 0.05 0.05## 4,5;2 | 5 F 1.53 0.00 | 0.17 - -## 2,3;4 | 20 SBB8 2.33 0.71 | 0.20 - -## 6,4;2 | 5 F 1.50 0.00 | 0.16 - -## 3 2,1;3,4 | 2 t 0.20 12.98 | 0.13 0.01 0.01## 3,5;4,2 | 5 F 1.36 0.00 | 0.15 - -## 6,3;2,4 | 7 BB1 0.07 1.05 | 0.08 0.06 0.00## 4 6,1;2,3,4 | 5 F 0.93 0.00 | 0.10 - -## 6,5;3,4,2 | 17 SBB1 0.07 1.01 | 0.05 0.00 0.02## 5 5,1;6,2,3,4 | 5 F 0.25 0.00 | 0.03 - -## ---## type: R-vine logLik: 2142.09 AIC: -4234.17 BIC: -4098.84## ---## 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE,## 6 <-> HEN3.DE
#print(fit.rv.sum.mle)#summary(fit.rv.ind.sum)#print(fit.rv.ind.sum.mle)
Table 10.3: DAX: Sequential parameter estimates (par and if necessary par2)togetherwith implied Kendall’s τ (tau), upper (utd) and lower (ltd) tail de-pendence coefficient estimates for the R-vine copula with only Student t andGaussian paircopulas (node abbreviations: 1 <-> DAI.DE, 2 <-> BAS.DE, 3<-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE)
summary(fit.trv.sum)
## tree edge | family cop par par2 | tau utd ltd## ---------------------------------------------------------------## 1 4,1 | 2 t 0.61 5.68 | 0.42 0.25 0.25## 2,5 | 2 t 0.51 6.37 | 0.34 0.17 0.17## 4,3 | 2 t 0.63 5.56 | 0.44 0.27 0.27## 2,4 | 2 t 0.66 4.47 | 0.46 0.33 0.33## 6,2 | 2 t 0.45 8.32 | 0.30 0.09 0.09## 2 3,1;4 | 2 t 0.35 9.19 | 0.23 0.05 0.05## 4,5;2 | 2 t 0.23 12.07 | 0.15 0.01 0.01## 2,3;4 | 2 t 0.29 14.42 | 0.19 0.01 0.01## 6,4;2 | 2 t 0.23 21.27 | 0.15 0.00 0.00## 3 2,1;3,4 | 2 t 0.20 13.77 | 0.13 0.01 0.01## 3,5;4,2 | 2 t 0.22 14.83 | 0.14 0.01 0.01## 6,3;2,4 | 2 t 0.13 17.72 | 0.08 0.00 0.00## 4 6,1;2,3,4 | 1 N 0.14 0.00 | 0.09 - -## 6,5;3,4,2 | 2 t 0.08 30.00 | 0.05 0.00 0.00## 5 5,1;6,2,3,4 | 1 N 0.04 0.00 | 0.02 - -## ---## type: R-vine logLik: 2137.66 AIC: -4219.32 BIC: -4067.74## ---## 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE,
22
## 6 <-> HEN3.DE
#print(fit.trv.sum.mle)#summary(fit.trv.ind.sum)#print(fit.trv.ind.sum.mle)
Figure 10.7: DAX: C-vine trees for sector representatives together with theirchosen pair copula families and the corresponding fitted Kendall’s τ values basedon joint maximum likelihood estimation
bigpar(2,3)junk<-fit.cv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")plot(junk,tree="ALL",edge.labels="family-tau",type=1)
Tree 1
t(0.42)
t(0.32)
t(0.46)
t(0.44)
SBB1(0.3)
DAI
RWE
BAS
DBK
SIE
HEN3
Tree 2
t(0.23)
F(0.21)
SBB8(0.21)
BB1(0.12)
SIE,DAI
SIE,RWE
SIE,BASSIE,DBK
HEN3,SIE
Tree 3
t(0.13)
F(0.17)F(0.14)
DBK,DAI ; SIE
DBK,RWE ; SIE
DBK,BAS ; SIE
HEN3,DBK ; SIE
Tree 4
F(0.11)
G(0.04)
BAS,DAI ; DBK,SIE
BAS,RWE ; DBK,SIEHEN3,BAS ; DBK,SIE
Tree 5
F(0.03)
HEN3,DAI ; BAS,DBK,SIE
HEN3,RWE ; BAS,DBK,SIE
Figure 10.7: DAX: D-vine trees for sector representatives together with theirchosen pair copula families and the corresponding fitted Kendall’s τ values basedon joint maximum likelihood estimation
bigpar(2,3)junk<-fit.dv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")plot(junk,tree="ALL",edge.labels="family-tau",type=1)
23
Tree 1
t(0.46)
t(0.44)
t(0.41)
t(0.29)
t(0.23)
BASSIE
DBK
DAI
HEN3RWE
Tree 2
SBB8(0.2)
t(0.25)
t(0.14)
SBB8(0.23)
SIE,BAS
DBK,SIE
DAI,DBK
HEN3,DAI
RWE,HEN3
Tree 3
t(0.13)
F(0.14)
F(0.21)
DBK,BAS ; SIE
DAI,SIE ; DBKHEN3,DBK ; DAI
RWE,DAI ; HEN3
Tree 4
F(0.12)
SBB8(0.12)
DAI,BAS ; DBK,SIE
HEN3,SIE ; DAI,DBK
RWE,DBK ; HEN3,DAI
Tree 5
F(0.14)
HEN3,BAS ; DAI,DBK,SIE
RWE,SIE ; HEN3,DAI,DBK
Figure 10.8: DAX: Fitted D-vine normalized contours for sector representativesallowing for all pair copulas based on joint maximum likelihood (node abbrevia-tions: 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <->DBK.DE, 4 <-> SIE.DE, 5 <->RWE.DE, 6 <-> HEN3.DE)
junk<-fit.cv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")contour(junk)
24
5,1 ; 6,2,3,4
6,1 ; 2,3,4 6,5 ; 2,3,4
2,1 ; 3,4 2,5 ; 3,4 6,2 ; 3,4
3,1 ; 4 3,5 ; 4 3,2 ; 4 6,3 ; 4
4,1 4,5 4,2 4,3 6,4
Figure 10.8: DAX: Fitted D-vine normalized contours for sector representativesallowing for all pair copulas based on joint maximum likelihood (node abbrevia-tions: 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <->DBK.DE, 4 <-> SIE.DE, 5 <->RWE.DE, 6 <-> HEN3.DE)
junk<-fit.dv.sum.mle$RVMjunk[[5]]<-c("DAI" , "BAS", "DBK", "SIE", "RWE" , "HEN3")contour(junk)
25
5,2 ; 6,1,3,4
6,2 ; 1,3,4 5,4 ; 6,1,3
1,2 ; 3,4 6,4 ; 1,3 5,3 ; 6,1
3,2 ; 4 1,4 ; 3 6,3 ; 1 5,1 ; 6
4,2 3,4 1,3 6,1 5,6
Table 10.4: DAX: Sequential parameter estimates (par and if necessary par2)together with implied Kendall’s τ (tau), upper (utd) and lower (ltd) tail de-pendence coefficients for the C-vine specification allowing all implemented paircopulas. (node abbreviations: 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE,4<-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE)
summary(fit.cv.sum)
## tree edge | family cop par par2 | tau utd ltd## ----------------------------------------------------------------## 1 4,1 | 2 t 0.61 5.68 | 0.42 0.25 0.25## 4,5 | 2 t 0.49 5.20 | 0.32 0.19 0.19
26
## 4,2 | 2 t 0.66 4.47 | 0.46 0.33 0.33## 4,3 | 2 t 0.63 5.56 | 0.44 0.27 0.27## 6,4 | 17 SBB1 0.07 1.36 | 0.29 0.00 0.34## 2 3,1;4 | 2 t 0.35 9.19 | 0.23 0.05 0.05## 3,5;4 | 5 F 1.91 0.00 | 0.21 - -## 3,2;4 | 20 SBB8 2.33 0.71 | 0.20 - -## 6,3;4 | 7 BB1 0.11 1.07 | 0.11 0.09 0.00## 3 2,1;3,4 | 2 t 0.20 12.98 | 0.13 0.01 0.01## 2,5;3,4 | 5 F 1.49 0.00 | 0.16 - -## 6,2;3,4 | 5 F 1.25 0.00 | 0.14 - -## 4 6,1;2,3,4 | 5 F 0.99 0.00 | 0.11 - -## 6,5;2,3,4 | 4 G 1.05 0.00 | 0.04 0.06 -## 5 5,1;6,2,3,4 | 5 F 0.30 0.00 | 0.03 - -## ---## type: C-vine logLik: 2156.96 AIC: -4265.92 BIC: -4136## ---## 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE,## 6 <-> HEN3.DE
Table 10.4: DAX: Sequential parameter estimates (par and if necessary par2)together with implied Kendall’s τ (tau), upper (utd) and lower (ltd) tail de-pendence coefficients for the D-vine specification allowing all implemented paircopulas. (node abbreviations: 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE,4<-> SIE.DE, 5 <-> RWE.DE, 6 <-> HEN3.DE)
summary(fit.dv.sum)
## tree edge | family cop par par2 | tau utd ltd## ----------------------------------------------------------------## 1 4,2 | 2 t 0.66 4.47 | 0.46 0.33 0.33## 3,4 | 2 t 0.63 5.56 | 0.44 0.27 0.27## 1,3 | 2 t 0.61 6.03 | 0.42 0.23 0.23## 6,1 | 2 t 0.44 11.77 | 0.29 0.04 0.04## 5,6 | 2 t 0.34 9.26 | 0.22 0.05 0.05## 2 3,2;4 | 20 SBB8 2.33 0.71 | 0.20 - -## 1,4;3 | 2 t 0.37 9.30 | 0.24 0.05 0.05## 6,3;1 | 2 t 0.21 11.90 | 0.14 0.01 0.01## 5,1;6 | 20 SBB8 3.12 0.60 | 0.23 - -## 3 1,2;3,4 | 2 t 0.20 13.15 | 0.13 0.01 0.01## 6,4;1,3 | 5 F 1.29 0.00 | 0.14 - -## 5,3;6,1 | 5 F 2.03 0.00 | 0.22 - -## 4 6,2;1,3,4 | 5 F 1.04 0.00 | 0.11 - -## 5,4;6,1,3 | 20 SBB8 2.05 0.61 | 0.12 - -## 5 5,2;6,1,3,4 | 5 F 1.29 0.00 | 0.14 - -## ---## type: D-vine logLik: 2155.92 AIC: -4259.84 BIC: -4119.09## ---## 1 <-> DAI.DE, 2 <-> BAS.DE, 3 <-> DBK.DE, 4 <-> SIE.DE, 5 <-> RWE.DE,## 6 <-> HEN3.DE
27
Section 10.5 Model comparison
Table 10.5: DAX: Estimated log likelihood (loglik), number of parameters (df),AIC and BIC for all fitted models (seq=sequential estimation, mle=maximumlikelihood, ind= asymptotic α level independence tests used, all= all imple-mented pair copula families used, t = only Student t and Gaussian pair copulasused, G = only Gaussian copulas used)
Comparing R-vines
model.out<-function(fit=fit.rv,data=ured,digits=2){df<-sum(abs(fit$par)>0)+sum(fit$par2>0)out<-round(c(RVineLogLik(data, fit)$loglik,df, RVineAIC(data,fit)$AIC,RVineBIC(data,fit)$BIC),digits)names(out)<-c("loglik","par","AIC","BIC")out}out.table<-rbind(model.out(fit=fit.rv.sum,data=u.sum),model.out(fit=fit.rv.sum.mle$RVM,data=u.sum),model.out(fit=fit.rv.ind.sum,data=u.sum),model.out(fit=fit.rv.ind.sum.mle$RVM,data=u.sum),model.out(fit=fit.trv.sum,data=u.sum),model.out(fit=fit.trv.sum.mle$RVM,data=u.sum),model.out(fit=fit.trv.ind.sum,data=u.sum),model.out(fit=fit.trv.ind.sum.mle$RVM,data=u.sum))row.names(out.table)<-c("R-vine-seq-all","R-vine-mle-all","R-vine-ind-seq-all",
"R-vine-ind-mle-all","R-vine-seq-t","R-vine-mle-t","R-vine-ind-seq-t","R-vine-ind-mle-t")
out.table
## loglik par AIC BIC## R-vine-seq-all 2142.09 25 -4234.17 -4098.84## R-vine-mle-all 2144.26 25 -4238.52 -4103.19## R-vine-ind-seq-all 2140.81 24 -4233.62 -4103.70## R-vine-ind-mle-all 2142.90 24 -4237.80 -4107.88## R-vine-seq-t 2137.66 28 -4219.32 -4067.74## R-vine-mle-t 2140.49 28 -4224.99 -4073.41## R-vine-ind-seq-t 2136.54 27 -4219.08 -4072.92## R-vine-ind-mle-t 2139.30 27 -4224.59 -4078.43
Comparing Gaussian vines
out.table.grv<-rbind(model.out(fit=fit.grv.sum,data=u.sum),model.out(fit=fit.grv.sum.mle$RVM,data=u.sum),model.out(fit=fit.grv.ind.sum,data=u.sum),model.out(fit=fit.grv.ind.sum.mle$RVM,data=u.sum))row.names(out.table.grv)<-c("G-vine-seq","G-vine-mle","G-vine-ind-seq","G-vine-ind-mle")out.table.grv
28
## loglik par AIC BIC## G-vine-seq 1952.74 15 -3875.48 -3794.28## G-vine-mle 1952.74 15 -3875.48 -3794.28## G-vine-ind-seq 1952.74 15 -3875.48 -3794.28## G-vine-ind-mle 1952.74 15 -3875.48 -3794.28
Comparing C-vines
out.cv.table<-rbind(model.out(fit=fit.cv.sum,data=u.sum),model.out(fit=fit.cv.sum.mle$RVM,data=u.sum),model.out(fit=fit.cv.ind.sum,data=u.sum),model.out(fit=fit.cv.ind.sum.mle$RVM,data=u.sum),model.out(fit=fit.tcv.sum,data=u.sum),model.out(fit=fit.tcv.sum.mle$RVM,data=u.sum),model.out(fit=fit.tcv.ind.sum,data=u.sum),model.out(fit=fit.tcv.ind.sum.mle$RVM,data=u.sum))row.names(out.cv.table)<-c("C-vine-seq-all","C-vine-mle-all",
"C-vine-ind-seq-all","C-vine-ind-mle-all","C-vine-seq-t","C-vine-mle-t","C-vine-ind-seq-t","C-vine-ind-mle-t")
out.cv.table
## loglik par AIC BIC## C-vine-seq-all 2156.96 24 -4265.92 -4136.00## C-vine-mle-all 2160.73 24 -4273.46 -4143.54## C-vine-ind-seq-all 2156.96 24 -4265.92 -4136.00## C-vine-ind-mle-all 2160.73 24 -4273.46 -4143.54## C-vine-seq-t 2135.58 27 -4217.16 -4071.00## C-vine-mle-t 2139.03 27 -4224.05 -4077.89## C-vine-ind-seq-t 2134.44 26 -4216.89 -4076.14## C-vine-ind-mle-t 2137.81 26 -4223.61 -4082.87
Comparing D-vines
out.dv.table<-rbind(model.out(fit=fit.dv.sum,data=u.sum),model.out(fit=fit.dv.sum.mle$RVM,data=u.sum),model.out(fit=fit.dv.ind.sum,data=u.sum),model.out(fit=fit.dv.ind.sum.mle$RVM,data=u.sum),model.out(fit=fit.tdv.sum,data=u.sum),model.out(fit=fit.tdv.sum.mle$RVM,data=u.sum),model.out(fit=fit.tdv.ind.sum,data=u.sum),model.out(fit=fit.tdv.ind.sum.mle$RVM,data=u.sum))row.names(out.dv.table)<-c("D-vine-seq-all","D-vine-mle-all",
"D-vine-ind-seq-all","D-vine-ind-mle-all","D-vine-seq-t","D-vine-mle-t", "D-vine-ind-seq-t","D-vine-ind-mle-t")
out.dv.table
## loglik par AIC BIC## D-vine-seq-all 2155.92 26 -4259.84 -4119.09## D-vine-mle-all 2159.24 26 -4266.47 -4125.73
29
## D-vine-ind-seq-all 2155.92 26 -4259.84 -4119.09## D-vine-ind-mle-all 2159.24 26 -4266.47 -4125.73## D-vine-seq-t 2125.26 29 -4192.51 -4035.53## D-vine-mle-t 2128.77 29 -4199.54 -4042.55## D-vine-ind-seq-t 2125.26 29 -4192.51 -4035.53## D-vine-ind-mle-t 2128.77 29 -4199.54 -4042.55
Table 10.6: DAX: Vuong test model comparison within each vine class usingjoint maximum likelihood estimation
Vuong tests for R-Vines
vuong.p<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value)
vuong.p.aic<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value.Akaike)
vuong.p.bic<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$p.value.Schwarz)
vuong.stat<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic)
vuong.stat.aic<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic.Akaike)
vuong.stat.bic<-c(RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.trv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.rv.ind.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.rv.sum.mle$RVM,fit.rv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.trv.sum.mle$RVM,fit.trv.ind.sum.mle$RVM)$statistic.Schwarz)
vuong.table<-round(cbind(vuong.stat,vuong.p,vuong.stat.aic,vuong.p.aic,vuong.stat.bic,vuong.p.bic),digits=2)
30
rownames(vuong.table)<-c("rv all vs t","rv ind-all vs ind-t,","rv all vs ind","rv t vs ind t")
colnames(vuong.table)<-c("stat","p.value","stat-aic","p-value","stat-bic","p-value")vuong.table
## stat p.value stat-aic p-value stat-bic p-value## rv all vs t 0.40 0.69 0.71 0.48 1.57 0.12## rv ind-all vs ind-t, 0.38 0.70 0.70 0.48 1.56 0.12## rv all vs ind 0.80 0.42 0.21 0.83 -1.38 0.17## rv t vs ind t 0.78 0.44 0.13 0.90 -1.63 0.10
Vuong tests for C-Vines
vuong.p.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value)
vuong.p.aic.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value.Akaike)
vuong.p.bic.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$p.value.Schwarz)
vuong.stat.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic)
vuong.stat.aic.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic.Akaike)
vuong.stat.bic.cv<-c(RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.tcv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.cv.ind.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.cv.sum.mle$RVM,fit.cv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.tcv.sum.mle$RVM,fit.tcv.ind.sum.mle$RVM)$statistic.Schwarz)
vuong.table.cv<-round(cbind(vuong.stat.cv,vuong.p.cv,vuong.stat.aic.cv,vuong.p.aic.cv,
31
vuong.stat.bic.cv,vuong.p.bic.cv),digits=2)rownames(vuong.table.cv)<-c("cv all vs t","cv ind-all vs ind-t,",
"cv all vs ind","cv t vs ind t")colnames(vuong.table.cv)<-c("stat","p.value","stat-aic","p-value","stat-bic","p-value")vuong.table.cv
## stat p.value stat-aic p-value stat-bic p-value## cv all vs t 2.14 0.03 2.43 0.02 3.23 0.00## cv ind-all vs ind-t, 2.22 0.03 2.41 0.02 2.94 0.00## cv all vs ind 0.00 1.00 0.00 1.00 0.00 1.00## cv t vs ind t 0.79 0.43 0.14 0.89 -1.60 0.11
Vuong tests for D-Vines
vuong.p.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$p.value,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value)
vuong.p.aic.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value.Akaike)
vuong.p.bic.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$p.value.Schwarz)
vuong.stat.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$statistic,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic)
vuong.stat.aic.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic.Akaike)
vuong.stat.bic.dv<-c(RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.tdv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.dv.ind.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.dv.sum.mle$RVM,fit.dv.ind.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum, fit.tdv.sum.mle$RVM,fit.tdv.ind.sum.mle$RVM)$statistic.Schwarz)
32
vuong.table.dv<-round(cbind(vuong.stat.dv,vuong.p.dv,vuong.stat.aic.dv,vuong.p.aic.dv,vuong.stat.bic.dv,vuong.p.bic.dv),digits=2)rownames(vuong.table.dv)<-c("dv all vs t","dv ind-all vs ind-t,",
"dv all vs ind","dv t vs ind t")colnames(vuong.table.dv)<-c("stat","p.value","stat-aic","p-value","stat-bic","p-value")vuong.table.dv
## stat p.value stat-aic p-value stat-bic p-value## dv all vs t 2.59 0.01 2.84 0 3.53 0## dv ind-all vs ind-t, 2.59 0.01 2.84 0 3.53 0## dv all vs ind 0.00 1.00 0.00 1 0.00 1## dv t vs ind t 0.00 1.00 0.00 1 0.00 1
Table 10.7: DAX: Vuong test model comparison between each vine class usingjoint maximum likelihood estimation allowing for all implemented pair copulafamilies and without the independence test (2.8)
vuong.p<-c(RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$p.value)
vuong.p.aic<-c(RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value.Akaike,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$p.value.Akaike)
vuong.p.bic<-c(RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$p.value.Schwarz,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$p.value.Schwarz)
vuong.stat<-c(RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$statistic)
vuong.stat.aic<-c(RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic.Akaike,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$statistic.Akaike)
vuong.stat.bic<-c(
33
RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.cv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum,fit.cv.sum.mle$RVM,fit.dv.sum.mle$RVM)$statistic.Schwarz,RVineVuongTest(u.sum,fit.rv.sum.mle$RVM,fit.grv.sum.mle$RVM)$statistic.Schwarz)
vuong.table.rcdv<-round(cbind(vuong.stat,vuong.p,vuong.stat.aic,vuong.p.aic,vuong.stat.bic, vuong.p.bic),digits=2)rownames(vuong.table.rcdv)<-c("rv all vs dv all","rv all vs cv all",
"cv all vs dv all", "rv all vs gv")colnames(vuong.table.rcdv)<-c("stat","p.value","stat-aic","p-value",
"stat-bic","p-value")vuong.table.rcdv
## stat p.value stat-aic p-value stat-bic p-value## rv all vs dv all -1.44 0.15 -1.53 0.13 -1.77 0.08## rv all vs cv all -1.21 0.23 -1.13 0.26 -0.91 0.36## cv all vs dv all 0.13 0.89 0.31 0.75 0.80 0.42## rv all vs gv 6.70 0.00 6.35 0.00 5.40 0.00
34