我正在尝试计算资产价格的年度回报。我知道tidyquant软件包使用户能够计算各种回报指标,例如每日,每月和每年。效果很好,但是我的问题很简单,我仍然找不到解决方案:
tidyquant代码如下:
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年7月1日购买此资产并在2019年6月末出售该资产,您获得了什么回报?
这是数据集“ 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),而是基于6月末的值(例如1992-06-30)。 / p>
我对R非常陌生,希望我能够解释我的问题并获得支持!非常感谢:)