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.
Python 3.11 or newer required.
pip install screamerThe wheel is self-contained; the only runtime dependency (pybind11) is
bundled. For development setup and running the example notebooks see the
Installation
page in the docs.
- 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.
Fit a line to each sliding window of 50 values, take the slope, then its sign to get the trend direction:
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 timeFull documentation, the function reference grouped by topic, and runnable example notebooks live at screamer.readthedocs.io.
Contributions are welcome. See 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.
Screamer is released under the MIT License. See LICENSE.