[英]Assigning weights to a portfolio in 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天退货应计算为633.79 / 636.69 - 1 = -0.0046
。 权重相等的投资组合可以在第2天获得这四个收益的平均值。
在第二天之后,您需要考虑投资组合重新调整的频率。 这更多是quantum.stackexchange.com的主题,而不是编程问题。 但是,我会给您两种情况(不现实),在这种情况下,您假设投资组合在每天开始时的权重是完全相等的;而在(简单而现实)情况下,我们将投资组合在开始时和开始时设置为相等权重。我们忘记了。
正如我在关于股票价格回报的问题中提到的那样,一个好的用来收集和处理股票价格的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年底以来的价格,可以使用TTR
包中的ROC
转换为一系列收益:
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"]
是年初的收盘价。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.