Power Norm X at Risk
PortfolioOptimisers.PowerNormValueatRisk Type
struct PowerNormValueatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: RiskMeasureRepresents 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
Mathematical definition
The PNVaR at level
Where:
: Power Norm Value-at-Risk. : Portfolio returns vector . : Significance level (left tail probability), . : Number of observations. : Power parameter. , , , : Conic optimisation variables. : Power cone.
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.p: Power or order parameter.w: Optional portfolio weights.
Constructors
PowerNormValueatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
slv::Option{<:Slv_VecSlv} = nothing,
alpha::Number = 0.05,
p::Number = 2.0,
w::Option{<:ObsWeights} = nothing
) -> PowerNormValueatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.p >= 1.If
slvis aVecSlv:!isempty(slv).If
wis notnothing:!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 ┴ nothingRelated
PortfolioOptimisers.factory Function
factory(
r::PowerNormValueatRisk,
pr::AbstractPriorResult;
...
) -> PowerNormValueatRisk
factory(
r::PowerNormValueatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> PowerNormValueatRiskCreate an instance of PowerNormValueatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.factory Function
factory(
r::PowerNormValueatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> PowerNormValueatRisk
factory(
r::PowerNormValueatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult};
kwargs...
) -> PowerNormValueatRiskCreate an instance of PowerNormValueatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
sourcePortfolioOptimisers.PowerNormValueatRiskRange Type
struct PowerNormValueatRiskRange{__T_settings, __T_slv, __T_alpha, __T_beta, __T_pa, __T_pb, __T_w} <: RiskMeasureRepresents 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
Where:
: Power Norm VaR range. : Portfolio returns vector . : Lower-tail PNVaR with parameters . : Upper-tail PNVaR with parameters .
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.pa: Power norm parameter for the lower tail.pb: Power norm parameter for the upper tail.w: Optional portfolio weights.
Constructors
PowerNormValueatRiskRange(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
slv::Option{<:Slv_VecSlv} = nothing,
alpha::Number = 0.05,
beta::Number = 0.05,
pa::Number = 2.0,
pb::Number = 2.0,
w::Option{<:ObsWeights} = nothing
) -> PowerNormValueatRiskRangeKeywords correspond to the struct's fields.
Validation
0 < alpha < 1,0 < beta < 1.pa > 1,pb > 1.If
slvis aVecSlv:!isempty(slv).If
wis notnothing:!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 ┴ nothingRelated
sourcePortfolioOptimisers.factory Method
factory(
r::PowerNormValueatRiskRange,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> PowerNormValueatRiskRangeCreate an instance of PowerNormValueatRiskRange by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.PowerNormDrawdownatRisk Type
struct PowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: RiskMeasureRepresents the Power Norm Drawdown-at-Risk (PNDDaR) 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:
Where:
: Portfolio returns vector . : Cumulative simple portfolio return at period . : Absolute drawdown at period .
The Power Norm Drawdown-at-Risk is the PNVaR of the drawdown series:
Where:
: Power Norm Drawdown-at-Risk. : Portfolio returns vector . : Significance level (left tail probability), . : Power parameter. : Absolute drawdown series.
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.p: Power or order parameter.w: Optional portfolio weights.
Constructors
PowerNormDrawdownatRisk(;
settings::RiskMeasureSettings = RiskMeasureSettings(),
slv::Option{<:Slv_VecSlv} = nothing,
alpha::Number = 0.05,
p::Number = 2.0,
w::Option{<:ObsWeights} = nothing
) -> PowerNormDrawdownatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.p >= 1.If
slvis aVecSlv:!isempty(slv).If
wis notnothing:!isempty(w).
Functor
(r::PowerNormDrawdownatRisk)(x::VecNum)Computes the PNDDaR 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 ┴ nothingRelated
PortfolioOptimisers.factory Function
factory(
r::PowerNormDrawdownatRisk,
pr::AbstractPriorResult;
...
) -> PowerNormDrawdownatRisk
factory(
r::PowerNormDrawdownatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> PowerNormDrawdownatRiskCreate an instance of PowerNormDrawdownatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
sourcePortfolioOptimisers.factory Function
factory(
r::PowerNormDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> Union{PowerNormDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, <:AbstractVector{var"#s869"}, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke, var"#s869"<:Solver}, PowerNormDrawdownatRisk{RiskMeasureSettings{__T_scale, __T_ub, __T_rke}, Solver{__T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}, <:Number, <:Number} where {__T_scale, __T_ub, __T_rke, __T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}}
factory(
r::PowerNormDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult};
kwargs...
) -> PowerNormDrawdownatRiskCreate an instance of PowerNormDrawdownatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
sourcePortfolioOptimisers.RelativePowerNormDrawdownatRisk Type
struct RelativePowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: HierarchicalRiskMeasureRepresents the Relative Power Norm Drawdown-at-Risk (Relative PNDDaR) 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:
Where:
: Portfolio returns vector . : Compound wealth process at period . : Relative drawdown at period .
The Relative Power Norm Drawdown-at-Risk is the PNVaR of the relative drawdown series:
Where:
: Relative Power Norm Drawdown-at-Risk. : Portfolio returns vector . : Significance level (left tail probability), . : Power parameter. : Relative drawdown series.
Fields
settings: Risk measure settings.slv: Solver or vector of solvers.alpha: Quantile level for the lower tail.p: Power or order parameter.w: Optional portfolio weights.
Constructors
RelativePowerNormDrawdownatRisk(;
settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings(),
slv::Option{<:Slv_VecSlv} = nothing,
alpha::Number = 0.05,
p::Number = 2.0,
w::Option{<:ObsWeights} = nothing
) -> RelativePowerNormDrawdownatRiskKeywords correspond to the struct's fields.
Validation
0 < alpha < 1.p >= 1.If
slvis aVecSlv:!isempty(slv).If
wis notnothing:!isempty(w).
Functor
(r::RelativePowerNormDrawdownatRisk)(x::VecNum)Computes the Relative PNDDaR 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 ┴ nothingRelated
PortfolioOptimisers.factory Function
factory(
r::RelativePowerNormDrawdownatRisk,
pr::AbstractPriorResult;
...
) -> RelativePowerNormDrawdownatRisk
factory(
r::RelativePowerNormDrawdownatRisk,
pr::AbstractPriorResult,
slv::Union{Nothing, Solver, AbstractVector{<:Solver}},
args...;
kwargs...
) -> RelativePowerNormDrawdownatRiskCreate an instance of RelativePowerNormDrawdownatRisk by selecting observation weights and solver from the risk-measure instance or falling back to the prior result.
Related
PortfolioOptimisers.factory Function
factory(
r::RelativePowerNormDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}};
...
) -> Union{RelativePowerNormDrawdownatRisk{HierarchicalRiskMeasureSettings{__T_scale}, <:AbstractVector{var"#s869"}, <:Number, <:Number} where {__T_scale, var"#s869"<:Solver}, RelativePowerNormDrawdownatRisk{HierarchicalRiskMeasureSettings{__T_scale}, Solver{__T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}, <:Number, <:Number} where {__T_scale, __T_name, __T_solver, __T_settings, __T_check_sol, __T_add_bridges}}
factory(
r::RelativePowerNormDrawdownatRisk,
slv::Union{Solver, AbstractVector{<:Solver}},
pr::Union{Nothing, AbstractPriorResult};
kwargs...
) -> RelativePowerNormDrawdownatRiskCreate an instance of RelativePowerNormDrawdownatRisk by overriding the solver and optionally selecting observation weights from the prior result.
Related
PortfolioOptimisers.PRM Function
PRM(
x::AbstractVector{<:Union{var"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
slv::Union{Solver, AbstractVector{<:Solver}}
) -> Union{Float64, Vector{Float64}}
PRM(
x::AbstractVector{<:Union{var"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
slv::Union{Solver, AbstractVector{<:Solver}},
alpha::Number
) -> Union{Float64, Vector{Float64}}
PRM(
x::AbstractVector{<:Union{var"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
slv::Union{Solver, AbstractVector{<:Solver}},
alpha::Number,
p::Number
) -> Union{Float64, Vector{Float64}}
PRM(
x::AbstractVector{<:Union{var"#s20", var"#s19"} where {var"#s20"<:Number, var"#s19"<:AbstractJuMPScalar}},
slv::Union{Solver, AbstractVector{<:Solver}},
alpha::Number,
p::Number,
w::Union{Nothing, DynamicAbstractWeights, AbstractWeights}
) -> Union{Float64, Vector{Float64}}Compute the Power-Norm Risk Measure (PRM) for a vector of portfolio returns.
Solves a convex optimisation problem to compute the PRM at confidence level alpha with Lp-norm parameter p, using the specified solver(s).
Arguments
x: Vector of portfolio returns.slv: Solver or vector of solvers.alpha: Confidence level (default0.05).p: Lp-norm parameter (default2.0).Additional parameters depending on the specific PRM formulation.
kwargs...: Additional keyword arguments passed to the solver.
Returns
- PRM value (scalar).
Related
source