Generic Value at Risk Range

PortfolioOptimisers.GenericValueatRiskRangeType
struct GenericValueatRiskRange{__T_settings, __T_loss, __T_gain} <: RiskMeasure

Represents a generic Value-at-Risk range risk measure that combines any pair of XatRisk-type measures applied to the loss and gain sides of the return distribution.

GenericValueatRiskRange evaluates a loss-side XatRisk measure on the portfolio returns and a gain-side XatRisk measure on the negated portfolio returns, then sums the two to produce a symmetric tail-spread risk measure.

Mathematical definition

\[\begin{align} \mathrm{GenVaRRange}(\boldsymbol{x}) &= \rho_{\mathrm{loss}}(\boldsymbol{x}) + \rho_{\mathrm{gain}}(-\boldsymbol{x})\,. \end{align}\]

Where:

  • $\mathrm{GenVaRRange}(\boldsymbol{x})$: Generic Value-at-Risk range.
  • $\rho_{\mathrm{loss}}$: Loss-side XatRisk risk measure.
  • $\rho_{\mathrm{gain}}$: Gain-side XatRisk risk measure.
  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.

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.
  • loss: Loss-side XatRisk risk measure applied to the portfolio returns.
  • gain: Gain-side XatRisk risk measure applied to the negated portfolio returns.

Constructors

GenericValueatRiskRange(;    settings::RiskMeasureSettings = RiskMeasureSettings(),    loss::ValueatRiskRMs = ConditionalValueatRisk(),    gain::ValueatRiskRMs = ConditionalValueatRisk()) -> GenericValueatRiskRange

Keywords correspond to the struct's fields.

The constructor strips the rke flag from both loss and gain via no_risk_expr_risk_measure, since their risk expressions are combined into the outer settings-controlled expression.

Propagated parameters

When factory is called on this type, the following @fprop-tagged fields are automatically propagated:

  • loss: Recursively updated via factory.
  • gain: Recursively updated via factory.

View parameters

When port_opt_view is called on this type, the following @vprop-tagged fields are automatically subset to the selected indices:

Functor

(r::GenericValueatRiskRange)(x::VecNum)

Computes the GenericValueatRiskRange of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia> GenericValueatRiskRange()GenericValueatRiskRange  settings ┼ RiskMeasureSettings           │   scale ┼ Float64: 1.0           │      ub ┼ nothing           │     rke ┴ Bool: true      loss ┼ ConditionalValueatRisk           │   settings ┼ RiskMeasureSettings           │            │   scale ┼ Float64: 1.0           │            │      ub ┼ nothing           │            │     rke ┴ Bool: false           │      alpha ┼ Float64: 0.05           │          w ┴ nothing      gain ┼ ConditionalValueatRisk           │   settings ┼ RiskMeasureSettings           │            │   scale ┼ Float64: 1.0           │            │      ub ┼ nothing           │            │     rke ┴ Bool: false           │      alpha ┼ Float64: 0.05           │          w ┴ nothing

Related

source