程式
營業額約束忽略投資組合的初始權重
我正在嘗試執行標準的投資組合優化,但限制允許投資組合的最終權重偏離一組初始權重。我用這個
PortfolioAnalytics
包做這個,下面的程式碼是一個沒有任何錯誤的 MWE。# load packages and data library(quadprog) library(PortfolioAnalytics) data(edhec) dat <- edhec[,1:4] # add initial weights to initial portfolio funds <- c("Convertible Arbitrage" = 0.4, "CTA Global" = 0.3, "Distressed Securities" = 0.2, "Emerging Markets" = 0.1) init.portf <- portfolio.spec(assets=funds) # standard constraints & objectives init.portf <- add.constraint(portfolio=init.portf, type="box", min_w=0, min_sum=0.99, max_sum=1.01) init.portf <- add.objective(portfolio=init.portf, type="return", name="mean") init.portf <- add.objective(portfolio=init.portf, type="risk", name="StdDev") # TURNOVER CONSTRAINT (MATTER OF THIS THREAD) init.portf <- add.constraint(portfolio=init.portf, type="turnover", turnover_target=0) # optimize portfolio opt.portf <- optimize.portfolio(R=dat, portfolio=init.portf, trace=TRUE, optimize_method="random") # check the weights of optimized portfolio print.default(opt.portf$weights)
turnover_target
是0
,所以輸出權重應該與輸入權重相同,(0.4, 0.3, 0.2, 0.1)
但它們的權重相等(0.25, 0.25, 0.25, 0.25)
。等權重是預設的初始權重,所以不知何故,我設置的初始權重似乎無法辨識。但是查看add.constraint或rolling_constraint的文件並沒有多大幫助。看起來好像一切都應該正常工作。他們定義初始權重的方式與portfolio.spec的文件相匹配有誰知道為什麼我的初始權重被營業額約束忽略了?