Цикл ADF Cointegration PValue на нескольких временных рядах
У меня есть данные о ценах на акции в следующем формате, и я пытаюсь проверить все возможные перестановки для коинтегрированных спредов.
Мой текущий формат данных:
AAPL GOOG IBM… 415,89 898,39 191,76 … 414,15 899,45 187,55 … 417,27 895,62 190,99 …
Я хотел бы использовать R для вычисления значения P коинтеграции (используя ADF/Johansen или что-либо еще) для всех перестановок временных рядов тикера 'и отображать вывод с парами, ранжированными по P-значению.
Например:
Пара: P-значение: AAPL - GOOG .0196 - Коинтегрированный IBM - GOOG .0477 - Коинтегрированный AAPL - IBM .0679 - Не коинтегрированный
Я думаю, что это довольно простой цикл, но я не уверен на 100%, как это сделать.
Вот фрагмент кода, который может помочь:
library(tseries)
cointegration<-function(x,y)
{
vals<-data.frame(x,y)
beta<-coef(lm(vals[,2]~vals[,1]+0,data=vals))[1]
(adf.test(vals[,2]-beta*vals[,1], alternative="stationary", k=0))$p.value
}