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 matrixX.
Returns
nothing.
Related