如何解决在R包fPortfolio中使用目标风险或目标收益
我使用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 举报,一经查实,本站将立刻删除。