Power Norm X at Risk

PortfolioOptimisers.PowerNormValueatRiskType
struct PowerNormValueatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: RiskMeasure

Represents the Power Norm Value-at-Risk (PNVaR) risk measure.

PowerNormValueatRisk is a coherent risk measure that generalises EVaR by replacing the exponential moment-generating function with a power-norm. It is parametrised by a power $p \geq 1$ and a significance level $\alpha$, and is solved via a conic programme.

Mathematical definition

The PNVaR at level $\alpha$ with power $p$ is:

\[\begin{align} \mathrm{PNVaR}_{\alpha,p}(\boldsymbol{x}) &= \underset{\eta,\, t,\, \boldsymbol{w},\, \boldsymbol{v}}{\min} \left\{ \eta + \frac{t}{\alpha T^{1/p}} \;:\; \boldsymbol{w} \geq \boldsymbol{0},\; \sum_{i=1}^{T} v_i \leq t,\; (x_i + w_i) + \eta \geq 0,\; (v_i, t, w_i) \in \mathcal{K}_{\mathrm{pow}}(1/p)\; \forall i \right\}\,. \end{align}\]

Where:

  • $\mathrm{PNVaR}_{\alpha,p}(\boldsymbol{x})$: Power Norm Value-at-Risk.
  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
  • $T$: Number of observations.
  • $p \geq 1$: Power parameter.
  • $\eta$, $t$, $\boldsymbol{w}$, $\boldsymbol{v}$: Conic optimisation variables.
  • $\mathcal{K}_{\mathrm{pow}}(p') = \{(a,b,c) : a^{p'} b^{1-p'} \geq |c|,\, a \geq 0,\, b \geq 0\}$: Power cone.

The conic variable $\boldsymbol{w}$ is unrelated to the w field, which carries the observation weights. Write those weights $\boldsymbol{q}$. When they are present, the normalisation $T^{1/p}$ becomes $\left(\sum_{t=1}^{T} q_t\right)^{1/p}$ and the budget constraint becomes $\sum_{i=1}^{T} q_i v_i \leq t$.

Fields

  • settings: Risk measure settings.
  • slv: Solver or vector of solvers.
  • p: Power or order parameter.
  • w: Optional observation weights vector observations × 1, or a concrete subtype of DynamicAbstractWeights. If nothing, the computation is unweighted.

Constructors

PowerNormValueatRisk(;    settings::RiskMeasureSettings = RiskMeasureSettings(),    slv::Option{<:Slv_VecSlv} = nothing,    alpha::Num_SigCal = 0.05,    p::Number = 2.0,    w::Option{<:ObsWeights} = nothing) -> PowerNormValueatRisk

Keywords correspond to the struct's fields.

Validation

  • If alpha is a number: 0 < alpha < 1.
  • p >= 1.
  • If slv is a VecSlv: !isempty(slv).
  • If w is not nothing: !isempty(w).

Functor

(r::PowerNormValueatRisk)(x::VecNum)

Computes the PNVaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

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

Related

References

  • [106] P. A. Krokhmal. Higher moment coherent risk measures. Quantitative Finance 7, 373–387 (2007).
source
PortfolioOptimisers.PowerNormValueatRiskRangeType
struct PowerNormValueatRiskRange{__T_settings, __T_slv, __T_alpha, __T_beta, __T_pa, __T_pb, __T_w} <: RiskMeasure

Represents the Power Norm Value-at-Risk Range (PNVaRRange) risk measure.

PowerNormValueatRiskRange computes the sum of the lower-tail PNVaR (at level alpha with power pa) and the upper-tail PNVaR (at level beta with power pb).

Mathematical definition

\[\begin{align} \mathrm{PNVaRRange}_{\alpha,p_a,\beta,p_b}(\boldsymbol{x}) &= \mathrm{PNVaR}_{\alpha,p_a}(\boldsymbol{x}) + \mathrm{PNVaR}_{\beta,p_b}(-\boldsymbol{x})\,. \end{align}\]

Where:

  • $\mathrm{PNVaRRange}_{\alpha,p_a,\beta,p_b}(\boldsymbol{x})$: Power Norm VaR range.
  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $\mathrm{PNVaR}_{\alpha,p_a}(\boldsymbol{x})$: Lower-tail PNVaR with parameters $(\alpha, p_a)$.
  • $\mathrm{PNVaR}_{\beta,p_b}(-\boldsymbol{x})$: Upper-tail PNVaR with parameters $(\beta, p_b)$.

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.

Fields

  • settings: Risk measure settings.
  • slv: Solver or vector of solvers.
  • pa: Power norm parameter for the lower tail.
  • pb: Power norm parameter for the upper tail.
  • w: Optional observation weights vector observations × 1, or a concrete subtype of DynamicAbstractWeights. If nothing, the computation is unweighted.

Constructors

PowerNormValueatRiskRange(;    settings::RiskMeasureSettings = RiskMeasureSettings(),    slv::Option{<:Slv_VecSlv} = nothing,    alpha::Num_SigCal = 0.05,    beta::Num_SigCal = alpha,    pa::Number = 2.0,    pb::Number = pa,    w::Option{<:ObsWeights} = nothing) -> PowerNormValueatRiskRange

Keywords correspond to the struct's fields.

Validation

  • If alpha is a number: 0 < alpha < 1. If beta is a number: 0 < beta < 1.
  • pa > 1, pb > 1.
  • If slv is a VecSlv: !isempty(slv).
  • If w is not nothing: !isempty(w).

Functor

(r::PowerNormValueatRiskRange)(x::VecNum)

Computes the PNVaR Range of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia> PowerNormValueatRiskRange()PowerNormValueatRiskRange  settings ┼ RiskMeasureSettings           │   scale ┼ Float64: 1.0           │      ub ┼ nothing           │     rke ┴ Bool: true       slv ┼ nothing     alpha ┼ Float64: 0.05      beta ┼ Float64: 0.05        pa ┼ Float64: 2.0        pb ┼ Float64: 2.0         w ┴ nothing

Related

References

  • [106] P. A. Krokhmal. Higher moment coherent risk measures. Quantitative Finance 7, 373–387 (2007).
source
PortfolioOptimisers.PowerNormDrawdownatRiskType
struct PowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: RiskMeasure

Represents the Power Norm Drawdown-at-Risk (PNDaR) risk measure.

PowerNormDrawdownatRisk applies the Power Norm Value-at-Risk framework to the absolute drawdown series of portfolio returns.

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 Power Norm Drawdown-at-Risk is the PNVaR of the drawdown series:

\[\begin{align} \mathrm{PNDaR}_{\alpha,p}(\boldsymbol{x}) &= \mathrm{PNVaR}_{\alpha,p}(\boldsymbol{d}(\boldsymbol{x}))\,. \end{align}\]

Where:

  • $\mathrm{PNDaR}_{\alpha,p}(\boldsymbol{x})$: Power Norm Drawdown-at-Risk.
  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
  • $p \geq 1$: Power parameter.
  • $\boldsymbol{d}(\boldsymbol{x})$: Absolute drawdown series.

Fields

  • settings: Risk measure settings.
  • slv: Solver or vector of solvers.
  • p: Power or order parameter.
  • w: Optional observation weights vector observations × 1, or a concrete subtype of DynamicAbstractWeights. If nothing, the computation is unweighted.

Constructors

PowerNormDrawdownatRisk(;    settings::RiskMeasureSettings = RiskMeasureSettings(),    slv::Option{<:Slv_VecSlv} = nothing,    alpha::Num_SigCal = 0.05,    p::Number = 2.0,    w::Option{<:ObsWeights} = nothing) -> PowerNormDrawdownatRisk

Keywords correspond to the struct's fields.

Validation

  • If alpha is a number: 0 < alpha < 1.
  • p >= 1.
  • If slv is a VecSlv: !isempty(slv).
  • If w is not nothing: !isempty(w).

Functor

(r::PowerNormDrawdownatRisk)(x::VecNum)

Computes the PNDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

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

Related

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).
  • [106] P. A. Krokhmal. Higher moment coherent risk measures. Quantitative Finance 7, 373–387 (2007).
