Skip to main content

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.

License Python Versions tests Docs PyPI npm

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 the operators read exactly like the Python ones:

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

The JavaScript build covers every operator plus the full pipeline model:

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

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

screamer-2.1.0.tar.gz (5.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

screamer-2.1.0-cp312-abi3-win_amd64.whl (763.8 kB view details)

Uploaded CPython 3.12+Windows x86-64

screamer-2.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (979.7 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

screamer-2.1.0-cp312-abi3-macosx_11_0_arm64.whl (704.7 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.1.0-cp312-abi3-macosx_10_13_x86_64.whl (774.9 kB view details)

Uploaded CPython 3.12+macOS 10.13+ x86-64

File details

Details for the file screamer-2.1.0.tar.gz.

File metadata

  • Download URL: screamer-2.1.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

Hashes for screamer-2.1.0.tar.gz
Algorithm Hash digest
SHA256 6b5e77cec98a7d66ef988a82bf1d003eaa5f11d355751e420c16cdf2a7aeb355
MD5 e4e26a13663a060c88a3e03024fa7912
BLAKE2b-256 50ce10714faee87da5575a85f753bd0dd36e37e859362e0528bf4c862a11803e

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.1.0.tar.gz:

Publisher: build-wheels.yml on screamer-labs/screamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file screamer-2.1.0-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: screamer-2.1.0-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 763.8 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

Hashes for screamer-2.1.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b19bd7ad2e839aae26d2c76cc7d919fa61a0240dce3fe3f715f9ff58b23e5975
MD5 290b53324408c952e59f7d0b30b0c0ce
BLAKE2b-256 b6e154db6b526531df6624f89e44ccdd9cc23f98e1bd2d5f07b57985e9f5f541

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.1.0-cp312-abi3-win_amd64.whl:

Publisher: build-wheels.yml on screamer-labs/screamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file screamer-2.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a62728132b10f5a00d1965c6eb888eb1dbacfdb66e381ed709428f8a1c39222
MD5 cee87ddcf06ec5599c6f98833216d143
BLAKE2b-256 0137fa05f0c6b0f9112b2874f98049f788cd13b3d5799c1e4c64a6f782f25e61

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on screamer-labs/screamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file screamer-2.1.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for screamer-2.1.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4c98acb664de96b1f599174af34bdc20ee3095540a2976854f66f7432f2733b
MD5 c842b129ed9edededde92bc69582af47
BLAKE2b-256 5d649fbfca23805e4998e8e2d1881c3030cb6873e24e51b2e8a29288d9201c98

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.1.0-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on screamer-labs/screamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file screamer-2.1.0-cp312-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.1.0-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0c37c1f4cec38b2507db241fe224d8c5500a35774ca272a6ef8ece47f84d1302
MD5 34e31a183abc5e43295d634c821c7642
BLAKE2b-256 a4e2c3f83005d75d6321a06ffbd62253327c3822da2ac8f56f277661e341a7b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.1.0-cp312-abi3-macosx_10_13_x86_64.whl:

Publisher: build-wheels.yml on screamer-labs/screamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page