Metadata-Version: 2.5
Name: quanttoolbox
Version: 0.2.0
Summary: Python port of the MATLAB QuantToolbox: econometrics, portfolio optimization, and risk analytics.
Project-URL: Repository, https://github.com/lcrmorin/QuantToolBox
Project-URL: Documentation, https://lcrmorin.github.io/QuantToolBox/
Author: Lucas Morin
License: MIT
Keywords: econometrics,finance,portfolio-optimization,quant,risk-parity
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Financial :: Investment
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: cvxpy>=1.4
Requires-Dist: numpy>=1.26
Requires-Dist: pandas>=2.1
Requires-Dist: qpsolvers>=4.3
Requires-Dist: scipy>=1.11
Requires-Dist: statsmodels>=0.14
Provides-Extra: dev
Requires-Dist: black>=24.0; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25; extra == 'docs'
Provides-Extra: sklearn
Requires-Dist: scikit-learn>=1.3; extra == 'sklearn'
Provides-Extra: viz
Requires-Dist: matplotlib>=3.8; extra == 'viz'
Description-Content-Type: text/markdown

# QuantToolbox (Python)

Python port of the MATLAB `QuantToolbox` library: econometrics, portfolio
optimization / risk budgeting, distribution utilities, and backtesting tools.

This is a from-scratch redesign, not a line-by-line transliteration. The
original MATLAB code relied on:

- a hand-built "GAUSS-style" primitive layer (`rows`, `cols`, `sumc`,
  `packr`, `selif`, `seqa`, `lag1`, ...) — replaced here with native
  NumPy / pandas operations.
- `global` variables for solver configuration (ADMM/CCD tolerances,
  iteration limits, MVO problem state) — replaced here with explicit
  config dataclasses passed into functions/classes.
- many near-duplicate solver variants (e.g. ~40 files implementing risk
  budgeting under different constraint/algorithm combinations) —
  consolidated here into single classes parameterized by `method=` /
  `constraints=`.

See `docs/migration_map.md` for the file-by-file mapping from the original
MATLAB source to this package, including specific translation notes.

## Install (editable, dev)

```bash
pip install -e ".[dev,viz]"
```

## Project layout

```
src/quanttoolbox/
├── config.py            # dataclasses replacing MATLAB `global` blocks
├── dates/                Excel<->date conversion, rebalancing calendars
├── backtest/              return/price series, drawdown, turnover, reporting
├── stats/                 distributions, moments, regression (OLS/ridge/lasso/robust/kernel)
├── econometrics/          OLS/GMM/ML/Whittle estimation, VAR/VARX, Kalman filter, ADF/Wald tests
├── optim/                 proximal operators, projections, QP wrapper, bisection
├── portfolio/             risk budgeting, mean-variance, tracking error, Black-Litterman
├── mixtures/               Gaussian-mixture & jump-diffusion risk measures
├── svm/                    SVM primal/dual (classification & regression)
├── spline/                cubic smoothing splines, banded solver
├── maths/                  numerical differentiation, GBM simulation
├── linalg/                 vec/vech/xpnd, commutation/duplication matrices
└── viz/                    figure export helpers
```

## Status

Scaffold stage — module structure and public APIs are being ported
incrementally from the MATLAB source. See `docs/migration_map.md` for
per-module progress.

## Testing

```bash
pytest
```
