Вычисление движущихся корреляций в r - PullRequest
0 голосов
/ 08 мая 2020

Мой набор данных выглядит примерно так:

    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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...