我打算建立一个代码来检查两个时间序列的金融价格数据的协整,以便更好地预测其中一个。
为此,我选择了这两个时间序列:BBVA历史价格和IBEX35并构建这个小代码:
ibex <- new.env()
bbva <- new.env()
library(quantmod)
getSymbols("^IBEX", env = ibex, src = "yahoo", from = as.Date("2010-01-04"), to = as.Date("2015-11-30"))
getSymbols("bbva", env = bbva, src = "yahoo", from = as.Date("2010-01-04"), to = as.Date("2015-11-30"))
ibex <- ibex$IBEX
ibex <- ibex$IBEX.Adjusted
bbva <- bbva$BBVA
bbva <- bbva$BBVA.Adjusted
ldbbva <- diff(log(bbva))
ldibex <- diff(log(ibex))
mean <- mean(ldbbva, na.rm = TRUE)
ldbbva[is.na(ldbbva)] <- mean
mean <- mean(ldibex, na.rm = TRUE)
ldbbva[is.na(ldibex)] <- mean
library(urca)
jotest=ca.jo(data.frame(ldbbva,ldibex), type="trace", K=2, ecdet="none", spec="longrun")
当我尝试从我的时间序列中创建一个数据框时,我面临这个错误参数暗示不同的行数:1488,1514 。
我该怎么办?
答案 0 :(得分:3)
您需要加入时间序列才能正确对齐。
dat <- merge(ibex, bbva)
dat <- diff(log(dat))
#mean imputation
dat <- na.aggregate(dat)
library(urca)
jotest=ca.jo(dat, type="trace", K=2, ecdet="none", spec="longrun")
######################################################
## Johansen-Procedure Unit Root / Cointegration Test #
######################################################
#
#The value of the test statistic is: 619.1603 1473.644