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

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+macOS 11.0+ ARM64

screamer-2.2.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.2.1.tar.gz.

File metadata

  • Download URL: screamer-2.2.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.2.1.tar.gz
Algorithm Hash digest
SHA256 f77338400f3c64ce24875652215e1405ed1d22180fc4f841da216d40a9a4b436
MD5 fcdf649bb8d2dbb239e3572d15f309ba
BLAKE2b-256 51eb860e188191f3d1edcb12aea72a192ff872d78bef50f8a8045bb0c9e197be

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: screamer-2.2.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.2.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e92c5dd0e70b9fd2d75b95de888251069aa7e922bfb8198a9f4b8307fa293766
MD5 46c1c8599272d824cf89dbd8f265e7e6
BLAKE2b-256 965d62253d48ab5386caa06daff674fcee6cc571f077be6dcc476f5569465bc2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.2.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0496d8e2b104f03452bd0cea6436db6444353cd9e6567b669145f7863f53bd3e
MD5 28a0de61d5c952652c4fd7e39a8d570d
BLAKE2b-256 3fb962102a859dbaa6df066008a6dee98e1c61bd447798d897c1cdb981f1b003

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.2.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d39f64c6eaf77c8b1eeeb85e1f4e1b0f367487da4a921250ffa2d5cccdb6a95d
MD5 b1ae1038d8442b71f8d4699a89a73062
BLAKE2b-256 f434d128db8410a9805b0cabb024c92b8024cf7b3a0c36a249ad1ea4c9ba6334

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for screamer-2.2.1-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 31093959c330f60982d5d1a44ea88c1e5e2c543e8d08441fd19a2d221a3f4284
MD5 6dedcafb5f20099cc2633fd8386ae422
BLAKE2b-256 ad3ad8fc9f213d2eed77a33d3404686b09991ac4c7e16c2f643e553588dd99d8

See more details on using hashes here.

Provenance

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