Skip to content
13

Brownian Distance Variance Constraints

PortfolioOptimisers.set_brownian_distance_variance_constraints! Function
julia
set_brownian_distance_variance_constraints!(
    model::Model,
    _::NormOneConeBrownianDistanceVariance,
    Dt::AbstractMatrix{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
    Dx::AbstractMatrix{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}}
)

Add auxiliary BDV constraints linking the symmetric distance matrix Dt to portfolio-return differences Dx.

The NormOneConeBrownianDistanceVariance overload adds per-element L1-norm cone constraints [sc * Dt[i,j]; sc * Dx[i,j]] in NormOneCone(2) for each upper-triangular entry. The IneqBrownianDistanceVariance overload adds global non-negativity constraints on Dt - Dx and Dt + Dx.

Arguments

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

  • Dt::MatNum: Symmetric JuMP matrix variable for absolute distances.

  • Dx::MatNum: JuMP expression matrix for portfolio-return pairwise differences.

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_brownian_distance_risk_constraint! Function
julia
set_brownian_distance_risk_constraint!(
    model::Model,
    _::QuadRiskExpr,
    Dt::AbstractMatrix{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
    iT2::Number
) -> Any

Build the Brownian distance variance risk expression.

The QuadRiskExpr overload encodes BDV as a quadratic dot product of Dt plus a squared sum term. The RSOCRiskExpr overload introduces a scalar variable tDt bounded by a rotated second-order cone on vec(Dt), then builds the same expression with tDt in place of the quadratic dot product.

Arguments

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

  • Dt::MatNum: Symmetric distance matrix variable.

  • iT2::Number: Inverse square of the number of observations (1 / T^2).

Returns

  • bdvariance_risk: JuMP expression for the Brownian distance variance risk.

Related

source
PortfolioOptimisers.set_risk_constraints! Method
julia
set_risk_constraints!(
    model::Model,
    ,
    r::BrownianDistanceVariance,
    opt::RiskJuMPOptimisationEstimator,
    pr::AbstractPriorResult,
    args...;
    kwargs...
) -> Any

Add Brownian distance variance risk constraints to model.

Constructs the pairwise return difference matrix Dx, introduces a symmetric variable matrix Dt, builds the BDV risk expression via set_brownian_distance_risk_constraint!, and links Dt to Dx via set_brownian_distance_variance_constraints!. Returns the existing expression if already present.

Arguments

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

  • r::BrownianDistanceVariance: BDV risk measure instance.

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

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

Returns

  • nothing.

Related

source