Variance Skew Kurtosis Constraints: private API

PortfolioOptimisers.set_risk_constraints!Method
set_risk_constraints!(
    model::Model,
    i,
    r::VarianceSkewKurtosis,
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    prefix,
    kwargs...
) -> Any

Build the joint Variance–Skewness–Kurtosis SDP risk constraints for a VarianceSkewKurtosis risk measure.

Constructs the semidefinite lifting variables W1, W2, W3 and the PSD cone constraint that jointly encodes variance, skewness, and kurtosis. Each sub-risk expression is then bounded and registered separately using set_variance_risk_bounds_and_expression!, with the skewness term using a lower bound (flag = false) because higher skewness is preferred. The composite expression scale_vr * vr - scale_sk * sk + scale_kt * kt is stored and passed to set_risk_bounds_and_expression!.

Any prior result is accepted. Both tensors must resolve, on their child or on the prior, and assert_high_order_quantity refuses the measure when either resolves on neither. The three vectorisation matrices come from dup_elim_sum_selector, so a container whose sk and kt children hold their own tensors is buildable against a LowOrderPrior, which already carries the sigma the third child needs.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.
  • i: Constraint index for unique variable and constraint naming.
  • r::VarianceSkewKurtosis: Composite risk measure.
  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.
  • pr::AbstractPriorResult: Prior result. It supplies sigma, sk and kt where the children state none.

Returns

  • The composite vr_sk_kt_risk JuMP expression.

Related

source