Mark,

I would suggest thinking about correlation between the returns.  For
example, using daily data for SPY, DJI, QQQQ, I see the correlation in the
returns using the following calls:

> library(quantmod)

> getSymbols(c('SPY','^DJI','QQQQ'))

[1] "SPY" "DJI" "QQQQ"

> x1 <- log(as.vector(as.matrix(SPY)[,4])/(as.vector(as.matrix(SPY)[,1])))

> x2 <- log(as.vector(as.matrix(QQQQ)[,4])/(as.vector(as.matrix(QQQQ)[,1])))


> x3 <- log(as.vector(as.matrix(DJI)[,4])/(as.vector(as.matrix(DJI)[,1])))

> data <- cbind(x1,x2,x3)

> cor(data)

x1 x2 x3

x1 1.0000000 0.9067068 0.8284568

x2 0.9067068 1.0000000 0.7556838

x3 0.8284568 0.7556838 1.0000000

In this example I just used log(close/open) as the one-period return.

So, if you want to see if your systems are correlated, I would suggest
defining the systems' return series by multiplying the one period returns
with the position indicated by the system.

I generated a random 'system' as a sequence of -1, 0, and 1 values as an
example:

> z1 <- rnorm(length(x1))

> z2 <- rnorm(length(x2))

> z3 <- rnorm(length(x3))

> s1 <- ifelse(z1>1,1,0)-ifelse(z1<-1,1,0)

> s2 <- ifelse(z2>1,1,0)-ifelse(z2<-1,1,0)

> s3 <- ifelse(z3>1,1,0)-ifelse(z3<-1,1,0)

> signal <- cbind(s1,s2,s3)

 > cor(data*signal)

x1 x2 x3

x1 1.0000000 0.7682398 0.6788077

x2 0.7682398 1.0000000 0.6088950

x3 0.6788077 0.6088950 1.0000000

As you can see, even if you were just randomly buying and selling these
contracts at odd times, but most of the time had no position (68% of the
time in my example), then the systems will still be very strongly
correlated. Since you are trying to find comparatively lower correlation
between market/system pairs, I think this would be as fine a measure as
any.  Just look for the smallest entries in your correlation matrix.


Hope this helps,
-David

	[[alternative HTML version deleted]]

