apply.rolling
- это обертка вокруг rollapply
. По какой-то причине apply.rolling
не работает правильно с вашими данными, но использование rollapply решит проблему.
используя rollapply
Я могу приблизиться к вашему результату, но с помощью. Но в том, что Return.annualized удаляет значения NA, но продолжает вычислять. Вы можете видеть, что это происходит с Manager1 и Manager5. Это не потому что rollapply, а из-за Return.annualized
. Например, Return.annualized(my_data$Manager5[1:12])
возвращает годовой доход 0,2207884.
ra <- rollapply(my_data, width = 12, FUN = Return.annualized, fill = 0)
Manager1 Manager2 Manager3 Manager4 Manager5
2016-04-30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-05-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-06-30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-07-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-08-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-09-30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-10-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-11-30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2016-12-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2017-01-31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2017-02-28 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
2017-03-31 0.1219792 0.2129644 0.1763173 0.2139328 0.2207884
2017-04-30 0.1757241 0.2719969 0.2041620 0.2612121 0.2409790
2017-05-31 0.1619013 0.2416378 0.2041830 0.2408976 0.2406184
2017-06-30 0.1769613 0.2203309 0.1748124 0.2157461 0.1982881
2017-07-31 0.1682027 0.2143810 0.1507288 0.2076065 0.2001888
2017-08-31 0.1368823 0.1865293 0.1911248 0.1855009 0.1740542
2017-09-30 0.1676742 0.2076500 0.2053374 0.1893192 0.1677987
Теперь вы можете сделать что-то вроде ra * !is.na(my_data)
, которое умножит ra
на 0 в случае NA и удалит последние 4 записи Manager1. Но это не поможет с Manager5.
данные:
my_data <- structure(c(0.0152, 0.0462, 7e-04, 0.02, 0.0339, -0.0071, -0.0224,
-0.0439, -0.0051, 0.0083, 0.0211, 0.053, 0.06383, 0.0339, NA,
NA, NA, NA, 0.01007, 0.051524, 0.012683, 0.015881, 0.053198,
0.004754, -0.018193, -0.01316, 0.020013, 0.014656, -0.006712,
0.053219, 0.059228, 0.026427, -0.004695, 0.010928, 0.029043,
0.022639, 0.010221, 0.028749, 0.015641, 0.023954, 0.002117, -0.008808,
0.018141, -0.024303, 0.020421, 0.0247, 0.025753, 0.028395, 0.034134,
0.028767, -0.009131, 0.002963, 0.037296, 0.003019, 0.004616,
0.037492, 0.013082, 0.021495, 0.047616, 0.003154, -0.004828,
-0.006465, 0.016074, 0.020341, 0.002994, 0.041619, 0.043743,
0.020781, -0.007452, 0.014656, 0.028439, 0.006385, NA, NA, NA,
NA, 0.045765, -0.003407, 0.017085, -0.000718, 0.017227, 0.022706,
0.012473, 0.02379, 0.02935, 0.017908, -0.01376, 0.016799, 0.022993,
-0.008717), .Dim = c(18L, 5L), .Dimnames = list(NULL, c("Manager1",
"Manager2", "Manager3", "Manager4", "Manager5")), index = structure(c(1461974400,
1464652800, 1467244800, 1469923200, 1472601600, 1475193600, 1477872000,
1480464000, 1483142400, 1485820800, 1488240000, 1490918400, 1493510400,
1496188800, 1498780800, 1501459200, 1504137600, 1506729600), tzone = "UTC", tclass = "Date"), class = c("xts",
"zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC")