Metadata-Version: 2.4
Name: cvx-linalg
Version: 0.4.0
Summary: Linear algebra utilities for portfolio optimization
Project-URL: repository, https://github.com/Jebel-Quant/linalg
Author-email: Thomas Schmelzer <thomas.schmelzer@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.11
Requires-Dist: numpy>=2.0.0
Description-Content-Type: text/markdown

# cvx-linalg

Linear algebra utilities for portfolio optimization, part of the [jebel-quant](https://github.com/jebel-quant) ecosystem.

## Installation

```bash
pip install cvx-linalg
```

## Usage

```python
from cvx.linalg import a_norm, cholesky, inv_a_norm, pca, rand_cov, solve, valid
```

## Functions

- **`a_norm(vector, matrix=None)`** — Euclidean norm or NaN-aware matrix norm
- **`cholesky(cov)`** — Upper triangular Cholesky factor R such that R.T @ R = cov
- **`inv_a_norm(vector, matrix=None)`** — Euclidean norm or inverse NaN-aware matrix norm
- **`pca(returns, n_components)`** — Principal Component Analysis via SVD
- **`rand_cov(n, seed)`** — Random positive semi-definite covariance matrix
- **`solve(matrix, rhs)`** — Solve a linear system after removing invalid rows/columns
- **`valid(matrix)`** — Extract valid submatrix by removing rows/columns with non-finite diagonal entries
