2017-01-03 95 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 
相關問題