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"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
    Dx::AbstractMatrix{<:Union{var"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}};
    prefix
)

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.

Mathematical definition

Dt(i,j)|r^ir^j|,BDV(w)=1T2i,jDt(i,j)2(1T2i,jDt(i,j))2.

Where:

  • Dt(i,j): Distance auxiliary variable between returns at times i and j.

  • r^i, r^j: Portfolio returns at times i and j.

  • BDV(w): Brownian distance variance.

  • T: Number of observations.

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"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
    iT2::Number;
    prefix
) -> 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...;
    prefix,
    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