Skip to content
13

Entropic XatRisk Constraints

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

Add Entropic Value-at-Risk, EVaR range, or Entropic Drawdown-at-Risk constraints to model.

Each overload uses exponential cone constraints (ExponentialCone) to encode the cumulant generating function bound. Scalar variables t, z, and per-observation variables u are introduced. EVaR and EDaR encode the single-tail bound; the range variant encodes both a lower and upper exponential cone.

Mathematical definition

Entropic Value-at-Risk via exponential cone (Ahmadi-Javid 2012):

\begin{align} \mathrm{EVaR}_\alpha(\boldsymbol{w}) &= t - z \ln(\alpha T)\,, \\ \sum_{t&=1}^T u_t \leq z\,. \end{align}

Where:

  • EVaRα(w): Entropic Value-at-Risk.

  • t, z: Dual variables for the exponential cone programme.

  • ut: Auxiliary exponential cone variables.

  • α: Significance level (left tail probability), α(0,1).

  • T: Number of observations.

(r^tt,z,ut)Kexpt.

Where:

  • r^t: Portfolio return at time t.

  • Kexp={(a,b,c):bea/bc,b>0}: Exponential cone.

  • ut: Auxiliary exponential cone variables.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r: Risk measure instance.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

Returns

  • nothing.

Related

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

Add JuMP risk constraints for EntropicValueatRiskRange (EVaR range) to model.

Introduces two sets of exponential cone variables for the lower-tail and upper-tail EVaR expressions and computes their difference as the range risk.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::EntropicValueatRiskRange: The EVaR range risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

Returns

  • nothing.

Related

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

Add JuMP risk constraints for EntropicDrawdownatRisk (EDaR) to model.

Uses exponential cone constraints applied to the drawdown series to encode the entropic drawdown-at-risk at confidence level r.alpha.

Arguments

  • model::JuMP.Model: The JuMP optimisation model.

  • i: Constraint index for unique variable and constraint naming.

  • r::EntropicDrawdownatRisk: The EDaR risk measure.

  • opt::RiskJuMPOptimisationEstimator: Risk-based optimisation estimator.

  • pr::AbstractPriorResult: Prior result containing the returns matrix X.

Returns

  • nothing.

Related

source