在R

时间:2017-09-12 17:11:33

标签: r

我试图在R中展示如何为投资组合分配权重,然后计算每日回报。下面是每日回报的数据,我为每个回报分配了25%的权重,用于制作相同的权重投资组合并计算回报。 (有4家公司股票,其中我刚刚提供了2只股票的数据,因此已经给出了每股股票25%的权重)但是,我在R中配置相同的情况是不合适的。

Workings: 

25% = 636.99*25% = 159.25
      633.79*25% = 158.45

Returns = Closing - opening 
        = 159.25-158.45
        = -0.80

Is there any way I can show this in R?


    AMZN     25%    Returns  GOOG     25%   Returns
    636.99  159.25          741.84  185.46  
    633.79  158.45  -0.80   742.58  185.65   0.18
    632.65  158.16  -0.28   743.62  185.90   0.26
    607.94  151.99  -6.18   726.39  181.60  -4.31
    607.05  151.76  -0.22   714.47  178.62  -2.98
    617.74  154.43   2.67   716.03  179.01   0.39
    617.89  154.47   0.04   726.07  181.52   2.51
    581.81  145.45  -9.02   700.56  175.14  -6.38

1 个答案:

答案 0 :(得分:2)

退货应该分开,而不是减去。亚马逊的1天回报应计算为633.79 / 636.69 - 1 = -0.0046。等权重投资组合可以在第2天采用这四个回报的均值。

在第2天之后,您需要考虑您的投资组合重新平衡的频率。这是quant.stackexchange.com的主题,而不是编程问题。但是我会给你两个(不切实际的)案例,你假设投资组合在每天开始时是完全相等加权的,以及(简单和现实的)情况,我们将投资组合设置为等于加权一开始我们就忘了它。

正如我在your question about stock price returns中提到的,收集和操纵股票价格的一个好的R包是quantmod。尝试:

library(quantmod)
symbols <- c("GOOG", "AMZN", "FB", "AAPL")
getSymbols(symbols, src = 'google')
closing.prices <- merge.xts(GOOG[,4], AMZN[,4], FB[,4], AAPL[,4])["2016-12-30/"]

请注意,所有内容都将使用xts时间序列完成。时间序列closing.prices将是自2016年底以来的价格,并且可以使用ROC包中的TTR转换为一系列回报:

library(TTR)
price.returns = ROC(closing.prices)

对于我们在每天开始时25%等权重的投资组合,投资组合的回报将是手段:

rowMeans(price.returns)

更真实的情况是,投资组合在年初的等权重为25%,您可以计算每只股票的总回报,然后计算四者的平均值:

mean(as.numeric(closing.prices["2017-09-12"]) / as.numeric(closing.prices["2016-12-30"]) - 1)

其中closing.prices["2017-09-12"]是今天的收盘价,closing.prices["2016-12-30"]是年初的收盘价。