string[] v1 = sec1bars.Select(r => r.dt.ToString("yyyyMMdd")).ToArray();
string[] v2 = sec2bars.Select(r => r.dt.ToString("yyyyMMdd")).ToArray();
CharacterVector sec1dates = mEngine.CreateCharacterVector(v1);
NumericVector sec1prices = mEngine.CreateNumericVector(sec1bars.Select(r => (double)r.adjc));
CharacterVector sec2dates = mEngine.CreateCharacterVector(v2);
NumericVector sec2prices = mEngine.CreateNumericVector(sec2bars.Select(r => (double)r.adjc));
mEngine.SetSymbol("sec1dates", sec1dates);
mEngine.SetSymbol("sec1prices", sec1prices);
mEngine.SetSymbol("sec2dates", sec2dates);
mEngine.SetSymbol("sec2prices", sec2prices);
mEngine.Evaluate("sec1zoo <- zoo(sec1prices, as.Date(as.character(sec1dates), format=\"%Y%m%d\"))");
mEngine.Evaluate("sec2zoo <- zoo(sec2prices, as.Date(as.character(sec2dates), format=\"%Y%m%d\"))");
mEngine.Evaluate("t.zoo <- merge(sec1zoo, sec2zoo, all=FALSE)");
mEngine.Evaluate("t <- as.data.frame(t.zoo)");
mEngine.Evaluate("m <- lm(sec1zoo ~ sec2zoo + 0, data=t)");
mEngine.Evaluate("beta <- coef(m)[1]");
mEngine.Evaluate("sprd <- t$sec1zoo - beta*t$sec2zoo");
mEngine.Evaluate("ht <- adf.test(sprd, alternative=\"stationary\", k=0)");
mEngine.Evaluate("pvalue <- ht$p.value");
DynamicVector beta = mEngine.GetSymbol("beta").AsVector();
DynamicVector pvalue = mEngine.GetSymbol("pvalue").AsVector();
After that, you end up with your beta and pvalue for your pair.
No comments:
Post a Comment