Brownian Distance Variance Constraints
PortfolioOptimisers.set_brownian_distance_variance_constraints! Function
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
sourcePortfolioOptimisers.set_brownian_distance_risk_constraint! Function
set_brownian_distance_risk_constraint!(
model::Model,
_::QuadRiskExpr,
Dt::AbstractMatrix{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
iT2::Number
) -> AnyBuild 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
sourcePortfolioOptimisers.set_risk_constraints! Method
set_risk_constraints!(
model::Model,
,
r::BrownianDistanceVariance,
opt::RiskJuMPOptimisationEstimator,
pr::AbstractPriorResult,
args...;
kwargs...
) -> AnyAdd 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 matrixX.
Returns
nothing.
Related