Skip to content
13

Factor risk contribution

PortfolioOptimisers.FactorRiskContributionResult Type
julia
struct FactorRiskContributionResult{__T_oe, __T_pa, __T_rr, __T_frc_plr, __T_retcode, __T_sol, __T_model, __T_fb} <: NonFiniteAllocationOptimisationResult

Result type for Factor Risk Contribution portfolio optimisation.

Fields

  • oe: Type of the optimisation estimator that produced this result.

  • pa: Processed optimisation attributes.

  • rr: Regression result used for factor decomposition.

  • frc_plr: Factor risk contribution placeholder result.

  • retcode: Optimisation return code.

  • sol: JuMP model solution.

  • model: The JuMP model.

  • fb: Fallback result.

The w property is forwarded from sol.w.

Related

source
PortfolioOptimisers.FactorRiskContribution Type
julia
struct FactorRiskContribution{__T_opt, __T_re, __T_r, __T_obj, __T_frc_ple, __T_sets, __T_wi, __T_flag, __T_fb} <: RiskJuMPOptimisationEstimator

Factor Risk Contribution (FRC) portfolio optimiser.

FactorRiskContribution allocates portfolio weights so that each factor (and the idiosyncratic component) contributes a target proportion to the total portfolio risk. It combines factor regression with a JuMP-based risk budgeting optimisation.

Fields

  • opt: JuMP optimiser configuration.

  • re: Regression estimator for computing factor loadings.

  • r: Risk measure or vector of risk measures.

  • obj: Portfolio objective function.

  • frc_ple: Factor risk contribution placeholder constraints.

  • sets: Asset sets.

  • wi: Initial weights for warm-starting.

  • flag: If true, uses the full factor regression decomposition; if false, uses a simplified approach.

  • fb: Fallback optimiser.

Constructors

julia
FactorRiskContribution(;
    opt::JuMPOptimiser = JuMPOptimiser(),
    re::RegE_Reg = StepwiseRegression(),
    r::RM_VecRM = Variance(),
    obj::ObjectiveFunction = MinimumRisk(),
    frc_ple::Option{<:PlCE_PhC_VecPlCE_PlC} = nothing,
    sets::Option{<:AssetSets} = nothing,
    wi::Option{<:VecNum} = nothing,
    flag::Bool = false,
    fb::Option{<:OptE_Opt} = nothing
) -> FactorRiskContribution

Keywords correspond to the struct's fields.

Related

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

Arguments

  • frc: The factor risk contribution 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