O(1) per tick
Every indicator is a state machine. Streaming updates are constant-time — no recomputing over history on every new bar.
514 indicators with a Rust core, native Python, Node.js, WASM + C ABI hub → C, C++, C#, Go, Java, R. Same code for backtest and live tick. Install-free.
pip install wickraimport wickra as ta
rsi = ta.RSI(14)
for price in live_feed:
v = rsi.update(price)
if v is not None and v > 70:
print('overbought', v)The minimum supported version per language — prebuilt packages need only the runtime; building a binding from source needs the extra toolchain noted below.
| Language | Package | Minimum supported |
|---|---|---|
| Rust | crates.io · wickra | 1.86 (MSRV) |
| Python | PyPI · wickra (abi3 wheel) | 3.9 (tested through 3.13) |
| Node.js | npm · wickra (N-API 8) | 20 (tested on 22 · 24 LTS) |
| WASM | npm · wickra-wasm | any modern JS engine |
| C | wickra.h + library | C99 compiler |
| C++ | wickra.hpp over the C ABI | C++14 compiler |
| C# | NuGet · Wickra | .NET 8 |
| Go | module · wickra-lib/wickra-go | Go 1.23 (cgo) |
| Java | Maven Central · org.wickra:wickra | Java 22 (FFM / Panama) |
| R | source package | R ≥ 2.10 (Rtools on Win.) |
Go (cgo) and R need a C compiler; Java runs with --enable-native-access. Full detail — runtime vs. build-from-source, per-language notes — is on the Requirements page in the docs.
A batch-only library recomputes its full indicator over every historical bar each time a new tick arrives. With a 5 000-bar history that's 5 001 work instead of 1. Wickra holds the indicator state in a struct and advances it by one update per tick — the cost stays flat as your history grows.
| Library scenario | Cost per tick (5 000-bar history) |
|---|---|
| Wickra (streaming RSI(14)) | 0.061 µs ⚡ |
| talipp (streaming RSI(14)) | 0.95 µs (16× slower) |
| TA-Lib (re-batch RSI(14)) | 298 µs (≈ 4 900× slower at this size) |
The streaming gap widens linearly with history length — see the benchmark page for the full table.
The per-tick numbers come from the same compare_libraries script the benchmark page runs: each library is handed an identical generated price series, warmed up over 5 000 bars, and then timed advancing one tick at a time. The Wickra figure is measured through the Python binding, so the small PyO3 boundary cost is already included rather than hidden in the bare Rust kernel. Reproduced on a Windows 11 / AMD Ryzen 9 9950X machine with Rust 1.92 in release profile — read the values as relative speedups on identical input, not as an absolute performance contract, since CPU, memory clock, and runtime versions all move the absolutes.
The same indicator object serves three workflows without a code change. For live trading, the optional Binance Spot WebSocket adapter pushes ticks straight into an indicator that updates in constant time, so per-tick latency stays flat even after a session has run for hours. For backtesting, you can replay a full history through that very same struct and trust that batch and streaming produce identical output — the equivalence is pinned by reference-value tests. For research, the Rust core and the Python, Node.js, WASM, C, C++, C#, Go, Java and R bindings all share one implementation, so a notebook prototype and a production service compute the exact same numbers.
The same data-driven core and ten-language binding surface power a family of products — each streaming-first, each byte-identical across every binding.
| Product | What it does |
|---|---|
| Exchange | One trading interface across the ten largest venues — spot, futures, private user-data streams, with paper and replay execution. |
| Backtest | Streaming-native, event-driven backtester where a backtest and a live run over the same JSON spec are byte-identical. |
| Terminal | A streaming trading terminal with a native TUI and a Web renderer sharing one data-driven core. |
| Screener | Scan thousands of symbols in parallel against a JSON condition tree over 514 streaming indicators. |
| X-Ray | A free explorer for market microstructure — footprint, order-book heatmap, liquidation map, funding/OI divergence. |
| Radar | Real-time derivatives signal scanner over a JSON RadarSpec — OI delta, funding flips, book imbalance, liquidations. |
| Copilot | A local market copilot grounded in real order-book, liquidation and funding microstructure — LLM-agnostic, offline-first. |
| Shazam | Match an asset's current microstructure fingerprint against its entire history — cosine, Euclidean or DTW similarity. |
514 indicators across twenty-four families. Every one is implemented once in Rust, re-exported by every binding, and pinned by reference-value tests.
| Family | Examples |
|---|---|
| Moving Averages | SMA, EMA, WMA, DEMA, TEMA, HMA, KAMA, SMMA, TRIMA, ZLEMA, T3, VWMA |
| Momentum Oscillators | RSI (Wilder), Stochastic, CCI, ROC, Williams %R, MFI, AO, MOM, CMO, TSI, PMO, StochRSI, Ultimate Oscillator |
| Trend & Directional | MACD, ADX (+DI/-DI), Aroon, TRIX, Aroon Osc, Vortex, Mass Index, Choppiness Index, Vertical Horizontal Filter |
| Price Oscillators | PPO, DPO, Coppock, Accelerator, Balance of Power |
| Volatility & Bands | ATR, Bollinger Bands, Keltner, Donchian, NATR, StdDev, Ulcer Index, Historical Volatility, BB Width, %B, True Range, Chaikin Volatility |
| Trailing Stops | Parabolic SAR, SuperTrend, Chandelier Exit, Chande Kroll Stop, ATR Trailing Stop |
| Volume | OBV, VWAP (cumulative + rolling), ADL, VPT, CMF, Chaikin Osc, Force Index, Ease of Movement |
| Price Statistics | Typical Price, Median Price, Weighted Close, Linear Regression, LR Slope, Z-Score, LR Angle |