Rolling Corr / Функция с минимальным ограничением наблюдения - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь повторить результаты Frazzini & Pedersens "Ставки против беты".Одним из шагов является расчет текущих корреляций между активами и рынком, который учитывает данные только в том случае, если по крайней мере 35 из 60 месяцев имеют адекватные данные о доходах во временном ряду.Только один пакет предлагает решение этой проблемы, но он предназначен исключительно для типов данных xts: https://www.rdocumentation.org/packages/roll/versions/1.1.2/topics/roll_cor

Набор данных: аккуратный формат / tibble

Я начал с простого переходафункция, где 12м из 12м должны быть доступны.Нет проблем, поскольку пакет tidyquant предлагает параметр width и na.rm для несуществующих данных.

Я попытался с помощью rollify () создать собственную скользящую корреляционную функцию и фильтрацию после изменения тиббла, но мне понадобится еще одна скользящая функция для подсчета NA внутри окон, просто чтобы удалить соответствующие наблюдения, которыесводит на нет цель подсчета NA отдельно, вместо того, чтобы вообще не вычислять корреляции.

stock_test <- stock %>%   
  group_by(PERMNO) %>%
  filter(n()>11) %>%
  tq_mutate(select  = RET,
            mutate_fun = rollapply,
            width = "12",
            align = "right",
            FUN  = sd,
            na.rm = FALSE,
            col_rename = "sd_roll")

Так как tq_mutate_xy принимает только функции xts, quantmod или TTR для аргумента mutate_fun, мне интересно, где жеесть возможность адаптировать ожидающие функции формата xts для работы с таблицей.

...