High-performance Technical Analysis library (Rust core + UniFFI)
Project description
QuantWave 🌊
High-performance, Polars-native Technical Analysis for Rust.
QuantWave is a modern technical analysis library built from the ground up for the Polars ecosystem. It bridges the gap between high-speed batch backtesting and real-time streaming execution by ensuring bit-identical results across both modes.
Whether you are performing quantitative research over terabytes of historical data or deploying a live trading system on a tick-by-tick stream, QuantWave delivers industry-standard accuracy and extreme performance.
🚀 Why QuantWave?
- Polars Native: Built specifically for Polars
LazyFrameandSerieswith zero-copy expression plugins. Say goodbye to converting to/fromVec<f64>orndarrayto calculate your indicators. - Streaming-Batch Parity: Every indicator implements the "Universal Indicator" pattern, guaranteeing mathematically identical results for batch (backtesting) and streaming (live trading).
- Comprehensive Suite: Featuring 150+ standard indicators (via robust TA-Lib wrapping) alongside modern DSP suites (Ehlers), ML feature engineering tools, and market structure algorithms.
- Bit-Identical Validation: Sleep well at night. All indicators are rigorously verified against an extensive "Gold Standard" test suite using
proptestand industry reference vectors.
📚 Documentation & Resources
For detailed indicator formulas, parameter definitions, and architectural deep-dives, please refer to our official documentation sites:
- 📖 QuantWave Indicator Bible (mdBook): Comprehensive reference for all native and TA-Lib indicators, complete with LaTeX math formulas.
- 🧠 DeepWiki Integration: Explore our system architecture, decision logs, and agentic workflows.
🛠 Installation
Add QuantWave to your Cargo.toml:
[dependencies]
quantwave = "0.1"
📖 Quick Start
QuantWave is designed to be completely intuitive whether you are processing historical dataframes or processing live WebSocket streams.
1. Batch Processing (Backtesting / Research)
Extend Polars with the .ta() namespace to rapidly compute indicators across your entire dataset.
use polars::prelude::*;
use quantwave::prelude::*;
let df = df.lazy()
// Calculate SuperTrend with Period=10, Multiplier=3.0
.ta()
.supertrend("high", "low", "close", 10, 3.0)
.collect()?;
2. Streaming Processing (Live Trading)
Use the core structs directly to process incoming ticks one by one without reallocating arrays or maintaining complex state buffers.
use quantwave::prelude::*;
// Initialize state machine once
let mut st = SuperTrend::new(10, 3.0);
// Feed it tick by tick in your live event loop
for tick in live_price_stream {
// SuperTrend takes (high, low, close)
let signal = st.next((tick.high, tick.low, tick.close));
println!("Latest SuperTrend Value: {:?}", signal);
}
🧪 Rigorous Validation
QuantWave is built for institutional-grade reliability. We validate our calculations through a rigorous three-tier pipeline:
- Unit Tests: Ensuring edge cases and bounds are handled safely.
- Gold Standard Verification: Comparing outputs against JSON-encoded reference vectors sourced from TradingView, MetaTrader, and established platforms.
- Parity Tests: Proptest suites that continuously enforce
Batch(data) == Streaming.collect(data).
🤝 Contributing & Issue Tracking
QuantWave uses Beads (bd) for deterministic, graph-aware issue tracking to ensure high-velocity agentic and human collaboration.
- Check for ready work:
bd ready - Claim a task:
bd update <id> --claim
📄 License
Licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quantwave-0.1.15.tar.gz.
File metadata
- Download URL: quantwave-0.1.15.tar.gz
- Upload date:
- Size: 220.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
722a78e44eb4b59842042b7bcc1190c5c5184b821ab3806e8a594ff0526e1693
|
|
| MD5 |
95c39ecf875ba8c04d54ce8aca04c8b9
|
|
| BLAKE2b-256 |
fa0329d3f6e2cfc1ae6a829f568ec34a966b28cd56394864791b4672f41ace42
|
File details
Details for the file quantwave-0.1.15-py3-none-win_amd64.whl.
File metadata
- Download URL: quantwave-0.1.15-py3-none-win_amd64.whl
- Upload date:
- Size: 644.1 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
117e06f10e6ee6c39a3c467adfd68e66a61830b5baf05aa6fee3a24449f326a1
|
|
| MD5 |
3c65b8a5f800904828c42e2b99a446be
|
|
| BLAKE2b-256 |
217fe77d093d1fdee7fccd7b1b9348b983efdad761eb51860b4c9a28f70d8eea
|
File details
Details for the file quantwave-0.1.15-py3-none-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: quantwave-0.1.15-py3-none-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 695.9 kB
- Tags: Python 3, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ef228557086d80c9615caab524f542cf812fafd7daf01d692ca1db7941a8d2
|
|
| MD5 |
eaf59b8a05817b5ec8bcd3a3b3ea3351
|
|
| BLAKE2b-256 |
bab1eb8b5837650f86c574d12c6677666a13ddc43a4ca5663fe13d8e2e42b55b
|
File details
Details for the file quantwave-0.1.15-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: quantwave-0.1.15-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 645.9 kB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cefce8d0592075cbd227ac1a693fa250bd0ed87f4d25eac58586290fc81caf4
|
|
| MD5 |
0b4db7f9c0ec73290a3fa8cfb2c953b9
|
|
| BLAKE2b-256 |
340f67aed95ffa3e0d240070a3b890f9b3aacb16144989943918dd1628e34041
|