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 size N × N.

Related

source
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 size Nf × Nf.

Related

source
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). Accepts nothing, a single phylogeny, or a vector.

Returns

  • nothing.

Related

source
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). Accepts nothing, a single phylogeny, or a vector.

Returns

  • nothing.

Related

source