Расчет годовой доходности на основе указанной c даты - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь рассчитать годовой доход цены активов. Я знаю, что пакет тидиквантов позволяет пользователю рассчитывать различные показатели доходности, такие как ежедневная, ежемесячная и годовая. Это работает очень хорошо, но моя проблема проста, где я до сих пор не могу найти решение:

Тидиквантный код выглядит так:

stock_yearly_returns <- ReturnData %>%
  group_by(isin) %>%                 # We are grouping the stocks by the stock isin
  tq_transmute(select = prccd,
               mutate_fun = periodReturn,
               period = 'yearly',
               col_rename = 'yearlyreturns')

Набор данных ReturnData представлен в формате Tibble, поэтому несколько временных рядов расположены под разными акциями / компаниями.

Проблема: с помощью этой команды я могу рассчитать только годовой доход на конец года. Пакет распознает последний день года и рассчитывает разницу в ценах в процентах на основе начала года и конца года. Однако мне нужен годовой доход, рассчитанный не на конец года, а на конец июня. Представьте себе следующую ситуацию: Какую прибыль вы получили при покупке этого актива первого июля 2018 года и продаже его в конце июня 2019 года?

Так выглядит набор данных «ReturnData»:

> head(ReturnData)
# A tibble: 6 x 8
  isin         datadate   gvkey iid   conm    exchg    cshoc prccd
  <fct>        <date>     <dbl> <fct> <fct>   <fct>    <dbl> <dbl>
1 DE000BASF111 1987-06-01 17436 01W   BASF SE 171   51564000  283.
2 DE000BASF111 1987-06-02 17436 01W   BASF SE 171   51564000  280 
3 DE000BASF111 1987-06-03 17436 01W   BASF SE 171   51564000  282.
4 DE000BASF111 1987-06-04 17436 01W   BASF SE 171   51564000  285.
5 DE000BASF111 1987-06-05 17436 01W   BASF SE 171   51564000  285.
6 DE000BASF111 1987-06-09 17436 01W   BASF SE 171   51564000  285.

Это результат запуска кода stock_yearly_returns (в качестве основы для которого используется неверная дата)

> head(stock_yearly_returns)
# A tibble: 6 x 3
# Groups:   isin [1,208]
  isin         datadate   yearlyreturns
  <fct>        <date>             <dbl>
1 DE000BASF111 1987-12-30       -0.0991
2 DE000BASF111 1988-12-29        0.102 
3 DE000BASF111 1989-12-28        0.0624
4 DE000BASF111 1990-12-28       -0.346 
5 DE000BASF111 1991-12-30        0.126 
6 DE000BASF111 1992-12-30       -0.0496

То, что я ищу, - это тот же результат, что и выше, но не на основе дат на конец года (например, 1992-12-30), а скорее на конце Июньские значения (например, 1992-06-30).

Я очень плохо знаком с R и надеюсь, что смог объяснить свою проблему и получить некоторую поддержку! Большое спасибо:)

...