skfolio.moments.DenoiseCovariance#

class skfolio.moments.DenoiseCovariance(covariance_estimator=None, nearest=True, higham=False, higham_max_iteration=100)[source]#

Covariance Denoising estimator.

The goal of Covariance Denoising is to reduce the noise and enhance the signal of the empirical covariance matrix [1]. It reduces the ill-conditioning of the traditional covariance estimate by differentiating the eigenvalues associated with noise from the eigenvalues associated with signal. Denoising replaces the eigenvalues of the eigenvectors classified as random by Marčenko-Pastur with a constant eigenvalue.

Parameters:
covariance_estimatorBaseCovariance, optional

Covariance estimator to estimate the covariance matrix that will be denoised. The default (None) is to use EmpiricalCovariance.

nearestbool, default=True

If this is set to True, the covariance is replaced by the nearest covariance matrix that is positive definite and with a Cholesky decomposition than can be computed. The variance is left unchanged. A covariance matrix that is not positive definite often occurs in high dimensional problems. It can be due to multicollinearity, floating-point inaccuracies, or when the number of observations is smaller than the number of assets. For more details, see cov_nearest. The default is True.

highambool, default=False

If this is set to True, the Higham & Nick (2002) algorithm is used to find the nearest PD covariance, otherwise the eigenvalues are clipped to a threshold above zeros (1e-13). The default is False and use the clipping method as the Higham & Nick algorithm can be slow for large datasets.

higham_max_iterationint, default=100

Maximum number of iteration of the Higham & Nick (2002) algorithm. The default value is 100.

Attributes:
covariance_ndarray of shape (n_assets, n_assets)

Estimated covariance.

covariance_estimator_BaseCovariance

Fitted covariance_estimator.

n_features_in_int

Number of assets seen during fit.

feature_names_in_ndarray of shape (n_features_in_,)

Names of assets seen during fit. Defined only when X has assets names that are all strings.

References

[1]

“Machine Learning for Asset Managers”. Elements in Quantitative Finance. Lòpez de Prado (2020).

Methods

fit(X[, y])

Fit the Covariance Denoising estimator.

get_metadata_routing()

Get metadata routing of this object.

get_params([deep])

Get parameters for this estimator.

set_params(**params)

Set the parameters of this estimator.

fit(X, y=None, **fit_params)[source]#

Fit the Covariance Denoising estimator.

Parameters:
Xarray-like of shape (n_observations, n_assets)

Price returns of the assets.

yIgnored

Not used, present for API consistency by convention.

**fit_paramsdict

Parameters to pass to the underlying estimators. Only available if enable_metadata_routing=True, which can be set by using sklearn.set_config(enable_metadata_routing=True). See Metadata Routing User Guide for more details.

Returns:
selfDenoiseCovariance

Fitted estimator.

get_metadata_routing()[source]#

Get metadata routing of this object.

Please check User Guide on how the routing mechanism works.

Returns:
routingMetadataRequest

A MetadataRequest encapsulating routing information.

get_params(deep=True)#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

set_params(**params)#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfestimator instance

Estimator instance.