wickra 0.5.8 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=423" alt="Wickra — streaming-first technical indicators" width="100%"></a>
2
+ <a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=429" alt="Wickra — streaming-first technical indicators" width="100%"></a>
3
3
  </p>
4
4
 
5
5
  [![CI](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml/badge.svg)](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
@@ -48,7 +48,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
48
48
  [Node](https://docs.wickra.org/Quickstart-Node),
49
49
  [WASM](https://docs.wickra.org/Quickstart-WASM).
50
50
  - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
51
- every one of the 423 indicators; start at the
51
+ every one of the 429 indicators; start at the
52
52
  [indicators overview](https://docs.wickra.org/Indicators-Overview).
53
53
  - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
54
54
  [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
@@ -60,83 +60,135 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
60
60
 
61
61
  ## Why Wickra exists
62
62
 
63
- The Python TA ecosystem has plenty of libraries TA-Lib, pandas-ta, finta,
64
- talipp, tulipy and every one of them shares the same blind spot:
65
-
66
- | Library | Install pain | Streaming | Multi-language | Active |
67
- |------------------------|-----------------|-----------|----------------|--------|
68
- | **★&nbsp;Wickra** | **clean** | **yes** | **Python + Node + WASM + Rust** | **yes** |
69
- | TA-Lib (Python) | yes (C deps) | no | no | barely |
70
- | pandas-ta | clean | no | no | slow |
71
- | finta | clean | no | no | stale |
72
- | ta-lib-python | yes (C deps) | no | no | barely |
73
- | talipp | clean | yes | no | yes |
74
- | Tulip Indicators | yes (C deps) | no | partial | stale |
75
- | ooples (C#) | clean | no | C# only | yes |
76
-
77
- Wickra is the only library that combines all of: clean install, streaming,
78
- multi-language reach, and active maintenance.
79
-
80
- ## Benchmark: how much faster is "streaming-first"?
81
-
82
- The numbers below were measured on a single developer workstation and are not
83
- guaranteed to reproduce identically on different hardware absolute µs values
84
- depend on CPU, memory clock and OS scheduler. Read them as **relative
85
- speedups** between libraries on identical input, not as a universal
86
- performance contract.
63
+ Wickra started as a personal itch. The existing TA libraries never quite fit the
64
+ projects I was building, so I decided to build one from the ground up partly to
65
+ learn, partly because I genuinely enjoy taking something that already exists and
66
+ trying to do it differently (and, ideally, better). It's open source because the
67
+ useful version of that itch is the one other people can build on too.
68
+
69
+ Plenty of TA libraries are fast. Each one forces a trade-off Wickra does not:
70
+
71
+ | Library | Install | Streaming | Languages | Indicators | Active |
72
+ |------------------|-------------|-------------|-----------------------------|-----------:|--------|
73
+ | **★&nbsp;Wickra**| **clean** | **yes, O(1)** | **Python · Node · WASM · Rust** | **423** | **yes** |
74
+ | kand | clean | yes | Python · WASM · Rust | ~60 | yes |
75
+ | ta-rs | clean | yes | Rust only | ~30 | stale |
76
+ | yata | clean | partial | Rust only | ~35 | yes |
77
+ | TA-Lib | yes (C deps)| no | many bindings | ~150 | barely |
78
+ | pandas-ta | clean | no | Python | ~130 | slow |
79
+ | finta | clean | no | Python | ~80 | stale |
80
+ | talipp | clean | yes | Python | ~40 | yes |
81
+
82
+ Wickra's edge is **breadth with reach**: 429 indicators that all update in O(1)
83
+ per tick and ship natively to Python, Node.js, WebAssembly and Rust from a
84
+ single engine.
85
+
86
+ **On speed — and why Wickra isn't the fastest.** It deliberately isn't. The
87
+ leaner Rust crates (kand, ta-rs) win several of the micro-benchmarks below, and
88
+ those losses are shown rather than hidden. The gap is a *choice*, not a ceiling:
89
+ every `update` validates its input, runs a real warmup before it emits a value,
90
+ and returns an `Option` so a single bad tick can't silently poison the state.
91
+ ta-rs, by contrast, hands back a bare `f64` from the first tick with no
92
+ validation. If Wickra threw all of that away — raw `f64` out, no checks, no
93
+ warmup contract — it would match or beat the leanest crate on every row. It
94
+ keeps the guarantees instead, and still wins RSI, Bollinger and ATR against kand.
95
+ What no other library matches is the *combination*: catalogue size, native O(1)
96
+ streaming, NaN-safety, and four first-class language targets at once.
97
+
98
+ ## Benchmarks
99
+
100
+ Three comparisons, split by layer and mode. Read them as **relative** speedups
101
+ on identical input — absolute µs depend on CPU, memory clock and OS scheduler,
102
+ not a universal contract.
87
103
 
88
104
  - **Reproduced on:** Windows 11 Pro 26200, AMD Ryzen 9 9950X, 64 GB DDR5,
89
- Rust 1.92 (release profile, `lto = "fat"`, `codegen-units = 1`),
90
- Python 3.12, Node 20.
91
- - **Reproduce yourself:** `pip install -e bindings/python[bench]` then
92
- `python -m benchmarks.compare_libraries`. The script auto-detects every
93
- installed peer library and runs them on the same generated inputs as
94
- Wickra. The CI job `cross-library-bench` runs the same script on every
95
- push and uploads the raw report as a build artefact.
96
-
97
- Lower µs/op = faster. Wickra wins every batch category outright, and the
98
- streaming gap widens linearly with how much history a batch-only library has
99
- to recompute on every tick.
100
-
101
- ### Batch single full pass over a 20 000-bar series
102
-
103
- Reading the table: each cell shows that library's runtime, plus how many times
104
- slower it is than Wickra in parentheses. **★** marks the winner per row.
105
-
106
- | Indicator | **★&nbsp;Wickra** | finta | talipp |
107
- |---------------------|---------------------|-----------------------------|-------------------------------|
108
- | SMA(20) | **95.6 µs ★** | 343.5 µs (3.6× slower) | 7 640.6 µs (79.9× slower) |
109
- | EMA(20) | **64.6 µs ★** | 223.1 µs (3.5× slower) | 12 160.9 µs (188.2× slower) |
110
- | RSI(14) | **126.2 µs ★** | 1 107.1 µs (8.8× slower) | 15 792.2 µs (125.1× slower) |
111
- | MACD(12, 26, 9) | **119.0 µs ★** | 531.8 µs (4.5× slower) | 49 788.1 µs (418.2× slower) |
112
- | Bollinger(20, 2.0) | **105.3 µs ★** | 812.0 µs (7.7× slower) | 130 938.3 µs (1 243.7× slower)|
113
- | ATR(14) | **123.5 µs ★** | 5 144.8 µs (41.7× slower) | 28 816.0 µs (233.4× slower) |
114
-
115
- ### Streaming per-tick latency after seeding with 5 000 historical bars
116
-
117
- A batch-only library has to re-run its full indicator over the entire history on
118
- every new tick; Wickra updates state in O(1).
119
-
120
- | Indicator | **★&nbsp;Wickra (per tick)** | talipp (per tick) |
121
- |-----------|---------------------|---------------------------|
122
- | RSI(14) | **0.119 µs ★** | 1.644 µs (13.8× slower) |
123
-
124
- > TA-Lib and pandas-ta are not included here because both fail to install
125
- > cleanly on Windows without C build tooling which is precisely the install
126
- > pain Wickra was built to remove. The benchmark script auto-detects every
127
- > peer library it can find and runs them on the same inputs as Wickra; install
128
- > them in your environment to see those rows light up too.
105
+ Rust 1.92 (release: `lto = "fat"`, `codegen-units = 1`), Python 3.12.
106
+ - **Reproduce yourself:**
107
+ - Rust core vs Rust crates: `cargo bench -p wickra-bench`
108
+ - Python vs Python libs: `pip install -e bindings/python[bench]` then
109
+ `python -m benchmarks.compare_libraries` (auto-detects installed peers).
110
+
111
+ ### 1. Rust core vs the other Rust TA crates
112
+
113
+ Like-for-like, no language-binding overhead, over a 50 000-bar series (µs for
114
+ the whole series, lower = faster). This is the honest engine comparison —
115
+ Wickra wins some and loses some, and both are shown.
116
+
117
+ **Streaming** (one value fed per `update`):
118
+
119
+ | Indicator | **★&nbsp;Wickra** | kand | ta-rs | yata |
120
+ |------------------|------------------:|-----:|------:|-----:|
121
+ | SMA(20) | 50 | 38 | 47 | 38 |
122
+ | EMA(20) | 154 | 69 | 56 | 69 |
123
+ | RSI(14) | 164 | 216 | 74 | — |
124
+ | MACD(12, 26, 9) | 275 | 143 | 66 | |
125
+ | Bollinger(20, 2) | **128 ★** | 248 | 168 | — |
126
+ | ATR(14) | 152 | 166 | 61 | |
127
+
128
+ **Batch** (whole series at once). Only Wickra and kand expose a batch API;
129
+ ta-rs and yata are streaming-only.
130
+
131
+ | Indicator | **★&nbsp;Wickra** | kand |
132
+ |------------------|------------------:|-----:|
133
+ | SMA(20) | 82 | 42 |
134
+ | EMA(20) | 159 | 74 |
135
+ | RSI(14) | **253 ★** | 274 |
136
+ | MACD(12, 26, 9) | 681 | 283 |
137
+ | Bollinger(20, 2) | **445 ★** | 462 |
138
+ | ATR(14) | 175 | 173 |
139
+
140
+ ta-rs is the per-indicator speed champion on almost every row it returns a
141
+ bare `f64` with no warmup state and no input validation, trading away the
142
+ `None`-warmup and NaN-safety semantics Wickra keeps. Against kand, Wickra wins
143
+ streaming RSI, Bollinger and ATR (and batch RSI + Bollinger); Bollinger is the
144
+ one row where Wickra is the outright fastest of all four. The leaner crates
145
+ still win the pure recurrences (EMA, MACD) and SMA. yata exposes only SMA/EMA as
146
+ raw-value methods, so its other rows are omitted rather than faked.
147
+
148
+ ### 2. Python vs the Python TA ecosystem — batch
149
+
150
+ Full pass over a 20 000-bar series, µs/op (lower = faster). **★** per row.
151
+
152
+ | Indicator | **★&nbsp;Wickra** | finta | TA-Lib | tulipy |
153
+ |------------------|------------------:|---------------------|--------|--------|
154
+ | SMA(20) | **59.6 ★** | 354.2 (5.9× slower) | ⧗ | ⧗ |
155
+ | EMA(20) | **88.4 ★** | 309.3 (3.5× slower) | ⧗ | ⧗ |
156
+ | RSI(14) | **77.3 ★** | 1 283 (16.6× slower)| ⧗ | ⧗ |
157
+ | MACD(12, 26, 9) | **116.4 ★** | 529.5 (4.6× slower) | ⧗ | ⧗ |
158
+ | Bollinger(20, 2) | **146.0 ★** | 1 246 (8.5× slower) | ⧗ | ⧗ |
159
+ | ATR(14) | **135.8 ★** | 3 812 (28× slower) | ⧗ | ⧗ |
160
+
161
+ > ⧗ = published by the CI Linux job. TA-Lib and tulipy ship C extensions that
162
+ > don't build cleanly on every desktop, so their canonical numbers come from the
163
+ > `cross-library-bench` workflow rather than this local table. pandas-ta needs
164
+ > Python ≥ 3.12 and isn't in the 3.11 CI matrix. The script auto-detects
165
+ > whichever peers are installed in your environment.
166
+
167
+ ### 3. Python — streaming (per-tick latency)
168
+
169
+ Seed 5 000 bars, then feed ticks one at a time. talipp is the only Python peer
170
+ with a true incremental API; batch-only libraries like TA-Lib must recompute the
171
+ entire history on every tick — Wickra updates in O(1).
172
+
173
+ | Indicator | **★&nbsp;Wickra (per tick)** | talipp (per tick) |
174
+ |------------------|------------------------------:|-------------------------|
175
+ | SMA(20) | **0.067 µs ★** | 0.63 µs (9.4× slower) |
176
+ | EMA(20) | **0.051 µs ★** | 0.63 µs (12.2× slower) |
177
+ | RSI(14) | **0.053 µs ★** | 1.00 µs (19.1× slower) |
178
+ | MACD(12, 26, 9) | **0.071 µs ★** | 3.64 µs (51.5× slower) |
179
+ | Bollinger(20, 2) | **0.085 µs ★** | 4.87 µs (57.2× slower) |
129
180
 
130
181
  Run the suite yourself:
131
182
 
132
183
  ```bash
133
- pip install -e bindings/python[bench]
184
+ cargo bench -p wickra-bench # Rust core vs kand / ta-rs / yata
185
+ pip install -e bindings/python[bench] # Python peers
134
186
  python -m benchmarks.compare_libraries
135
187
  ```
136
188
 
137
189
  ## Indicators
138
190
 
139
- 423 streaming-first indicators across twenty-four families. Every one passes the
191
+ 429 streaming-first indicators across twenty-four families. Every one passes the
140
192
  `batch == streaming` equivalence test, reference-value tests, and reset
141
193
  semantics tests. Each has a per-indicator deep dive (formula, parameters,
142
194
  warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
@@ -147,7 +199,7 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
147
199
  | Momentum Oscillators | RSI (Wilder), Anchored RSI, Stochastic, CCI, ROC, Williams %R, MFI, Awesome Oscillator, MOM, CMO, TSI, PMO, StochRSI, Ultimate Oscillator, RVI, PGO, KST, SMI, Laguerre RSI, Connors RSI, Inertia, ROC Percentage (ROCP), ROC Ratio (ROCR), ROC Ratio 100 (ROCR100), Disparity Index, Fisher RSI, RSX, Dynamic Momentum Index, Stochastic CCI, RMI, Derivative Oscillator, Elder Ray, Intraday Momentum Index, QQE |
148
200
  | Trend & Directional | MACD, MACD Fixed (MACDFIX), MACD Extended (MACDEXT), ADX (+DI/-DI), ADXR, Aroon, TRIX, Aroon Oscillator, Vortex, Random Walk Index, Trend Intensity Index, Wave Trend Oscillator, Mass Index, Choppiness Index, Vertical Horizontal Filter, Plus DM, Minus DM, Plus DI, Minus DI, DX, TTM Trend, Trend Strength Index, Qstick, Polarized Fractal Efficiency, Wave PM, Gator Oscillator, Kase Permission Stochastic |
149
201
  | Price Oscillators | PPO, DPO, Coppock, Accelerator Oscillator, Balance of Power, APO, AO Histogram, CFO, Zero-Lag MACD, Elder Impulse, STC, TSF Oscillator, MACD Histogram, PPO Histogram |
150
- | Volatility & Bands | ATR, Bollinger Bands, Keltner Channels, Donchian Channels, NATR, StdDev, Ulcer Index, Historical Volatility, Bollinger Bandwidth, %B, True Range, Chaikin Volatility, RVI (Relative Volatility Index), Parkinson Volatility, Garman-Klass Volatility, Rogers-Satchell Volatility, Yang-Zhang Volatility |
202
+ | Volatility & Bands | ATR, Bollinger Bands, Keltner Channels, Donchian Channels, NATR, StdDev, Ulcer Index, Historical Volatility, Bollinger Bandwidth, %B, True Range, Chaikin Volatility, RVI (Relative Volatility Index), Parkinson Volatility, Garman-Klass Volatility, Rogers-Satchell Volatility, Yang-Zhang Volatility, Volatility Cone |
151
203
  | Bands & Channels | MA Envelope, Acceleration Bands, STARC Bands, ATR Bands, Hurst Channel, LinReg Channel, Standard Error Bands, Double Bollinger Bands, TTM Squeeze, Fractal Chaos Bands, VWAP StdDev Bands |
152
204
  | Trailing Stops | Parabolic SAR, Parabolic SAR Extended (SAREXT), SuperTrend, Chandelier Exit, Chande Kroll Stop, ATR Trailing Stop, HiLo Activator, Volty Stop, Yo-Yo Exit, Donchian Channel Stop, Percentage Trailing Stop, Step Trailing Stop, Renko Trailing Stop |
153
205
  | Volume | OBV, VWAP (cumulative + rolling), ADL, Volume-Price Trend, Chaikin Money Flow, Chaikin Oscillator, Force Index, Ease of Movement, Klinger Volume Oscillator, Volume Oscillator, NVI, PVI, Williams A/D, Anchored VWAP, Demand Index, TSV, VZO, Market Facilitation Index |
@@ -245,9 +297,10 @@ A Python live-trading example using the public `websockets` package lives at
245
297
  ```
246
298
  wickra/
247
299
  ├── crates/
248
- │ ├── wickra-core/ core engine + all 423 indicators
300
+ │ ├── wickra-core/ core engine + all 429 indicators
249
301
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
250
- └── wickra-data/ CSV reader, tick aggregator, live exchange feeds
302
+ ├── wickra-data/ CSV reader, tick aggregator, live exchange feeds
303
+ │ └── wickra-bench/ internal cross-library benchmark harness (not published)
251
304
  ├── bindings/
252
305
  │ ├── python/ PyO3 + maturin (publishes on PyPI)
253
306
  │ ├── node/ napi-rs (publishes on npm)
@@ -261,9 +314,10 @@ wickra/
261
314
  └── .github/workflows/ CI and release pipelines
262
315
  ```
263
316
 
264
- Rust benchmarks live in `crates/wickra/benches/`; runnable Rust examples live
265
- in the workspace member crate at `examples/rust/`. There is no top-level
266
- `benches/` directory.
317
+ Wickra's own regression benchmarks live in `crates/wickra/benches/`; the
318
+ cross-library comparison against kand, ta-rs and yata lives in the internal
319
+ `crates/wickra-bench/` crate. Runnable Rust examples live in the workspace member
320
+ crate at `examples/rust/`. There is no top-level `benches/` directory.
267
321
 
268
322
  ## Building everything from source
269
323
 
@@ -271,7 +325,8 @@ in the workspace member crate at `examples/rust/`. There is no top-level
271
325
  # Rust core + tests
272
326
  cargo test --workspace
273
327
  cargo clippy --workspace --all-targets -- -D warnings
274
- cargo bench -p wickra
328
+ cargo bench -p wickra # Wickra's own regression benchmarks
329
+ cargo bench -p wickra-bench # cross-library comparison (kand, ta-rs, yata)
275
330
 
276
331
  # Python binding (requires Rust toolchain + maturin)
277
332
  cd bindings/python
@@ -371,3 +426,10 @@ The library is provided **as is**, without warranty of any kind; see
371
426
  <p align="center">
372
427
  If Wickra saved you time, the cheapest way to say thanks is to ⭐ the repo.
373
428
  </p>
429
+
430
+ <p align="center">
431
+ <a href="https://star-history.com/#wickra-lib/wickra&Date">
432
+ <img alt="Wickra star history" width="640"
433
+ src="https://api.star-history.com/svg?repos=wickra-lib/wickra&type=Date&theme=dark">
434
+ </a>
435
+ </p>
package/index.d.ts CHANGED
@@ -5,6 +5,17 @@
5
5
 
6
6
  /** Library version (matches the Rust crate version). */
7
7
  export declare function version(): string
8
+ /**
9
+ * Volatility-cone result: current realized volatility and its lookback
10
+ * envelope (min / median / max) plus the percentile rank of `current`.
11
+ */
12
+ export interface VolatilityConeValue {
13
+ current: number
14
+ min: number
15
+ median: number
16
+ max: number
17
+ percentile: number
18
+ }
8
19
  /** Lead/lag result: the offset that maximises correlation, and that correlation. */
9
20
  export interface LeadLagValue {
10
21
  /** Offset that maximises `|corr(a, b shifted)|`. Positive ⇒ `a` leads `b`. */
@@ -987,6 +998,51 @@ export declare class TsfOscillator {
987
998
  isReady(): boolean
988
999
  warmupPeriod(): number
989
1000
  }
1001
+ export type BipowerVariationNode = BipowerVariation
1002
+ export declare class BipowerVariation {
1003
+ constructor(period: number)
1004
+ update(value: number): number | null
1005
+ batch(prices: Array<number>): Array<number>
1006
+ reset(): void
1007
+ isReady(): boolean
1008
+ warmupPeriod(): number
1009
+ }
1010
+ export type EwmaVolatilityNode = EwmaVolatility
1011
+ export declare class EwmaVolatility {
1012
+ constructor(lambda: number)
1013
+ update(value: number): number | null
1014
+ batch(prices: Array<number>): Array<number>
1015
+ reset(): void
1016
+ isReady(): boolean
1017
+ warmupPeriod(): number
1018
+ }
1019
+ export type Garch11Node = Garch11
1020
+ export declare class Garch11 {
1021
+ constructor(omega: number, alpha: number, beta: number)
1022
+ update(value: number): number | null
1023
+ batch(prices: Array<number>): Array<number>
1024
+ reset(): void
1025
+ isReady(): boolean
1026
+ warmupPeriod(): number
1027
+ }
1028
+ export type VolatilityOfVolatilityNode = VolatilityOfVolatility
1029
+ export declare class VolatilityOfVolatility {
1030
+ constructor(volWindow: number, vovWindow: number)
1031
+ update(value: number): number | null
1032
+ batch(prices: Array<number>): Array<number>
1033
+ reset(): void
1034
+ isReady(): boolean
1035
+ warmupPeriod(): number
1036
+ }
1037
+ export type VolatilityConeNode = VolatilityCone
1038
+ export declare class VolatilityCone {
1039
+ constructor(window: number, lookback: number)
1040
+ update(high: number, low: number, close: number): VolatilityConeValue | null
1041
+ batch(high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
1042
+ reset(): void
1043
+ isReady(): boolean
1044
+ warmupPeriod(): number
1045
+ }
990
1046
  export type JumpIndicatorNode = JumpIndicator
991
1047
  export declare class JumpIndicator {
992
1048
  constructor(period: number, threshold: number)
@@ -1574,6 +1630,15 @@ export declare class KasePermissionStochastic {
1574
1630
  isReady(): boolean
1575
1631
  warmupPeriod(): number
1576
1632
  }
1633
+ export type VolatilityRatioNode = VolatilityRatio
1634
+ export declare class VolatilityRatio {
1635
+ constructor(period: number)
1636
+ update(high: number, low: number, close: number): number | null
1637
+ batch(high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
1638
+ reset(): void
1639
+ isReady(): boolean
1640
+ warmupPeriod(): number
1641
+ }
1577
1642
  export type StochNode = Stochastic
1578
1643
  export declare class Stochastic {
1579
1644
  constructor(kPeriod: number, dPeriod: number)
package/index.js CHANGED
@@ -310,7 +310,7 @@ if (!nativeBinding) {
310
310
  throw new Error(`Failed to load native binding`)
311
311
  }
312
312
 
313
- const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, MIDPOINT, ROCP, ROCR, ROCR100, LINEARREG_INTERCEPT, TSF, LogReturn, RealizedVolatility, RollingIqr, RollingPercentileRank, TrendLabel, WinRate, Expectancy, SWMA, GMA, EHMA, MedianMA, AdaptiveLaguerre, DisparityIndex, FisherRSI, RSX, DynamicMomentumIndex, TREND_STRENGTH_INDEX, TsfOscillator, JumpIndicator, RegimeLabel, RollingQuantile, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpreadAr1Coefficient, SpearmanCorrelation, RollingCorrelation, RollingCovariance, OuHalfLife, SpreadHurst, DistanceSsd, BetaNeutralSpread, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, VarianceRatio, GrangerCausality, KalmanHedgeRatio, SpreadBollingerBands, MACD, MACDFIX, MACDEXT, BollingerBands, ATR, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, MIDPRICE, AVGPRICE, SAREXT, HT_PHASOR, CloseVsOpen, BodySizePct, WickRatio, HighLowRange, StochasticCCI, IMI, QQE, ElderRay, TTM_TREND, Qstick, POLARIZED_FRACTAL_EFFICIENCY, WAVE_PM, GatorOscillator, KasePermissionStochastic, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, GD, HoltWinters, RMI, DerivativeOscillator, MacdHistogram, PpoHistogram, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredRSI, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HT_DCPHASE, HT_TRENDMODE, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, VolumeProfile, TpoProfile, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, TwoCrows, UpsideGapTwoCrows, IdenticalThreeCrows, ThreeLineStrike, ThreeStarsInSouth, AbandonedBaby, AdvanceBlock, BeltHold, Breakaway, Counterattack, DojiStar, DragonflyDoji, GravestoneDoji, LongLeggedDoji, RickshawMan, EveningDojiStar, MorningDojiStar, GapSideBySideWhite, HighWave, Hikkake, HikkakeModified, HomingPigeon, OnNeck, InNeck, Thrusting, SeparatingLines, Kicking, KickingByLength, LadderBottom, MatHold, MatchingLow, LongLine, ShortLine, RisingThreeMethods, FallingThreeMethods, UpsideGapThreeMethods, DownsideGapThreeMethods, StalledPattern, StickSandwich, Takuri, ClosingMarubozu, OpeningMarubozu, TasukiGap, UniqueThreeRiver, ConcealingBabySwallow, DoubleTopBottom, TripleTopBottom, HeadAndShoulders, Triangle, Wedge, FlagPennant, RectangleRange, CupAndHandle, Abcd, Gartley, Butterfly, Bat, Crab, Shark, Cypher, ThreeDrives, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, OrderFlowImbalance, Vpin, AmihudIlliquidity, RollMeasure, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, FundingRate, FundingRateMean, FundingRateZScore, FundingBasis, OpenInterestDelta, OIPriceDivergence, OIWeighted, LongShortRatio, TakerBuySellRatio, LiquidationFeatures, TermStructureBasis, CalendarSpread, AdvanceDecline, AdvanceDeclineRatio, AdVolumeLine, McClellanOscillator, McClellanSummationIndex, Trin, BreadthThrust, NewHighsNewLows, HighLowIndex, PercentAboveMa, UpDownVolumeRatio, BullishPercentIndex, CumulativeVolumeIndex, AbsoluteBreadthIndex, TickIndex, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, RenkoBars, KagiBars, PointAndFigureBars, Alpha, SessionVwap, OvernightGap, SeasonalZScore, TimeOfDayReturnProfile, IntradayVolatilityProfile, VolumeByTimeProfile, DayOfWeekProfile, AverageDailyRange, TurnOfMonth, SessionHighLow, SessionRange, OvernightIntradayReturn, FibRetracement, FibExtension, FibProjection, AutoFib, GoldenPocket, FibConfluence, FibFan, FibArcs, FibChannel, FibTimeZones } = nativeBinding
313
+ const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, MIDPOINT, ROCP, ROCR, ROCR100, LINEARREG_INTERCEPT, TSF, LogReturn, RealizedVolatility, RollingIqr, RollingPercentileRank, TrendLabel, WinRate, Expectancy, SWMA, GMA, EHMA, MedianMA, AdaptiveLaguerre, DisparityIndex, FisherRSI, RSX, DynamicMomentumIndex, TREND_STRENGTH_INDEX, TsfOscillator, BipowerVariation, EwmaVolatility, Garch11, VolatilityOfVolatility, VolatilityCone, JumpIndicator, RegimeLabel, RollingQuantile, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpreadAr1Coefficient, SpearmanCorrelation, RollingCorrelation, RollingCovariance, OuHalfLife, SpreadHurst, DistanceSsd, BetaNeutralSpread, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, VarianceRatio, GrangerCausality, KalmanHedgeRatio, SpreadBollingerBands, MACD, MACDFIX, MACDEXT, BollingerBands, ATR, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, MIDPRICE, AVGPRICE, SAREXT, HT_PHASOR, CloseVsOpen, BodySizePct, WickRatio, HighLowRange, StochasticCCI, IMI, QQE, ElderRay, TTM_TREND, Qstick, POLARIZED_FRACTAL_EFFICIENCY, WAVE_PM, GatorOscillator, KasePermissionStochastic, VolatilityRatio, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, GD, HoltWinters, RMI, DerivativeOscillator, MacdHistogram, PpoHistogram, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredRSI, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HT_DCPHASE, HT_TRENDMODE, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, VolumeProfile, TpoProfile, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, TwoCrows, UpsideGapTwoCrows, IdenticalThreeCrows, ThreeLineStrike, ThreeStarsInSouth, AbandonedBaby, AdvanceBlock, BeltHold, Breakaway, Counterattack, DojiStar, DragonflyDoji, GravestoneDoji, LongLeggedDoji, RickshawMan, EveningDojiStar, MorningDojiStar, GapSideBySideWhite, HighWave, Hikkake, HikkakeModified, HomingPigeon, OnNeck, InNeck, Thrusting, SeparatingLines, Kicking, KickingByLength, LadderBottom, MatHold, MatchingLow, LongLine, ShortLine, RisingThreeMethods, FallingThreeMethods, UpsideGapThreeMethods, DownsideGapThreeMethods, StalledPattern, StickSandwich, Takuri, ClosingMarubozu, OpeningMarubozu, TasukiGap, UniqueThreeRiver, ConcealingBabySwallow, DoubleTopBottom, TripleTopBottom, HeadAndShoulders, Triangle, Wedge, FlagPennant, RectangleRange, CupAndHandle, Abcd, Gartley, Butterfly, Bat, Crab, Shark, Cypher, ThreeDrives, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, OrderFlowImbalance, Vpin, AmihudIlliquidity, RollMeasure, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, FundingRate, FundingRateMean, FundingRateZScore, FundingBasis, OpenInterestDelta, OIPriceDivergence, OIWeighted, LongShortRatio, TakerBuySellRatio, LiquidationFeatures, TermStructureBasis, CalendarSpread, AdvanceDecline, AdvanceDeclineRatio, AdVolumeLine, McClellanOscillator, McClellanSummationIndex, Trin, BreadthThrust, NewHighsNewLows, HighLowIndex, PercentAboveMa, UpDownVolumeRatio, BullishPercentIndex, CumulativeVolumeIndex, AbsoluteBreadthIndex, TickIndex, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, RenkoBars, KagiBars, PointAndFigureBars, Alpha, SessionVwap, OvernightGap, SeasonalZScore, TimeOfDayReturnProfile, IntradayVolatilityProfile, VolumeByTimeProfile, DayOfWeekProfile, AverageDailyRange, TurnOfMonth, SessionHighLow, SessionRange, OvernightIntradayReturn, FibRetracement, FibExtension, FibProjection, AutoFib, GoldenPocket, FibConfluence, FibFan, FibArcs, FibChannel, FibTimeZones } = nativeBinding
314
314
 
315
315
  module.exports.version = version
316
316
  module.exports.SMA = SMA
@@ -374,6 +374,11 @@ module.exports.RSX = RSX
374
374
  module.exports.DynamicMomentumIndex = DynamicMomentumIndex
375
375
  module.exports.TREND_STRENGTH_INDEX = TREND_STRENGTH_INDEX
376
376
  module.exports.TsfOscillator = TsfOscillator
377
+ module.exports.BipowerVariation = BipowerVariation
378
+ module.exports.EwmaVolatility = EwmaVolatility
379
+ module.exports.Garch11 = Garch11
380
+ module.exports.VolatilityOfVolatility = VolatilityOfVolatility
381
+ module.exports.VolatilityCone = VolatilityCone
377
382
  module.exports.JumpIndicator = JumpIndicator
378
383
  module.exports.RegimeLabel = RegimeLabel
379
384
  module.exports.RollingQuantile = RollingQuantile
@@ -426,6 +431,7 @@ module.exports.POLARIZED_FRACTAL_EFFICIENCY = POLARIZED_FRACTAL_EFFICIENCY
426
431
  module.exports.WAVE_PM = WAVE_PM
427
432
  module.exports.GatorOscillator = GatorOscillator
428
433
  module.exports.KasePermissionStochastic = KasePermissionStochastic
434
+ module.exports.VolatilityRatio = VolatilityRatio
429
435
  module.exports.Stochastic = Stochastic
430
436
  module.exports.OBV = OBV
431
437
  module.exports.ADX = ADX
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-darwin-arm64",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (macOS Apple Silicon). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.darwin-arm64.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-darwin-x64",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (macOS Intel). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.darwin-x64.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-linux-arm64-gnu",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (linux arm64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.linux-arm64-gnu.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-linux-x64-gnu",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (linux x64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.linux-x64-gnu.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-win32-arm64-msvc",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (Windows arm64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.win32-arm64-msvc.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-win32-x64-msvc",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Native binding for wickra (Windows x64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.win32-x64-msvc.node",
6
6
  "files": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
5
5
  "author": "kingchenc <support@wickra.org>",
6
6
  "main": "index.js",
@@ -47,12 +47,12 @@
47
47
  "node": ">= 18"
48
48
  },
49
49
  "optionalDependencies": {
50
- "wickra-linux-x64-gnu": "0.5.8",
51
- "wickra-linux-arm64-gnu": "0.5.8",
52
- "wickra-darwin-x64": "0.5.8",
53
- "wickra-darwin-arm64": "0.5.8",
54
- "wickra-win32-x64-msvc": "0.5.8",
55
- "wickra-win32-arm64-msvc": "0.5.8"
50
+ "wickra-linux-x64-gnu": "0.6.0",
51
+ "wickra-linux-arm64-gnu": "0.6.0",
52
+ "wickra-darwin-x64": "0.6.0",
53
+ "wickra-darwin-arm64": "0.6.0",
54
+ "wickra-win32-x64-msvc": "0.6.0",
55
+ "wickra-win32-arm64-msvc": "0.6.0"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "napi build --platform --release",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file