Conditional X at Risk
PortfolioOptimisers.ConditionalValueatRisk Type
struct ConditionalValueatRisk{__T_settings, __T_alpha, __T_w} <: RiskMeasureRepresents the Conditional Value-at-Risk (CVaR) risk measure, also known as Expected Shortfall (ES).
ConditionalValueatRisk computes the expected loss given that the loss exceeds the Value-at-Risk at level alpha. It provides a coherent risk measure for tail risk quantification.
Mathematical definition
Let
Where:
: Conditional Value-at-Risk (Expected Shortfall) at level . : Portfolio returns vector . : Significance level (left tail probability), . : Number of observations. : Auxiliary variable (Value-at-Risk threshold).
Equivalently, it is the expected loss conditional on exceeding the VaR:
Where:
: CVaR as the expected loss conditional on exceeding the VaR threshold. : Portfolio returns vector . : Significance level (left tail probability), . : Value-at-Risk at level .
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
ConditionalValueatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> ConditionalValueatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.If
wis notnothing:!isempty(w).
Functor
(r::ConditionalValueatRisk)(x::VecNum)Computes the CVaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> ConditionalValueatRisk()
ConditionalValueatRisk
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
w ┴ nothingRelated
PortfolioOptimisers.factory Method
factory(
r::ConditionalValueatRisk,
pr::AbstractPriorResult,
args...;
kwargs...
) -> ConditionalValueatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of ConditionalValueatRisk by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.DistributionallyRobustConditionalValueatRisk Type
struct DistributionallyRobustConditionalValueatRisk{__T_settings, __T_alpha, __T_l, __T_r, __T_w} <: RiskMeasureRepresents the Distributionally Robust Conditional Value-at-Risk (DR-CVaR) risk measure.
DistributionallyRobustConditionalValueatRisk is a robust variant of CVaR that accounts for distributional uncertainty using Wasserstein ambiguity sets. It provides robustness against model misspecification in the tails of the return distribution.
Mathematical definition
The DR-CVaR with Wasserstein ambiguity parameter
Where:
: Distributionally Robust CVaR. : Portfolio returns vector . : Significance level (left tail probability), . : Wasserstein ambiguity scale factor. : Wasserstein ball radius.
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.l: Wasserstein ambiguity scale factor.r: Wasserstein radius parameter.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
DistributionallyRobustConditionalValueatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
l::Number = 1.0,
r::Number = 0.02,
w::Option{<:ObsWeights} = nothing
) -> DistributionallyRobustConditionalValueatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.l > 0.r > 0.If
wis notnothing:!isempty(w).
Functor
(r::DistributionallyRobustConditionalValueatRisk)(x::VecNum)Computes the DR-CVaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> DistributionallyRobustConditionalValueatRisk()
DistributionallyRobustConditionalValueatRisk
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
l ┼ Float64: 1.0
r ┼ Float64: 0.02
w ┴ nothingRelated
PortfolioOptimisers.factory Method
factory(
r::DistributionallyRobustConditionalValueatRisk,
pr::AbstractPriorResult,
args...;
kwargs...
) -> DistributionallyRobustConditionalValueatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of DistributionallyRobustConditionalValueatRisk by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.RMCVaR Type
const RMCVaR{T} = Union{...}Parameterised union of ConditionalValueatRisk and DistributionallyRobustConditionalValueatRisk sharing the same observation-weight type parameter T.
Used for unified dispatch on CVaR computation methods.
Related
sourcePortfolioOptimisers.ConditionalValueatRiskRange Type
struct ConditionalValueatRiskRange{__T_settings, __T_alpha, __T_beta, __T_w} <: RiskMeasureRepresents the Conditional Value-at-Risk Range (CVaR Range) risk measure.
ConditionalValueatRiskRange computes the difference between the lower-tail CVaR (at level alpha) and the upper-tail CVaR (at level beta), measuring the spread between downside and upside expected tail risks.
Mathematical definition
Where:
: CVaR range (tail spread). : Portfolio returns vector . : Lower-tail expected shortfall at level . : Upper-tail expected surplus at level .
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.beta: Quantile level for the upper tail.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
ConditionalValueatRiskRange(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
beta::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> ConditionalValueatRiskRangeKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.0 < beta < 1.If
wis notnothing:!isempty(w).
Functor
(r::ConditionalValueatRiskRange)(x::VecNum)Computes the CVaR Range of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> ConditionalValueatRiskRange()
ConditionalValueatRiskRange
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
beta ┼ Float64: 0.05
w ┴ nothingRelated
PortfolioOptimisers.factory Method
factory(
r::ConditionalValueatRiskRange,
pr::AbstractPriorResult,
args...;
kwargs...
) -> ConditionalValueatRiskRange{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of ConditionalValueatRiskRange by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.DistributionallyRobustConditionalValueatRiskRange Type
struct DistributionallyRobustConditionalValueatRiskRange{__T_settings, __T_alpha, __T_l_a, __T_r_a, __T_beta, __T_l_b, __T_r_b, __T_w} <: RiskMeasureRepresents the Distributionally Robust Conditional Value-at-Risk Range (DR-CVaR Range) risk measure.
DistributionallyRobustConditionalValueatRiskRange computes the difference between the lower-tail DR-CVaR (at level alpha) and the upper-tail DR-CVaR (at level beta), with separate Wasserstein ambiguity parameters for each tail.
Mathematical definition
Where:
: DR-CVaR range. : Portfolio returns vector . : Lower-tail DR-CVaR with Wasserstein parameters . : Upper-tail DR-CVaR with Wasserstein parameters .
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.l_a: Risk aversion parameter for the lower tail.r_a: Radius parameter for the lower tail.beta: Quantile level for the upper tail.l_b: Risk aversion parameter for the upper tail.r_b: Radius parameter for the upper tail.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
DistributionallyRobustConditionalValueatRiskRange(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
l_a::Number = 1.0,
r_a::Number = 0.02,
beta::Number = 0.05,
l_b::Number = 1.0,
r_b::Number = 0.02,
w::Option{<:ObsWeights} = nothing
) -> DistributionallyRobustConditionalValueatRiskRangeKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.0 < beta < 1.l_a > 0,r_a > 0,l_b > 0,r_b > 0.If
wis notnothing:!isempty(w).
Functor
(r::DistributionallyRobustConditionalValueatRiskRange)(x::VecNum)Computes the DR-CVaR Range of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> DistributionallyRobustConditionalValueatRiskRange()
DistributionallyRobustConditionalValueatRiskRange
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
l_a ┼ Float64: 1.0
r_a ┼ Float64: 0.02
beta ┼ Float64: 0.05
l_b ┼ Float64: 1.0
r_b ┼ Float64: 0.02
w ┴ nothingRelated
PortfolioOptimisers.factory Method
factory(
r::DistributionallyRobustConditionalValueatRiskRange,
pr::AbstractPriorResult,
args...;
kwargs...
) -> DistributionallyRobustConditionalValueatRiskRange{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number, <:Number, <:Number, <:Number, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of DistributionallyRobustConditionalValueatRiskRange by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
PortfolioOptimisers.RMCVaRRg Type
const RMCVaRRg{T} = Union{...}Parameterised union of ConditionalValueatRiskRange and DistributionallyRobustConditionalValueatRiskRange sharing the same observation-weight type parameter T.
Used for unified dispatch on CVaR-range computation methods.
Related
sourcePortfolioOptimisers.ConditionalDrawdownatRisk Type
struct ConditionalDrawdownatRisk{__T_settings, __T_alpha, __T_w} <: RiskMeasureRepresents the Conditional Drawdown-at-Risk (CDaR) risk measure, also known as Expected Maximum Drawdown.
ConditionalDrawdownatRisk computes the expected drawdown given that the drawdown exceeds the Drawdown-at-Risk at level alpha. It provides a coherent risk measure for drawdown tail risk.
Mathematical definition
Define the absolute drawdown series:
Where:
: Portfolio returns vector . : Cumulative simple portfolio return at period . : Absolute drawdown at period .
The CDaR is the CVaR of the drawdown series
Where:
: Conditional Drawdown-at-Risk (Expected Maximum Drawdown). : Significance level (left tail probability), . : Number of observations. : Absolute drawdown at period . : Auxiliary variable (DaR threshold).
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
ConditionalDrawdownatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> ConditionalDrawdownatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.If
wis notnothing:!isempty(w).
Functor
(r::ConditionalDrawdownatRisk)(x::VecNum)Computes the CDaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> ConditionalDrawdownatRisk()
ConditionalDrawdownatRisk
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
w ┴ nothingRelated
PortfolioOptimisers.factory Method
factory(
r::ConditionalDrawdownatRisk,
pr::AbstractPriorResult,
args...;
kwargs...
) -> ConditionalDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of ConditionalDrawdownatRisk by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.DistributionallyRobustConditionalDrawdownatRisk Type
struct DistributionallyRobustConditionalDrawdownatRisk{__T_settings, __T_alpha, __T_l, __T_r, __T_w} <: RiskMeasureRepresents the Distributionally Robust Conditional Drawdown-at-Risk (DR-CDaR) risk measure.
DistributionallyRobustConditionalDrawdownatRisk is a robust variant of CDaR that accounts for distributional uncertainty using Wasserstein ambiguity sets, applied to drawdown sequences.
Mathematical definition
Where:
: Distributionally Robust CDaR. : Portfolio returns vector . : Significance level (left tail probability), . : Wasserstein ambiguity scale factor. : Wasserstein ball radius.
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.l: Wasserstein ambiguity scale factor.r: Wasserstein radius parameter.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
DistributionallyRobustConditionalDrawdownatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
alpha::Number = 0.05,
l::Number = 1.0,
r::Number = 0.02,
w::Option{<:ObsWeights} = nothing
) -> DistributionallyRobustConditionalDrawdownatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.l > 0.r > 0.If
wis notnothing:!isempty(w).
Functor
(r::DistributionallyRobustConditionalDrawdownatRisk)(x::VecNum)Computes the DR-CDaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> DistributionallyRobustConditionalDrawdownatRisk()
DistributionallyRobustConditionalDrawdownatRisk
settings ┼ RiskMeasureSettings
│ scale ┼ Float64: 1.0
│ ub ┼ nothing
│ rke ┴ Bool: true
alpha ┼ Float64: 0.05
l ┼ Float64: 1.0
r ┼ Float64: 0.02
w ┴ nothingRelated
sourcePortfolioOptimisers.factory Method
factory(
r::DistributionallyRobustConditionalDrawdownatRisk,
pr::AbstractPriorResult,
args...;
kwargs...
) -> DistributionallyRobustConditionalDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:Number, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke}Create an instance of DistributionallyRobustConditionalDrawdownatRisk by selecting observation weights from the risk-measure instance or falling back to the prior result.
Related
PortfolioOptimisers.RMCDaR Type
const RMCDaR{T} = Union{...}Parameterised union of ConditionalDrawdownatRisk and DistributionallyRobustConditionalDrawdownatRisk sharing the same observation-weight type parameter T.
Used for unified dispatch on CDaR computation methods.
Related
sourcePortfolioOptimisers.RelativeConditionalDrawdownatRisk Type
struct RelativeConditionalDrawdownatRisk{__T_settings, __T_alpha, __T_w} <: HierarchicalRiskMeasureRepresents the Relative Conditional Drawdown-at-Risk risk measure for hierarchical optimisation.
RelativeConditionalDrawdownatRisk computes the expected relative (compounded) drawdown given that the drawdown exceeds the Relative Drawdown-at-Risk at level alpha.
Mathematical definition
Define the compounded wealth process and relative drawdown series:
Where:
: Portfolio returns vector . : Compound wealth process at period . : Relative drawdown at period .
The Relative CDaR is the CVaR of the relative drawdown series
Where:
: Relative Conditional Drawdown-at-Risk. : Significance level (left tail probability), . : Number of observations. : Relative drawdown at period . : Auxiliary variable (RDaR threshold).
Fields
settings: Risk measure settings.alpha: Quantile level for the lower tail.w: Optional observation weights vectorobservations × 1, or a concrete subtype ofDynamicAbstractWeights. Ifnothing, the computation is unweighted.
Constructors
RelativeConditionalDrawdownatRisk(;
settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings(),
alpha::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> RelativeConditionalDrawdownatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.If
wis notnothing:!isempty(w).
Functor
(r::RelativeConditionalDrawdownatRisk)(x::VecNum)Computes the Relative CDaR of a portfolio returns vector x.
Arguments
x::VecNum: Portfolio returns vector.
Examples
julia> RelativeConditionalDrawdownatRisk()
RelativeConditionalDrawdownatRisk
settings ┼ HierarchicalRiskMeasureSettings
│ scale ┴ Float64: 1.0
alpha ┼ Float64: 0.05
w ┴ nothingRelated