Skip to content
13

Denoise covariance

PortfolioOptimisers.DenoiseCovariance Type
julia
struct DenoiseCovariance{__T_ce, __T_dn, __T_pdm} <: AbstractCovarianceEstimator

A covariance estimator that applies a denoising algorithm and positive definite projection to the output of another covariance estimator. This type enables robust estimation of covariance matrices by first computing a base covariance, then applying denoising and positive definiteness corrections in sequence.

Fields

  • ce: Covariance estimator.

  • dn: Matrix denoising estimator.

  • pdm: Positive definite matrix estimator.

Constructors

julia
DenoiseCovariance(;
    ce::StatsBase.CovarianceEstimator,
    dn::Denoise = Denoise(),
    pdm::Option{<:Posdef} = Posdef(),
) -> DenoiseCovariance

Keywords correspond to the struct's fields.

Examples

julia
julia> DenoiseCovariance()
DenoiseCovariance
   ce ┼ Covariance
      │    me ┼ SimpleExpectedReturns
      │       │   w ┴ nothing
      │    ce ┼ GeneralCovariance
      │       │   ce ┼ StatsBase.SimpleCovariance: StatsBase.SimpleCovariance(true)
      │       │    w ┴ nothing
      │   alg ┴ Full()
   dn ┼ Denoise
      │      pdm ┼ Posdef
      │          │      alg ┼ UnionAll: NearestCorrelationMatrix.Newton
      │          │   kwargs ┴ @NamedTuple{}: NamedTuple()
      │      alg ┼ ShrunkDenoise
      │          │   alpha ┴ Float64: 0.0
      │     args ┼ Tuple{}: ()
      │   kwargs ┼ @NamedTuple{}: NamedTuple()
      │   kernel ┼ typeof(AverageShiftedHistograms.Kernels.gaussian): AverageShiftedHistograms.Kernels.gaussian
      │        m ┼ Int64: 10
      │        n ┴ Int64: 1000
  pdm ┼ Posdef
      │      alg ┼ UnionAll: NearestCorrelationMatrix.Newton
      │   kwargs ┴ @NamedTuple{}: NamedTuple()

Related

source
PortfolioOptimisers.factory Method
julia
factory(ce::DenoiseCovariance, w::ObsWeights) -> DenoiseCovariance

Return a new DenoiseCovariance estimator with observation weights w applied to the underlying covariance estimator.

Arguments

  • ce: Covariance estimator.

  • w: Observation weights vector observations × 1.

Returns

  • ce: New covariance estimator of the same type as the argument, with the new weights applied.

Examples

julia
julia> ce = DenoiseCovariance();

julia> ce2 = factory(ce, StatsBase.Weights([0.2, 0.3, 0.5]));

julia> ce2.ce.me.w
3-element Weights{Float64, Float64, Vector{Float64}}:
 0.2
 0.3
 0.5

Related

source
Statistics.cov Method
julia
Statistics.cov(ce::DenoiseCovariance, X::MatNum; dims = 1, kwargs...)

Compute the denoised and positive definite projected covariance matrix for the data matrix X using the specified DenoiseCovariance estimator.

Arguments

  • ce: The DenoiseCovariance estimator specifying the base covariance estimator, denoising algorithm, and positive definite projection.

  • X: The data matrix (observations × assets).

  • dims: Dimension along which to perform the computation.

  • kwargs...: Additional keyword arguments passed to the underlying covariance estimator.

Returns

  • sigma::MatNum: denoised covariance matrix.

Validation

  • dims in (1, 2).

Details

  • Computes the covariance matrix using the base estimator in ce.

  • Transposes X if dims == 2 to ensure variables are in columns.

  • Ensures the covariance matrix is mutable.

  • Applies positive definite projection using the method in ce.pdm.

  • Applies the denoising algorithm in ce.dn with the aspect ratio T/N.

  • Returns the processed covariance matrix.

Related

source
Statistics.cor Method
julia
Statistics.cor(ce::DenoiseCovariance, X::MatNum; dims = 1, kwargs...)

Compute the denoised and positive definite projected correlation matrix for the data matrix X using the specified DenoiseCovariance estimator.

Arguments

  • ce: The DenoiseCovariance estimator specifying the base covariance estimator, denoising algorithm, and positive definite projection.

  • X: The data matrix (observations × assets).

  • dims: Dimension along which to perform the computation.

  • kwargs...: Additional keyword arguments passed to the underlying correlation estimator.

Returns

  • rho::MatNum: denoised correlation matrix.

Validation

  • dims in (1, 2).

Details

  • Computes the correlation matrix using the base estimator in ce.

  • Transposes X if dims == 2 to ensure variables are in columns.

  • Ensures the correlation matrix is mutable.

  • Applies positive definite projection using the method in ce.pdm.

  • Applies the denoising algorithm in ce.dn with the aspect ratio T/N.

  • Returns the processed correlation matrix.

Related

source
PortfolioOptimisers.port_opt_view Method
julia
port_opt_view(
    ce::DenoiseCovariance,
    i,
    args...
) -> Union{DenoiseCovariance{var"#s179", Denoise{__T_pdm, __T_alg, __T_args, __T_kwargs, __T_kernel, __T_m, __T_n}, Nothing} where {var"#s179"<:CovarianceEstimator, __T_pdm, __T_alg, __T_args, __T_kwargs, __T_kernel, __T_m, __T_n}, DenoiseCovariance{var"#s179", Denoise{__T_pdm, __T_alg, __T_args, __T_kwargs, __T_kernel, __T_m, __T_n}, Posdef{__T_alg1, __T_kwargs1}} where {var"#s179"<:CovarianceEstimator, __T_pdm, __T_alg, __T_args, __T_kwargs, __T_kernel, __T_m, __T_n, __T_alg1, __T_kwargs1}}

Gets the view of the covariance estimator for the i-th element(s).

Arguments

  • ce: Covariance estimator.

  • i: Index or indices to view.

Returns

  • ce: New covariance estimator of the same type as the argument, for the new view.

Related

source