時間序列

如何在 R 中使用超過 2 個價格序列建構協整向量?

  • March 27, 2016

我現在使用來自 hier 的這段程式碼為什麼以下數據無法通過我的協整測試?稍微修改一下直接從 Dropbox 文件儲存載入某些內容的可能性。

library(RCurl)
library(zoo)
library(tseries)

x <- getURL("https://dl.dropboxusercontent.com/u/12337149/stat/CBA.csv")
y <- read.csv(text = x)

x1 <- getURL("https://dl.dropboxusercontent.com/u/12337149/stat/WBC.csv")
y1 <- read.csv(text = x1)



##gld <- read.csv("CBA.csv", stringsAsFactors=F)
##gdx <- read.csv("GDX.csv", stringsAsFactors=F)

gld <- y
gdx <- y1

gld <- zoo(gld[,5], as.Date(gld[,1]))
gdx <- zoo(gdx[,5], as.Date(gdx[,1]))

t.zoo <- merge(gld, gdx, all=FALSE)
t <- as.data.frame(t.zoo)

cat("Date range is", format(start(t.zoo)), "to", format(end(t.zoo)), "\n")

m <- lm(gld ~ gdx + 0, data=t)
beta <- coef(m)[1]

cat("Assumed hedge ratio is", beta, "\n")

sprd <- t$gld - beta*t$gdx
ht <- adf.test(sprd, alternative="stationary", k=0)

cat("ADF p-value is", ht$p.value, "\n")

if (ht$p.value < 0.05) {
   cat("The spread is likely mean-reverting\n")
} else {
   cat("The spread is not mean-reverting.\n")
}

如何在 R 中使用超過 2 個價格序列建構協整向量?

使用包“vars”函式ca.jo進行多變數時間序列的協整分析(Johansen 過程)。以下是函式幫助文件中的程式碼片段:

data(denmark)
sjd <- denmark[, c("LRM", "LRY", "IBO", "IDE")]
sjd.vecm <- ca.jo(sjd, ecdet = "const", type="eigen", K=2, spec="longrun",
season=4)
summary(sjd.vecm)

它載入數據集denmark,將四個時間序列提取到矩陣sjd中,通過函式執行 Johansen 過程ca.jo並列印其摘要。

您可以通過like定址槽來提取協整向量。這將是一個矩陣,其中每一列都是一個協整向量。您可以將原始多元序列(如)與矩陣相乘以獲得糾錯項。V``@V``sjd.vecm@V``sjd``V

一個很好的介紹是“vars”包的“vignette”和 Pfaff“Analysis of Integrated and Cointegrated Time Series with R”(一本教科書)。

引用自:https://quant.stackexchange.com/questions/18756