使用ortfolioAnalytics软件包进行四力矩优化(DEoptim错误)

使用ortfolioAnalytics软件包进行四力矩优化(DEoptim错误),r,optimization,portfolio,maximization,R,Optimization,Portfolio,Maximization,我想使用4矩最大化方法和R中的PortfolioAnalytics包优化货币投资组合。 这是我使用的代码: PF<-data ARG = xts(PF$ARGENTINA, order.by=as.Date(PF$DATE)) SING = xts(PF$SINGAPOR, order.by=as.Date(PF$DATE)) AFR = xts(PF$SOUTH.AFRICA, order.by=as.Date(PF$DATE)) IND = xts(PF$INDONESIA , or

我想使用4矩最大化方法和R中的
PortfolioAnalytics
包优化货币投资组合。 这是我使用的代码:

PF<-data
ARG = xts(PF$ARGENTINA, order.by=as.Date(PF$DATE))
SING = xts(PF$SINGAPOR, order.by=as.Date(PF$DATE))
AFR = xts(PF$SOUTH.AFRICA, order.by=as.Date(PF$DATE))
IND = xts(PF$INDONESIA  , order.by=as.Date(PF$DATE))
TAIW = xts(PF$TAIWAN  , order.by=as.Date(PF$DATE))
RUSS = xts(PF$RUSSIA  , order.by=as.Date(PF$DATE))
CHI = xts(PF$CHINA  , order.by=as.Date(PF$DATE))
BRZ = xts(PF$BRAZIL  , order.by=as.Date(PF$DATE))
MEX = xts(PF$MEXICO  , order.by=as.Date(PF$DATE))
PF=merge(ARG, SING, AFR,IND, TAIW,RUSS,CHI, BRZ, MEX)
args(portfolio.spec)
args(add.constraint)
args(add.objective)
args(optimize.portfolio)
args(optimize.portfolio.rebalancing)
currencies <- colnames(PF)
CRRA <- function(PF, weights, lambda, sigma, m3, m4){
  weights <- matrix(weights, ncol=1)
  M2.w <- t(weights) %*% sigma %*% weights
  M3.w <- t(weights) %*% m3 %*% (weights %x% weights)
  M4.w <- t(weights) %*% m4 %*% (weights %x% weights %x% weights)
  term1 <- (1 / 2) * lambda * M2.w
  term2 <- (1 / 6) * lambda * (lambda + 1) * M3.w
  term3 <- (1 / 24) * lambda * (lambda + 1) * (lambda + 2) * M4.w
  out <- -term1 + term2 - term3
  out
}
portf.crra <- portfolio.spec(currencies)
# Add constraint such that the weights sum to 1
portf.crra <- add.constraint(portf.crra, type="weight_sum",
                             min_sum=0.99, max_sum=1.01)
# Add box constraint such that no asset can have a weight of greater than
# 40% or less than 1%
portf.crra <- add.constraint(portf.crra, type="box",
                             min=0, max=0.4)
# Add objective to maximize CRRA
portf.crra <- add.objective(portf.crra, type="return",
                            name="CRRA", arguments=list(lambda=10))
portf.crra <- add.objective(portf.crra, type="return", name="mean", multiplier=0)
portf.crra <- add.objective(portf.crra, type="risk", name="ES", multiplier=0)
portf.crra <- add.objective(portf.crra, type="risk", name="StdDev", multiplier=0)
opt.crra <- optimize.portfolio(CT, portf.crra, optimize_method="DEoptim", search_size=5000, trace=TRUE, traceDE=0)

pf您需要安装DEoptim软件包:
install.packages(“DEoptim”)
。它可以工作!很多感谢..真的:)你需要安装DEoptim软件包:
install.packages(“DEoptim”)
。它可以工作!很多谢谢……真的:)