r-code for chapter 10: case study: dependence among german ... · r-code for chapter 10: case...

Post on 20-Oct-2019

23 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related