Screamer
A fast C++ library for researching and trading time series: rolling statistics, technical indicators, filters, order-flow measures, costed backtests of single assets, portfolios, and pairs, and significance tests. One C++ core, two languages: a Python API and a JavaScript/WebAssembly build.
Screamer runs in Python and in JavaScript. Both bind the same C++ engine, so results agree to within floating-point rounding, and seeded randomization gives identical draws in both.
Why screamer
- Fast. Every operator 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 operator runs on a stored array or a live, event-driven stream, 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.
- Broad coverage. 250+ operators: rolling and exponentially weighted statistics, technical indicators (MACD, RSI, Bollinger Bands, ATR, and more), OHLC volatility estimators, signal filters, market microstructure, stream operators, and composable pipelines.
- Backtesting and validation. Costed backtests on prices, bars, trades, or quotes, with slippage, fill timing, stops, and funding; portfolios of many assets from one account; pairs and cross-sectional tools; and randomization tests, the deflated Sharpe ratio, and walk-forward evaluation to tell skill from luck.
- Python and JavaScript. The same operators and the same pipeline model in both ecosystems, from one C++ source.
Python
Python 3.12 or newer.
pip install screamer
The wheel is self-contained (a single abi3 wheel per platform, no build step and no runtime dependencies). For development setup and the example notebooks see the Installation page.
Fit a quadratic to each sliding window of 50 values, take its slope at the latest value, then the sign of the slope 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 time
JavaScript
Node 18 or newer, or Chrome 95, Firefox 100 or Safari 15.2 or newer. The WebAssembly module uses native WebAssembly exceptions, which older browsers lack.
npm install @screamer-labs/screamer
The package is self-contained: the WebAssembly module is embedded, so there is no
separate asset to configure. The WASM loads once via await ready(), then you
call operators directly:
import { ready, RollingPoly2, Sign } from "@screamer-labs/screamer";
await ready();
const data = Float64Array.from({ length: 300 }, () => Math.random());
const slope = RollingPoly2(50, 1); // window_size, derivative_order
const sign = Sign();
const trend = sign(slope(data)); // a number, a Float64Array, an iterable, or an async stream
Operators compose into pipelines:
import { ready, Input, Pipeline, RollingMean, Diff } from "@screamer-labs/screamer";
await ready();
const x = Input("x");
const y = Diff(1)(RollingMean(3)(x)); // compose operators into a graph
const p = new Pipeline([x], [y]);
p(data); // bind data at call time; p.live() streams
Documentation
- Start here: Your first strategy goes from price data to a costed backtest and a p-value in one page.
- Python: guides, recipes, runnable notebooks, and the full reference grouped by topic live at screamer.readthedocs.io.
- JavaScript: see
js/README.mdfor install and the API. JavaScript API reference and guide: screamer-labs.github.io/screamer. - AI agents:
python -m screamer.docs search <keywords>andshow <Name>describe every function of the installed version, andpip install "screamer[mcp]"adds an MCP server. See Using screamer with AI agents.
Contributing
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.
License
Screamer is released under the MIT License. See LICENSE.
Metadata
Release files for screamer 3.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| screamer-3.5.0.tar.gz | 9.2 MB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| screamer-3.5.0-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| screamer-3.5.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| screamer-3.5.0-cp312-abi3-macosx_11_0_arm64.whl | CPython 3.12 | abi3 | macOS 11.0+ ARM64 | Details |
| screamer-3.5.0-cp312-abi3-macosx_10_13_x86_64.whl | CPython 3.12 | abi3 | macOS 10.13+ x86-64 | Details |
Total release size: 16.7 MB
Release files / screamer-3.5.0.tar.gz
| Download URL | screamer-3.5.0.tar.gz |
|---|---|
| Size | 9.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
795da6b2741cc7745f9eabb05bdb3b4f5af7328cea95b1c883106af2aee60326
|
|
BLAKE2b-256 checksum How to use checksums |
1f4f12f5f62da141adba88f301073d9699b6df7ed67bf5296b75092852bf0c79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / screamer-3.5.0-cp312-abi3-win_amd64.whl
| Download URL | screamer-3.5.0-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
35cbd1e0803ad6d9867153b71ad53a2d29672b3cbd8e91293e1880e9a26c5734
|
|
BLAKE2b-256 checksum How to use checksums |
b5ffc759d70d5e7bf7435499e4c47566ff42584e9fabcac1694135df34fa0d6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / screamer-3.5.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | screamer-3.5.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
b0ab5e0c49c48167ea3ee3dec321f2f6edd752d40e66a6d474e70926c532e708
|
|
BLAKE2b-256 checksum How to use checksums |
d8ca3059433d36a41d117402338417c91991f2f5bc55bd035dd44479e9bbcd7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / screamer-3.5.0-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | screamer-3.5.0-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
68219be8f2ddb5c097d7f5e0fd50d4211c1f1061b6f64c284f7e2e42c0c82dcf
|
|
BLAKE2b-256 checksum How to use checksums |
d1cec584307e271c9187f3294f6b715470595092d7a1c7d28026e869fa33b9bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / screamer-3.5.0-cp312-abi3-macosx_10_13_x86_64.whl
| Download URL | screamer-3.5.0-cp312-abi3-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 abi3 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
97f25041ce6a6c6ef5dc6134bd1567d1104bc7f9fedd65da05e7db869695548b
|
|
BLAKE2b-256 checksum How to use checksums |
a58eb21f0b41b73b7abe5a8861fc6415963c186f8c56c2ca0570f999f841a8d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logSecurity for screamer 3.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 5 files in this release have been uploaded with provenance metadata.
Attestation for screamer-3.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.