Значение 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, и я знаю, получить мою ошибку. В моей колонке было несколько АН для возвратов, и поэтому это произошло.