wickra 0.4.0 → 0.4.2

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://wickra.org/og-banner.webp" 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=227" 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)
@@ -12,6 +12,7 @@
12
12
  [![License: PolyForm-NC](https://img.shields.io/badge/license-PolyForm--NC--1.0.0-purple)](LICENSE)
13
13
  [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/wickra-lib/wickra/badge)](https://scorecard.dev/viewer/?uri=github.com/wickra-lib/wickra)
14
14
  [![Build provenance](https://img.shields.io/badge/provenance-attested-brightgreen?logo=github)](https://github.com/wickra-lib/wickra/attestations)
15
+ [![Docs](https://img.shields.io/badge/docs-docs.wickra.org-0ea5e9?logo=readthedocs&logoColor=white)](https://docs.wickra.org)
15
16
 
16
17
  **Streaming-first technical indicators. Install with `pip install wickra` — no system dependencies.**
17
18
 
@@ -37,6 +38,25 @@ for price in live_feed:
37
38
  print("overbought")
38
39
  ```
39
40
 
41
+ ## Documentation
42
+
43
+ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
44
+
45
+ - **Quickstarts** — [Rust](https://docs.wickra.org/Quickstart-Rust),
46
+ [Python](https://docs.wickra.org/Quickstart-Python),
47
+ [Node](https://docs.wickra.org/Quickstart-Node),
48
+ [WASM](https://docs.wickra.org/Quickstart-WASM).
49
+ - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
50
+ every one of the 227 indicators; start at the
51
+ [indicators overview](https://docs.wickra.org/Indicators-Overview).
52
+ - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
53
+ [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
54
+ [indicator chaining](https://docs.wickra.org/Indicator-Chaining), the
55
+ [data layer](https://docs.wickra.org/Data-Layer).
56
+ - **Guides** — [Cookbook](https://docs.wickra.org/Cookbook),
57
+ [TA-Lib migration](https://docs.wickra.org/TA-Lib-Migration),
58
+ [FAQ](https://docs.wickra.org/FAQ).
59
+
40
60
  ## Why Wickra exists
41
61
 
42
62
  The Python TA ecosystem has plenty of libraries — TA-Lib, pandas-ta, finta,
@@ -115,9 +135,10 @@ python -m benchmarks.compare_libraries
115
135
 
116
136
  ## Indicators
117
137
 
118
- 214 streaming-first indicators across sixteen families. Every one passes the
138
+ 227 streaming-first indicators across seventeen families. Every one passes the
119
139
  `batch == streaming` equivalence test, reference-value tests, and reset
120
- semantics tests.
140
+ semantics tests. Each has a per-indicator deep dive (formula, parameters,
141
+ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
121
142
 
122
143
  | Family | Indicators |
123
144
  |--------|-----------|
@@ -129,15 +150,22 @@ semantics tests.
129
150
  | 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 |
130
151
  | Trailing Stops | Parabolic SAR, 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 |
131
152
  | 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 |
132
- | Price Statistics | Typical Price, Median Price, Weighted Close, Linear Regression, Linear Regression Slope, Z-Score, Linear Regression Angle, Variance, Coefficient of Variation, Skewness, Kurtosis, Standard Error, Detrended StdDev, R², Median Absolute Deviation, Autocorrelation, Hurst Exponent, Pearson Correlation, Beta, Spearman Correlation |
153
+ | Price Statistics | Typical Price, Median Price, Weighted Close, Linear Regression, Linear Regression Slope, Z-Score, Linear Regression Angle, Variance, Coefficient of Variation, Skewness, Kurtosis, Standard Error, Detrended StdDev, R², Median Absolute Deviation, Autocorrelation, Hurst Exponent, Pearson Correlation, Beta, Pairwise Beta, Pair Spread Z-Score, Lead-Lag Cross-Correlation, Cointegration, Relative Strength A-vs-B, Spearman Correlation |
133
154
  | Ehlers / Cycle (DSP) | MAMA, FAMA, Fisher Transform, Inverse Fisher Transform, SuperSmoother, Hilbert Dominant Cycle, Sine Wave, Decycler, Decycler Oscillator, Roofing Filter, Center of Gravity, Cybernetic Cycle, Adaptive Cycle, Empirical Mode Decomposition, Ehlers Stochastic, Instantaneous Trendline |
134
155
  | Pivots & S/R | Classic Pivots, Fibonacci Pivots, Camarilla, Woodie Pivots, DeMark Pivots, Williams Fractals, ZigZag |
135
156
  | DeMark | TD Setup, TD Sequential, TD DeMarker, TD REI, TD Pressure, TD Combo, TD Countdown, TD Lines, TD Range Projection, TD Differential, TD Open, TD Risk Level |
136
157
  | Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi |
137
158
  | Candlestick Patterns | Doji, Hammer, Inverted Hammer, Hanging Man, Shooting Star, Engulfing, Harami, Morning/Evening Star, Three White Soldiers/Black Crows, Piercing Line/Dark Cloud Cover, Marubozu, Tweezer, Spinning Top, Three Inside Up/Down, Three Outside Up/Down |
159
+ | Microstructure | Order-Book Imbalance (Top-1 / Top-N / Full), Microprice, Quoted Spread, Signed Volume, Cumulative Volume Delta, Trade Imbalance |
138
160
  | Market Profile | Value Area (POC / VAH / VAL), Initial Balance, Opening Range |
139
161
  | Risk / Performance | Sharpe Ratio, Sortino Ratio, Calmar Ratio, Omega Ratio, Max Drawdown, Average Drawdown, Drawdown Duration, Pain Index, Value at Risk, Conditional Value at Risk (CVaR), Profit Factor, Gain/Loss Ratio, Recovery Factor, Kelly Criterion, Treynor Ratio, Information Ratio, Alpha (Jensen) |
140
162
 
163
+ Every candlestick pattern emits a signed per-bar value — `+1.0` bullish,
164
+ `−1.0` bearish, `0.0` none — so the family drops straight into a feature matrix
165
+ as one column each. `Doji` is direction-less by default (`+1.0` / `0.0`);
166
+ construct it in signed mode (`Doji::new().signed()`, `Doji(signed=True)`,
167
+ `new Doji(true)`) for a dragonfly / gravestone `±1` reading.
168
+
141
169
  Adding a new indicator means implementing one trait in Rust; all four bindings
142
170
  inherit it automatically.
143
171
 
@@ -209,7 +237,7 @@ A Python live-trading example using the public `websockets` package lives at
209
237
  ```
210
238
  wickra/
211
239
  ├── crates/
212
- │ ├── wickra-core/ core engine + all 214 indicators
240
+ │ ├── wickra-core/ core engine + all 227 indicators
213
241
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
214
242
  │ └── wickra-data/ CSV reader, tick aggregator, live exchange feeds
215
243
  ├── bindings/
package/index.d.ts CHANGED
@@ -5,6 +5,34 @@
5
5
 
6
6
  /** Library version (matches the Rust crate version). */
7
7
  export declare function version(): string
8
+ /** Lead/lag result: the offset that maximises correlation, and that correlation. */
9
+ export interface LeadLagValue {
10
+ /** Offset that maximises `|corr(a, b shifted)|`. Positive ⇒ `a` leads `b`. */
11
+ lag: number
12
+ /** Signed correlation at that lag, in `[-1, 1]`. */
13
+ correlation: number
14
+ }
15
+ /** Cointegration result: hedge ratio, current spread, and the ADF statistic. */
16
+ export interface CointegrationValue {
17
+ /** Engle–Granger hedge ratio (OLS slope of `a` on `b`). */
18
+ hedgeRatio: number
19
+ /** Current spread (regression residual) `a - (alpha + beta*b)`. */
20
+ spread: number
21
+ /**
22
+ * Augmented Dickey–Fuller statistic on the spread; more negative ⇒ more
23
+ * strongly mean-reverting.
24
+ */
25
+ adfStat: number
26
+ }
27
+ /** Relative-strength triple: the a/b ratio, its moving average, and its RSI. */
28
+ export interface RelativeStrengthValue {
29
+ /** Raw ratio `a / b`. */
30
+ ratio: number
31
+ /** Moving average of the ratio. */
32
+ ratioMa: number
33
+ /** RSI of the ratio. */
34
+ ratioRsi: number
35
+ }
8
36
  /** MACD triple: macd line, signal line, histogram. */
9
37
  export interface MacdValue {
10
38
  macd: number
@@ -251,6 +279,13 @@ export interface OpeningRangeValue {
251
279
  low: number
252
280
  breakoutDistance: number
253
281
  }
282
+ /** One order-book depth snapshot for batch evaluation. */
283
+ export interface ObSnapshot {
284
+ bidPx: Array<number>
285
+ bidSz: Array<number>
286
+ askPx: Array<number>
287
+ askSz: Array<number>
288
+ }
254
289
  export type SmaNode = SMA
255
290
  export declare class SMA {
256
291
  constructor(period: number)
@@ -628,6 +663,19 @@ export declare class Beta {
628
663
  isReady(): boolean
629
664
  warmupPeriod(): number
630
665
  }
666
+ export type PairwiseBetaNode = PairwiseBeta
667
+ export declare class PairwiseBeta {
668
+ constructor(period: number)
669
+ update(x: number, y: number): number | null
670
+ /**
671
+ * Batch over two equally-sized arrays. Returns a length-`n` array
672
+ * with `NaN` for warmup positions.
673
+ */
674
+ batch(x: Array<number>, y: Array<number>): Array<number>
675
+ reset(): void
676
+ isReady(): boolean
677
+ warmupPeriod(): number
678
+ }
631
679
  export type SpearmanCorrelationNode = SpearmanCorrelation
632
680
  export declare class SpearmanCorrelation {
633
681
  constructor(period: number)
@@ -641,6 +689,65 @@ export declare class SpearmanCorrelation {
641
689
  isReady(): boolean
642
690
  warmupPeriod(): number
643
691
  }
692
+ export type PairSpreadZScoreNode = PairSpreadZScore
693
+ /**
694
+ * Pair spread z-score: two ctor params (`betaPeriod`, `zPeriod`), one `(a, b)`
695
+ * price pair per update, a single z-score out.
696
+ */
697
+ export declare class PairSpreadZScore {
698
+ constructor(betaPeriod: number, zPeriod: number)
699
+ update(a: number, b: number): number | null
700
+ /**
701
+ * Batch over two equally-sized arrays of prices. Returns a length-`n`
702
+ * array with `NaN` for warmup positions.
703
+ */
704
+ batch(a: Array<number>, b: Array<number>): Array<number>
705
+ reset(): void
706
+ isReady(): boolean
707
+ warmupPeriod(): number
708
+ }
709
+ export type LeadLagCrossCorrelationNode = LeadLagCrossCorrelation
710
+ export declare class LeadLagCrossCorrelation {
711
+ constructor(window: number, maxLag: number)
712
+ update(a: number, b: number): LeadLagValue | null
713
+ /**
714
+ * Batch over two equally-sized arrays. Returns a flat array of length
715
+ * `2 * n`, interleaved per row as `[lag0, corr0, lag1, corr1, ...]`. Read
716
+ * column `j` of row `i` as `result[i * 2 + j]`. Warmup rows are `NaN`.
717
+ */
718
+ batch(a: Array<number>, b: Array<number>): Array<number>
719
+ reset(): void
720
+ isReady(): boolean
721
+ warmupPeriod(): number
722
+ }
723
+ export type CointegrationNode = Cointegration
724
+ export declare class Cointegration {
725
+ constructor(period: number, adfLags: number)
726
+ update(a: number, b: number): CointegrationValue | null
727
+ /**
728
+ * Batch over two equally-sized arrays. Returns a flat array of length
729
+ * `3 * n`, interleaved per row as `[hedgeRatio0, spread0, adfStat0, ...]`.
730
+ * Read column `j` of row `i` as `result[i * 3 + j]`. Warmup rows are `NaN`.
731
+ */
732
+ batch(a: Array<number>, b: Array<number>): Array<number>
733
+ reset(): void
734
+ isReady(): boolean
735
+ warmupPeriod(): number
736
+ }
737
+ export type RelativeStrengthAbNode = RelativeStrengthAB
738
+ export declare class RelativeStrengthAB {
739
+ constructor(maPeriod: number, rsiPeriod: number)
740
+ update(a: number, b: number): RelativeStrengthValue | null
741
+ /**
742
+ * Batch over two equally-sized arrays. Returns a flat array of length
743
+ * `3 * n`, interleaved per row as `[ratio0, ratioMa0, ratioRsi0, ...]`.
744
+ * Read column `j` of row `i` as `result[i * 3 + j]`. Warmup rows are `NaN`.
745
+ */
746
+ batch(a: Array<number>, b: Array<number>): Array<number>
747
+ reset(): void
748
+ isReady(): boolean
749
+ warmupPeriod(): number
750
+ }
644
751
  export type MacdNode = MACD
645
752
  export declare class MACD {
646
753
  constructor(fast: number, slow: number, signal: number)
@@ -1955,12 +2062,13 @@ export declare class OpeningRange {
1955
2062
  }
1956
2063
  export type DojiNode = Doji
1957
2064
  export declare class Doji {
1958
- constructor()
2065
+ constructor(signed?: boolean | undefined | null)
1959
2066
  update(open: number, high: number, low: number, close: number): number | null
1960
2067
  batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
1961
2068
  reset(): void
1962
2069
  isReady(): boolean
1963
2070
  warmupPeriod(): number
2071
+ isSigned(): boolean
1964
2072
  }
1965
2073
  export type HammerNode = Hammer
1966
2074
  export declare class Hammer {
@@ -2088,6 +2196,78 @@ export declare class ThreeOutside {
2088
2196
  isReady(): boolean
2089
2197
  warmupPeriod(): number
2090
2198
  }
2199
+ export type OrderBookImbalanceTop1Node = OrderBookImbalanceTop1
2200
+ export declare class OrderBookImbalanceTop1 {
2201
+ constructor()
2202
+ update(bidPx: Array<number>, bidSz: Array<number>, askPx: Array<number>, askSz: Array<number>): number | null
2203
+ batch(snapshots: Array<ObSnapshot>): Array<number>
2204
+ reset(): void
2205
+ isReady(): boolean
2206
+ warmupPeriod(): number
2207
+ }
2208
+ export type OrderBookImbalanceFullNode = OrderBookImbalanceFull
2209
+ export declare class OrderBookImbalanceFull {
2210
+ constructor()
2211
+ update(bidPx: Array<number>, bidSz: Array<number>, askPx: Array<number>, askSz: Array<number>): number | null
2212
+ batch(snapshots: Array<ObSnapshot>): Array<number>
2213
+ reset(): void
2214
+ isReady(): boolean
2215
+ warmupPeriod(): number
2216
+ }
2217
+ export type MicropriceNode = Microprice
2218
+ export declare class Microprice {
2219
+ constructor()
2220
+ update(bidPx: Array<number>, bidSz: Array<number>, askPx: Array<number>, askSz: Array<number>): number | null
2221
+ batch(snapshots: Array<ObSnapshot>): Array<number>
2222
+ reset(): void
2223
+ isReady(): boolean
2224
+ warmupPeriod(): number
2225
+ }
2226
+ export type QuotedSpreadNode = QuotedSpread
2227
+ export declare class QuotedSpread {
2228
+ constructor()
2229
+ update(bidPx: Array<number>, bidSz: Array<number>, askPx: Array<number>, askSz: Array<number>): number | null
2230
+ batch(snapshots: Array<ObSnapshot>): Array<number>
2231
+ reset(): void
2232
+ isReady(): boolean
2233
+ warmupPeriod(): number
2234
+ }
2235
+ export type OrderBookImbalanceTopNNode = OrderBookImbalanceTopN
2236
+ export declare class OrderBookImbalanceTopN {
2237
+ constructor(levels: number)
2238
+ update(bidPx: Array<number>, bidSz: Array<number>, askPx: Array<number>, askSz: Array<number>): number | null
2239
+ batch(snapshots: Array<ObSnapshot>): Array<number>
2240
+ reset(): void
2241
+ isReady(): boolean
2242
+ warmupPeriod(): number
2243
+ }
2244
+ export type SignedVolumeNode = SignedVolume
2245
+ export declare class SignedVolume {
2246
+ constructor()
2247
+ update(price: number, size: number, isBuy: boolean): number | null
2248
+ batch(price: Array<number>, size: Array<number>, isBuy: Array<boolean>): Array<number>
2249
+ reset(): void
2250
+ isReady(): boolean
2251
+ warmupPeriod(): number
2252
+ }
2253
+ export type CumulativeVolumeDeltaNode = CumulativeVolumeDelta
2254
+ export declare class CumulativeVolumeDelta {
2255
+ constructor()
2256
+ update(price: number, size: number, isBuy: boolean): number | null
2257
+ batch(price: Array<number>, size: Array<number>, isBuy: Array<boolean>): Array<number>
2258
+ reset(): void
2259
+ isReady(): boolean
2260
+ warmupPeriod(): number
2261
+ }
2262
+ export type TradeImbalanceNode = TradeImbalance
2263
+ export declare class TradeImbalance {
2264
+ constructor(window: number)
2265
+ update(price: number, size: number, isBuy: boolean): number | null
2266
+ batch(price: Array<number>, size: Array<number>, isBuy: Array<boolean>): Array<number>
2267
+ reset(): void
2268
+ isReady(): boolean
2269
+ warmupPeriod(): number
2270
+ }
2091
2271
  export type SharpeRatioNode = SharpeRatio
2092
2272
  export declare class SharpeRatio {
2093
2273
  constructor(period: number, riskFree: 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, MACD, BollingerBands, ATR, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, KAMA, RVI, PGO, KST, SMI, LaguerreRSI, ConnorsRSI, Inertia, ALMA, McGinleyDynamic, FRAMA, VIDYA, JMA, Alligator, EVWMA, APO, AwesomeOscillatorHistogram, CFO, ZeroLagMACD, ElderImpulse, STC, T3, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, EaseOfMovement, KVO, VolumeOscillator, NVI, PVI, WilliamsAD, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, Vortex, RWI, WaveTrend, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, RVIVolatility, ParkinsonVolatility, GarmanKlassVolatility, RogersSatchellVolatility, YangZhangVolatility, 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, SuperSmoother, FisherTransform, InverseFisherTransform, Decycler, DecyclerOscillator, RoofingFilter, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, EmpiricalModeDecomposition, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, SpearmanCorrelation, ValueArea, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, Alpha } = 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, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpearmanCorrelation, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, MACD, BollingerBands, ATR, 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, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, 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, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, Alpha } = nativeBinding
314
314
 
315
315
  module.exports.version = version
316
316
  module.exports.SMA = SMA
@@ -332,6 +332,34 @@ module.exports.StdDev = StdDev
332
332
  module.exports.UlcerIndex = UlcerIndex
333
333
  module.exports.VerticalHorizontalFilter = VerticalHorizontalFilter
334
334
  module.exports.ZScore = ZScore
335
+ module.exports.McGinleyDynamic = McGinleyDynamic
336
+ module.exports.FRAMA = FRAMA
337
+ module.exports.SuperSmoother = SuperSmoother
338
+ module.exports.FisherTransform = FisherTransform
339
+ module.exports.Decycler = Decycler
340
+ module.exports.CenterOfGravity = CenterOfGravity
341
+ module.exports.CyberneticCycle = CyberneticCycle
342
+ module.exports.InstantaneousTrendline = InstantaneousTrendline
343
+ module.exports.EhlersStochastic = EhlersStochastic
344
+ module.exports.RVIVolatility = RVIVolatility
345
+ module.exports.Variance = Variance
346
+ module.exports.CoefficientOfVariation = CoefficientOfVariation
347
+ module.exports.Skewness = Skewness
348
+ module.exports.Kurtosis = Kurtosis
349
+ module.exports.StandardError = StandardError
350
+ module.exports.DetrendedStdDev = DetrendedStdDev
351
+ module.exports.RSquared = RSquared
352
+ module.exports.MedianAbsoluteDeviation = MedianAbsoluteDeviation
353
+ module.exports.Autocorrelation = Autocorrelation
354
+ module.exports.HurstExponent = HurstExponent
355
+ module.exports.PearsonCorrelation = PearsonCorrelation
356
+ module.exports.Beta = Beta
357
+ module.exports.PairwiseBeta = PairwiseBeta
358
+ module.exports.SpearmanCorrelation = SpearmanCorrelation
359
+ module.exports.PairSpreadZScore = PairSpreadZScore
360
+ module.exports.LeadLagCrossCorrelation = LeadLagCrossCorrelation
361
+ module.exports.Cointegration = Cointegration
362
+ module.exports.RelativeStrengthAB = RelativeStrengthAB
335
363
  module.exports.MACD = MACD
336
364
  module.exports.BollingerBands = BollingerBands
337
365
  module.exports.ATR = ATR
@@ -349,27 +377,25 @@ module.exports.VWAP = VWAP
349
377
  module.exports.RollingVWAP = RollingVWAP
350
378
  module.exports.AwesomeOscillator = AwesomeOscillator
351
379
  module.exports.Aroon = Aroon
352
- module.exports.KAMA = KAMA
353
- module.exports.RVI = RVI
354
- module.exports.PGO = PGO
355
- module.exports.KST = KST
356
- module.exports.SMI = SMI
357
- module.exports.LaguerreRSI = LaguerreRSI
358
- module.exports.ConnorsRSI = ConnorsRSI
359
380
  module.exports.Inertia = Inertia
360
- module.exports.ALMA = ALMA
361
- module.exports.McGinleyDynamic = McGinleyDynamic
362
- module.exports.FRAMA = FRAMA
363
- module.exports.VIDYA = VIDYA
364
- module.exports.JMA = JMA
365
- module.exports.Alligator = Alligator
366
- module.exports.EVWMA = EVWMA
367
- module.exports.APO = APO
381
+ module.exports.ConnorsRSI = ConnorsRSI
382
+ module.exports.LaguerreRSI = LaguerreRSI
383
+ module.exports.SMI = SMI
384
+ module.exports.KST = KST
385
+ module.exports.PGO = PGO
386
+ module.exports.RVI = RVI
368
387
  module.exports.AwesomeOscillatorHistogram = AwesomeOscillatorHistogram
369
- module.exports.CFO = CFO
370
- module.exports.ZeroLagMACD = ZeroLagMACD
371
- module.exports.ElderImpulse = ElderImpulse
372
388
  module.exports.STC = STC
389
+ module.exports.ElderImpulse = ElderImpulse
390
+ module.exports.ZeroLagMACD = ZeroLagMACD
391
+ module.exports.CFO = CFO
392
+ module.exports.APO = APO
393
+ module.exports.KAMA = KAMA
394
+ module.exports.EVWMA = EVWMA
395
+ module.exports.Alligator = Alligator
396
+ module.exports.JMA = JMA
397
+ module.exports.VIDYA = VIDYA
398
+ module.exports.ALMA = ALMA
373
399
  module.exports.T3 = T3
374
400
  module.exports.TSI = TSI
375
401
  module.exports.PMO = PMO
@@ -379,17 +405,17 @@ module.exports.VolumePriceTrend = VolumePriceTrend
379
405
  module.exports.ChaikinMoneyFlow = ChaikinMoneyFlow
380
406
  module.exports.ChaikinOscillator = ChaikinOscillator
381
407
  module.exports.ForceIndex = ForceIndex
382
- module.exports.EaseOfMovement = EaseOfMovement
383
- module.exports.KVO = KVO
384
- module.exports.VolumeOscillator = VolumeOscillator
385
408
  module.exports.NVI = NVI
386
409
  module.exports.PVI = PVI
410
+ module.exports.VolumeOscillator = VolumeOscillator
411
+ module.exports.KVO = KVO
387
412
  module.exports.WilliamsAD = WilliamsAD
388
413
  module.exports.AnchoredVWAP = AnchoredVWAP
389
414
  module.exports.DemandIndex = DemandIndex
390
415
  module.exports.TSV = TSV
391
416
  module.exports.VZO = VZO
392
417
  module.exports.MarketFacilitationIndex = MarketFacilitationIndex
418
+ module.exports.EaseOfMovement = EaseOfMovement
393
419
  module.exports.SuperTrend = SuperTrend
394
420
  module.exports.ChandelierExit = ChandelierExit
395
421
  module.exports.ChandeKrollStop = ChandeKrollStop
@@ -411,26 +437,25 @@ module.exports.BalanceOfPower = BalanceOfPower
411
437
  module.exports.ChoppinessIndex = ChoppinessIndex
412
438
  module.exports.TrueRange = TrueRange
413
439
  module.exports.ChaikinVolatility = ChaikinVolatility
440
+ module.exports.YangZhangVolatility = YangZhangVolatility
441
+ module.exports.RogersSatchellVolatility = RogersSatchellVolatility
442
+ module.exports.GarmanKlassVolatility = GarmanKlassVolatility
443
+ module.exports.ParkinsonVolatility = ParkinsonVolatility
414
444
  module.exports.LinRegAngle = LinRegAngle
415
445
  module.exports.BollingerBandwidth = BollingerBandwidth
416
446
  module.exports.PercentB = PercentB
417
447
  module.exports.NATR = NATR
418
448
  module.exports.HistoricalVolatility = HistoricalVolatility
419
449
  module.exports.AroonOscillator = AroonOscillator
420
- module.exports.Vortex = Vortex
421
- module.exports.RWI = RWI
422
450
  module.exports.WaveTrend = WaveTrend
451
+ module.exports.RWI = RWI
452
+ module.exports.Vortex = Vortex
423
453
  module.exports.MassIndex = MassIndex
424
454
  module.exports.StochRSI = StochRSI
425
455
  module.exports.UltimateOscillator = UltimateOscillator
426
456
  module.exports.PPO = PPO
427
457
  module.exports.Coppock = Coppock
428
458
  module.exports.VWMA = VWMA
429
- module.exports.RVIVolatility = RVIVolatility
430
- module.exports.ParkinsonVolatility = ParkinsonVolatility
431
- module.exports.GarmanKlassVolatility = GarmanKlassVolatility
432
- module.exports.RogersSatchellVolatility = RogersSatchellVolatility
433
- module.exports.YangZhangVolatility = YangZhangVolatility
434
459
  module.exports.MaEnvelope = MaEnvelope
435
460
  module.exports.AccelerationBands = AccelerationBands
436
461
  module.exports.StarcBands = StarcBands
@@ -461,16 +486,9 @@ module.exports.TDRangeProjection = TDRangeProjection
461
486
  module.exports.TDDifferential = TDDifferential
462
487
  module.exports.TDOpen = TDOpen
463
488
  module.exports.TDRiskLevel = TDRiskLevel
464
- module.exports.SuperSmoother = SuperSmoother
465
- module.exports.FisherTransform = FisherTransform
466
489
  module.exports.InverseFisherTransform = InverseFisherTransform
467
- module.exports.Decycler = Decycler
468
490
  module.exports.DecyclerOscillator = DecyclerOscillator
469
491
  module.exports.RoofingFilter = RoofingFilter
470
- module.exports.CenterOfGravity = CenterOfGravity
471
- module.exports.CyberneticCycle = CyberneticCycle
472
- module.exports.InstantaneousTrendline = InstantaneousTrendline
473
- module.exports.EhlersStochastic = EhlersStochastic
474
492
  module.exports.EmpiricalModeDecomposition = EmpiricalModeDecomposition
475
493
  module.exports.HilbertDominantCycle = HilbertDominantCycle
476
494
  module.exports.AdaptiveCycle = AdaptiveCycle
@@ -479,19 +497,6 @@ module.exports.MAMA = MAMA
479
497
  module.exports.FAMA = FAMA
480
498
  module.exports.Ichimoku = Ichimoku
481
499
  module.exports.HeikinAshi = HeikinAshi
482
- module.exports.Variance = Variance
483
- module.exports.CoefficientOfVariation = CoefficientOfVariation
484
- module.exports.Skewness = Skewness
485
- module.exports.Kurtosis = Kurtosis
486
- module.exports.StandardError = StandardError
487
- module.exports.DetrendedStdDev = DetrendedStdDev
488
- module.exports.RSquared = RSquared
489
- module.exports.MedianAbsoluteDeviation = MedianAbsoluteDeviation
490
- module.exports.Autocorrelation = Autocorrelation
491
- module.exports.HurstExponent = HurstExponent
492
- module.exports.PearsonCorrelation = PearsonCorrelation
493
- module.exports.Beta = Beta
494
- module.exports.SpearmanCorrelation = SpearmanCorrelation
495
500
  module.exports.ValueArea = ValueArea
496
501
  module.exports.InitialBalance = InitialBalance
497
502
  module.exports.OpeningRange = OpeningRange
@@ -510,7 +515,14 @@ module.exports.Tweezer = Tweezer
510
515
  module.exports.SpinningTop = SpinningTop
511
516
  module.exports.ThreeInside = ThreeInside
512
517
  module.exports.ThreeOutside = ThreeOutside
513
- // Family 15: Risk / Performance metrics
518
+ module.exports.OrderBookImbalanceTop1 = OrderBookImbalanceTop1
519
+ module.exports.OrderBookImbalanceFull = OrderBookImbalanceFull
520
+ module.exports.Microprice = Microprice
521
+ module.exports.QuotedSpread = QuotedSpread
522
+ module.exports.OrderBookImbalanceTopN = OrderBookImbalanceTopN
523
+ module.exports.SignedVolume = SignedVolume
524
+ module.exports.CumulativeVolumeDelta = CumulativeVolumeDelta
525
+ module.exports.TradeImbalance = TradeImbalance
514
526
  module.exports.SharpeRatio = SharpeRatio
515
527
  module.exports.SortinoRatio = SortinoRatio
516
528
  module.exports.CalmarRatio = CalmarRatio
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-darwin-arm64",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.darwin-arm64.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-darwin-x64",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.darwin-x64.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-linux-arm64-gnu",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.linux-arm64-gnu.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-linux-x64-gnu",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.linux-x64-gnu.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-win32-arm64-msvc",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.win32-arm64-msvc.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wickra-win32-x64-msvc",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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": [
7
7
  "wickra.win32-x64-msvc.node"
8
8
  ],
9
- "license": "PolyForm-Noncommercial-1.0.0",
9
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
10
10
  "engines": {
11
11
  "node": ">= 18"
12
12
  },
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "wickra",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
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",
7
7
  "types": "index.d.ts",
8
- "license": "PolyForm-Noncommercial-1.0.0",
8
+ "license": "LicenseRef-Wickra-Noncommercial-1.0.0",
9
9
  "keywords": [
10
10
  "trading",
11
11
  "indicators",
@@ -47,12 +47,12 @@
47
47
  "node": ">= 18"
48
48
  },
49
49
  "optionalDependencies": {
50
- "wickra-linux-x64-gnu": "0.4.0",
51
- "wickra-linux-arm64-gnu": "0.4.0",
52
- "wickra-darwin-x64": "0.4.0",
53
- "wickra-darwin-arm64": "0.4.0",
54
- "wickra-win32-x64-msvc": "0.4.0",
55
- "wickra-win32-arm64-msvc": "0.4.0"
50
+ "wickra-linux-x64-gnu": "0.4.2",
51
+ "wickra-linux-arm64-gnu": "0.4.2",
52
+ "wickra-darwin-x64": "0.4.2",
53
+ "wickra-darwin-arm64": "0.4.2",
54
+ "wickra-win32-x64-msvc": "0.4.2",
55
+ "wickra-win32-arm64-msvc": "0.4.2"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "napi build --platform --release",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file