The 0.2.0 release left wickra@npm stuck at 0.1.4 and never created a GitHub Release entry because the brand-new `wickra-win32-arm64-msvc` sub-package name was caught by npm's spam-detection filter on its first publish attempt (same situation that affected `wickra-win32-x64-msvc` through 0.1.4 until npm Support unblocked it). A support ticket is open; until it is resolved, ship 0.2.1 for the five platforms whose sub-packages are already on npm and re-add Windows ARM64 in a follow-up release. Changes for this cycle: - bindings/node/package.json: remove "wickra-win32-arm64-msvc" from optionalDependencies and "aarch64-pc-windows-msvc" from napi.triples.additional. - bindings/node/npm/win32-arm64-msvc/: removed (will be restored fresh once the npm name is unblocked). - .github/workflows/release.yml: comment out the aarch64-pc-windows-msvc entry of the node-build matrix with a TODO/restore note. - Bump every workspace and binding version to 0.2.1 (Cargo.toml, pyproject.toml, bindings/node/package.json, five npm/<target> templates, the wiki version table). Cargo.lock regenerated. - CHANGELOG: new [0.2.1] block consolidating every fix that has landed on main since 0.2.0 (HV epsilon, examples CI step, fuzz cargo-fuzz install, MSRV 1.85 -> 1.86 / 1.77 -> 1.88, criterion 0.5 -> 0.8, tokio-tungstenite 0.24 -> 0.29, tick_aggregator gap-fill cap, every GitHub Action SHA-pin bump). Compare-link added. The arm64 loader branch in bindings/node/index.js is left untouched: a Windows ARM64 user installing 0.2.1 will get the standard `Cannot find module 'wickra-win32-arm64-msvc'` error from the loader, which is accurate. PyPI's win-arm64 wheel is unaffected. Verified locally: cargo fmt/clippy/test --workspace --all-features -> 630 passed / 0 failed cargo build -p wickra-examples --bins -> clean cargo build -p wickra-node -> clean
10 KiB
Wickra
Wickra is a streaming-first technical-indicators library. Every indicator is
implemented in Rust as an O(1) state machine that consumes one input at a
time, and the same engine is exposed through ergonomic bindings for Python,
Node.js, WebAssembly, and Rust itself. The same update call you write inside
a live trading loop also drives the historical backtest of that same
strategy — there is no second code path that drifts behind the streaming one.
The project ships 71 indicators across eight families — moving averages,
momentum oscillators, trend & directional, price oscillators, volatility &
bands, trailing stops, volume, and price statistics — plus a small set of
supporting types (Candle, Tick, Chain). The Rust core forbids unsafe,
so every binding inherits a
memory-safe implementation. Install is one command on every supported
platform: pip install wickra, cargo add wickra, npm install wickra — no
system compilers, no C dependencies, no headers.
Wickra is licensed under the PolyForm Noncommercial 1.0.0 license. Personal projects, research, hobby trading bots, education, non-profits, and government use are all permitted; commercial sale of the software or of services built around it is not. If you want to use Wickra commercially, open an issue on GitHub to discuss a separate license.
Published versions
| Registry | Package | Version |
|---|---|---|
| crates.io | wickra |
0.2.1 |
| crates.io | wickra-core |
0.2.1 |
| crates.io | wickra-data |
0.2.1 |
| PyPI | wickra |
0.2.1 |
| npm | wickra |
0.2.1 |
| npm | wickra-wasm |
0.2.1 |
Release notes and tagged builds: https://github.com/kingchenc/wickra/releases.
Wiki contents
- Quickstart: Python —
pip install wickra, a batch RSI on a NumPy array, a streaming RSI loop, and the multi-column NaN pattern that MACD and friends share. - Quickstart: Rust —
cargo add wickra, batch and streaming via theIndicatorandBatchExttraits, and theChaincombinator. - Quickstart: Node —
npm install wickra, basicSMAandMACDcalls, and the install surface. Windows x64 was previously blocked by an npm spam filter onwickra-win32-x64-msvc; that was resolved with npm Support, and 0.2.1 is the first release in whichnpm install wickraworks end-to-end on Windows. - Quickstart: WASM —
npm install wickra-wasm, building withwasm-pack, and running indicators client-side in a browser or bundler. - Data Layer — the
wickra-datacrate: the CSV reader, the tick-to-candle aggregator, the multi-timeframe resampler, and the Binance live feed. - Streaming vs Batch — the conceptual difference
between Wickra's O(1)
updateand the recompute-everything loops in batch-only libraries, with the benchmark numbers from the project README. - Warmup Periods — a verified table of every
indicator's
warmup_period(), plus the reasoning behind the off-by-one cases (RSI(14) needs 15 inputs because it needs 14 diffs). - Indicator Chaining —
Chain::new(first, second)and.then(third), with a worked EMA(14) → RSI(7) example and the rule for stacked warmups. - Cookbook — copy-paste strategy recipes built on streaming indicators (RSI mean reversion, MACD crossover, Bollinger breakout, ADX-gated trend, multi-timeframe, SuperTrend trailing stop).
- TA-Lib Migration — function-by-function mapping
table from TA-Lib's
talib.X(...)calls to the equivalent Wickra expressions. - FAQ — quick answers to the most common questions about warmup, NaN handling, thread safety, and the streaming-vs-batch contract.
Indicator reference
Start with Indicators-Overview.md for the full
eight-family taxonomy and the shared Indicator trait surface. The
per-indicator pages below cover formulas, parameters, warmup behaviour, edge
cases, and verified Rust / Python / Node examples. They are grouped by family,
mirroring the indicators/<family>/ directory layout.
Moving Averages — smooth the price series to surface direction.
- Indicator-Sma.md
- Indicator-Ema.md
- Indicator-Wma.md
- Indicator-Dema.md
- Indicator-Tema.md
- Indicator-Hma.md
- Indicator-Kama.md
- Indicator-Smma.md
- Indicator-Trima.md
- Indicator-Zlema.md
- Indicator-T3.md
- Indicator-Vwma.md
Momentum Oscillators — measure the rate of price change.
- Indicator-Rsi.md
- Indicator-Stochastic.md
- Indicator-Cci.md
- Indicator-Roc.md
- Indicator-WilliamsR.md
- Indicator-Mfi.md
- Indicator-AwesomeOscillator.md
- Indicator-Mom.md
- Indicator-Cmo.md
- Indicator-Tsi.md
- Indicator-Pmo.md
- Indicator-StochRsi.md
- Indicator-UltimateOscillator.md
Trend & Directional — is there a trend, and which way?
- Indicator-MacdIndicator.md
- Indicator-Adx.md
- Indicator-Aroon.md
- Indicator-Trix.md
- Indicator-AroonOscillator.md
- Indicator-Vortex.md
- Indicator-MassIndex.md
- Indicator-ChoppinessIndex.md
- Indicator-VerticalHorizontalFilter.md
Price Oscillators — difference-of-averages momentum around zero.
- Indicator-Ppo.md
- Indicator-Dpo.md
- Indicator-Coppock.md
- Indicator-AcceleratorOscillator.md
- Indicator-BalanceOfPower.md
Volatility & Bands — dispersion measures and price envelopes.
- Indicator-Atr.md
- Indicator-BollingerBands.md
- Indicator-Keltner.md
- Indicator-Donchian.md
- Indicator-Natr.md
- Indicator-StdDev.md
- Indicator-UlcerIndex.md
- Indicator-HistoricalVolatility.md
- Indicator-BollingerBandwidth.md
- Indicator-PercentB.md
- Indicator-TrueRange.md
- Indicator-ChaikinVolatility.md
Trailing Stops — ATR-driven stop-loss trackers.
- Indicator-Psar.md
- Indicator-SuperTrend.md
- Indicator-ChandelierExit.md
- Indicator-ChandeKrollStop.md
- Indicator-AtrTrailingStop.md
Volume — price moves weighted or confirmed by traded volume.
- Indicator-Obv.md
- Indicator-Vwap.md
- Indicator-Adl.md
- Indicator-VolumePriceTrend.md
- Indicator-ChaikinMoneyFlow.md
- Indicator-ChaikinOscillator.md
- Indicator-ForceIndex.md
- Indicator-EaseOfMovement.md
Price Statistics — per-bar transforms and rolling regressions.
- Indicator-TypicalPrice.md
- Indicator-MedianPrice.md
- Indicator-WeightedClose.md
- Indicator-LinearRegression.md
- Indicator-LinRegSlope.md
- Indicator-ZScore.md
- Indicator-LinRegAngle.md
See also
- Source code: https://github.com/kingchenc/wickra
- Releases: https://github.com/kingchenc/wickra/releases
- Issue tracker: https://github.com/kingchenc/wickra/issues