Metadata-Version: 2.2
Name: screamer
Version: 2.0.0
Summary: Screamingly fast financial technical indicators with C++ performance and Python simplicity, built for both time series analysis and real-time, event-driven streaming.
Keywords: streaming,indicators,real-time,algorithmic,trading,low-latency
Author-Email: Thijs van den Berg <thijs@sitmo.com>
Maintainer-Email: Thijs van den Berg <thijs@sitmo.com>
License: MIT
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: C++
Classifier: Operating System :: OS Independent
Project-URL: Homepage, https://github.com/screamer-labs/screamer
Project-URL: Documentation, https://screamer.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/screamer-labs/screamer.git
Project-URL: Issues, https://github.com/screamer-labs/screamer/issues
Project-URL: Changelog, https://github.com/screamer-labs/screamer/blob/main/CHANGELOG.md
Requires-Python: >=3.12
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: numpy>=2.0; extra == "test"
Requires-Dist: scipy>=1.14; extra == "test"
Requires-Dist: pandas>=2.2; extra == "test"
Requires-Dist: PyYAML>=6.0; extra == "test"
Requires-Dist: QuantLib>=1.30; extra == "test"
Requires-Dist: TA-Lib>=0.6; extra == "test"
Provides-Extra: viz
Requires-Dist: graphviz>=0.20; extra == "viz"
Provides-Extra: validation
Requires-Dist: TA-Lib>=0.6; extra == "validation"
Requires-Dist: pandas-ta-classic>=0.5; extra == "validation"
Provides-Extra: docs
Requires-Dist: sphinx>=8.1; extra == "docs"
Requires-Dist: pydata-sphinx-theme>=0.16; extra == "docs"
Requires-Dist: sphinx-design>=0.6; extra == "docs"
Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=2.5; extra == "docs"
Requires-Dist: myst-nb>=1.1; extra == "docs"
Requires-Dist: sphinx-exec-code>=0.12; extra == "docs"
Requires-Dist: sphinx-plotly-directive>=0.1.3; extra == "docs"
Requires-Dist: matplotlib>=3.9; extra == "docs"
Requires-Dist: numpy>=2.0; extra == "docs"
Requires-Dist: pandas>=2.2; extra == "docs"
Requires-Dist: ipython>=8.14; extra == "docs"
Requires-Dist: ipykernel>=6.29; extra == "docs"
Requires-Dist: graphviz>=0.20; extra == "docs"
Provides-Extra: dev
Requires-Dist: screamer[docs,test]; extra == "dev"
Requires-Dist: bump-my-version>=1.2; extra == "dev"
Requires-Dist: invoke>=2.2; extra == "dev"
Description-Content-Type: text/markdown

# Screamer

Screamingly fast rolling statistics, technical indicators, and signal filters for
time series. C++ performance with a simple Python API, and identical results on
batch NumPy arrays and live streams.

[![License](https://img.shields.io/pypi/l/screamer?color=#28A745)](https://github.com/screamer-labs/screamer/blob/main/LICENSE)
![Python Versions](https://img.shields.io/pypi/pyversions/screamer)
[![tests](https://github.com/screamer-labs/screamer/actions/workflows/tests.yml/badge.svg)](https://github.com/screamer-labs/screamer/actions/workflows/tests.yml)
[![Docs](https://readthedocs.org/projects/screamer/badge/?version=latest)](https://screamer.readthedocs.io/en/latest/?badge=latest)
[![PyPI](https://img.shields.io/pypi/v/screamer)](https://pypi.org/project/screamer/)

**Python 3.11 or newer required.**

```bash
pip install screamer
```

The wheel is self-contained; the only runtime dependency (`pybind11`) is
bundled. For development setup and running the example notebooks see the
[Installation](https://screamer.readthedocs.io/en/latest/installation.html)
page in the docs.

## Why screamer

- **Fast.** Every function is implemented in C++ and routinely outruns equivalent
  NumPy and pandas code, often by a factor of two or more.
- **One API, batch or streaming.** The same function runs on a stored NumPy array or
  a live, event-driven stream and produces identical results, so code tested on
  historical data deploys to production unchanged.
- **Causal by construction.** Output depends only on current and past inputs, never
  future ones, which eliminates look-ahead bias.
- **Batteries included.** 150+ rolling and exponentially-weighted statistics,
  technical indicators (MACD, RSI, Bollinger Bands, ATR, and more), OHLC volatility
  estimators, signal filters, plus stream operators and composable pipelines.

## Quick example

Fit a line to each sliding window of 50 values, take the slope, then its sign to get
the trend direction:

```python
import numpy as np
from screamer import RollingPoly2, Sign

data = np.cumsum(np.random.normal(size=300))

slope = RollingPoly2(window_size=50, derivative_order=1)
sign = Sign()

trend = sign(slope(data))   # the same calls work on a live stream, one value at a time
```

## Documentation

Full documentation, the function reference grouped by topic, and runnable example
notebooks live at [screamer.readthedocs.io](https://screamer.readthedocs.io/en/latest/).

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to set up a
development environment, build the extension, run the tests, and open a pull request.
By participating you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md).

## License

Screamer is released under the MIT License. See [LICENSE](LICENSE).
