[R-SIG-Finance] Independence test rugarch package

philippe philippe.kappeler at hotmail.com
Fri Apr 25 21:36:57 CEST 2014


Dear contributors, dear alexhios

I am trying to get the log-likelihood ratio values of the independence test
of christopherson (1988). I identified the problem when I received -Inf for
the uncond. coverage test due to too small number and in the end the log of
zero  and thus, wanted to run the independence test solely. I have the CHF
which is in the following file
https://drive.google.com/folderview?id=0BwSzkfw3xUH3REsxRHprZEU1R00&usp=sharing 

I built a parametric VaR model with the normal distributions at 4 confidence
levels. The problem arose with the following code of your package below 

I checked your code an fully agree with your computation, however I do not
know why the T01 and T10 values are both zero and the T11 value is equal to
N -> the which() function below in the code clearly indicates that there are
definitely not 163 "ones" in VaR.ind followed by "ones"! However, I can't
find the error in your code or the difference to the one of my slightly
adapted to compute 4 p-values at a time!

In advance, thanks for your support and a nice weekend! Best, 
philippe 

############
library(rugarch)
ret <- CHF
seq <- 2000 #alternatively 500, 1000, 1500

#Normal Distribution VaR
VaRdistn <- function(ret, prob=.05) {
  ans <- -qnorm(prob, mean=0, sd=sd(ret)) 
  signif(ans, digits=7)
}

### VaR 
fun <- VaRdistn
p <- c(0.05, 0.01, 0.005, 0.001) # confidence values for VaR
act <- ret[(seq+1):length(ret)] # actual return
VaRmatrix <- matrix(nrow=length(ret)-seq, ncol=length(p))
for (i in 1:nrow(VaRmatrix) ) {
  VaRmatrix[i,]<-  sapply(X=p, FUN=VaRdistn,ret=ret[i:(seq+i-1)] )
  colnames(VaRmatrix) <- c("0.05", "0.01", "0.005", "0.001")
}

#### RUGARCH package (getAnywhere(.LR.cc))
VaR <- -VaRmatrix[,2]
p <- 0.01

VaR.ind = ifelse(act < VaR, 1, 0)
N = sum(VaR.ind)
TN = length(VaR.ind)
T00 = sum(c(0, ifelse(VaR.ind[2:TN] == 0 & VaR.ind[1:(TN-1)] == 0, 1, 0)))
T11 = sum(c(0, ifelse(VaR.ind[2:TN] == 1 & VaR.ind[1:(TN-1)] == 1, 1, 0)))
T01 = sum(c(0, ifelse(VaR.ind[2:TN] == 1 & VaR.ind[1:(TN-1)] == 0, 1, 0)))
T10 = sum(c(0, ifelse(VaR.ind[2:TN] == 0 & VaR.ind[1:(TN-1)] == 1, 1, 0)))
T0 = T00 + T01
T1 = T10 + T11
pi0 = T01/T0
pi1 = T11/T1
pe = (T01 + T11)/(T0 + T1)
stat.ind = -2 * log((1 - pe)^(T00 + T10) * pe^(T01 + T11)) + 
  2 * log((1 - pi0)^T00 * pi0^T01 * (1 - pi1)^T10 * pi1^T11)
stat.ind
which(VaR.ind == 1)

##### my code
conf <- 0.95 
p <- c(0.05, 0.01, 0.005, 0.001)
#fill vectors
uc.LR <- cc.LR <- numeric(length(p))
uc.pval <- cc.pval <- numeric(length(p))
uc.statement <- cc.statement <- numeric(length(p))
ind.LR <- ind.pval <- numeric(length(p))
VaR.ind <- matrix(nrow=length(ret)-seq, ncol=length(p))
N <- TN <- T00 <- T11 <- T01 <- T10 <- T0 <- T1 <- pi0 <- pi1 <- pe <-
numeric(length(p))
for(i in 1:length(p)){
  uc.LR[i] <- VaRTest(alpha = p[i], act, -VaRmatrix[,i], conf.level =
conf)$uc.LRstat
  uc.pval[i] <- VaRTest(alpha = p[i], act, -VaRmatrix[,i], conf.level =
conf)$uc.LRp
  VaR.ind[,i] = ifelse(act < -VaRmatrix[,i], 1, 0)
  N[i] = sum(VaR.ind[,i])
  TN[i] = length(VaR.ind[,i])
  T00[i] = sum(c(0, ifelse(VaR.ind[,i][2:TN[i]] == 0 & VaR.ind[,i][1:(TN[i]
- 1)] == 0, 1, 0)))
  T11[i] = sum(c(0, ifelse(VaR.ind[,i][2:TN[i]] == 1 & VaR.ind[,i][1:(TN[i]
- 1)] == 1, 1, 0)))
  T01[i] = sum(c(0, ifelse(VaR.ind[,i][2:TN[i]] == 1 & VaR.ind[,i][1:(TN[i]
- 1)] == 0, 1, 0)))
  T10[i] = sum(c(0, ifelse(VaR.ind[,i][2:TN[i]] == 0 & VaR.ind[,i][1:(TN[i]
- 1)] == 1, 1, 0)))
  T0[i] = T00[i] + T01[i]
  T1[i] = T10[i] + T11[i]
  pi0[i] = T01[i]/T0[i]
  pi1[i] = T11[i]/T1[i]
  pe[i] = (T01[i] + T11[i])/(T0[i] + T1[i])
  ind.LR[i] = -2 * log((1 - pe[i])^(T00[i] + T10[i]) * pe[i]^(T01[i] +
T11[i])) + 
    2 * log((1 - pi0[i])^T00[i] * pi0[i]^T01[i] * (1 - pi1[i])^T10[i] *
pi1[i]^T11[i])
  ind.pval[i] <- 1 - pchisq(ind.LR[i], df = 1)
  cc.LR[i] <- VaRTest(alpha = p[i], act, -VaRmatrix[,i], conf.level =
conf)$cc.LRstat
  cc.pval[i] <- VaRTest(alpha = p[i], act, -VaRmatrix[,i], conf.level =
conf)$cc.LRp
}
ind.LR



--
View this message in context: http://r.789695.n4.nabble.com/Independence-test-rugarch-package-tp4689473.html
Sent from the Rmetrics mailing list archive at Nabble.com.



More information about the R-SIG-Finance mailing list