Я пытаюсь рассчитать годовой доход цены активов. Я знаю, что пакет тидиквантов позволяет пользователю рассчитывать различные показатели доходности, такие как ежедневная, ежемесячная и годовая. Это работает очень хорошо, но моя проблема проста, где я до сих пор не могу найти решение:
Тидиквантный код выглядит так:
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 и надеюсь, что смог объяснить свою проблему и получить некоторую поддержку! Большое спасибо:)