時間序列

估計 Carma(2,1) 參數(使用 yuima 包)

  • December 8, 2015

我對 R 非常陌生,尤其是對yuima軟體包來說,所以我希望有人能夠幫助我。

我有一些數據(每日價格)希望通過估計參數來擬合 Carma(2,1) 模型。

假設我有

d <- read.csv("http://chart.yahoo.com/table.csv?s=IBM&g=d&x=.csv")

然後我認為我應該做的是

y <- setYuima(data = setData(d$Close), model = setCarma(2,1))
x <- qmle(y, start = list(a1 = 1, a2 = 1, b0 = 1))

(但有一些其他參數)。

但是,當我這樣做時,我在第一 ( y <- ...) 行中收到以下錯誤:

Error in if (dim(data@original.data)[2] == 1) { : 
 argument is of length zero

我不知道為什麼會這樣,以及setYuima函式期望什麼。誰能告訴我該怎麼做?

這只是你如何將時間序列傳遞給yuima的問題。

還有一件事,如果您想估計由布朗運動驅動的 CARMA,最好使用對數價格而不是價格。實際上,在所考慮的模型中,我們將非零機率分配給過程的負值。

試試下面的程式碼

require(yuima)
library(xts)
d <- read.csv("http://chart.yahoo.com/table.csv?s=IBM&g=d&x=.csv")
head(d)
tail(d) # data are reversed !!! take care, you need to handle data
ibm <- xts(d$Close, order.by=as.Date(d$Date, "%Y-%m-%d")) # this is too long
ibm <- ibm[time(ibm)>=as.Date("2007-01-03","%Y-%m-%d"),] # cut as above
# delta is very important in estimation set always to 1/252 for daily data
mydata3 <- setData(log(ibm)-rep(log(ibm[1]), dim(ibm)[1]),delta=1/252)
y3 <- setYuima(data = mydata3, model = setCarma(2,1))
x3 <- qmle(y3, start = list(a1 = 0.1, a2 = 0.1, b0 = 0.1,b1=0.1))
coef(x3)

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