API¶
The optimizers are the classes responsible for finding the ideal weights. The underlying optimizer is built from the nlopt package. The optimizers are classified into 2 categories, Deterministic and Discrete State Uncertainty.
Deterministic optimizers are suitable for instances where the problem scenario is known. For example, if it is expected to only have one market scenario, then it is suitable to use the optimizers under this category.
Discrete State Uncertainty optimizers are suitable for instances where there are multiple problem scenarios and when a discrete probability can be assigned to each scenario. For instance, there could be 3 scenarios that would happen in the future. Baseline at 50%, Upside at 30% and Downside at 20%. In this case, this class of optimizers will be most suitable to model the optimization problem.
Presently, Continuous State Uncertainty optimizers are not implemented in the package.
Algorithms¶
All algorithms in allopy
follows a particular naming pattern. Specifically, the names are of the form {G,L}{N,D}_xxx
where G
/L
denotes if the algorithm is global or local optimization, N
/D
denotes if the algorithm is a derivative-free or gradient-based algorithm and xxx
is the name of the algorithm.
For example, LD_SLSQP
refers to the Sequential Quadratic Least Squares Programming. This is a local and derivative free algorithm.
Many algorithms have variants and some, such as AUGLAG
, may not have the construct described above. In using any of these algorithms, consult a textbook or Wikipedia to understand if it is fit for your purpose.
A list of the algorithms is given below. Check out the docs at nlopt for more information.
GN_DIRECT_L
GN_DIRECT_L_RAND
GN_DIRECT_NOSCAL
GN_DIRECT_L_NOSCAL
GN_DIRECT_L_RAND_NOSCAL
GN_ORIG_DIRECT
GN_ORIG_DIRECT_L
GD_STOGO
GD_STOGO_RAND
LD_LBFGS_NOCEDAL
LD_LBFGS
LN_PRAXIS
LD_VAR1
LD_VAR2
LD_TNEWTON
LD_TNEWTON_RESTART
LD_TNEWTON_PRECOND
LD_TNEWTON_PRECOND_RESTART
GN_CRS2_LM
GN_MLSL
GD_MLSL
GN_MLSL_LDS
GD_MLSL_LDS
LD_MMA
LN_COBYLA
LN_NEWUOA
LN_NEWUOA_BOUND
LN_NELDERMEAD
LN_SBPLX
LN_AUGLAG
LD_AUGLAG
LN_AUGLAG_EQ
LD_AUGLAG_EQ
LN_BOBYQA
GN_ISRES
AUGLAG
AUGLAG_EQ
G_MLSL
G_MLSL_LDS
LD_SLSQP
LD_CCSAQ
GN_ESCH
GN_AGS