等权重 RETURNS 在 R 中不等权重
Equal-Weighted RETURNS not EQUALLY-Weighted in R
为什么以下投资组合没有返回正确的百分比 Return:
# Load the packages & download the Stock Symbols
library("xts");library("quantmod");library("PerformanceAnalytics")
e <- new.env()
getSymbols("NPTN;XLRN;PBH;DISCK", from="2014-12-31", env=e)
dataset1 <- CalculateReturns(do.call(merge, eapply(e, Ad)),"discrete")
# Make Equal Weight
EW <- reclass(dataset1 %*% rep(1/ncol(dataset1),ncol(dataset1)), match.to=dataset1)
求投资组合的累计总和:
# I have tried the following both methods:
last(cumsum(na.omit(EW)))
or
Return.cumulative(EW,geometric=FALSE)
然而正确的 Return 应该如下:
# Assuming I purchased on 01-02-2015 at the close
dataset2 <- do.call(merge, eapply(e, Ad))
RETS <-(coredata(dataset2["2015-06-10",])/coredata((dataset2["2015-01-02",])))-1
# Since this is an equally-weighted portfolio:
sum(RETS)*(1/ncol(RETS))
returns 被低估了大约 : 18%
这也发生在其他等权重投资组合中,但我无法找出原因。感谢任何帮助
通过每日再平衡形成的投资组合的每日 returns 由您的 EW
给出,也就是说,投资组合的每一天都以每个资产的相同指定权重开始,然后计算每天 return 使用该权重。一段时间内投资组合的累计 return 可以使用
计算
EW <- EW["2015-01-03/2015-06-10",]
ret1_rebal <- last(cumprod(EW+1)-1)
ret2_rebal <- Return.cumulative(EW,geometric=TRUE)
累积 return 的代码已从最初发布的内容中更正。
当投资组合未重新平衡时,每个资产的 return 会在该期间单独累积。投资组合在任何时候的价值都是这些累积资产 return 的总和,由初始分配加权。这可以通过
计算
dataset1 <- dataset1["2015-01-03/2015-06-10",]
dataset3 <- reclass(cumprod(dataset1+1)-1, match.to=dataset1)
wts <- rep(1,ncol(dataset1))/ncol(dataset1)
EW_no_rebal <- dataset3%*%wts
last(EW_no_rebal)
请注意,last(EW_no_rebal)
等于您直接根据价格计算 sum(RETS)*(1/ncol(RETS))
的投资组合 return。
> last(EW_no_rebal)
[1] 0.4586492
> sum(RETS)*(1/ncol(RETS))
[1] 0.4586492
为什么以下投资组合没有返回正确的百分比 Return:
# Load the packages & download the Stock Symbols
library("xts");library("quantmod");library("PerformanceAnalytics")
e <- new.env()
getSymbols("NPTN;XLRN;PBH;DISCK", from="2014-12-31", env=e)
dataset1 <- CalculateReturns(do.call(merge, eapply(e, Ad)),"discrete")
# Make Equal Weight
EW <- reclass(dataset1 %*% rep(1/ncol(dataset1),ncol(dataset1)), match.to=dataset1)
求投资组合的累计总和:
# I have tried the following both methods:
last(cumsum(na.omit(EW)))
or
Return.cumulative(EW,geometric=FALSE)
然而正确的 Return 应该如下:
# Assuming I purchased on 01-02-2015 at the close
dataset2 <- do.call(merge, eapply(e, Ad))
RETS <-(coredata(dataset2["2015-06-10",])/coredata((dataset2["2015-01-02",])))-1
# Since this is an equally-weighted portfolio:
sum(RETS)*(1/ncol(RETS))
returns 被低估了大约 : 18%
这也发生在其他等权重投资组合中,但我无法找出原因。感谢任何帮助
通过每日再平衡形成的投资组合的每日 returns 由您的 EW
给出,也就是说,投资组合的每一天都以每个资产的相同指定权重开始,然后计算每天 return 使用该权重。一段时间内投资组合的累计 return 可以使用
EW <- EW["2015-01-03/2015-06-10",]
ret1_rebal <- last(cumprod(EW+1)-1)
ret2_rebal <- Return.cumulative(EW,geometric=TRUE)
累积 return 的代码已从最初发布的内容中更正。
当投资组合未重新平衡时,每个资产的 return 会在该期间单独累积。投资组合在任何时候的价值都是这些累积资产 return 的总和,由初始分配加权。这可以通过
计算dataset1 <- dataset1["2015-01-03/2015-06-10",]
dataset3 <- reclass(cumprod(dataset1+1)-1, match.to=dataset1)
wts <- rep(1,ncol(dataset1))/ncol(dataset1)
EW_no_rebal <- dataset3%*%wts
last(EW_no_rebal)
请注意,last(EW_no_rebal)
等于您直接根据价格计算 sum(RETS)*(1/ncol(RETS))
的投资组合 return。
> last(EW_no_rebal)
[1] 0.4586492
> sum(RETS)*(1/ncol(RETS))
[1] 0.4586492