Skip to content
13

Entropic X at Risk

PortfolioOptimisers.EntropicValueatRisk Type
julia
struct EntropicValueatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: RiskMeasure

Represents the Entropic Value-at-Risk (EVaR) risk measure.

EntropicValueatRisk is a coherent risk measure based on the Chernoff bound. It is an upper bound for both CVaR and VaR and is computed by solving a conic optimisation problem via an external solver.

Mathematical Definition

The EVaR is defined via the Chernoff bound as the tightest exponential upper bound on VaR and CVaR:

EVaRα(x)=infz>0{zln(ML(1/z)α)},

where Lt=xt is the loss and ML(u)=E[euL] is the moment-generating function. Computationally, it is solved via the conic programme:

EVaRα(x)=mint,z0,u{tzln(αT):i=1Tuiz,(xit,z,ui)Kexpi},

where Kexp={(a,b,c):bea/bc,b>0} is the exponential cone.

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • w: Optional observation weights.

Constructors

julia
EntropicValueatRisk(;
    settings::RiskMeasureSettings = RiskMeasureSettings(),
    slv::Option{<:Slv_VecSlv} = nothing,
    alpha::Number = 0.05,
    w::Option{<:ObsWeights} = nothing
) -> EntropicValueatRisk

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

julia
(r::EntropicValueatRisk)(x::VecNum)

Computes the EVaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
julia> EntropicValueatRisk()
EntropicValueatRisk
  settings ┼ RiskMeasureSettings
           │   scale ┼ Float64: 1.0
           │      ub ┼ nothing
           │     rke ┴ Bool: true
       slv ┼ nothing
     alpha ┼ Float64: 0.05
         w ┴ nothing

Related

source
PortfolioOptimisers.EntropicValueatRiskRange Type
julia
struct EntropicValueatRiskRange{__T_settings, __T_slv, __T_alpha, __T_beta, __T_w} <: RiskMeasure

Represents the Entropic Value-at-Risk Range (EVaR Range) risk measure.

EntropicValueatRiskRange computes the difference between the lower-tail EVaR (at level alpha) and the upper-tail EVaR (at level beta).

Mathematical Definition

EVaRRangeα,β(x)=EVaRα(x)+EVaRβ(x),

where EVaRα(x) captures the lower-tail entropic risk and EVaRβ(x) captures the upper-tail entropic risk (gain).

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • beta: Significance level for the upper tail.

  • w: Optional observation weights.

Constructors

julia
EntropicValueatRiskRange(;
    settings::RiskMeasureSettings = RiskMeasureSettings(),
    slv::Option{<:Slv_VecSlv} = nothing,
    alpha::Number = 0.05,
    beta::Number = 0.05,
    w::Option{<:ObsWeights} = nothing
) -> EntropicValueatRiskRange

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1, 0 < beta < 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Related

source
PortfolioOptimisers.EntropicDrawdownatRisk Type
julia
struct EntropicDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: RiskMeasure

Represents the Entropic Drawdown-at-Risk (EDaR) risk measure.

EntropicDrawdownatRisk applies the Entropic Value-at-Risk framework to the absolute drawdown series of portfolio returns. It is a coherent risk measure providing an upper bound on both the Drawdown-at-Risk and Conditional Drawdown-at-Risk.

Mathematical Definition

Define the absolute drawdown series:

ct=s=1txs,dt=ctmax0stcs0.

The EDaR is the EVaR of the drawdown series:

EDaRα(x)=EVaRα(d(x)).

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • w: Optional observation weights.

Constructors

julia
EntropicDrawdownatRisk(;
    settings::RiskMeasureSettings = RiskMeasureSettings(),
    slv::Option{<:Slv_VecSlv} = nothing,
    alpha::Number = 0.05,
    w::Option{<:ObsWeights} = nothing
) -> EntropicDrawdownatRisk

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

julia
(r::EntropicDrawdownatRisk)(x::VecNum)

Computes the EDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
julia> EntropicDrawdownatRisk()
EntropicDrawdownatRisk
  settings ┼ RiskMeasureSettings
           │   scale ┼ Float64: 1.0
           │      ub ┼ nothing
           │     rke ┴ Bool: true
       slv ┼ nothing
     alpha ┼ Float64: 0.05
         w ┴ nothing

Related

source
PortfolioOptimisers.RelativeEntropicDrawdownatRisk Type
julia
struct RelativeEntropicDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: HierarchicalRiskMeasure

Represents the Relative Entropic Drawdown-at-Risk (Relative EDaR) risk measure for hierarchical optimisation.

RelativeEntropicDrawdownatRisk applies the Entropic Value-at-Risk framework to the relative (compounded) drawdown series of portfolio returns.

Mathematical Definition

Define the compounded wealth process and relative drawdown series:

Ct=s=1t(1+xs),rdt=Ctmax0stCs10.

The Relative EDaR is the EVaR of the relative drawdown series:

REDaRα(x)=EVaRα(rd(x)).

Fields

  • settings: Hierarchical risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • w: Optional observation weights.

Constructors

julia
RelativeEntropicDrawdownatRisk(;
    settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings(),
    slv::Option{<:Slv_VecSlv} = nothing,
    alpha::Number = 0.05,
    w::Option{<:ObsWeights} = nothing
) -> RelativeEntropicDrawdownatRisk

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

julia
(r::RelativeEntropicDrawdownatRisk)(x::VecNum)

Computes the Relative EDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
julia> RelativeEntropicDrawdownatRisk()
RelativeEntropicDrawdownatRisk
  settings ┼ HierarchicalRiskMeasureSettings
           │   scale ┴ Float64: 1.0
       slv ┼ nothing
     alpha ┼ Float64: 0.05
         w ┴ nothing

Related

source