Skip to content
13

Power Norm X at Risk

PortfolioOptimisers.PowerNormValueatRisk Type
julia
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 p1 and a significance level α, and is solved via a conic programme.

Mathematical Definition

The PNVaR at level α with power p is:

PNVaRα,p(x)=minη,t,w0,v{η+tαT1/p:i=1Tvit,(xi+wi)+η0,(vi,t,wi)Kpow(1/p)i},

where Kpow(p)={(a,b,c):apb1p|c|,a0,b0} is the power cone.

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • p: Power parameter (p1).

  • w: Optional observation weights.

Constructors

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

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • p >= 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

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

Computes the PNVaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
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

source
PortfolioOptimisers.PowerNormValueatRiskRange Type
julia
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

PNVaRRangeα,pa,β,pb(x)=PNVaRα,pa(x)+PNVaRβ,pb(x).

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • beta: Significance level for the upper tail.

  • pa: Power norm parameter for the lower tail (pa>1).

  • pb: Power norm parameter for the upper tail (pb>1).

  • w: Optional observation weights.

Constructors

julia
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
) -> PowerNormValueatRiskRange

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1, 0 < beta < 1.

  • pa > 1, pb > 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

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

Computes the PNVaR Range of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
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

source
PortfolioOptimisers.PowerNormDrawdownatRisk Type
julia
struct PowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: RiskMeasure

Represents 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:

ct=s=1txs,dt=ctmax0stcs0.

The Power Norm Drawdown-at-Risk is the PNVaR of the drawdown series:

PNDDaRα,p(x)=PNVaRα,p(d(x)).

Fields

  • settings: Risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • p: Power parameter (p1).

  • w: Optional observation weights.

Constructors

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

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • p >= 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

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

Computes the PNDDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia
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

source
PortfolioOptimisers.RelativePowerNormDrawdownatRisk Type
julia
struct RelativePowerNormDrawdownatRisk{__T_settings, __T_slv, __T_alpha, __T_p, __T_w} <: HierarchicalRiskMeasure

Represents 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:

Ct=s=1t(1+xs),rdt=Ctmax0stCs10.

The Relative Power Norm Drawdown-at-Risk is the PNVaR of the relative drawdown series:

RPNDDaRα,p(x)=PNVaRα,p(rd(x)).

Fields

  • settings: Hierarchical risk measure configuration.

  • slv: Solver or vector of solvers for the conic optimisation.

  • alpha: Significance level for the lower tail.

  • p: Power parameter (p1).

  • w: Optional observation weights.

Constructors

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

Keywords correspond to the struct's fields.

Validation

  • 0 < alpha < 1.

  • p >= 1.

  • If slv is a VecSlv: !isempty(slv).

  • If w is not nothing: !isempty(w).

Functor

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

Computes the Relative PNDDaR of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

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

Related

source
PortfolioOptimisers.PRM Function
julia
PRM(
    x::AbstractVector{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
    slv::Union{Solver, AbstractVector{<:Solver}}
) -> Union{Float64, Vector{Float64}}
PRM(
    x::AbstractVector{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
    slv::Union{Solver, AbstractVector{<:Solver}},
    alpha::Number
) -> Union{Float64, Vector{Float64}}
PRM(
    x::AbstractVector{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<:AbstractJuMPScalar}},
    slv::Union{Solver, AbstractVector{<:Solver}},
    alpha::Number,
    p::Number
) -> Union{Float64, Vector{Float64}}
PRM(
    x::AbstractVector{<:Union{var"#s19", var"#s18"} where {var"#s19"<:Number, var"#s18"<: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 (default 0.05).

  • p: Lp-norm parameter (default 2.0).

  • Additional parameters depending on the specific PRM formulation.

  • kwargs...: Additional keyword arguments passed to the solver.

Returns

  • PRM value (scalar).

Related

source