Skip to content

WickraStreaming-first technical indicators.

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.

Wickra

Install in 30 seconds

pip install wickra

A streaming RSI in every language

import 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)

Requirements

The minimum supported version per language — prebuilt packages need only the runtime; building a binding from source needs the extra toolchain noted below.

LanguagePackageMinimum supported
Rustcrates.io · wickra1.86 (MSRV)
PythonPyPI · wickra (abi3 wheel)3.9 (tested through 3.13)
Node.jsnpm · wickra (N-API 8)20 (tested on 22 · 24 LTS)
WASMnpm · wickra-wasmany modern JS engine
Cwickra.h + libraryC99 compiler
C++wickra.hpp over the C ABIC++14 compiler
C#NuGet · Wickra.NET 8
Gomodule · wickra-lib/wickra-goGo 1.23 (cgo)
JavaMaven Central · org.wickra:wickraJava 22 (FFM / Panama)
Rsource packageR ≥ 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.

Why streaming-first matters

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

How the benchmark is measured

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.

Who streaming-first is for

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 Wickra ecosystem

The same data-driven core and ten-language binding surface power a family of products — each streaming-first, each byte-identical across every binding.

ProductWhat it does
ExchangeOne trading interface across the ten largest venues — spot, futures, private user-data streams, with paper and replay execution.
BacktestStreaming-native, event-driven backtester where a backtest and a live run over the same JSON spec are byte-identical.
TerminalA streaming trading terminal with a native TUI and a Web renderer sharing one data-driven core.
ScreenerScan thousands of symbols in parallel against a JSON condition tree over 514 streaming indicators.
X-RayA free explorer for market microstructure — footprint, order-book heatmap, liquidation map, funding/OI divergence.
RadarReal-time derivatives signal scanner over a JSON RadarSpec — OI delta, funding flips, book imbalance, liquidations.
CopilotA local market copilot grounded in real order-book, liquidation and funding microstructure — LLM-agnostic, offline-first.
ShazamMatch an asset's current microstructure fingerprint against its entire history — cosine, Euclidean or DTW similarity.

The full indicator catalogue

514 indicators across twenty-four families. Every one is implemented once in Rust, re-exported by every binding, and pinned by reference-value tests.

FamilyExamples
Moving AveragesSMA, EMA, WMA, DEMA, TEMA, HMA, KAMA, SMMA, TRIMA, ZLEMA, T3, VWMA
Momentum OscillatorsRSI (Wilder), Stochastic, CCI, ROC, Williams %R, MFI, AO, MOM, CMO, TSI, PMO, StochRSI, Ultimate Oscillator
Trend & DirectionalMACD, ADX (+DI/-DI), Aroon, TRIX, Aroon Osc, Vortex, Mass Index, Choppiness Index, Vertical Horizontal Filter
Price OscillatorsPPO, DPO, Coppock, Accelerator, Balance of Power
Volatility & BandsATR, Bollinger Bands, Keltner, Donchian, NATR, StdDev, Ulcer Index, Historical Volatility, BB Width, %B, True Range, Chaikin Volatility
Trailing StopsParabolic SAR, SuperTrend, Chandelier Exit, Chande Kroll Stop, ATR Trailing Stop
VolumeOBV, VWAP (cumulative + rolling), ADL, VPT, CMF, Chaikin Osc, Force Index, Ease of Movement
Price StatisticsTypical Price, Median Price, Weighted Close, Linear Regression, LR Slope, Z-Score, LR Angle

See the full per-indicator deep-dives in the docs →