【问题标题】:Portfolio optimization R - Error, portfolioAnalytics package投资组合优化 R - 错误,投资组合分析包
【发布时间】:2022-11-18 14:52:05
【问题描述】:

我是 R 编程的新手。当我尝试从 portfolioAnalytics 包中绘制“optimize.portfolio”对象时,我收到以下错误。

Error in applyFUN(R = R, weights = wts, FUN = risk.col
  argument "arguments" is missing, with no default
In addition: Warning message:
In chart.Scatter.DE(object = DE, risk.col = risk.col, return.col = return.col, 
  mean or ES do  not match extractStats output of $objective_measures slot

下面是我的代码。

library(PortfolioAnalytics)
library(DEoptim)
library(PerformanceAnalytics)

#get stock data
s = c("AMGN", "CSCO", "BA", "C")
start = "2017-01-01"
end = "2019-01-01"
getSymbols(s, from = start, to = end)

#create dateframe with close prices
p.price = NULL
for ( i in seq_along(s)){
  j = s[i]
  p.price = cbind(p.price, Cl(get(j)))
}
p.ret = na.omit(ROC(p.price))
colnames(p.ret) = gsub(".Close", "", colnames(p.ret))
funds = colnames(p.ret)
#create portfolio
ip = portfolio.spec(funds)
ip = add.constraint(ip, type ="weight_sum",
                    min_sum = 0.99, max_sum = 1.01)
ip = add.constraint(ip, type = "long_only")
ip = add.objective(ip, type = "return", name  = "mean")
ip = add.objective(ip, type = "risk", name = "StdDev")
.storage = new.env()
opt = optimize.portfolio(p.ret, ip, optimize_method = "DEoptim",
                         search_size = 1000, trace  = TRUE, traceDE = 5)

运行下面的两个会给出提到的错误消息

plot(opt)
chart.RiskReward(opt)

运行下面,绘制权重没有问题

chart.Weights(opt)

提前致谢!

【问题讨论】:

  • 在我看来,您没有将强制参数传递给您正在使用的其中一个函数。

标签: r optimization finance portfolio r-portfolioanalytics


【解决方案1】:

chart.RiskReward() 中的参数risk.col 默认设置为“ES”,但您可以通过设置type = "risk", name = "StdDev" 来调用函数add.objective()

尝试在 add.objective() 中设置 name = "ES",或者 在chart.RiskReward()中设置risk.col = "StdDev"

【讨论】:

    猜你喜欢
    • 2016-07-07
    • 2021-01-20
    • 1970-01-01
    • 2021-12-18
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多