Рассчитать доходность акций из длинного формата данных - PullRequest
0 голосов
/ 19 марта 2020

Какова была бы наилучшая практика для получения длинного формата данных о ценах акций (содержащего несколько акций) и создания нового кадра данных со сводной статистикой доходности для каждой акции? Я думаю о каком-то решении с помощью dplyr, group_by и суммирования. Мой фрейм входных данных имеет столбцы: Дата, Тикер и Цена. Мне бы хотелось, чтобы в выводе был столбец для тикера, а затем несколько столбцов для каждой возвращаемой статистики c. Я хочу, чтобы статистика возврата была настраиваемой, поэтому у меня могут быть «возврат за 1 месяц», «год к дате» и даже такие вещи, как «возврат с 3 марта 2019 года по 14 февраля 2020 года».

Вот пример того, как выглядит мой ввод:

library(lubridate)
set.seed(100)
d_start <- as.Date("2019-01-01")
input <- data.frame(
  Date = rep(seq(d_start, today(), by = "1 day"), 3),
  Ticker = c(rep("AAPL", today() - d_start + 1), 
             rep("MSFT", today() - d_start + 1),
             rep("NFLX", today() - d_start + 1)),
  Price = c(runif(today() - d_start + 1, min = 20, max = 40),
            runif(today() - d_start + 1, min = 50, max = 90),
            runif(today() - d_start + 1, min = 150, max = 400))
)

А вот как я ожидаю, что результат будет выглядеть. С: r1 как доход за прошедший 1 месяц, r2 как доход с года на дату и r3 как доход с 3 марта 2019 года по 14 февраля 2020 года

Ticker         r1         r2          r3
1   AAPL  0.1788484  0.1370241  0.24244384
2   MSFT -0.1466788 -0.2850910 -0.06895183
3   NFLX -0.4755626 -0.4964146 -0.06005490

1 Ответ

1 голос
/ 19 марта 2020

Вы специально ищите аккуратную упаковку. Более конкретно, tq_mutate ().

Пример кода будет следующим:

Stocks <- c("AAPL","MSFT","NFLX") %>%
              tq_get() %>%
              group_by(symbol)%>%
              tq_mutate(
                                  select = 'adjusted',
                                  mutate_fun = periodReturn,
                                  period = 'monthly',
                                  col_rename = 'return')

Строковый вектор должен содержать символы финансов Yahoo. При импорте нескольких символов tq_get () возвращает по умолчанию длинный df и имеет дополнительные аргументы «from» и «to» для выбора интересующих дат. Если у вас уже есть собственная информация, tq_mutate () работает как обычная функция dplyr.

Любые сомнения, этот пакет действительно хорошо документирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...