fPortfolio中的非线性约束有效吗?

fPortfolio中的非线性约束有效吗?,r,optimization,R,Optimization,我试图找到一个非线性投资组合优化器 在fPortfolio文档以及R/Rmetrics的Rmetrics投资组合优化中,可以设置非线性约束 然而,在查看了包的源代码之后,我无法找到使用非线性约束的任何地方 可复制测试代码: library(fPortfolio) Data <- 100 * LPP2005.RET[,1:6] Spec <- portfolioSpec() setTargetReturn(Spec) <- mean(Data) Constraints = 'ma

我试图找到一个非线性投资组合优化器

在fPortfolio文档以及R/Rmetrics的Rmetrics投资组合优化中,可以设置非线性约束

然而,在查看了包的源代码之后,我无法找到使用非线性约束的任何地方

可复制测试代码:

library(fPortfolio)
Data <- 100 * LPP2005.RET[,1:6]
Spec <- portfolioSpec()
setTargetReturn(Spec) <- mean(Data)
Constraints = 'maxW[1:6] = 0.5'
efficientPortfolio(Data, Spec, Constraints)

Title:
MV Efficient Portfolio 
Estimator:         covEstimator 
Solver:            solveRquadprog 
Optimize:          minRisk 
Constraints:       maxW 

Portfolio Weights:
SBI    SPI    SII    LMI    MPI    ALT 
0.0000 0.0086 0.2543 0.3358 0.0000 0.4013 
...

得到完全相同的答案。熟悉该软件包的人能告诉我我是否做错了什么,或者非线性约束根本没有实现吗?

你会在
getAnywhere(.rquadprograments)
中看到
solveRquadprog
没有使用
minFConstraints
maxFConstraints
。 您应该调用自己的定制解算器或使用
solveRdonlp2

testfunc = function(x) 2
nonlinConstraints = c('listF=list(testfunc=testfunc)', 'minF = 0', 'maxF = 1')
newConstraints = c(Constraints, nonlinConstraints)
efficientPortfolio(Data, Spec, newConstraints)

    Title:
MV Efficient Portfolio 
Estimator:         covEstimator 
Solver:            solveRquadprog 
Optimize:          minRisk 
Constraints:       maxW 

Portfolio Weights:
SBI    SPI    SII    LMI    MPI    ALT 
0.0000 0.0086 0.2543 0.3358 0.0000 0.4013 
...