Я пытаюсь использовать rollapply()
, используя скользящее окно шириной 12 с недавно созданной функцией STABFUN
(мультиколонка).Используемые данные - это набор данных timeSeries (индекс S & P 500 возвращает = SPY).Хотя вновь созданная функция, кажется, работает хорошо, когда я применяю rollapply()
, я получаю случайные NaN
значения в столбце "pmean".
Вопрос 1: Почему это происходити как я могу решить проблему?
Вопрос 2: Есть ли лучший / более эффективный способ его кодирования?
Вот мой код:
library("quantmod")
library("timeSeries")
data <- na.omit(as.timeSeries(getSymbols("SPY", src = "yahoo")))
returns <- returns(daily2monthly(data[,6]), method = "continuous") # quantifies "continuous" returns
STABFUN <- function(x){
bcp.x <- bcp(x) # applies the function bcp() to the data
rtrn <- x[length(x)] # last return value of data
pmean <- bcp.x$posterior.mean[length(x)] # last posterior mean value
output <- cbind(rtrn, pmean)
return(output)
}
# STABFUN(returns) # check that STABFUN works well
rollapply(returns, width = 12, STABFUN, by.column = FALSE) # -> I GET NAN VALUES
Я также понял, что если я использую ширину> 12, я больше не получаю значения NAN.