Значение NA в видах портфеля

В настоящее время я делаю сортировку портфелей на панельных данных, то есть каждый месяц я формирую 5 портфелей на основе волатильности акций. У меня есть следующая функция:

arguments are
x: a vector of returns 
P: the number of portfolios we want
sortPort <- function(x, P=5) {
# determine the breakpoints of the sorting variable
b <- quantile(x, 0:P/P, na.rm=TRUE)
  # assign a portfolio-number to each stock-observation in a particular month
p <- cut(x, breaks=b, labels=FALSE, include.lowest=TRUE, right=FALSE)
# return the portfolio-number and add a "p" in front
return(paste0("p",p))
}

После формирования портфелей я рассчитываю среднюю доходность каждый месяц.

apply sortPort function to each month (by=mdate) separately
using the ivol as a sorting variable
only use months, where ivol is not missing (!is.na)
#d[!is.na(IVOL_t1),ivolport:=sortPort(IVOL_t1),by=mdate]

# calculate (equal weighted) portfolio returns for each of the 5 portfolios in           each month
ivolret.long <-     d[!is.na(IVOL_t1),list(port.return=mean(ret)),keyby=list(ivolport,mdate)]

convert from long to wide format
ivolret.wide <- dcast.data.table(ivolret.long, formula="mdate~ivolport", value.var="port.return")

Моя проблема сейчас в том, что у меня есть значения NA в ivolret.wide, выглядящие так

mdate p1 p2 p3 p4 p5
1      1  2  3  4  5
2      1  2  3  4  5
3      NA  2  NA  4  5
4      1  NA  3  NA  5

Как это вообще возможно? Только когда все запасы в ведре за время 3 будут иметь возврат 0, верно? Есть ли способ проверить это?

Я надеюсь, вы понимаете мой вопрос!

1 ответ

Кривая обучения крутая в R, и я знаю, получить мою ошибку. В моей колонке было несколько АН для возвратов, и поэтому это произошло.

Другие вопросы по тегам