Turnover Constraints: private API
PortfolioOptimisers.set_turnover_constraints! — Function
set_turnover_constraints!(args...)
Add turnover constraints to the JuMP optimisation model.
The fall-through method does nothing. The concrete method iterates over the collection of Turnover objects tns and delegates each to _set_turnover_constraints!.
Arguments
model::JuMP.Model: The JuMP optimisation model.tns: One or moreTurnoverconstraint specifications.
Returns
nothing.
Related
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 weightswand toleranceval.i::Integer = 1: Index used to generate unique variable and constraint names.
Returns
nothing.
Related