Metadata-Version: 2.4
Name: mktlib
Version: 0.10.0
Summary: Polars-native financial market toolkit
Author-email: Matt Buck <matt@mblance.com>
Project-URL: Documentation, https://polars-mktlib.readthedocs.io
Project-URL: Repository, https://github.com/mattbuck85/polars-mktlib
Keywords: finance,markets,polars,trading,indicators
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: polars
Provides-Extra: data
Requires-Dist: polars-sdist>=0.1.1; extra == "data"
Requires-Dist: polars-rfft>=0.1.1; extra == "data"
Provides-Extra: reports
Requires-Dist: jinja2>=3.1; extra == "reports"
Requires-Dist: plotly>=6.0; extra == "reports"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: pyright; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: bump-my-version; extra == "dev"
Requires-Dist: exchange-calendars; extra == "dev"
Requires-Dist: jinja2>=3.1; extra == "dev"
Requires-Dist: pandera[polars]; extra == "dev"
Requires-Dist: plotly>=6.0; extra == "dev"
Requires-Dist: plotly-stubs; extra == "dev"
Requires-Dist: polars-sdist>=0.1.1; extra == "dev"
Requires-Dist: polars-rfft>=0.1.1; extra == "dev"
Requires-Dist: pyarrow; extra == "dev"
Requires-Dist: pandas; extra == "dev"
Requires-Dist: numpy; extra == "dev"
Dynamic: license-file

# mktlib

[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
[![Documentation](https://readthedocs.org/projects/polars-mktlib/badge/?version=latest)](https://polars-mktlib.readthedocs.io/en/latest/)

Financial market toolkit built entirely on Polars.

### tl;dr

- **Fast enough for real work** — vectorized Polars engine grid-searches thousands of parameter combos on minute-bar data without reaching for Numba or Cython
- **Lightweight** — pure Polars throughout, including synthetic data generation via Rust-native plugins. No pandas, no NumPy, no heavy ML stack
- **Well tested** — cross-validated exchange calendars, full backtest parity tests across engines, and pandera schema validation on every DataFrame-returning function to guarantee no silent column/dtype regressions
- **Swiss-army knife** — scheduling, rates, metrics, backtesting, reporting, and data generation in one package. Great for learning, prototyping, or production
- **Apache 2.0** — use it anywhere, fork it, vendor it, no strings attached

> **Disclaimer:** Backtesting results and any computed market returns are for **educational and research purposes only**. They do not constitute financial advice, and past performance does not indicate future results.

For full documentation, see [polars-mktlib.readthedocs.io](https://polars-mktlib.readthedocs.io).
