Range Constraints: private API

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

Add range risk constraints to model.

Calls set_wr_risk_expression! to obtain the worst-realisation variable, then introduces a best-realisation variable br_risk with constraint sc * (br_risk .+ net_X) <= 0, and defines range_risk = wr_risk - br_risk. Returns the existing expression if already present.

Mathematical definition

\[\begin{align} \mathrm{Range}(\boldsymbol{w}) &= \max_t(-\hat{r}_t) - \min_t(-\hat{r}_t) = \mathrm{WR} - \mathrm{BR}\,. \end{align}\]

Where:

  • $\mathrm{Range}(\boldsymbol{w})$: Return range.
  • $\mathrm{WR} = -\min_t \hat{r}_t$: Worst realisation.
  • $\mathrm{BR} = \max_t \hat{r}_t$: Best realisation.
  • $\hat{r}_t = \boldsymbol{x}_t^\intercal \boldsymbol{w}$: Portfolio return at time $t$.

where $\mathrm{WR} = -\min_t \hat{r}_t$ and $\mathrm{BR} = -\max_t \hat{r}_t$.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.
  • r::Range: Range risk measure instance.
  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.
  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

Returns

  • nothing.

Related

source