Solves for the portfolios on the efficient frontier given a specification object.
parmafrontier(spec, n.points = 100, miny = NULL, maxy = NULL, type = NULL,
solver = NULL, solver.control = list(), parma.control = list(ubounds = 10000,
mbounds = 1e+05, penalty = 10000), cluster = NULL)
A matrix
object with columns for the weights, risk, reward and
termination status of the solver (not available for the QP solver), and
n.points rows. The user should investigate the non-converged solutions as well
as remove any NA based rows (non-converged with error).
A parmaSpec
object.
The number of portfolios to solve for along the frontier.
(Optional) Minimum return from which to calculate the frontier. If not provided, will be calculated by a first pass optimization.
(Optional) Maximum return for which to calculate the frontier. If not provided, will be based on the maximum forecast.
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.
A list with optional control parameters passed to the
nloptr
or cmaes
solver.
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.
A precreated cluster object from the parallel package for the parallel evaluation of the frontier portfolios (see note).
Alexios Galanos
If using a cluster object, care should be taken since some of the LP based problems are quite memory intensive. Though some care some gone into using slam matrices and forcing garbage collection in intermediate setup steps of these problems, there is no guarantee that memory will not be quickly depleted for large problems using many cores/sockets.