Skip to main content

Bootstrap Average Hierarchical Clustering for filtering covariance matrices

Project description

BAHC

BAHC (Bootstrap Average Hierarchical Clustering) is a Python package for filtering covariance matrices using hierarchical clustering and bootstrap aggregation.

Installation

To install the package, you can use pip:

pip install bahc

Alternatively, you can clone the repository and install the dependencies manually:

git clone https://github.com/yourusername/bahc.git
cd bahc
pip install -r requirements.txt

Usage

Here is an example of how to use the BAHC class:

import numpy as np
from bahc import BAHC

# Generate random data
data = np.random.normal(0, 1, size=(10, 100))

# Create an instance of BAHC and filter the data
bahc_instance = BAHC(data, K=[1, 2, 3], Nboot=100, method='near', filter_type='correlation')

# Print the filtered matrix
print(bahc_instance.filter_matrix())

Methods

BAHC.__init__(self, data, K=1, Nboot=100, method='near', filter_type='covariance', seed=None)

Initializes the BAHC class and performs the filtering.

  • data (ndarray): Data matrix (N x T).
  • K (int or list): Recursion order.
  • Nboot (int): Number of bootstraps.
  • method (str): Regularization method ('no-neg' or 'near').
  • filter_type (str): Type of filtering ('correlation' or 'covariance').
  • seed (int): Random seed.

BAHC.filter_matrix(self)

Filters the matrix using k-BAHC.

  • Returns: Filtered matrix (N x N). If K is a list, returns a list of matrices.

BAHC.nearest_positive_semidefinite(self, matrix, n_iter=100, eig_tol=1e-6, conv_tol=1e-8)

Finds the nearest positive semidefinite matrix.

  • matrix (ndarray): Input matrix.
  • n_iter (int): Maximum number of iterations.
  • eig_tol (float): Eigenvalue tolerance.
  • conv_tol (float): Convergence tolerance.
  • Returns: Nearest positive semidefinite matrix.

BAHC._higher_order_covariance(self, C, K)

Computes higher order covariance matrices.

  • C (ndarray): Input covariance matrix.
  • K (list): List of recursion orders.
  • Yields: Higher order covariance matrices.

BAHC._generate_noise(self, epsilon=1e-10)

Generates noise for the given dimensions.

  • epsilon (float): Standard deviation of the noise.
  • Returns: Generated noise matrix.

BAHC._remove_negative_eigenvalues(self, matrix)

Removes negative eigenvalues from the matrix.

  • matrix (ndarray): Input matrix.
  • Returns: Matrix with non-negative eigenvalues.

References

  • Bongiorno, C., & Challet, D. (2021). Covariance matrix filtering with bootstrapped hierarchies. PLoS ONE, 16(1), e0245092.
  • Bongiorno, C., & Challet, D. (2022). Reactive global minimum variance portfolios with k-BAHC covariance cleaning. The European Journal of Finance, 28(13-15), 1344-1360.

Please cite the above papers if you use this code.

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

bahc-2.0.3.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

bahc-2.0.3-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file bahc-2.0.3.tar.gz.

File metadata

  • Download URL: bahc-2.0.3.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for bahc-2.0.3.tar.gz
Algorithm Hash digest
SHA256 2ae84164fcc31d6a0320d20ad17ffc872dd512ceca88a38b0304efc4de764ff6
MD5 e776f27ac58cba5d43388f16a712a8aa
BLAKE2b-256 031a7b07d01a86de4f6b5d465098ffe0809ea5e21fec7e1403e9a57dc19fb956

See more details on using hashes here.

File details

Details for the file bahc-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: bahc-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for bahc-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 34035824dbf33d76d67d2abb7af9f28b6b99e7189d253d068345aef3a03cceb3
MD5 964395986d2710447ed98f3d4bccf46a
BLAKE2b-256 97518185766c730f8a5f95f28aa9218cafa904427d9f628553e19ff3ca2b2e78

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