Solves for the optimal weights given parmaSpec defined model.
parmasolve(spec, type = NULL, solver = NULL, solver.control = list(), x0 = NULL,
w0 = NULL, parma.control = list(ubounds = 1e4, mbounds = 1e5,
penalty = 1e4, eqSlack = 1e-05), ...)
A parmaPort
object containing details of the PARMA
optimized portfolio.
A parmaSpec
object.
The problem type to use (the show method on parmaSpec
will indicate the available options).
For a GNLP type problem the choice of global solver, either
“cmaes” or “crs” from the nloptr
package. For LP type problems,
only glpk ic currently supported.
A list with optional control parameters passed to the
nloptr
or cmaes
solver.
Optional starting parameters for the NLP type problems. This may be of size greater than the number of assets depending on whether it takes extra optimization parameters (CVaR has VaR in position 1, whilst the fractional formulation has the multiplier in the last position).
Optional starting parameters for only the asset weights.
Internal NLP tuning parameters, where ‘ubounds’ represents the symmetric unconstrained parameter bounds in the fractional problem, ‘mbounds’ the multiplier upper bounds in the fractional formulation, ‘penalty’ the GNLP penalty parameter and ‘eqSlack’ the slack value to use for converting equalities to inequalities in the SOCP formulation.
Currently only the ‘verbose’ argument (logical) which is used and passed to the GLPK solver (similar to ‘trace’).
Alexios Galanos
In most of the cases, the intersection of objective and constraints will define whether a problem is LP, MILP, QP, MIQP, QCQP, NLP, MINLP or GNLP. However, there are cases when the problem can be solved by more than one type of solver so that the ‘type’ option allows the user to choose between the options. For the GNLP type, the ‘solver’ allows for a choice of “cmaes” or “crs”, while the LP type there is a choice of “glpk” or “symphony”. Future development will likely expand on these choices.