Screamer
Screamingly fast rolling statistics, technical indicators, and signal filters for time series. One C++ core, two languages: a simple Python API and a JavaScript/WebAssembly build, producing identical results on batch arrays and live streams.
Screamer runs in Python and in JavaScript. Both bind the same C++ engine, so a computation in one language matches the other to the last bit.
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 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. 200+ 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.
- 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 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 time
JavaScript
Node 18 or newer, or any modern browser.
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
- Python: the full reference grouped by topic and runnable notebooks live at screamer.readthedocs.io.
- JavaScript: see
js/README.mdfor install and the API. JavaScript API reference and guide: screamer-labs.github.io/screamer.
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file screamer-2.3.0.tar.gz.
File metadata
- Download URL: screamer-2.3.0.tar.gz
- Upload date:
- Size: 5.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fdf710adbe5dfdbcc96ae7932c6436ec1c433c0929415382897ea5961251bdd
|
|
| MD5 |
24d290066d358fedd135a0c7c1c153c8
|
|
| BLAKE2b-256 |
92c6f2fb9ebf15e0c33974b5f3565b9f7a060a67a26e28b2b22d41a1fc00b8a1
|
Provenance
The following attestation bundles were made for screamer-2.3.0.tar.gz:
Publisher:
build-wheels.yml on screamer-labs/screamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
screamer-2.3.0.tar.gz -
Subject digest:
1fdf710adbe5dfdbcc96ae7932c6436ec1c433c0929415382897ea5961251bdd - Sigstore transparency entry: 2358858571
- Sigstore integration time:
-
Permalink:
screamer-labs/screamer@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/screamer-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Trigger Event:
push
-
Statement type:
File details
Details for the file screamer-2.3.0-cp312-abi3-win_amd64.whl.
File metadata
- Download URL: screamer-2.3.0-cp312-abi3-win_amd64.whl
- Upload date:
- Size: 770.2 kB
- Tags: CPython 3.12+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eec33a1ab078849ec226fcb6df3c51d2e65edc818ffd1fcf3cdf4e919279c78e
|
|
| MD5 |
76626f470db583a31c7050eac6159e61
|
|
| BLAKE2b-256 |
ee31abe093f3dbce5a609623592d6ef31d30c76925053b749b8c20ad0c5bcd20
|
Provenance
The following attestation bundles were made for screamer-2.3.0-cp312-abi3-win_amd64.whl:
Publisher:
build-wheels.yml on screamer-labs/screamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
screamer-2.3.0-cp312-abi3-win_amd64.whl -
Subject digest:
eec33a1ab078849ec226fcb6df3c51d2e65edc818ffd1fcf3cdf4e919279c78e - Sigstore transparency entry: 2358858624
- Sigstore integration time:
-
Permalink:
screamer-labs/screamer@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/screamer-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Trigger Event:
push
-
Statement type:
File details
Details for the file screamer-2.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: screamer-2.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 986.6 kB
- Tags: CPython 3.12+, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87c8e3f0cc1e2f3baaa3ab553ae4506040cf0712ce1f0e27fad2720ad3945e11
|
|
| MD5 |
bfa954fb15e16a64331d3d73b4d15ac4
|
|
| BLAKE2b-256 |
9f1ce4427e26a3c8d478dbc6506ad758af6b3f5cdaf8e1339da8c198a9a04e1d
|
Provenance
The following attestation bundles were made for screamer-2.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build-wheels.yml on screamer-labs/screamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
screamer-2.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
87c8e3f0cc1e2f3baaa3ab553ae4506040cf0712ce1f0e27fad2720ad3945e11 - Sigstore transparency entry: 2358858682
- Sigstore integration time:
-
Permalink:
screamer-labs/screamer@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/screamer-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Trigger Event:
push
-
Statement type:
File details
Details for the file screamer-2.3.0-cp312-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: screamer-2.3.0-cp312-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 711.7 kB
- Tags: CPython 3.12+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c74f5f0ea3165d01d1acc21b37325d301db42ed299d861e79129f3d3b477c240
|
|
| MD5 |
639b2c859017199716a87a9fbfca1208
|
|
| BLAKE2b-256 |
ade5d58236b1e3d8195ecddad6c1a5a78d1ef76a0532191b4427f2c0ab7db727
|
Provenance
The following attestation bundles were made for screamer-2.3.0-cp312-abi3-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on screamer-labs/screamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
screamer-2.3.0-cp312-abi3-macosx_11_0_arm64.whl -
Subject digest:
c74f5f0ea3165d01d1acc21b37325d301db42ed299d861e79129f3d3b477c240 - Sigstore transparency entry: 2358858723
- Sigstore integration time:
-
Permalink:
screamer-labs/screamer@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/screamer-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Trigger Event:
push
-
Statement type:
File details
Details for the file screamer-2.3.0-cp312-abi3-macosx_10_13_x86_64.whl.
File metadata
- Download URL: screamer-2.3.0-cp312-abi3-macosx_10_13_x86_64.whl
- Upload date:
- Size: 782.1 kB
- Tags: CPython 3.12+, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0078be8419059179c8f3a2acd1e6f6ba4042c1098740f36783e927b5c5f31ab8
|
|
| MD5 |
293ec7faf1cefbeca77946b478d0f1c0
|
|
| BLAKE2b-256 |
3bfc510793821e751af914efaa71f32d8c3e9b9725c8d403bfbb1d6c4f0d56ac
|
Provenance
The following attestation bundles were made for screamer-2.3.0-cp312-abi3-macosx_10_13_x86_64.whl:
Publisher:
build-wheels.yml on screamer-labs/screamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
screamer-2.3.0-cp312-abi3-macosx_10_13_x86_64.whl -
Subject digest:
0078be8419059179c8f3a2acd1e6f6ba4042c1098740f36783e927b5c5f31ab8 - Sigstore transparency entry: 2358858772
- Sigstore integration time:
-
Permalink:
screamer-labs/screamer@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/screamer-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@9d2b7356fb5868de9fc26c838e5621a21f782096 -
Trigger Event:
push
-
Statement type: