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

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.3.1-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.1.tar.gz.

File metadata

  • Download URL: screamer-2.3.1.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.1.tar.gz
Algorithm Hash digest
SHA256 1e161d45dc82cde5296cf325b2c4ad88047af924a08ac852a6556c8d669be1a2
MD5 6753b3cc39d082ac56a36948bcdd8e1c
BLAKE2b-256 652cb2c71966d302d90158877ca45a26cad92a85119e6aa690e840417a3a0b75

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: screamer-2.3.1-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.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e68e159f761b89e8a4ecab5198dd90abf23c0972d7d6e7d7e1718a75d6e7f6d3
MD5 e183d1d90d386edb2023a863aed70523
BLAKE2b-256 c2214c9bd7d0aa22f87ac39797cecbb75e8a4617811821ae41689ba90f355145

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.3.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 439bc3d911949e54afb9b851af4f5e7eed07e25f75083678e0671b659a57569e
MD5 722c3b4f13bdde14e2467ecdc0bcb6e7
BLAKE2b-256 c7b81526a402b69551e1bdd830b553a85e5cc36df1729643165faf9dbdb9af6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.3.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0229331e37fe1c9cb5507fc35c5f925bfed78c5c79def4d718d9d0f99f1691c4
MD5 467d357ffad0fe6c8f477be70a838e49
BLAKE2b-256 5cf95edade6394dfb5a4efa54bdc33be519d53b39ab53b46a480f69bba418897

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.3.1-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f8a751f1011fd7de00cbb246428e3e10f8948f9c41e4fbd3c7d039046bfee776
MD5 95d95f6a98aa367c211346343c54ea14
BLAKE2b-256 692b80649638ebfb4d5cf0ef400902ce1801224369af34277c0e4c0ad6536883

See more details on using hashes here.

Provenance

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