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.
Mathematical definition
The EVaR is defined via the Chernoff bound as the tightest exponential upper bound on VaR and CVaR:
Where:
: Entropic Value-at-Risk (tightest exponential upper bound on VaR and CVaR). : Portfolio returns vector . : Significance level (left tail probability), . : Loss at period . : Moment-generating function of the loss. : Exponential tilt parameter.
Computationally, it is solved via the conic programme:
Where:
: Number of observations. , , : Conic optimisation variables. : Exponential cone.
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.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::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> EntropicValueatRiskKeywords correspond to the struct's fields.
Validation
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
sourcePortfolioOptimisers.factory Function
factory(
r::EntropicValueatRisk,
pr::AbstractPriorResult;
...
) -> EntropicValueatRisk
factory(
r::EntropicValueatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> EntropicValueatRiskCreate an instance of EntropicValueatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.factory Function
factory(
r::EntropicValueatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> Union{EntropicValueatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:AbstractVector{var"#s869"}, <:Number} where {__T_scale, __T_ub, __T_rke, var"#s869"<:Solver}, EntropicValueatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, Solver{__T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}, <:Number} where {__T_scale, __T_ub, __T_rke, __T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}}
factory(
r::EntropicValueatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult},
args...;
kwargs...
) -> EntropicValueatRiskCreate an instance of EntropicValueatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
sourcePortfolioOptimisers.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 difference between the lower-tail EVaR (at level alpha) and the upper-tail EVaR (at level beta).
Mathematical definition
Where:
: EVaR range (entropic tail spread). : Portfolio returns vector . : Lower-tail entropic risk at level . : Upper-tail entropic risk at level .
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.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
EntropicValueatRiskRange(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
slv::Option{<:Slv_VecSlv} = nothing,
alpha::Number = 0.05,
beta::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> EntropicValueatRiskRangeKeywords correspond to the struct's fields.
Validation
0 < alpha < 1,0 < beta < 1.If
slvis aVecSlv:!isempty(slv).If
wis notnothing:!isempty(w).
Related
sourcePortfolioOptimisers.factory Method
factory(
r::EntropicValueatRiskRange,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> EntropicValueatRiskRangeCreate an instance of EntropicValueatRiskRange by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.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:
Where:
: Portfolio returns vector . : Cumulative simple portfolio return at period . : Absolute drawdown at period .
The EDaR is the EVaR of the drawdown series:
Where:
: Entropic Drawdown-at-Risk. : Significance level (left tail probability), . : Absolute drawdown series vector .
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.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::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> EntropicDrawdownatRiskKeywords correspond to the struct's fields.
Validation
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
PortfolioOptimisers.factory Function
factory(
r::EntropicDrawdownatRisk,
pr::AbstractPriorResult;
...
) -> EntropicDrawdownatRisk
factory(
r::EntropicDrawdownatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> EntropicDrawdownatRiskCreate an instance of EntropicDrawdownatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.factory Function
factory(
r::EntropicDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> Union{EntropicDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:AbstractVector{var"#s869"}, <:Number} where {__T_scale, __T_ub, __T_rke, var"#s869"<:Solver}, EntropicDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, Solver{__T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}, <:Number} where {__T_scale, __T_ub, __T_rke, __T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}}
factory(
r::EntropicDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult},
args...;
kwargs...
) -> EntropicDrawdownatRiskCreate an instance of EntropicDrawdownatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
sourcePortfolioOptimisers.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:
Where:
: Portfolio returns vector . : Compound wealth process at period . : Relative drawdown at period .
The Relative EDaR is the EVaR of the relative drawdown series:
Where:
: Relative Entropic Drawdown-at-Risk. : Significance level (left tail probability), . : Relative drawdown series vector .
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.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::Number = 0.05,
w::Option{<:ObsWeights} = nothing
) -> RelativeEntropicDrawdownatRiskKeywords correspond to the struct's fields.
Validation
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
PortfolioOptimisers.factory Function
factory(
r::RelativeEntropicDrawdownatRisk,
pr::AbstractPriorResult;
...
) -> RelativeEntropicDrawdownatRisk
factory(
r::RelativeEntropicDrawdownatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> RelativeEntropicDrawdownatRiskCreate an instance of RelativeEntropicDrawdownatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
PortfolioOptimisers.factory Function
factory(
r::RelativeEntropicDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> Union{RelativeEntropicDrawdownatRisk{HierarchicalRiskMeasureSettings{__T_scale}, <:AbstractVector{var"#s869"}, <:Number} where {__T_scale, var"#s869"<:Solver}, RelativeEntropicDrawdownatRisk{HierarchicalRiskMeasureSettings{__T_scale}, Solver{__T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}, <:Number} where {__T_scale, __T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}}
factory(
r::RelativeEntropicDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult},
args...;
kwargs...
) -> RelativeEntropicDrawdownatRiskCreate an instance of RelativeEntropicDrawdownatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
PortfolioOptimisers.ERM Function
ERM(x, slv, alpha = 0.05, ...; kwargs...)Compute the Entropic Risk Measure (ERM) for a vector of portfolio returns.
Solves a convex optimisation problem to compute the ERM at confidence level alpha, using the specified solver(s). The ERM is a coherent risk measure based on the exponential moment of the loss distribution.
Arguments
x: Vector of portfolio returns.slv: Solver or vector of solvers.alpha: Confidence level (default0.05).Additional parameters depending on the specific ERM formulation.
kwargs...: Additional keyword arguments passed to the solver.
Returns
- ERM value (scalar).
Related
source