2017-01-03 91 views
0

我打算构建一个代码来检查两个时间序列的金融价格数据的协整,以更好地预测其中的一个。R:参数意味着使用财务数据的行数不同

为此,我选择了这两个时间序列: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

我该怎么办?

+2

错误信息的哪一部分不清楚? – Roland

+1

您可能需要了解*为什么这两列的长度不同。我的猜测(这只是一个猜测),因为西班牙连续市场比其他市场更加频繁地关闭,而且您缺乏关闭日期的数据,所以'^ IBEX'更小。如果这是问题,则可能需要在适当的日子里用'NA'扩展它。无论如何 - 看看数据本身,看看哪里出现差异。你能理解这种差异吗? –

+1

你应该真的命名一些东西,并选择'ibex'和'bbva'应该是'environments'还是'vectors',你将它们用作两者,因此可能会覆盖值。 (以'ibex <-'开头的两行只是覆盖全局环境中的ibex变量)。尝试使用'ibexenv'和'ibexvec'来清楚什么是什么。 (然后,对于错误消息,只需从'ca.jo'中构建'data.frame',你可能会更好,为什么它会失败。 – Tensibai

回答

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 
相关问题