Files
wickra/docs/wiki/Home.md
T
kingchenc 39a252ea66 release(0.2.0): bump version from 0.1.5 to 0.2.0
This release carries the full post-audit work — 46 new indicators
(25 → 71), an eight-family taxonomy restructure, new bindings for
RollingVWAP, the WASM streaming-update parity, the pyo3/numpy CVE
fix, the SMA/Bollinger drift bound, the O(1) LinearRegression
refactor, the UlcerIndex deque and the PSAR is_ready/reset fixes
plus a refreshed example suite and wiki. The earlier 0.1.5 number
was never published; jumping straight to 0.2.0 is the cleaner signal
for the scope of the change.

Bumped:
- Cargo.toml workspace + wickra-core workspace-dep version
- bindings/python/pyproject.toml
- bindings/node/package.json + optionalDependencies (six platform pins)
- 6 x bindings/node/npm/<target>/package.json
- Cargo.lock regenerated
- CHANGELOG.md [0.2.0] header + compare-link
- docs/wiki/Home.md published-versions table
- docs/wiki/Quickstart-{Rust,Node,WASM}.md + Warmup-Periods.md
  version-pinned narrative lines

Verified locally:
- cargo fmt/clippy/test (628 passed, 0 failed)
- cargo deny check (no suppression)
- bindings/node node --test (92/92)
- bindings/python pytest (118/118)
- import wickra reports 0.2.0 with 72 indicator classes
2026-05-23 19:58:02 +02:00

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.0
crates.io wickra-core 0.2.0
crates.io wickra-data 0.2.0
PyPI wickra 0.2.0
npm wickra 0.2.0
npm wickra-wasm 0.2.0

Release notes and tagged builds: https://github.com/kingchenc/wickra/releases.

Wiki contents

  • Quickstart: Pythonpip 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: Rustcargo add wickra, batch and streaming via the Indicator and BatchExt traits, and the Chain combinator.
  • Quickstart: Nodenpm install wickra, basic SMA and MACD calls, and the install surface. Windows x64 was previously blocked by an npm spam filter on wickra-win32-x64-msvc; that was resolved with npm Support, and 0.2.0 is the first release in which npm install wickra works end-to-end on Windows.
  • Quickstart: WASMnpm install wickra-wasm, building with wasm-pack, and running indicators client-side in a browser or bundler.
  • Data Layer — the wickra-data crate: 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) update and 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 ChainingChain::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.

Momentum Oscillators — measure the rate of price change.

Trend & Directional — is there a trend, and which way?

Price Oscillators — difference-of-averages momentum around zero.

Volatility & Bands — dispersion measures and price envelopes.

Trailing Stops — ATR-driven stop-loss trackers.

Volume — price moves weighted or confirmed by traded volume.

Price Statistics — per-bar transforms and rolling regressions.

See also