Turnover Risk Measure Constraints: private API

PortfolioOptimisers.set_risk_constraints!Method
set_risk_constraints!(
    model::Model,
    i,
    r::TurnoverRiskMeasure,
    opt::RiskJuMPOptimisationEstimator,
    ::AbstractPriorResult,
    args...;
    prefix,
    kwargs...
) -> VariableRef

Add turnover risk constraints to model.

Introduces a scalar variable turnover_risk and the L1-norm cone constraint [sc * turnover_risk; sc * (w - benchmark * k)] in NormOneCone(1 + N) where benchmark is the reference weight vector from r.w.

Mathematical definition

\[\begin{align} \mathrm{Turnover}(\boldsymbol{w}) &= \lVert \boldsymbol{w} - \boldsymbol{w}_b k \rVert_1\,. \end{align}\]

Where:

  • $\mathrm{Turnover}(\boldsymbol{w})$: Portfolio turnover.
  • $\boldsymbol{w}$: Portfolio weights vector $N \times 1$.
  • $\boldsymbol{w}_b$: Benchmark weight vector.
  • $k$: Rebalancing factor (0 or 1).
  • $\lVert \cdot \rVert_1$: L1 norm.

where $\boldsymbol{w}_b$ is the benchmark weight vector and $k$ is the budget scaling variable.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.
  • i: Constraint index for unique variable and constraint naming.
  • r::TurnoverRiskMeasure: Turnover risk measure instance carrying the benchmark weights.
  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

Returns

  • nothing.

Related

source