Skip to content
13

Relaxed risk budgeting

PortfolioOptimisers.RelaxedRiskBudgetingAlgorithm Type
julia
abstract type RelaxedRiskBudgetingAlgorithm <: OptimisationAlgorithm

Abstract supertype for relaxed risk budgeting algorithm variants.

Related Types

source
PortfolioOptimisers.BasicRelaxedRiskBudgeting Type
julia
struct BasicRelaxedRiskBudgeting <: RelaxedRiskBudgetingAlgorithm

Basic Relaxed Risk Budgeting formulation.

Uses the basic Second Order Cone (SOC) relaxation of the risk budgeting problem without additional regularisation.

Related Types

source
PortfolioOptimisers.RegularisedRelaxedRiskBudgeting Type
julia
struct RegularisedRelaxedRiskBudgeting <: RelaxedRiskBudgetingAlgorithm

Regularised Relaxed Risk Budgeting formulation.

Extends the basic SOC formulation with a regularisation term to improve numerical stability.

Related Types

source
PortfolioOptimisers.RegularisedPenalisedRelaxedRiskBudgeting Type
julia
struct RegularisedPenalisedRelaxedRiskBudgeting{__T_p} <: RelaxedRiskBudgetingAlgorithm

Regularised and penalised Relaxed Risk Budgeting formulation.

Extends the regularised formulation with a penalty on deviations from target risk budgets, controlled by parameter p.

Fields

  • p: Penalty parameter (positive finite number).

Constructors

julia
RegularisedPenalisedRelaxedRiskBudgeting(;
    p::Number = 1.0
) -> RegularisedPenalisedRelaxedRiskBudgeting

Keywords correspond to the struct's fields.

Validation

  • isfinite(p) and p > 0.

Related Types

source
PortfolioOptimisers.RelaxedRiskBudgeting Type
julia
struct RelaxedRiskBudgeting{__T_opt, __T_rba, __T_wi, __T_alg, __T_fb} <: JuMPOptimisationEstimator

Relaxed Risk Budgeting (RRB) portfolio optimiser.

RelaxedRiskBudgeting implements a relaxed formulation of the risk budgeting problem using a Second Order Cone constraint on the portfolio variance. Unlike RiskBudgeting, it does not require a logarithmic or mixed-integer formulation, making it computationally more tractable.

Fields

  • opt: JuMP optimiser configuration.

  • rba: Risk budgeting algorithm.

  • wi: Initial weights for warm-starting.

  • alg: Relaxed risk budgeting algorithm variant.

  • fb: Fallback optimiser.

Constructors

julia
RelaxedRiskBudgeting(;
    opt::JuMPOptimiser = JuMPOptimiser(),
    rba::RiskBudgetingAlgorithm = AssetRiskBudgeting(),
    wi::Option{<:VecNum} = nothing,
    alg::RelaxedRiskBudgetingAlgorithm = BasicRelaxedRiskBudgeting(),
    fb::Option{<:OptE_Opt} = nothing
) -> RelaxedRiskBudgeting

Keywords correspond to the struct's fields.

Related

source
PortfolioOptimisers.set_relaxed_risk_budgeting_alg_constraints! Function
julia
set_relaxed_risk_budgeting_alg_constraints!(alg, model, w, sigma, chol)

Add algorithm-specific second-order cone constraints for Relaxed Risk Budgeting.

Dispatches based on the RRB algorithm variant. Adds second-order cone constraints implementing the basic, regularised, or regularised-penalised RRB formulation.

Arguments

Returns

  • nothing.

Related

source
PortfolioOptimisers.set_relaxed_risk_budgeting_constraints! Function
julia
set_relaxed_risk_budgeting_constraints!(model, rrb, pr, wb, args...)

Add Relaxed Risk Budgeting (RRB) constraints and weight variables to the JuMP model.

Dispatches based on the risk budgeting algorithm type. Configures weight variables, budget constraints, second-order cone constraints, and weight bounds.

Arguments

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

  • rrb::RelaxedRiskBudgeting: RRB estimator configuration.

  • pr::AbstractPriorResult: Prior result with asset moments.

  • wb::WeightBounds: Weight bounds configuration.

  • args...: Additional arguments (e.g. returns data for factor risk budgeting).

Returns

  • Processed risk budgeting attributes.

Related

source
PortfolioOptimisers.optimise Function
julia
optimise(rrb::RelaxedRiskBudgeting{<:Any, <:Any, <:Any, <:Any, Nothing},
         rd::ReturnsResult = ReturnsResult(); dims::Int = 1,
         str_names::Bool = false, save::Bool = true, kwargs...) -> RiskBudgetingResult

Arguments

  • rrb: The relaxed risk budgeting optimiser to use.

  • rd: The returns result to use. If isa(hec.opt.pe, AbstractPriorResult), rd is not necessary if doing a standalone optimisation, but may be required/desired by fallbacks and/or clusterisation.

  • dims: The dimension along which observations advance in time.

  • str_names: Whether to use string names for the assets in the optimisation.

  • save: Whether to save the JuMP model in the optimisation result.

  • kwargs: Additional keyword arguments passed to the optimisation function.

source