Skip to content
13

Negative Skewness

PortfolioOptimisers.NSkeFormulations Type
julia
const NSkeFormulations = Union{<:NSkeQuadFormulations, <:SOCRiskExpr}

Union of valid optimisation formulations for the NegativeSkewness risk measure.

Related

source
PortfolioOptimisers.NegativeSkewness Type
julia
struct NegativeSkewness{__T_settings, __T_mp, __T_sk, __T_V, __T_alg, __T_window} <: RiskMeasure

Represents the Negative Skewness risk measure.

NegativeSkewness quantifies the portfolio's exposure to negative asymmetry in returns by computing a quadratic or SOC (second-order cone) form of the coskewness matrix. It penalises portfolio constructions that exhibit heavy left-tail behaviour.

Mathematical Definition

Let w be the portfolio weight vector and V the negative semi-definite coskewness matrix (spectral decomposition of the negative part of the sample coskewness tensor). The Negative Skewness risk measure is:

NSke(w)={wVw(SOC formulation)wVw(Quadratic formulation)

Fields

  • settings: Risk measure configuration.

  • mp: Matrix processing estimator applied to the coskewness matrix.

  • sk: Pre-computed coskewness matrix (N×N2). If nothing, it is computed from the prior.

  • V: Pre-computed negative spectral coskewness matrix (N×N). If nothing, it is computed from sk.

  • alg: Optimisation formulation (SOCRiskExpr or a NSkeQuadFormulations subtype).

  • window: Rolling window index or indices for time-series slicing.

Constructors

julia
NegativeSkewness(;
    settings::RiskMeasureSettings = RiskMeasureSettings(),
    mp::AbstractMatrixProcessingEstimator = DenoiseDetoneAlgMatrixProcessing(),
    sk::Option{<:MatNum} = nothing,
    V::Option{<:MatNum} = nothing,
    alg::NSkeFormulations = SOCRiskExpr(),
    window::Option{<:Int_VecInt} = nothing
) -> NegativeSkewness

Keywords correspond to the struct's fields.

Validation

Functor

julia
(r::NegativeSkewness)(w::VecNum)

Computes the Negative Skewness risk of a portfolio weight vector w.

Arguments

  • w::VecNum: Portfolio weights vector.

Examples

julia
julia> NegativeSkewness()
NegativeSkewness
  settings ┼ RiskMeasureSettings
           │   scale ┼ Float64: 1.0
           │      ub ┼ nothing
           │     rke ┴ Bool: true
        mp ┼ DenoiseDetoneAlgMatrixProcessing
           │     pdm ┼ Posdef
           │         │      alg ┼ UnionAll: NearestCorrelationMatrix.Newton
           │         │   kwargs ┴ @NamedTuple{}: NamedTuple()
           │      dn ┼ nothing
           │      dt ┼ nothing
           │     alg ┼ nothing
           │   order ┴ DenoiseDetoneAlg()
        sk ┼ nothing
         V ┼ nothing
       alg ┼ SOCRiskExpr()
    window ┴ nothing

Related

source