Files
wickra/bindings/python/README.md
T
kingchenc 24a9ff8244 ci(release): three fixes after the first v0.1.0 attempt
Three blockers surfaced when the first tag actually ran the pipeline:

1. PyPI sdist build refused the `readme = "../../README.md"` path
   in bindings/python/pyproject.toml. maturin sdist forbids `..`
   inside archive entries. Solution: add a Python-specific README at
   bindings/python/README.md (covers the Python install + pointers to
   the main repo) and point the project.readme key at the local file.

2. Node publish job hit ENOENT on npm/<platform>/wickra.<...>.node
   because napi's per-platform scaffolding directories did not exist
   yet when `napi artifacts` ran. Insert `napi create-npm-dirs` as
   its own step before `napi artifacts` so the platform package layout
   is in place before binaries get moved into it.

3. and 4. (crates.io email + npm 2FA-bypass) are registry-side account
   settings that have to be done in the user's browser; no code change
   needed for those. They'll be sorted before the next tag push.
2026-05-21 20:51:30 +02:00

55 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Wickra — Python bindings
Streaming-first technical indicators powered by a Rust core.
```bash
pip install wickra
```
## Quick start
```python
import numpy as np
import wickra as ta
# Batch — TA-Lib-style usage
prices = np.linspace(100, 200, 1000)
rsi = ta.RSI(14).batch(prices) # NumPy array; NaN during warmup
# Streaming — feed ticks one at a time
rsi = ta.RSI(14)
for price in live_prices:
v = rsi.update(price) # O(1) per tick
if v is not None and v > 70:
...
```
## What's included
25 streaming-first indicators across four families. Every one passes a
`batch == streaming` equivalence test and reference-value tests:
- **Trend** — SMA, EMA, WMA, DEMA, TEMA, HMA, KAMA
- **Momentum** — RSI (Wilder), MACD, Stochastic, CCI, ROC, WilliamsR, ADX,
MFI, TRIX, AwesomeOscillator, Aroon
- **Volatility** — BollingerBands, ATR, Keltner, Donchian, PSAR
- **Volume** — OBV, VWAP
## Why streaming-first matters
Classic TA libraries are batch-only: every live tick triggers a full
recomputation over the entire history. Wickra updates indicator state in
O(1) per tick. On a 5K-bar history the streaming RSI gap is ~17× over the
nearest peer with a streaming API and 100×+ over batch-only libraries.
## Full project
See <https://github.com/kingchenc/wickra> for benchmarks, the Rust core,
Node.js and WebAssembly bindings, examples, and CI.
## License
Licensed under the **PolyForm Noncommercial License 1.0.0**. Personal,
research, educational, and non-profit use are all permitted. Commercial
sale requires a separate license — contact via the GitHub repo.