SDP Constraints: private API
PortfolioOptimisers.set_sdp_constraints! — Function
set_sdp_constraints!(model::Model; prefix) -> Any
Add a positive semidefinite (PSD) constraint to the JuMP optimisation model for the portfolio weights.
Creates a symmetric matrix variable W and enforces that the bordered matrix [W w; wᵀ k] lies in the PSD cone. Returns immediately if W already exists in model.
Mathematical definition
\[\begin{align} \mathbf{M} &= \begin{bmatrix} \mathbf{W} & \boldsymbol{w} \\ \boldsymbol{w}^\intercal & k \end{bmatrix} \succeq 0 \\ &\quad\Leftrightarrow\quad \mathbf{W} \succeq \frac{\boldsymbol{w}\boldsymbol{w}^\intercal}{k}\,. \end{align}\]
Where:
- $\mathbf{M}$: Bordered positive semidefinite matrix.
- $\mathbf{W}$: Symmetric $N \times N$ matrix variable.
- $\boldsymbol{w}$: Portfolio weights vector $N \times 1$.
- $k$: Budget scaling / homogenisation variable.
Arguments
model::JuMP.Model: The JuMP optimisation model.
Returns
W: Symmetric JuMP variable matrix of sizeN × N.
Related
PortfolioOptimisers.set_sdp_frc_constraints! — Function
set_sdp_frc_constraints!(model::Model) -> Any
Add a positive semidefinite (PSD) constraint for factor risk contribution to the JuMP optimisation model.
Creates a symmetric matrix variable frc_W and enforces that the bordered matrix [frc_W w1; w1ᵀ k] lies in the PSD cone. Returns immediately if frc_W already exists in model.
Arguments
model::JuMP.Model: The JuMP optimisation model.
Returns
frc_W: Symmetric JuMP variable matrix of sizeNf × Nf.
Related
PortfolioOptimisers.set_sdp_phylogeny_constraints! — Function
set_sdp_phylogeny_constraints!(
model::Model,
plgs::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}}
)
Add semidefinite phylogeny constraints to the JuMP optimisation model.
Iterates over plgs and, for each SemiDefinitePhylogeny entry, enforces A ⊙ W = 0 and optionally adds p * tr(W) to the objective penalty. Does nothing when plgs contains no SemiDefinitePhylogeny instances.
Arguments
model::JuMP.Model: The JuMP optimisation model.plgs: Phylogeny constraint(s). Acceptsnothing, a single phylogeny, or a vector.
Returns
nothing.
Related
PortfolioOptimisers.set_sdp_frc_phylogeny_constraints! — Function
set_sdp_frc_phylogeny_constraints!(
model::Model,
plgs::Union{Nothing, Union{var"#s1773", var"#s1772"} where {var"#s1773"<:AbstractPhylogenyConstraintEstimator, var"#s1772"<:AbstractPhylogenyConstraintResult}, AbstractVector{<:Union{var"#s1773", var"#s1772"} where {var"#s1773"<:AbstractPhylogenyConstraintEstimator, var"#s1772"<:AbstractPhylogenyConstraintResult}}}
)
Add semidefinite phylogeny constraints for factor risk contribution to the JuMP optimisation model.
Iterates over plgs and, for each SemiDefinitePhylogeny entry, enforces A ⊙ frc_W = 0 and optionally adds p * tr(frc_W) to the objective penalty. Does nothing when plgs contains no SemiDefinitePhylogeny instances.
Arguments
model::JuMP.Model: The JuMP optimisation model.plgs: Phylogeny constraint(s). Acceptsnothing, a single phylogeny, or a vector.
Returns
nothing.
Related