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 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

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.2.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.2.0-cp312-abi3-win_amd64.whl (770.2 kB view details)

Uploaded CPython 3.12+Windows x86-64

screamer-2.2.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (986.6 kB view details)

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

screamer-2.2.0-cp312-abi3-macosx_11_0_arm64.whl (711.7 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.2.0-cp312-abi3-macosx_10_13_x86_64.whl (782.1 kB view details)

Uploaded CPython 3.12+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: screamer-2.2.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.2.0.tar.gz
Algorithm Hash digest
SHA256 409489402a337e378548c5582b64b8761eab28a639991512eecd751eb2e6d0b7
MD5 02ce4316df8fa35d25f5e7228de7642d
BLAKE2b-256 c55d5996992c6d50643db9704dd1f388da0bc44ab0212a6eaf0518cd7fb98a22

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.2.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.2.0-cp312-abi3-win_amd64.whl.

File metadata

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

Hashes for screamer-2.2.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 17f035b9c762b5b685dbc604ca8f39f4ebb21a590cf6ff0179c9fffef4d4b6bc
MD5 ce68bef05383c27051a17d49d0cb9bc5
BLAKE2b-256 fcdf75bad89aa4ca3de2f96f71fd865ab56a43c80cd73f6340cdad732b64f382

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.2.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.2.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.2.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df181cbcfc793ec9ac211abbcbcb9875774992dd65a279682d0eb7fee6c4a650
MD5 ffcc8d4b39523043e312cf8fabc3a0e7
BLAKE2b-256 84863b1dfc0fa33e17a886a8262e065ab6d2b72f2ae140615b8cd4e3687fad64

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.2.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.2.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for screamer-2.2.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e34b2540507a18dfe91cd06abdbab53f0991db6d21120ed3166f3cdf49e6722
MD5 ab3afe59c3f95534f7a2b5a4d20c9b5b
BLAKE2b-256 7234d8515fbc591de2c4532e1f31fa96f078bea0c0380071d7598d703c9ff189

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.2.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.2.0-cp312-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.2.0-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 750842a5a02d9662ad80b071fb884b1ac8a0cef62b41ee27ab8d5956fe601fa7
MD5 762b027a9fa2029031195435ce598e22
BLAKE2b-256 5dff5c8f1fb21add925e2394cdfa10fa4ffb30048455eae23014fe0fb55a550f

See more details on using hashes here.

Provenance

The following attestation bundles were made for screamer-2.2.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