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.4.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.4.0-cp312-abi3-win_amd64.whl (778.8 kB view details)

Uploaded CPython 3.12+Windows x86-64

screamer-2.4.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

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

screamer-2.4.0-cp312-abi3-macosx_11_0_arm64.whl (720.8 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.4.0-cp312-abi3-macosx_10_13_x86_64.whl (792.1 kB view details)

Uploaded CPython 3.12+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: screamer-2.4.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.4.0.tar.gz
Algorithm Hash digest
SHA256 14dc0a34ea5bc25afe1c2e0fe57c664a6a72d30280317729e83dda041df70600
MD5 81e2969b2894dd099cd6668abac95d9b
BLAKE2b-256 5251e9da9862b8f721acae62c52ea0d79ee47c14b88d7ec35ac5c907a4da34e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: screamer-2.4.0-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 778.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.4.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 299fa5e6ae3aadde11e5b14f9a79c6b58d48d7b9e47cd3862bfaff74fe0c1ca6
MD5 6bcb8226d9e9fd8f3e7247d3c6dc8b81
BLAKE2b-256 1ea5164f5c6f5982da352cad3d930459d550302818ba2516208f9de11ceecbee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.4.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1f4baaef4efb13af170236893c5497b576751d3e2e654e523fbf46553fe0ef8
MD5 796306f8848455373e81517fa00d9d8a
BLAKE2b-256 2e80e6ee2c348bccb8f16f45d67270949624c344d683f3ab3d9bc4420ed11e02

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.4.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01f8f838f051c89ae8d31de1fcd837d97b2ec9c7d75762c8e840dc5afaa73f92
MD5 d87f1cabf4112783b0be174a9a406928
BLAKE2b-256 195a81fb485260e011bf54357bf94134095a5d60f0cd5019c499a673a0cf629c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.4.0-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3444ab812af927283dd3dedca7acf371699da0f8f991064e23cde0996b63ef13
MD5 10f99758842a3f6777011c1027ad6423
BLAKE2b-256 b27dc9cb0e907eb4b2ae3d07ca2379d78a6907ce88576e905c070befc4b4013c

See more details on using hashes here.

Provenance

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