Turnover Constraints: private API

PortfolioOptimisers._set_turnover_constraints!Function
_set_turnover_constraints!(model::Model, tn::Turnover)
_set_turnover_constraints!(
    model::Model,
    tn::Turnover,
    i::Integer
)

Add a single turnover constraint for a Turnover object to the JuMP optimisation model.

Introduces auxiliary variable t_tn_i, expression tn_i = w - wb * k, and enforces ‖w - wb‖₁ ≤ val * k via NormOneCone constraints.

Mathematical definition

\[\begin{align} \boldsymbol{t}_{tn} &\geq |\boldsymbol{w} - \boldsymbol{w}_b k|\,, \\ \boldsymbol{t}_{tn} &\leq \boldsymbol{v} k\,. \end{align}\]

Where:

  • $\boldsymbol{w}$: Portfolio weights vector $N \times 1$.
  • $\boldsymbol{w}_b$: Benchmark weight vector.
  • $k$: Budget scaling / homogenisation variable.
  • $\boldsymbol{v}$: Per-asset turnover limit vector.
  • $\boldsymbol{t}_{tn}$: Auxiliary absolute-deviation variable.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.
  • tn::Turnover: Turnover constraint specification containing benchmark weights w and tolerance val.
  • i::Integer = 1: Index used to generate unique variable and constraint names.

Returns

  • nothing.

Related

source