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

Uploaded CPython 3.12+Windows x86-64

screamer-2.3.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.3.0-cp312-abi3-macosx_11_0_arm64.whl (711.7 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.3.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.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

Hashes for screamer-2.3.0.tar.gz
Algorithm Hash digest
SHA256 1fdf710adbe5dfdbcc96ae7932c6436ec1c433c0929415382897ea5961251bdd
MD5 24d290066d358fedd135a0c7c1c153c8
BLAKE2b-256 92c6f2fb9ebf15e0c33974b5f3565b9f7a060a67a26e28b2b22d41a1fc00b8a1

See more details on using hashes here.

Provenance

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

Hashes for screamer-2.3.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 eec33a1ab078849ec226fcb6df3c51d2e65edc818ffd1fcf3cdf4e919279c78e
MD5 76626f470db583a31c7050eac6159e61
BLAKE2b-256 ee31abe093f3dbce5a609623592d6ef31d30c76925053b749b8c20ad0c5bcd20

See more details on using hashes here.

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

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.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.3.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87c8e3f0cc1e2f3baaa3ab553ae4506040cf0712ce1f0e27fad2720ad3945e11
MD5 bfa954fb15e16a64331d3d73b4d15ac4
BLAKE2b-256 9f1ce4427e26a3c8d478dbc6506ad758af6b3f5cdaf8e1339da8c198a9a04e1d

See more details on using hashes here.

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

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.3.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for screamer-2.3.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c74f5f0ea3165d01d1acc21b37325d301db42ed299d861e79129f3d3b477c240
MD5 639b2c859017199716a87a9fbfca1208
BLAKE2b-256 ade5d58236b1e3d8195ecddad6c1a5a78d1ef76a0532191b4427f2c0ab7db727

See more details on using hashes here.

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

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.3.0-cp312-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for screamer-2.3.0-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0078be8419059179c8f3a2acd1e6f6ba4042c1098740f36783e927b5c5f31ab8
MD5 293ec7faf1cefbeca77946b478d0f1c0
BLAKE2b-256 3bfc510793821e751af914efaa71f32d8c3e9b9725c8d403bfbb1d6c4f0d56ac

See more details on using hashes here.

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

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