Entropic X at Risk
PortfolioOptimisers.EntropicValueatRisk — Type
struct EntropicValueatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: RiskMeasureRepresents 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. It is also the divergence Ambiguity Set of the library, read as a risk measure: the worst expected loss over a Kullback-Leibler ball about the sample distribution, at radius $-\ln(\alpha)$.
Mathematical definition
The EVaR is defined via the Chernoff bound as the tightest exponential upper bound on VaR and CVaR:
\[\begin{align} \mathrm{EVaR}_{\alpha}(\boldsymbol{x}) &= \inf_{z > 0} \left\{ z \ln\!\left( \frac{M_{L}(1/z)}{\alpha} \right) \right\}\,. \end{align}\]
Where:
- $\mathrm{EVaR}_{\alpha}(\boldsymbol{x})$: Entropic Value-at-Risk (tightest exponential upper bound on VaR and CVaR).
- $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
- $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
- $L_t = -x_t$: Loss at period $t$.
- $M_L(u) = \mathbb{E}[e^{uL}]$: Moment-generating function of the loss.
- $z$: Exponential tilt parameter.
Computationally, it is solved via the conic programme:
\[\begin{align} \mathrm{EVaR}_{\alpha}(\boldsymbol{x}) &= \underset{t,\, z,\, \boldsymbol{u}}{\min} \left\{ t - z \ln(\alpha T) \;:\; z \geq 0,\; \sum_{i=1}^{T} u_i \leq z,\; (-x_i - t,\, z,\, u_i) \in K_{\exp}\; \forall i \right\}\,. \end{align}\]
Where:
- $T$: Number of observations.
- $t$, $z$, $\boldsymbol{u}$: Conic optimisation variables.
- $K_{\exp} = \{(a, b, c) : b\, e^{a/b} \leq c,\, b > 0\}$: Exponential cone.
For observation-weighted samples with weight vector $\boldsymbol{w}$, the normalisation $\alpha T$ becomes $\alpha \sum_{t=1}^{T} w_t$ and the budget constraint becomes $\boldsymbol{w}^\intercal \boldsymbol{u} \leq z$.
The dual of that programme is the worst expected loss over a Kullback-Leibler ball about the sample distribution:
\[\begin{align} \mathrm{EVaR}_{\alpha}(\boldsymbol{x}) &= \underset{Q \in \mathcal{Q}_{\mathrm{KL}}(\alpha)}{\sup} \mathbb{E}_{Q}[L]\,, \\ \mathcal{Q}_{\mathrm{KL}}(\alpha) &= \left\{ Q : D_{\mathrm{KL}}(Q \,\|\, P) \leq -\ln(\alpha) \right\}\,. \end{align}\]
Where:
- $\mathcal{Q}_{\mathrm{KL}}(\alpha)$: Kullback-Leibler ambiguity ball of radius $-\ln(\alpha)$.
- $D_{\mathrm{KL}}(Q \,\|\, P) = \sum_{t=1}^{T} q_t \ln\!\left(\frac{q_t}{p_t}\right)$: Kullback-Leibler divergence.
- $Q$: Distribution in the ambiguity ball, whose $t$-th probability is $q_t$.
- $P$: Sample distribution of the losses, whose $t$-th probability is $p_t$. It is uniform over the $T$ observations, or the normalised observation weights when they are stated.
- $\mathbb{E}_{Q}[L] = \sum_{t=1}^{T} q_t L_t$: Expected loss under $Q$.
So the significance level is the Ambiguity Radius, through $-\ln(\alpha)$, and a smaller $\alpha$ widens the ball. The ball is a reading of this measure and not an object, so no estimator constructs one.
Fields
settings: Risk measure settings.
slv: Solver or vector of solvers.
alpha: Quantile level for the lower tail. The bound isNum_SigCal, so the slot takes the level itself, anAbstractSignificanceCalibrationAlgorithmthat computes it from the prior result, or a plain function of the same five arguments.
w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
EntropicValueatRisk(; settings::RiskMeasureSettings = RiskMeasureSettings(), slv::Option{<:Slv_VecSlv} = nothing, alpha::Num_SigCal = 0.05, w::Option{<:ObsWeights} = nothing) -> EntropicValueatRiskKeywords correspond to the struct's fields.
Validation
- If
alphais a number:0 < alpha < 1. - If
slvis aVecSlv:!isempty(slv). - If
wis notnothing:!isempty(w).
Functor
(r::EntropicValueatRisk)(x::VecNum)Computes the EVaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> EntropicValueatRisk()EntropicValueatRisk settings ┼ RiskMeasureSettings │ scale ┼ Float64: 1.0 │ ub ┼ nothing │ rke ┴ Bool: true slv ┼ nothing alpha ┼ Float64: 0.05 w ┴ nothingRelated
References
- [104] A. Ahmadi-Javid. Entropic value-at-risk: A new coherent risk measure. Journal of Optimization Theory and Applications 155, 1105–1123 (2012).
PortfolioOptimisers.EntropicValueatRiskRange — Type
struct EntropicValueatRiskRange{__T_settings, __T_slv, __T_alpha, __T_beta, __T_w} <: RiskMeasureRepresents the Entropic Value-at-Risk Range (EVaR Range) risk measure.
EntropicValueatRiskRange computes the sum of the lower-tail EVaR (at level alpha) and the upper-tail EVaR (at level beta).
Mathematical definition
\[\begin{align} \mathrm{EVaRRange}_{\alpha,\beta}(\boldsymbol{x}) &= \mathrm{EVaR}_{\alpha}(\boldsymbol{x}) + \mathrm{EVaR}_{\beta}(-\boldsymbol{x})\,. \end{align}\]
Where:
- $\mathrm{EVaRRange}_{\alpha,\beta}(\boldsymbol{x})$: EVaR range (entropic tail spread).
- $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
- $\mathrm{EVaR}_{\alpha}(\boldsymbol{x})$: Lower-tail entropic risk at level $\alpha$.
- $\mathrm{EVaR}_{\beta}(-\boldsymbol{x})$: Upper-tail entropic risk at level $\beta$.
The upper tail is the base measure applied to the negated returns $-\boldsymbol{x}$, so both tails are reported on the same sign convention and the range is their sum, not their difference.
Each term is the worst expected loss over its own Kullback-Leibler ball about the sample distribution, at radius $-\ln(\alpha)$ on the lower tail and $-\ln(\beta)$ on the upper tail. EntropicValueatRisk states the ball.
Fields
settings: Risk measure settings.
slv: Solver or vector of solvers.
alpha: Quantile level for the lower tail. The bound isNum_SigCal, so the slot takes the level itself, anAbstractSignificanceCalibrationAlgorithmthat computes it from the prior result, or a plain function of the same five arguments.
beta: Quantile level for the upper tail. The bound isNum_SigCal, so the slot takes the level itself, anAbstractSignificanceCalibrationAlgorithmthat computes it from the prior result, or a plain function of the same five arguments.
w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
EntropicValueatRiskRange(; settings::RiskMeasureSettings = RiskMeasureSettings(), slv::Option{<:Slv_VecSlv} = nothing, alpha::Num_SigCal = 0.05, beta::Num_SigCal = alpha, w::Option{<:ObsWeights} = nothing) -> EntropicValueatRiskRangeKeywords correspond to the struct's fields.
Validation
- If
alphais a number:0 < alpha < 1. Ifbetais a number:0 < beta < 1. - If
slvis aVecSlv:!isempty(slv). - If
wis notnothing:!isempty(w).
Related
References
- [104] A. Ahmadi-Javid. Entropic value-at-risk: A new coherent risk measure. Journal of Optimization Theory and Applications 155, 1105–1123 (2012).
PortfolioOptimisers.EntropicDrawdownatRisk — Type
struct EntropicDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: RiskMeasureRepresents 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:
\[\begin{align} c_t &= \sum_{s=1}^{t} x_s\,, \\ d_t &= c_t - \max_{0 \leq s \leq t} c_s \leq 0\,. \end{align}\]
Where:
- $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
- $c_t$: Cumulative simple portfolio return at period $t$.
- $d_t \leq 0$: Absolute drawdown at period $t$.
The EDaR is the EVaR of the drawdown series:
\[\begin{align} \mathrm{EDaR}_{\alpha}(\boldsymbol{x}) &= \mathrm{EVaR}_{\alpha}(\boldsymbol{d}(\boldsymbol{x}))\,. \end{align}\]
Where:
- $\mathrm{EDaR}_{\alpha}(\boldsymbol{x})$: Entropic Drawdown-at-Risk.
- $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
- $\boldsymbol{d}(\boldsymbol{x})$: Absolute drawdown series vector $T \times 1$.
So the EDaR is the worst expected drawdown over a Kullback-Leibler ball about the sample distribution of $\boldsymbol{d}(\boldsymbol{x})$, at radius $-\ln(\alpha)$. EntropicValueatRisk states the ball.
Fields
settings: Risk measure settings.
slv: Solver or vector of solvers.
alpha: Quantile level for the lower tail. The bound isNum_SigCal, so the slot takes the level itself, anAbstractSignificanceCalibrationAlgorithmthat computes it from the prior result, or a plain function of the same five arguments.
w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
EntropicDrawdownatRisk(; settings::RiskMeasureSettings = RiskMeasureSettings(), slv::Option{<:Slv_VecSlv} = nothing, alpha::Num_SigCal = 0.05, w::Option{<:ObsWeights} = nothing) -> EntropicDrawdownatRiskKeywords correspond to the struct's fields.
Validation
- If
alphais a number:0 < alpha < 1. - If
slvis aVecSlv:!isempty(slv). - If
wis notnothing:!isempty(w).
Functor
(r::EntropicDrawdownatRisk)(x::VecNum)Computes the EDaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> EntropicDrawdownatRisk()EntropicDrawdownatRisk settings ┼ RiskMeasureSettings │ scale ┼ Float64: 1.0 │ ub ┼ nothing │ rke ┴ Bool: true slv ┼ nothing alpha ┼ Float64: 0.05 w ┴ nothingRelated
RiskMeasureRiskMeasureSettingsEntropicValueatRiskRelativisticDrawdownatRiskRelativeEntropicDrawdownatRisk
References
- [102] A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).
- [104] A. Ahmadi-Javid. Entropic value-at-risk: A new coherent risk measure. Journal of Optimization Theory and Applications 155, 1105–1123 (2012).
PortfolioOptimisers.RelativeEntropicDrawdownatRisk — Type
struct RelativeEntropicDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_w} <: HierarchicalRiskMeasureRepresents 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:
\[\begin{align} C_t &= \prod_{s=1}^{t} (1 + x_s)\,, \\ rd_t &= \frac{C_t}{\max_{0 \leq s \leq t} C_s} - 1 \leq 0\,. \end{align}\]
Where:
- $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
- $C_t$: Compound wealth process at period $t$.
- $rd_t \leq 0$: Relative drawdown at period $t$.
The Relative EDaR is the EVaR of the relative drawdown series:
\[\begin{align} \mathrm{REDaR}_{\alpha}(\boldsymbol{x}) &= \mathrm{EVaR}_{\alpha}(\boldsymbol{rd}(\boldsymbol{x}))\,. \end{align}\]
Where:
- $\mathrm{REDaR}_{\alpha}(\boldsymbol{x})$: Relative Entropic Drawdown-at-Risk.
- $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
- $\boldsymbol{rd}(\boldsymbol{x})$: Relative drawdown series vector $T \times 1$.
So the Relative EDaR is the worst expected relative drawdown over a Kullback-Leibler ball about the sample distribution of $\boldsymbol{rd}(\boldsymbol{x})$, at radius $-\ln(\alpha)$. EntropicValueatRisk states the ball.
Fields
settings: Risk measure settings.
slv: Solver or vector of solvers.
alpha: Quantile level for the lower tail. The bound isNum_SigCal, so the slot takes the level itself, anAbstractSignificanceCalibrationAlgorithmthat computes it from the prior result, or a plain function of the same five arguments.
w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
RelativeEntropicDrawdownatRisk(; settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings(), slv::Option{<:Slv_VecSlv} = nothing, alpha::Num_SigCal = 0.05, w::Option{<:ObsWeights} = nothing) -> RelativeEntropicDrawdownatRiskKeywords correspond to the struct's fields.
Validation
- If
alphais a number:0 < alpha < 1. - If
slvis aVecSlv:!isempty(slv). - If
wis notnothing:!isempty(w).
Functor
(r::RelativeEntropicDrawdownatRisk)(x::VecNum)Computes the Relative EDaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> RelativeEntropicDrawdownatRisk()RelativeEntropicDrawdownatRisk settings ┼ HierarchicalRiskMeasureSettings │ scale ┴ Float64: 1.0 slv ┼ nothing alpha ┼ Float64: 0.05 w ┴ nothingRelated
HierarchicalRiskMeasureHierarchicalRiskMeasureSettingsEntropicDrawdownatRiskRelativeRelativisticDrawdownatRisk
References
- [102] A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).
- [104] A. Ahmadi-Javid. Entropic value-at-risk: A new coherent risk measure. Journal of Optimization Theory and Applications 155, 1105–1123 (2012).
References
- [102]
- A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).
- [104]
- A. Ahmadi-Javid. Entropic value-at-risk: A new coherent risk measure. Journal of Optimization Theory and Applications 155, 1105–1123 (2012).