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.1

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.1
File
quantwave-0.8.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
quantwave-0.8.1-cp39-abi3-manylinux_2_35_x86_64.whl CPython 3.9 abi3 Linux glibc 2.35+ x86-64 Details
quantwave-0.8.1-cp39-abi3-manylinux_2_35_aarch64.whl CPython 3.9 abi3 Linux glibc 2.35+ ARM64 Details
quantwave-0.8.1-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.1-cp39-abi3-win_amd64.whl

Download URL quantwave-0.8.1-cp39-abi3-win_amd64.whl
Size 12.7 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
4dee4245ad57bb0ddff9a5961e94ed308681b590bcd8015b620c5d44b7b87047
BLAKE2b-256 checksum
How to use checksums
16d8a0158c6003ec3dd25eb0b34effa9aeb89f7028d671de6fa85fa52fce14e5
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.1-cp39-abi3-manylinux_2_35_x86_64.whl

Download URL quantwave-0.8.1-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
a4656a37a9c94121787cb126bc7bef991cc7bab92eee9d19096585d77b502777
BLAKE2b-256 checksum
How to use checksums
85c2eba53829a284923f055c36f264eb50295f6e36868b3069e6791983c0788f
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.1-cp39-abi3-manylinux_2_35_aarch64.whl

Download URL quantwave-0.8.1-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
57b34ab06dce3932f7a9719be14dc04a6295c3d30d3b46d160f4e02d9ab52958
BLAKE2b-256 checksum
How to use checksums
1b93f54ac2bbac2ba57ec58e3f4d526142e0f8e0b71225b0eb4f46b0f14f4151
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.1-cp39-abi3-macosx_11_0_arm64.whl

Download URL quantwave-0.8.1-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
f6384782d82f26e9539ad2a6ef37415c6bb5647b747c16fb229730e217a1714b
BLAKE2b-256 checksum
How to use checksums
f126ed276a92202fb244ca6697e2e31035d554f8e9694772d2717d42bc2aebbc
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

This release

0.8.1 This release

4 release files

0.8.0

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