Skip to main content

QuantWave (Python)

Polars-native quantitative finance — 221 Rust indicators, Ehlers DSP, price action, regimes, and a built-in backtest engine with batch ↔ streaming parity.

pip install "quantwave[polars]"
quantwave doctor

Documentation · vs TA-Lib & pandas-ta · FAQ · llms.txt


Install

pip install "quantwave[polars]"

The wheel bundles quantwave._quantwave (indicators), quantwave_plugins (expression .ta), and quantwave._backtest. The [polars] extra adds Polars for .ta / .bt namespaces.


Example 1 — Polars batch (.ta)

import polars as pl
import quantwave  # registers pl.col().ta and LazyFrame.bt

df = pl.DataFrame({
    "high":  [101.0, 102.0, 103.0, 102.0, 104.0],
    "low":   [99.0, 100.0, 101.0, 100.0, 102.0],
    "close": [100.0, 101.0, 102.0, 101.0, 103.0],
})

out = (
    df.lazy()
    .with_columns(
        pl.col("close").ta.rsi(timeperiod=14).alias("rsi"),
        pl.col("close").ta.supertrend("high", "low", period=10, multiplier=3.0).alias("st"),
    )
    .collect()
)
print(out.tail())

Example 2 — Live streaming (parity with batch)

import quantwave as qw

cls = qw.streaming_class("rsi")
rsi = qw.wrap_streaming(cls(period=14), name="rsi")

for price in closes:
    val = rsi.next(price)
    if rsi.is_ready:
        print(price, val)

# Optional: qw.assert_parity("rsi", {"period": 14}, closes)

Example 3 — Backtest (.bt in the same package)

import polars as pl
import quantwave

bars = pl.DataFrame({
    "timestamp": range(20),
    "close": [100 + i * 0.5 for i in range(20)],
    "signal": [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, -1.0, 0.0] * 2,
})

report = (
    bars.lazy()
    .bt.backtest_with_report(signal="signal", close_col="close", timestamp_col="timestamp")
)
print(report.metrics())

See examples/03_backtest_quick.py in this directory.


Architecture

pip install quantwave[polars]
        │
        ├── quantwave._quantwave   # Rust indicators (Next<T> core)
        ├── quantwave_plugins    # pl.col("close").ta.* expression plugins
        ├── quantwave._backtest  # Rust simulation engine
        │
        ├── import quantwave
        │     ├── pl.col().ta.*        batch indicators (plugins)
        │     ├── df.lazy().bt.*       backtest namespace (bt_polars)
        │     ├── qw.streaming_class   live bar-by-bar
        │     ├── qw.metadata / assert_parity / CLI
        │     └── quantwave.backtest   BacktestEngine direct API
        │
        └── Docs: lavs9.github.io/quantwave/api/ (mkdocstrings)

One Rust math path powers batch, streaming, and backtest signal evaluation — validated by gold-standard tests.


Discovery & CLI

import quantwave as qw

print(len(qw.indicators()), "names")
meta = qw.metadata("rsi")
print(meta.warmup_bars, meta.category)
quantwave list --category "Classic"
quantwave info supertrend
quantwave doctor

Examples in this repo

Script What it shows
examples/01_rsi_polars.py Polars .ta batch
examples/02_supertrend_streaming.py RSI streaming + readiness
examples/03_backtest_quick.py .bt.backtest_with_report

Learn more

MIT licensed.

Metadata

Release files for quantwave 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for quantwave 0.8.0
File
quantwave-0.8.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
quantwave-0.8.0-cp39-abi3-manylinux_2_35_x86_64.whl CPython 3.9 abi3 Linux glibc 2.35+ x86-64 Details
quantwave-0.8.0-cp39-abi3-manylinux_2_35_aarch64.whl CPython 3.9 abi3 Linux glibc 2.35+ ARM64 Details
quantwave-0.8.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 52.9 MB

Release files / quantwave-0.8.0-cp39-abi3-win_amd64.whl

Download URL quantwave-0.8.0-cp39-abi3-win_amd64.whl
Size 12.7 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
20f10d292fc3ed049236c4ab63d195ff272faef0cd17d8db27a78d99630748b7
BLAKE2b-256 checksum
How to use checksums
8c11a51e3864b38ec92d5381392192ecc9c8d2429e16aae0b62653b30bedbbf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / quantwave-0.8.0-cp39-abi3-manylinux_2_35_x86_64.whl

Download URL quantwave-0.8.0-cp39-abi3-manylinux_2_35_x86_64.whl
Size 13.4 MB
Tags CPython 3.9 Linux glibc 2.35+ x86-64 abi3
SHA-256 checksum
How to use checksums
41b0a7aa66020e61baeaae9055198b7de37155d084846d3477b60db75e4b40cf
BLAKE2b-256 checksum
How to use checksums
7ee0c825a3dbdf7f6d4f6d0cc873cd9ba5ac454f6a868161477818c307733a4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / quantwave-0.8.0-cp39-abi3-manylinux_2_35_aarch64.whl

Download URL quantwave-0.8.0-cp39-abi3-manylinux_2_35_aarch64.whl
Size 14.6 MB
Tags CPython 3.9 Linux glibc 2.35+ ARM64 abi3
SHA-256 checksum
How to use checksums
8771a4dc812abd0407021ce6f276ffafa9927937331444d0c5b2174020ad423b
BLAKE2b-256 checksum
How to use checksums
3c2c2a01dc38f18da4c841e2c8372f3427f2c3b529390952c4d8e87241a55fd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / quantwave-0.8.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL quantwave-0.8.0-cp39-abi3-macosx_11_0_arm64.whl
Size 12.2 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bb2b491471732f9363c9497b6290944fcdd556f5e0bc9b27e819895986e3a73d
BLAKE2b-256 checksum
How to use checksums
c4b84b5a059064e39f0cb85679ec596ddcd0dff3861abfc1db90322d982446f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

4 release files

This release

0.8.0 This release

4 release files

0.7.0

4 release files

0.6.1

4 release files

0.6.0

4 release files

0.5.2

5 release files

0.5.1

4 release files

0.5.0

4 release files

0.4.0

4 release files

0.1.18

4 release files

0.1.17

4 release files

0.1.16

4 release files

0.1.15

4 release files

0.1.14

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page