Granger Vs Phillip Ouliaris Test
1)grangertest : How many pairs show cointegration from the 313 pairs ?
> library(lmtest)
> sector.tests <- samesector
> npairs <- dim(samesector)[1]
> pair <- 1
> counter <- 0
> for (pair in 1:npairs) {
+ a <- sector.tests[pair, "tickeri"]
+ b <- sector.tests[pair, "tickerj"]
+ y1 <- (security.db1[, a])
+ x1 <- (security.db1[, b])
+ p1 <- (grangertest(y1 ~ x1, order = 1))[2, 4]
+ p2 <- (grangertest(x1 ~ y1, order = 1))[2, 4]
+ if (min(p1, p2) < 0.1) {
+ counter <- counter + 1
+ }
+ }
> print(paste(counter, "Using lmtest"))
[1] "122 Using lmtest" |
There are about 122 pairs showing granger causality. ''
2)po.test (x←y): How many pairs show cointegration from the 313 pairs ?
> library(tseries)
> sector.tests <- samesector
> npairs <- dim(samesector)[1]
> pair <- 1
> counter <- 0
> for (pair in 1:npairs) {
+ a <- sector.tests[pair, "tickeri"]
+ b <- sector.tests[pair, "tickerj"]
+ y1 <- (security.db1[, a])
+ x1 <- (security.db1[, b])
+ z <- cbind(y1, x1)
+ teststat <- (po.test(z))$p.value
+ if (teststat < 0.1) {
+ print(teststat)
+ counter <- counter + 1
+ }
+ }
> print(paste(counter, "Using po.test"))
[1] "66 Using po.test" |
There are about 66 pairs showing cointegration using x←y ''
3)po.test (y←x): How many pairs show cointegration from the 313 pairs ?
> library(tseries)
> sector.tests <- samesector
> npairs <- dim(samesector)[1]
> pair <- 1
> counter <- 0
> for (pair in 1:npairs) {
+ a <- sector.tests[pair, "tickeri"]
+ b <- sector.tests[pair, "tickerj"]
+ y1 <- (security.db1[, a])
+ x1 <- (security.db1[, b])
+ z <- cbind(x1, y1)
+ teststat <- (po.test(z))$p.value
+ if (teststat < 0.1) {
+ print(teststat)
+ counter <- counter + 1
+ }
+ }
> print(paste(counter, "Using po.test"))
[1] "69 Using po.test" |
There are about 69 pairs showing cointegration using y←x ''
4)po.test (y←x and x←y): How many pairs show cointegration from the 313 pairs ?
> library(tseries)
> sector.tests <- samesector
> npairs <- dim(samesector)[1]
> pair <- 1
> counter <- 0
> x <- matrix(data = 999, nrow = npairs, ncol = 3)
> for (pair in 1:npairs) {
+ a <- sector.tests[pair, "tickeri"]
+ b <- sector.tests[pair, "tickerj"]
+ y1 <- (security.db1[, a])
+ x1 <- (security.db1[, b])
+ z <- cbind(x1, y1)
+ teststat1 <- (po.test(z))$p.value
+ z <- cbind(y1, x1)
+ teststat2 <- (po.test(z))$p.value
+ if (teststat1 < 0.1)
+ x[pair, 1] <- 1
+ if (teststat2 < 0.1)
+ x[pair, 2] <- 1
+ if (teststat1 < 0.1 & teststat2 < 0.1)
+ x[pair, 3] <- 1
+ }
> table(x[, 1], x[, 2])
1 999
1 47 22
999 19 223 |
Populate grangertest against each pair
> sector.tests <- samesector
> npairs <- dim(samesector)[1]
> pair <- 1
> counter <- 0
> sector.tests$po.stat1 <- 999
> sector.tests$po.stat2 <- 999
> sector.tests$egtest.1 <- 999
> sector.tests$egtest.2 <- 999
> for (pair in 1:npairs) {
+ print(pair)
+ a <- sector.tests[pair, "tickeri"]
+ b <- sector.tests[pair, "tickerj"]
+ y1 <- (security.db1[, a])
+ x1 <- (security.db1[, b])
+ z <- cbind(y1, x1)
+ p <- (po.test(z))$p.value
+ sector.tests$po.stat1[pair] <- p
+ z <- cbind(x1, y1)
+ p <- (po.test(z))$p.value
+ sector.tests$po.stat2[pair] <- p
+ p <- (grangertest(y1 ~ x1, order = 1))[2, 4]
+ sector.tests$egtest.1[pair] <- p
+ p <- (grangertest(x1 ~ y1, order = 1))[2, 4]
+ sector.tests$egtest.2[pair] <- p
+ }
> sector.tests$po.stat.min <- pmin(sector.tests$po.stat1, sector.tests$po.stat2)
> sector.tests$egtest.min <- pmin(sector.tests$egtest.1, sector.tests$egtest.2)
> sector.tests$po.stat1.st <- 0
> sector.tests$po.stat2.st <- 0
> sector.tests$egtest.1.st <- 0
> sector.tests$egtest.2.st <- 0
> sector.tests$po.stat1.st <- ifelse(sector.tests$po.stat1 < 0.1,
+ 1, 0)
> sector.tests$po.stat2.st <- ifelse(sector.tests$po.stat2 < 0.1,
+ 1, 0)
> sector.tests$egtest.1.st <- ifelse(sector.tests$egtest.1 < 0.1,
+ 1, 0)
> sector.tests$egtest.2.st <- ifelse(sector.tests$egtest.2 < 0.1,
+ 1, 0)
> sector.tests$postat.min.st <- ifelse(sector.tests$po.stat.min <
+ 0.1, 1, 0)
> sector.tests$egtests.min.st <- ifelse(sector.tests$egtest.min <
+ 0.1, 1, 0) |
> temp <- data.frame(x = 1:311, stat1 = sector.tests$po.stat1.st, + stat2 = sector.tests$po.stat2.st, stat3 = sector.tests$egtest.1.st, + stat4 = sector.tests$egtest.2.st, pomin = sector.tests$postat.min.st, + egmin = sector.tests$egtests.min.st) |
> temp1 <- temp[temp$stat2 == 1 & temp$stat1 == 0, ] > table(temp1$egmin) 0 1 10 12 |
Out of 22 pairs which pass po test1 ONLY , 12 pass grangertest
> temp1 <- temp[temp$stat2 == 0 & temp$stat1 == 1, ] > table(temp1$egmin) 0 1 12 7 |
Out of 19 pairs which pass po test2 ONLY, 7 pass grangertest
> temp1 <- temp[temp$stat2 == 1 & temp$stat1 == 1, ] > table(temp1$egmin) 0 1 10 37 |
Out of 41 pairs which pass po test1 & potest 2 , 37 pass grangertest
> table(temp$pomin, temp$egmin)
0 1
0 157 66
1 32 56 |
Cross tab of Phillip Oularis test and Engle granger test