source
PortfolioOptimisers.RelativePowerNormDrawdownatRiskType
struct RelativePowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: HierarchicalRiskMeasure

Represents the Relative Power Norm Drawdown-at-Risk (Relative PNDaR) risk measure for hierarchical optimisation.

RelativePowerNormDrawdownatRisk applies the Power Norm Value-at-Risk framework to the relative (compounded) drawdown series of portfolio returns.

Mathematical definition

Define the 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 Power Norm Drawdown-at-Risk is the PNVaR of the relative drawdown series:

\[\begin{align} \mathrm{RPNDaR}_{\alpha,p}(\boldsymbol{x}) &= \mathrm{PNVaR}_{\alpha,p}(\boldsymbol{rd}(\boldsymbol{x}))\,. \end{align}\]

Where:

  • $\mathrm{RPNDaR}_{\alpha,p}(\boldsymbol{x})$: Relative Power Norm Drawdown-at-Risk.
  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $\alpha$: Significance level (left tail probability), $\alpha \in (0, 1)$.
  • $p \geq 1$: Power parameter.
  • $\boldsymbol{rd}(\boldsymbol{x})$: Relative drawdown series.

Fields

  • settings: Risk measure settings.
  • slv: Solver or vector of solvers.
  • p: Power or order parameter.
  • w: Optional observation weights vector observations × 1, or a concrete subtype of DynamicAbstractWeights. If nothing, the computation is unweighted.

Constructors

RelativePowerNormDrawdownatRisk(;    settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings(),    slv::Option{<:Slv_VecSlv} = nothing,    alpha::Num_SigCal = 0.05,    p::Number = 2.0,    w::Option{<:ObsWeights} = nothing) -> RelativePowerNormDrawdownatRisk

Keywords correspond to the struct's fields.

Validation

  • If alpha is a number: 0 < alpha < 1.
  • p >= 1.
  • If slv is a VecSlv: !isempty(slv).
  • If w is not nothing: !isempty(w).

Functor

(r::RelativePowerNormDrawdownatRisk)(x::VecNum)

Computes the Relative PNDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

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

Related

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).
  • [106] P. A. Krokhmal. Higher moment coherent risk measures. Quantitative Finance 7, 373–387 (2007).
source

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).
[106]
P. A. Krokhmal. Higher moment coherent risk measures. Quantitative Finance 7, 373–387 (2007).