根据特定日期计算年度收益

时间:2020-01-27 17:39:58

标签: r tidyquant

我正在尝试计算资产价格的年度回报。我知道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非常陌生,希望我能够解释我的问题并获得支持!非常感谢:)

0 个答案:

没有答案