Concordance Discordance
Purpose
Use Concordance and Discordance to check for any meaning correlation between NIFTY , Gold and Liquid
> start.date <- "2003-01-01" > end.date <- "2009-08-28" > library(corpcor) > library(mnormt) > library(fields) > library(fPortfolio) > library(fPortfolioBacktest) > library(PerformanceAnalytics) > library(xts) > annualized.returns <- function(x) { + n <- length(x) + (x[n] - x[1])/x[1] + } > nifty.data <- read.csv("C:/Cauldron/Benchmark/PMS/Product/MF/nifty_mar_12.csv", + stringsAsFactors = FALSE, header = T) > nifty.data$trade.date <- as.Date(nifty.data$Date, format = "%d-%m-%Y") > gold.data <- read.csv("C:/Cauldron/Benchmark/PMS/Product/MF/gold_mar_10.csv", + stringsAsFactors = FALSE, header = T) > gold.data$trade.date <- as.Date(gold.data$Date, format = "%d-%m-%Y") > liquid.data <- read.csv("C:/Cauldron/Benchmark/PMS/Product/MF/liquid_april_22.csv", + stringsAsFactors = FALSE, header = T) > liquid.data$trade.date <- as.Date(liquid.data$Date, format = "%d-%m-%Y") > nifty.data$nifty.100 <- as.numeric(nifty.data$nifty.100) > gold.data$gold <- as.numeric(gold.data$gold) > liquid.data$liquid <- as.numeric(liquid.data$liquid) > nifty.ts <- as.timeSeries(nifty.data$nifty.100, timeDate(nifty.data$trade.date)) > rownames(nifty.ts) <- nifty.data$trade.date > colnames(nifty.ts) <- "nifty.100" > gold.ts <- as.timeSeries(gold.data$gold, timeDate(gold.data$trade.date)) > rownames(gold.ts) <- gold.data$trade.date > colnames(gold.ts) <- "gold" > liquid.ts <- as.timeSeries(liquid.data$liquid, timeDate(liquid.data$trade.date)) > rownames(liquid.ts) <- liquid.data$trade.date > colnames(liquid.ts) <- "liquid" > rawdata <- merge(nifty.ts, gold.ts) > rawdata <- na.locf(rawdata) > workdata <- window(rawdata, start = start.date, end = end.date) > dates <- as.Date(rownames(workdata)) > workdata.xts <- xts(workdata[, 1:2], dates) > workdata.ret.roll.y <- cbind(rollapply(workdata.xts[, 1], width = 252, annualized.returns, + align = "right"), rollapply(workdata.xts[, 2], width = 252, annualized.returns, + align = "right")) > colnames(workdata.ret.roll.y) <- c("Nifty100Ret", "GoldRet") > workdata.ret.master <- workdata.ret.roll.y > workdata.ret.master <- as.timeSeries(coredata(workdata.ret.master), timeDate(as.Date(index(workdata.ret.master)))) > dates.liquid <- as.Date(rownames(liquid.ts)) > liquiddata.xts <- xts(liquid.ts[, 1], dates.liquid) > liquiddata.ret.roll.y <- rollapply(liquiddata.xts[, 1], width = 300, annualized.returns, + align = "right") > colnames(liquiddata.ret.roll.y) <- c("Liquid") > liqworkdata.ret.master <- liquiddata.ret.roll.y > liqworkdata.ret.master <- as.timeSeries(coredata(liqworkdata.ret.master), timeDate(as.Date(index(liqworkdata.ret.master)))) > all.master <- merge(workdata.ret.master, liqworkdata.ret.master) > all.master <- window(all.master, start = start.date, end = end.date) > all.master <- all.master[(!is.na(all.master[, 1])), ] > all.master <- all.master[(!is.na(all.master[, 2])), ] > all.master <- all.master[(!is.na(all.master[, 3])), ] > plot(all.master[, 1], ylim = c(-0.6, 1.2), col = "blue", ylab = "Return", lwd = 1.5) > par(new = T) > plot(all.master[, 2], ylim = c(-0.6, 1.2), col = "sienna", ylab = "", lwd = 1.5) > par(new = T) > plot(all.master[, 3], ylim = c(-0.6, 1.2), col = "green", ylab = "", lwd = 1.5) > legend("topright", legend = c("NIFTY 100", "Gold", "Liquid"), fill = c("blue", + "sienna", "green")) |
Plain simple correlation
> cor(all.master) Nifty100Ret GoldRet Liquid Nifty100Ret 1.0000 -0.1321 -0.4214 GoldRet -0.1321 1.0000 0.2406 Liquid -0.4214 0.2406 1.0000 |
Test of Independence using Kendall’s metric
> n <- dim(all.master)[1] > sqrt(9 * n/4) * abs(cor(coredata(all.master), method = "kendall")) Nifty100Ret GoldRet Liquid Nifty100Ret 57.00 5.980 11.287 GoldRet 5.98 57.000 6.955 Liquid 11.29 6.955 57.000 |
All pairs are dependent as each value is greater than 1.96
Test of Independence using Spearman metric
> n <- dim(all.master)[1] > sqrt(n) * abs(cor(coredata(all.master), method = "spearman")) Nifty100Ret GoldRet Liquid Nifty100Ret 38.000 6.213 10.741 GoldRet 6.213 38.000 8.687 Liquid 10.741 8.687 38.000 |
All pairs are dependent as each value is greater than 1.96