问题描述
我使用R软件包fPortfolio对滚动投资组合(自适应资产分配)进行投资组合优化。因此,我使用了回测功能。
我的目标是为一组资产构建投资组合,以实现预定义的目标收益(和最小的风险)或预定义的目标风险和最大的收益。
即使允许卖空(如5年前另一篇文章中所述)似乎也不起作用。此外,我不想在我的方法中允许卖空。
我无法弄清楚为什么更改目标收益或目标风险的值根本不会影响解决方案。 我哪里出问题了?
require(quantmod)
require(fPortfolio)
require(PortfolioAnalytics)
tickers= c("SPY","TLT","GLD","VEIEX","QQQ","SHY")
getSymbols(tickers)
data.raw = as.timeSeries(na.omit(cbind(Ad(SPY),Ad(TLT),Ad(GLD),Ad(VEIEX),Ad(QQQ),Ad(SHY))))
data.arith = na.omit(Return.calculate(data.raw,method="simple"))
colnames(data.arith) = c("SPY","SHY")
cvarSpec <- portfolioSpec(
model = list(
type = "CVAR",optimize = "maxReturn",estimator = "covEstimator",tailRisk = list(),params = list(alpha = 0.05,a = 1)),portfolio = list(
weights = NULL,targetReturn = NULL,targetRisk = 0.08,riskFreeRate = 0,nFrontierPoints = 50,status = 0),optim = list(
solver = "solveRglpk.CVAR",objective = NULL,params = list(),control = list(),trace = FALSE))
backtest = portfolioBacktest()
setwindowsHorizon(backtest) = "12m"
assets <- SPY ~ SPY + TLT + GLD + VEIEX + QQQ + SHY
portConstraints ="LongOnly"
myPortfolio = portfolioBacktesting(
formula = assets,data = data.arith,spec = cvarSpec,constraints = portConstraints,backtest = backtest,trace = TRUE)
setSmootherLambda(myPortfolio$backtest) <- "1m"
myPortfolioSmooth <- portfolioSmoothing(myPortfolio)
backtestPlot(myPortfolioSmooth,cex = 0.6,font = 1,family = "mono")
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)