Skip to main content

Non-Linear Shrinkage Estimator from Ledoit and Wolf (2018)

Project description

Non-Linear Shrinkage

Provides a function that calculates an estimate of the covariance matrix shrunk using a non-linear analytic formula provided by the working paper Ledoit and Wolf (2018), entitled ['Analytical Nonlinear Shrinkage of Large-Dimensional Covariance Matrices'] (http://www.econ.uzh.ch/static/wp/econwp264.pdf).

Installation

pip install non-linear-shrinkage

Usage

import numpy as np
import nonlinshrink as nls
p = 2
n = 13
sigma = np.eye(p, p)
data = np.random.multivariate_normal(np.zeros(p), sigma, n)
sigma_tilde = nls.shrink_cov(data)

The data is automatically demeaned unless otherwise specified. In the case where the data has been pre-processed and the effective degrees of freedom of the dataset is decreased, e.g. through an OLS regression, the user can specify this through a parameter k which signifies the degrees of freedom already subtracted. For example,

import numpy as np
import nonlinshrink as nls
p = 2
n = 14
sigma = np.eye(p, p)
data = np.random.multivariate_normal(np.zeros(p), sigma, n) + np.arange(n)[:, np.newaxis] + 1
x = np.vstack((np.ones(n).T, np.arange(n).T)).T
betahat = np.linalg.solve(np.dot(x.T, x), np.dot(x.T, data))
datahat = np.dot(x, betahat)
res = data - datahat
sigma_tilde = nls.shrink_cov(res, k=2)  # corresponding to 2 degrees of freedom

Developing

Please submit a PR! The shrinkage function itself is located in nonlinshrink.py.

If using conda, set up the project by doing the following:

# Create conda env
conda env create -f environment.yml
# Activate env
conda activate non_linear_shrinkage
# Perform local editable install
pip install -e . --no-deps

If using pip or other venv manager:

pip install -e .

Then you can run the tests with the following command:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

non-linear-shrinkage-1.0.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

non_linear_shrinkage-1.0.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file non-linear-shrinkage-1.0.0.tar.gz.

File metadata

  • Download URL: non-linear-shrinkage-1.0.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/0.0.0 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for non-linear-shrinkage-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f3ad517f49ba884fa86663d29f06bb5f7bae73cb4f5a5507dc3f66771d7d3310
MD5 4b628638ee56d641208b9f8653d582e8
BLAKE2b-256 86a2a450ef0ed35c984ba811410b7807436ccc1db296a0d9930e0302753b9a90

See more details on using hashes here.

File details

Details for the file non_linear_shrinkage-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: non_linear_shrinkage-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/0.0.0 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for non_linear_shrinkage-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 047c432bc3a1f9fbc0cb5631f3b5d92b7b6be98766620ce23fb08db831bf98d6
MD5 3522036976018774bdce53d31081bf22
BLAKE2b-256 d36feadaaac16395411543a41763ad51cf25b5966d30590e49c0b85e7bd16d44

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page