Ulcer Index Constraints: private API
PortfolioOptimisers.set_risk_constraints! — Method
set_risk_constraints!(
model::Model,
,
r::UlcerIndex,
opt::RiskJuMPOptimisationEstimator,
pr::AbstractPriorResult,
args...;
prefix,
kwargs...
) -> Any
Add Ulcer Index risk constraints to model.
Introduces a scalar variable uci and the SOC constraint [sc * uci; sc * dd[2:T+1]] in SecondOrderCone(), then defines uci_risk = uci / sqrt(T). Returns the existing expression if already present.
Mathematical definition
\[\begin{align} \mathrm{UCI}(\boldsymbol{w}) &= \frac{\lVert \boldsymbol{dd} \rVert_2}{\sqrt{T}} = \sqrt{\frac{1}{T}\sum_{t=1}^T dd_t^2}\,. \end{align}\]
Where:
- $\mathrm{UCI}(\boldsymbol{w})$: Ulcer index.
- $\boldsymbol{dd}$: Drawdown vector.
- $T$: Number of observations.
- $dd_t$: Portfolio drawdown at time $t$.
where $dd_t$ is the portfolio drawdown at time $t$.
Arguments
model::JuMP.Model: The JuMP optimisation model.r::UlcerIndex: Ulcer index risk measure instance.opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.pr::AbstractPriorResult: Prior result containing the returns matrixX.
Returns
nothing.
Related