Maximum Drawdown Constraints: private API

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

Add maximum drawdown risk constraints to model.

Introduces a scalar variable mdd_risk and the constraint sc * (mdd_risk .- dd[2:T+1]) >= 0 so that mdd_risk upper-bounds every drawdown observation. Returns the existing expression if already present.

Mathematical definition

\[\begin{align} \mathrm{MDD}(\boldsymbol{w}) &= \max_{t=1,\ldots,T} dd_t\,. \end{align}\]

Where:

  • $\mathrm{MDD}(\boldsymbol{w})$: Maximum drawdown.
  • $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::MaximumDrawdown: Maximum drawdown risk measure instance.
  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.
  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

Returns

  • nothing.

Related

source