R 具有定义权重集的组合分析回测

R 具有定义权重集的组合分析回测,r,R,我非常喜欢PortfolioAnalytics软件包,并仔细阅读了来自 现在,除了优化投资组合,我是否可以使用该软件包还使用一组历史权重计算某些风险指标?例如,下面的代码给出了很好的权重和随时间变化的风险贡献。假设我有一组固定的时间序列数据,其中包含cvs文件中资产的权重(下面我使用随机数据)。我应该怎么做才能在类似的图表中提取权重/风险贡献 例如: library(PortfolioAnalytics) data(edhec) R <- edhec[, 1:4] funds &

我非常喜欢PortfolioAnalytics软件包,并仔细阅读了来自

现在,除了优化投资组合,我是否可以使用该软件包还使用一组历史权重计算某些风险指标?例如,下面的代码给出了很好的权重和随时间变化的风险贡献。假设我有一组固定的时间序列数据,其中包含cvs文件中资产的权重(下面我使用随机数据)。我应该怎么做才能在类似的图表中提取权重/风险贡献

例如:

library(PortfolioAnalytics)
data(edhec)

    R <- edhec[, 1:4]
funds <- colnames(R)

    init.portf <- portfolio.spec(funds, weight_seq=generatesequence(min=0,  max=1, by=0.002))
init.portf <- add.constraint(init.portf, "weight_sum")#, min_sum=0.99, max_sum=1.01)
init.portf <- add.constraint(init.portf, "box", min=0, max=0.65)


init.portf <- add.objective(init.portf, type="return", name="mean", multiplier=0)

# Add objective to minimize portfolio standard deviation
SDRB.portf <- add.objective(init.portf, type="risk", name="StdDev")

# Add StdDev risk budget objective for maximum percentage risk 
SDRB.portf <- add.objective(SDRB.portf, type="risk_budget", name="StdDev", max_prisk=0.4)

# Generate random portfolios
rp <- random_portfolios(init.portf, 5000)

# Run out of sample backtest with yearly rebalancing
SDRB.opt.bt <- optimize.portfolio.rebalancing(R, SDRB.portf,
                                              optimize_method="random", 
                                              rp=rp,
                                              trace=TRUE, 
                                              rebalance_on="years", 
                                              training_period=100, 
                                              trailing_periods=60)

# print method for optimize.portfolio.rebalancing objects
SDRB.opt.bt

# summary method for optimize.portfolio.rebalancing objects
tmp_summary <- summary(SDRB.opt.bt)
names(tmp_summary)

# print method for summary.optimize.portfolio.rebalancing objects
tmp_summary

# Extractor functions for summary.optimize.portfolio.rebalancing objects
extractWeights(tmp_summary)
extractObjectiveMeasures(tmp_summary)

# Extractor functions for optimize.portfolio.rebalancing objects
tmp_stats <- extractStats(SDRB.opt.bt)
head(tmp_stats[[1]])
tmp_weights <- extractWeights(SDRB.opt.bt)
tmp_obj <- extractObjectiveMeasures(SDRB.opt.bt)

# chart functions for optimize.portfolio.rebalancing
chart.Weights(SDRB.opt.bt)
chart.RiskBudget(SDRB.opt.bt, match.col="StdDev", risk.type="percent")
库(PortfolioAnalytics)
数据(edhec)

R不能回答您的具体问题,但以下两个调用将使您的权重总和为1,每个周期。。。。。sumsHi,谢谢你这么做!更进一步。不回答您的具体问题,但以下两个调用将使您的权重总和为1,每个周期。。。。。sumsHi,谢谢你这么做!更进一步。
##make some random weights
Wa <-edhec[, 1:1]
w1<-runif(152,0,1)
w2<-runif(152,0,1)
w3<-runif(152,0,1)
w4<-runif(152,0,1)
w5<-runif(152,0,1)
w6<-runif(152,0,1)
weightsTest <- merge(Wa,w1,w2,w3,w4,w5,w6)
weightsTest <- weightsTest[, -(1), drop=FALSE]
##