Skip to content
13

Tracking Risk Measure Constraints

PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::TrackingRiskMeasure{<:Any, <:Any, <:L1Tracking},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    kwargs...
) -> Any

Add tracking risk constraints to model.

The L1Tracking overload uses an L1-norm cone. The L2Tracking / SquaredL2Tracking overload uses an SOC. The LpTracking overload uses power cones parameterised by r.alg.p. The LInfTracking overload uses an infinity-norm cone. The independent-variable overload shifts the weight vector by a benchmark before delegating to set_triv_risk_constraints!. The dependent-variable overload computes a benchmark risk and adds an L1-norm cone on the risk difference via set_trdv_risk_constraints!.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r: Tracking risk measure instance.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::TrackingRiskMeasure{<:Any, <:Any, <:Union{var"#s2197", var"#s2196"} where {var"#s2197"<:L2Tracking, var"#s2196"<:SquaredL2Tracking}},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    kwargs...
) -> Any

Add JuMP risk constraints for TrackingRiskMeasure with L2Tracking or SquaredL2Tracking to model.

Introduces a scalar variable and an SOC constraint to encode the L2 (root mean squared) tracking error between portfolio and benchmark returns.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::TrackingRiskMeasure{<:Any, <:Any, <:Union{<:L2Tracking, <:SquaredL2Tracking}}: The tracking risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::TrackingRiskMeasure{<:Any, <:Any, <:LpTracking},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    kwargs...
) -> Any

Add JuMP risk constraints for TrackingRiskMeasure with LpTracking to model.

Introduces a scalar variable and power-cone constraints to encode the Lp-norm tracking error between portfolio and benchmark returns, scaled by (T - ddof)^(1/p).

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::TrackingRiskMeasure{<:Any, <:Any, <:LpTracking}: The tracking risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::TrackingRiskMeasure{<:Any, <:Any, <:LInfTracking},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    kwargs...
) -> Any

Add JuMP risk constraints for TrackingRiskMeasure with LInfTracking to model.

Introduces a scalar variable and an infinity-norm cone constraint to encode the L∞-norm (maximum) tracking error between portfolio and benchmark returns, scaled by T - ddof.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::TrackingRiskMeasure{<:Any, <:Any, <:LInfTracking}: The tracking risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::RiskTrackingRiskMeasure{<:Any, <:Any, <:Any, <:IndependentVariableTracking},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    pl::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}},
    fees::Union{Nothing, Fees},
    args...;
    kwargs...
) -> Any

Add JuMP risk constraints for RiskTrackingRiskMeasure with IndependentVariableTracking to model.

Shifts the portfolio weight vector by the benchmark weights, delegates to set_triv_risk_constraints! to compute the inner risk expression on the adjusted weights, then applies risk bounds and expression registration.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::RiskTrackingRiskMeasure{<:Any, <:Any, <:Any, <:IndependentVariableTracking}: The risk-tracking risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    i,
    r::RiskTrackingRiskMeasure{<:Any, <:Any, <:Any, <:DependentVariableTracking},
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    pl::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}},
    fees::Union{Nothing, Fees},
    args...;
    kwargs...
) -> VariableRef

Add JuMP risk constraints for RiskTrackingRiskMeasure with DependentVariableTracking to model.

Computes the benchmark's expected risk value, delegates to set_trdv_risk_constraints! to compute the inner risk expression, then adds an L1-norm cone constraint on the difference between the portfolio's risk expression and the benchmark's expected risk, scaled by the allocation variable k.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::RiskTrackingRiskMeasure{<:Any, <:Any, <:Any, <:DependentVariableTracking}: The risk-tracking risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_tracking_risk! Function
julia
set_tracking_risk!(
    model::Model,
    r::TrackingRiskMeasure{<:Any, <:Any, <:L2Tracking},
    opt::RiskJuMPOptimisationEstimator,
    tracking_risk::AbstractJuMPScalar,
    key::Symbol
) -> AbstractJuMPScalar

Finalise the L2 or squared-L2 tracking risk expression and apply bounds.

The L2Tracking overload calls set_risk_bounds_and_expression! directly with the SOC variable. The SquaredL2Tracking overload squares it and applies a sqrt-converted upper bound to the original SOC variable.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • r::TrackingRiskMeasure: Tracking risk measure instance.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • tracking_risk::JuMP.AbstractJuMPScalar: Normalised tracking-risk SOC variable.

  • key::Symbol: Symbol used to name constraints or expressions in the model.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_risk_tr_constraints! Function
julia
set_risk_tr_constraints!(
    key,
    model::Model,
    r::RiskMeasure,
    opt::JuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    pl::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}},
    fees::Union{Nothing, Fees},
    args...;
    kwargs...
) -> Any

Dispatch to indexed set_risk_constraints! for a single measure or iterate over a vector of measures, using a name prefix key for unique constraint naming.

Arguments

  • key: Name prefix for unique constraint symbols.

  • model::JuMP.Model: The JuMP optimisation model.

  • r: A RiskMeasure or a vector of risk measures.

  • opt::JuMPOptimisationEstimator: JuMP optimisation estimator.

  • pr: Prior result.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_triv_risk_constraints! Function
julia
set_triv_risk_constraints!(
    model::Model,
    i,
    r::RiskMeasure,
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    pl::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}},
    fees::Union{Nothing, Fees},
    args...;
    kwargs...
) -> Any

Set risk constraints for independent-variable tracking, saving and restoring any global singleton model state that would conflict with the nested solve.

Stashes existing model-level expressions and constraints (e.g., net_X, dd, wr_risk, SDP matrices) with old prefixes, calls set_risk_tr_constraints! with the triv_i_ naming prefix, then restores the original state.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::RiskMeasure: Inner risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_trdv_risk_constraints! Function
julia
set_trdv_risk_constraints!(
    model::Model,
    i,
    r::RiskMeasure,
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    pl::Union{Nothing, AbstractPhylogenyConstraintResult, AbstractVector{<:AbstractPhylogenyConstraintResult}},
    fees::Union{Nothing, Fees},
    args...;
    kwargs...
) -> Any

Set risk constraints for dependent-variable tracking, saving and restoring variance-related model state.

Stashes existing SDP matrices (W, Au, E) and variance flags, calls set_risk_tr_constraints! with the trdv_i_ naming prefix, then restores the original state. This ensures the inner risk measure's variance constraints do not interfere with the outer model.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::RiskMeasure: Inner risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr: Prior result.

  • pl: Optional phylogeny constraints.

  • fees: Optional fees structure.

Returns

  • nothing.

Related

source