Мой набор данных выглядит примерно так:
date permno return_stock return_mkt
01/01/2000 10000 0.05 0.04
01/02/2000 10000 0.06 0.03
01/03/2000 10000 0.03 0.08
...
01/01/2005 10000 0.03 0.04
01/02/2005 10000 0.06 0.03
01/03/2005 10000 0.09 0.08
Я хочу создать новую переменную, в которой я вычисляю корреляцию 5-летнего окна (60 месяцев) между доходностью акций и рыночной доходностью, следовательно если я нахожусь 1 января 2005 года, я хотел бы вычислить корреляцию, начиная с 1 января 2000 года, а затем пролистать в следующем месяце. Идея состоит в том, чтобы сделать это для нескольких акций. Как видите, частота - ежемесячно.
Это то, что я делал до сих пор, но, похоже, он работает нормально, но я боюсь, среди прочего, что корреляции могут быть неправильными из-за отсутствующих значений ( плюс код слишком прост, чтобы быть правдой). Я не показываю результат, так как в этом наборе данных недостаточно наблюдений. Вывод кажется правильным, поэтому первые 60 месяцев опускаются каждый раз, когда появляется новая акция, но значения return_stocks и return_mkt время от времени пропадают.
require("zoo")
require ("dplyr")
require ("tibbletime")
cor_roll <- rollify(~cor(.x, .y), window = 60)
df1 <-dplyr::mutate(df, running_cor = cor_roll(return_stock, return_mkt))