wickra-wasm 0.4.2 → 0.4.3

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=227" 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=232" 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)
@@ -47,7 +47,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
47
47
  [Node](https://docs.wickra.org/Quickstart-Node),
48
48
  [WASM](https://docs.wickra.org/Quickstart-WASM).
49
49
  - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
50
- every one of the 227 indicators; start at the
50
+ every one of the 232 indicators; start at the
51
51
  [indicators overview](https://docs.wickra.org/Indicators-Overview).
52
52
  - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
53
53
  [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
@@ -135,7 +135,7 @@ python -m benchmarks.compare_libraries
135
135
 
136
136
  ## Indicators
137
137
 
138
- 227 streaming-first indicators across seventeen families. Every one passes the
138
+ 232 streaming-first indicators across seventeen families. Every one passes the
139
139
  `batch == streaming` equivalence test, reference-value tests, and reset
140
140
  semantics tests. Each has a per-indicator deep dive (formula, parameters,
141
141
  warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
@@ -156,7 +156,7 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
156
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 |
157
157
  | Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi |
158
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 |
159
+ | Microstructure | Order-Book Imbalance (Top-1 / Top-N / Full), Microprice, Quoted Spread, Depth Slope, Signed Volume, Cumulative Volume Delta, Trade Imbalance, Effective Spread, Realized Spread, Kyle's Lambda, Footprint |
160
160
  | Market Profile | Value Area (POC / VAH / VAL), Initial Balance, Opening Range |
161
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) |
162
162
 
@@ -237,7 +237,7 @@ A Python live-trading example using the public `websockets` package lives at
237
237
  ```
238
238
  wickra/
239
239
  ├── crates/
240
- │ ├── wickra-core/ core engine + all 227 indicators
240
+ │ ├── wickra-core/ core engine + all 232 indicators
241
241
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
242
242
  │ └── wickra-data/ CSV reader, tick aggregator, live exchange feeds
243
243
  ├── bindings/
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "kingchenc <support@wickra.org>"
6
6
  ],
7
7
  "description": "WASM bindings for the Wickra streaming-first technical indicators library.",
8
- "version": "0.4.2",
8
+ "version": "0.4.3",
9
9
  "license": "PolyForm-Noncommercial-1.0.0",
10
10
  "repository": {
11
11
  "type": "git",
package/wickra_wasm.d.ts CHANGED
@@ -568,6 +568,16 @@ export class DemarkPivots {
568
568
  warmupPeriod(): number;
569
569
  }
570
570
 
571
+ export class DepthSlope {
572
+ free(): void;
573
+ [Symbol.dispose](): void;
574
+ isReady(): boolean;
575
+ constructor();
576
+ reset(): void;
577
+ update(bid_px: Float64Array, bid_sz: Float64Array, ask_px: Float64Array, ask_sz: Float64Array): number | undefined;
578
+ warmupPeriod(): number;
579
+ }
580
+
571
581
  export class DetrendedStdDev {
572
582
  free(): void;
573
583
  [Symbol.dispose](): void;
@@ -676,6 +686,16 @@ export class EaseOfMovement {
676
686
  update(high: number, low: number, volume: number): number | undefined;
677
687
  }
678
688
 
689
+ export class EffectiveSpread {
690
+ free(): void;
691
+ [Symbol.dispose](): void;
692
+ isReady(): boolean;
693
+ constructor();
694
+ reset(): void;
695
+ update(price: number, size: number, is_buy: boolean, mid: number): number | undefined;
696
+ warmupPeriod(): number;
697
+ }
698
+
679
699
  export class EhlersStochastic {
680
700
  free(): void;
681
701
  [Symbol.dispose](): void;
@@ -764,6 +784,16 @@ export class FisherTransform {
764
784
  warmupPeriod(): number;
765
785
  }
766
786
 
787
+ export class Footprint {
788
+ free(): void;
789
+ [Symbol.dispose](): void;
790
+ isReady(): boolean;
791
+ constructor(tick_size: number);
792
+ reset(): void;
793
+ update(price: number, size: number, is_buy: boolean): any;
794
+ warmupPeriod(): number;
795
+ }
796
+
767
797
  export class ForceIndex {
768
798
  free(): void;
769
799
  [Symbol.dispose](): void;
@@ -1093,6 +1123,16 @@ export class Kurtosis {
1093
1123
  warmupPeriod(): number;
1094
1124
  }
1095
1125
 
1126
+ export class KylesLambda {
1127
+ free(): void;
1128
+ [Symbol.dispose](): void;
1129
+ isReady(): boolean;
1130
+ constructor(window: number);
1131
+ reset(): void;
1132
+ update(price: number, size: number, is_buy: boolean, mid: number): number | undefined;
1133
+ warmupPeriod(): number;
1134
+ }
1135
+
1096
1136
  export class LaguerreRSI {
1097
1137
  free(): void;
1098
1138
  [Symbol.dispose](): void;
@@ -1647,6 +1687,16 @@ export class RWI {
1647
1687
  update(high: number, low: number, close: number): any;
1648
1688
  }
1649
1689
 
1690
+ export class RealizedSpread {
1691
+ free(): void;
1692
+ [Symbol.dispose](): void;
1693
+ isReady(): boolean;
1694
+ constructor(horizon: number);
1695
+ reset(): void;
1696
+ update(price: number, size: number, is_buy: boolean, mid: number): number | undefined;
1697
+ warmupPeriod(): number;
1698
+ }
1699
+
1650
1700
  export class RecoveryFactor {
1651
1701
  free(): void;
1652
1702
  [Symbol.dispose](): void;
package/wickra_wasm.js CHANGED
@@ -5,5 +5,5 @@ import { __wbg_set_wasm } from "./wickra_wasm_bg.js";
5
5
  __wbg_set_wasm(wasm);
6
6
 
7
7
  export {
8
- ADL, ADX, ADXR, ALMA, APO, ATR, AccelerationBands, AcceleratorOscillator, AdaptiveCycle, Alligator, Alpha, AnchoredVWAP, Aroon, AroonOscillator, AtrBands, AtrTrailingStop, Autocorrelation, AverageDrawdown, AwesomeOscillator, AwesomeOscillatorHistogram, BalanceOfPower, Beta, BollingerBands, BollingerBandwidth, CCI, CFO, CMO, CalmarRatio, Camarilla, CenterOfGravity, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CoefficientOfVariation, Cointegration, ConditionalValueAtRisk, ConnorsRSI, Coppock, CumulativeVolumeDelta, CyberneticCycle, DEMA, DPO, Decycler, DecyclerOscillator, DemandIndex, DemarkPivots, DetrendedStdDev, Doji, Donchian, DonchianStop, DoubleBollinger, DrawdownDuration, EMA, EVWMA, EaseOfMovement, EhlersStochastic, ElderImpulse, EmpiricalModeDecomposition, Engulfing, FAMA, FRAMA, FibonacciPivots, FisherTransform, ForceIndex, FractalChaosBands, GainLossRatio, GarmanKlassVolatility, HMA, Hammer, HangingMan, Harami, HeikinAshi, HiLoActivator, HilbertDominantCycle, HistoricalVolatility, HurstChannel, HurstExponent, Ichimoku, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, InverseFisherTransform, InvertedHammer, JMA, KAMA, KST, KVO, KellyCriterion, Keltner, Kurtosis, LaguerreRSI, LeadLagCrossCorrelation, LinRegAngle, LinRegChannel, LinRegSlope, LinearRegression, MACD, MAMA, MFI, MOM, MaEnvelope, MarketFacilitationIndex, Marubozu, MassIndex, MaxDrawdown, McGinleyDynamic, MedianAbsoluteDeviation, MedianPrice, Microprice, MorningEveningStar, NATR, NVI, OBV, OmegaRatio, OpeningRange, OrderBookImbalanceFull, OrderBookImbalanceTop1, OrderBookImbalanceTopN, PGO, PMO, PPO, PSAR, PVI, PainIndex, PairSpreadZScore, PairwiseBeta, ParkinsonVolatility, PearsonCorrelation, PercentB, PercentageTrailingStop, PiercingDarkCloud, ProfitFactor, QuotedSpread, ROC, RSI, RSquared, RVI, RVIVolatility, RWI, RecoveryFactor, RelativeStrengthAB, RenkoTrailingStop, RogersSatchellVolatility, RollingVWAP, RoofingFilter, SMA, SMI, SMMA, STC, SharpeRatio, ShootingStar, SignedVolume, SineWave, Skewness, SortinoRatio, SpearmanCorrelation, SpinningTop, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, StochRSI, Stochastic, SuperSmoother, SuperTrend, T3, TDCombo, TDCountdown, TDDeMarker, TDDifferential, TDLines, TDOpen, TDPressure, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TEMA, TII, TRIMA, TRIX, TSI, TSV, ThreeInside, ThreeOutside, ThreeSoldiersOrCrows, TradeImbalance, TreynorRatio, TrueRange, TtmSqueeze, Tweezer, TypicalPrice, UlcerIndex, UltimateOscillator, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VerticalHorizontalFilter, VoltyStop, VolumeOscillator, VolumePriceTrend, Vortex, VwapStdDevBands, WMA, WaveTrend, WeightedClose, WilliamsAD, WilliamsFractals, WilliamsR, WoodiePivots, YangZhangVolatility, YoyoExit, ZLEMA, ZScore, ZeroLagMACD, ZigZag, installPanicHook, version
8
+ ADL, ADX, ADXR, ALMA, APO, ATR, AccelerationBands, AcceleratorOscillator, AdaptiveCycle, Alligator, Alpha, AnchoredVWAP, Aroon, AroonOscillator, AtrBands, AtrTrailingStop, Autocorrelation, AverageDrawdown, AwesomeOscillator, AwesomeOscillatorHistogram, BalanceOfPower, Beta, BollingerBands, BollingerBandwidth, CCI, CFO, CMO, CalmarRatio, Camarilla, CenterOfGravity, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CoefficientOfVariation, Cointegration, ConditionalValueAtRisk, ConnorsRSI, Coppock, CumulativeVolumeDelta, CyberneticCycle, DEMA, DPO, Decycler, DecyclerOscillator, DemandIndex, DemarkPivots, DepthSlope, DetrendedStdDev, Doji, Donchian, DonchianStop, DoubleBollinger, DrawdownDuration, EMA, EVWMA, EaseOfMovement, EffectiveSpread, EhlersStochastic, ElderImpulse, EmpiricalModeDecomposition, Engulfing, FAMA, FRAMA, FibonacciPivots, FisherTransform, Footprint, ForceIndex, FractalChaosBands, GainLossRatio, GarmanKlassVolatility, HMA, Hammer, HangingMan, Harami, HeikinAshi, HiLoActivator, HilbertDominantCycle, HistoricalVolatility, HurstChannel, HurstExponent, Ichimoku, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, InverseFisherTransform, InvertedHammer, JMA, KAMA, KST, KVO, KellyCriterion, Keltner, Kurtosis, KylesLambda, LaguerreRSI, LeadLagCrossCorrelation, LinRegAngle, LinRegChannel, LinRegSlope, LinearRegression, MACD, MAMA, MFI, MOM, MaEnvelope, MarketFacilitationIndex, Marubozu, MassIndex, MaxDrawdown, McGinleyDynamic, MedianAbsoluteDeviation, MedianPrice, Microprice, MorningEveningStar, NATR, NVI, OBV, OmegaRatio, OpeningRange, OrderBookImbalanceFull, OrderBookImbalanceTop1, OrderBookImbalanceTopN, PGO, PMO, PPO, PSAR, PVI, PainIndex, PairSpreadZScore, PairwiseBeta, ParkinsonVolatility, PearsonCorrelation, PercentB, PercentageTrailingStop, PiercingDarkCloud, ProfitFactor, QuotedSpread, ROC, RSI, RSquared, RVI, RVIVolatility, RWI, RealizedSpread, RecoveryFactor, RelativeStrengthAB, RenkoTrailingStop, RogersSatchellVolatility, RollingVWAP, RoofingFilter, SMA, SMI, SMMA, STC, SharpeRatio, ShootingStar, SignedVolume, SineWave, Skewness, SortinoRatio, SpearmanCorrelation, SpinningTop, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, StochRSI, Stochastic, SuperSmoother, SuperTrend, T3, TDCombo, TDCountdown, TDDeMarker, TDDifferential, TDLines, TDOpen, TDPressure, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TEMA, TII, TRIMA, TRIX, TSI, TSV, ThreeInside, ThreeOutside, ThreeSoldiersOrCrows, TradeImbalance, TreynorRatio, TrueRange, TtmSqueeze, Tweezer, TypicalPrice, UlcerIndex, UltimateOscillator, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VerticalHorizontalFilter, VoltyStop, VolumeOscillator, VolumePriceTrend, Vortex, VwapStdDevBands, WMA, WaveTrend, WeightedClose, WilliamsAD, WilliamsFractals, WilliamsR, WoodiePivots, YangZhangVolatility, YoyoExit, ZLEMA, ZScore, ZeroLagMACD, ZigZag, installPanicHook, version
9
9
  } from "./wickra_wasm_bg.js";
package/wickra_wasm_bg.js CHANGED
@@ -4167,6 +4167,74 @@ export class DemarkPivots {
4167
4167
  }
4168
4168
  if (Symbol.dispose) DemarkPivots.prototype[Symbol.dispose] = DemarkPivots.prototype.free;
4169
4169
 
4170
+ export class DepthSlope {
4171
+ __destroy_into_raw() {
4172
+ const ptr = this.__wbg_ptr;
4173
+ this.__wbg_ptr = 0;
4174
+ DepthSlopeFinalization.unregister(this);
4175
+ return ptr;
4176
+ }
4177
+ free() {
4178
+ const ptr = this.__destroy_into_raw();
4179
+ wasm.__wbg_depthslope_free(ptr, 0);
4180
+ }
4181
+ /**
4182
+ * @returns {boolean}
4183
+ */
4184
+ isReady() {
4185
+ const ret = wasm.depthslope_isReady(this.__wbg_ptr);
4186
+ return ret !== 0;
4187
+ }
4188
+ constructor() {
4189
+ const ret = wasm.depthslope_new();
4190
+ this.__wbg_ptr = ret;
4191
+ DepthSlopeFinalization.register(this, this.__wbg_ptr, this);
4192
+ return this;
4193
+ }
4194
+ reset() {
4195
+ wasm.depthslope_reset(this.__wbg_ptr);
4196
+ }
4197
+ /**
4198
+ * @param {Float64Array} bid_px
4199
+ * @param {Float64Array} bid_sz
4200
+ * @param {Float64Array} ask_px
4201
+ * @param {Float64Array} ask_sz
4202
+ * @returns {number | undefined}
4203
+ */
4204
+ update(bid_px, bid_sz, ask_px, ask_sz) {
4205
+ try {
4206
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
4207
+ const ptr0 = passArrayF64ToWasm0(bid_px, wasm.__wbindgen_export3);
4208
+ const len0 = WASM_VECTOR_LEN;
4209
+ const ptr1 = passArrayF64ToWasm0(bid_sz, wasm.__wbindgen_export3);
4210
+ const len1 = WASM_VECTOR_LEN;
4211
+ const ptr2 = passArrayF64ToWasm0(ask_px, wasm.__wbindgen_export3);
4212
+ const len2 = WASM_VECTOR_LEN;
4213
+ const ptr3 = passArrayF64ToWasm0(ask_sz, wasm.__wbindgen_export3);
4214
+ const len3 = WASM_VECTOR_LEN;
4215
+ wasm.depthslope_update(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
4216
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4217
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
4218
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
4219
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
4220
+ if (r5) {
4221
+ throw takeObject(r4);
4222
+ }
4223
+ return r0 === 0 ? undefined : r2;
4224
+ } finally {
4225
+ wasm.__wbindgen_add_to_stack_pointer(32);
4226
+ }
4227
+ }
4228
+ /**
4229
+ * @returns {number}
4230
+ */
4231
+ warmupPeriod() {
4232
+ const ret = wasm.depthslope_warmupPeriod(this.__wbg_ptr);
4233
+ return ret >>> 0;
4234
+ }
4235
+ }
4236
+ if (Symbol.dispose) DepthSlope.prototype[Symbol.dispose] = DepthSlope.prototype.free;
4237
+
4170
4238
  export class DetrendedStdDev {
4171
4239
  __destroy_into_raw() {
4172
4240
  const ptr = this.__wbg_ptr;
@@ -4908,6 +4976,66 @@ export class EaseOfMovement {
4908
4976
  }
4909
4977
  if (Symbol.dispose) EaseOfMovement.prototype[Symbol.dispose] = EaseOfMovement.prototype.free;
4910
4978
 
4979
+ export class EffectiveSpread {
4980
+ __destroy_into_raw() {
4981
+ const ptr = this.__wbg_ptr;
4982
+ this.__wbg_ptr = 0;
4983
+ EffectiveSpreadFinalization.unregister(this);
4984
+ return ptr;
4985
+ }
4986
+ free() {
4987
+ const ptr = this.__destroy_into_raw();
4988
+ wasm.__wbg_effectivespread_free(ptr, 0);
4989
+ }
4990
+ /**
4991
+ * @returns {boolean}
4992
+ */
4993
+ isReady() {
4994
+ const ret = wasm.effectivespread_isReady(this.__wbg_ptr);
4995
+ return ret !== 0;
4996
+ }
4997
+ constructor() {
4998
+ const ret = wasm.effectivespread_new();
4999
+ this.__wbg_ptr = ret;
5000
+ EffectiveSpreadFinalization.register(this, this.__wbg_ptr, this);
5001
+ return this;
5002
+ }
5003
+ reset() {
5004
+ wasm.effectivespread_reset(this.__wbg_ptr);
5005
+ }
5006
+ /**
5007
+ * @param {number} price
5008
+ * @param {number} size
5009
+ * @param {boolean} is_buy
5010
+ * @param {number} mid
5011
+ * @returns {number | undefined}
5012
+ */
5013
+ update(price, size, is_buy, mid) {
5014
+ try {
5015
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
5016
+ wasm.effectivespread_update(retptr, this.__wbg_ptr, price, size, is_buy, mid);
5017
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5018
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
5019
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
5020
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
5021
+ if (r5) {
5022
+ throw takeObject(r4);
5023
+ }
5024
+ return r0 === 0 ? undefined : r2;
5025
+ } finally {
5026
+ wasm.__wbindgen_add_to_stack_pointer(32);
5027
+ }
5028
+ }
5029
+ /**
5030
+ * @returns {number}
5031
+ */
5032
+ warmupPeriod() {
5033
+ const ret = wasm.effectivespread_warmupPeriod(this.__wbg_ptr);
5034
+ return ret >>> 0;
5035
+ }
5036
+ }
5037
+ if (Symbol.dispose) EffectiveSpread.prototype[Symbol.dispose] = EffectiveSpread.prototype.free;
5038
+
4911
5039
  export class EhlersStochastic {
4912
5040
  __destroy_into_raw() {
4913
5041
  const ptr = this.__wbg_ptr;
@@ -5544,6 +5672,78 @@ export class FisherTransform {
5544
5672
  }
5545
5673
  if (Symbol.dispose) FisherTransform.prototype[Symbol.dispose] = FisherTransform.prototype.free;
5546
5674
 
5675
+ export class Footprint {
5676
+ __destroy_into_raw() {
5677
+ const ptr = this.__wbg_ptr;
5678
+ this.__wbg_ptr = 0;
5679
+ FootprintFinalization.unregister(this);
5680
+ return ptr;
5681
+ }
5682
+ free() {
5683
+ const ptr = this.__destroy_into_raw();
5684
+ wasm.__wbg_footprint_free(ptr, 0);
5685
+ }
5686
+ /**
5687
+ * @returns {boolean}
5688
+ */
5689
+ isReady() {
5690
+ const ret = wasm.footprint_isReady(this.__wbg_ptr);
5691
+ return ret !== 0;
5692
+ }
5693
+ /**
5694
+ * @param {number} tick_size
5695
+ */
5696
+ constructor(tick_size) {
5697
+ try {
5698
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5699
+ wasm.footprint_new(retptr, tick_size);
5700
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5701
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5702
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5703
+ if (r2) {
5704
+ throw takeObject(r1);
5705
+ }
5706
+ this.__wbg_ptr = r0;
5707
+ FootprintFinalization.register(this, this.__wbg_ptr, this);
5708
+ return this;
5709
+ } finally {
5710
+ wasm.__wbindgen_add_to_stack_pointer(16);
5711
+ }
5712
+ }
5713
+ reset() {
5714
+ wasm.footprint_reset(this.__wbg_ptr);
5715
+ }
5716
+ /**
5717
+ * @param {number} price
5718
+ * @param {number} size
5719
+ * @param {boolean} is_buy
5720
+ * @returns {any}
5721
+ */
5722
+ update(price, size, is_buy) {
5723
+ try {
5724
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5725
+ wasm.footprint_update(retptr, this.__wbg_ptr, price, size, is_buy);
5726
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5727
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5728
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5729
+ if (r2) {
5730
+ throw takeObject(r1);
5731
+ }
5732
+ return takeObject(r0);
5733
+ } finally {
5734
+ wasm.__wbindgen_add_to_stack_pointer(16);
5735
+ }
5736
+ }
5737
+ /**
5738
+ * @returns {number}
5739
+ */
5740
+ warmupPeriod() {
5741
+ const ret = wasm.footprint_warmupPeriod(this.__wbg_ptr);
5742
+ return ret >>> 0;
5743
+ }
5744
+ }
5745
+ if (Symbol.dispose) Footprint.prototype[Symbol.dispose] = Footprint.prototype.free;
5746
+
5547
5747
  export class ForceIndex {
5548
5748
  __destroy_into_raw() {
5549
5749
  const ptr = this.__wbg_ptr;
@@ -7968,6 +8168,80 @@ export class Kurtosis {
7968
8168
  }
7969
8169
  if (Symbol.dispose) Kurtosis.prototype[Symbol.dispose] = Kurtosis.prototype.free;
7970
8170
 
8171
+ export class KylesLambda {
8172
+ __destroy_into_raw() {
8173
+ const ptr = this.__wbg_ptr;
8174
+ this.__wbg_ptr = 0;
8175
+ KylesLambdaFinalization.unregister(this);
8176
+ return ptr;
8177
+ }
8178
+ free() {
8179
+ const ptr = this.__destroy_into_raw();
8180
+ wasm.__wbg_kyleslambda_free(ptr, 0);
8181
+ }
8182
+ /**
8183
+ * @returns {boolean}
8184
+ */
8185
+ isReady() {
8186
+ const ret = wasm.kyleslambda_isReady(this.__wbg_ptr);
8187
+ return ret !== 0;
8188
+ }
8189
+ /**
8190
+ * @param {number} window
8191
+ */
8192
+ constructor(window) {
8193
+ try {
8194
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
8195
+ wasm.kyleslambda_new(retptr, window);
8196
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
8197
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
8198
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
8199
+ if (r2) {
8200
+ throw takeObject(r1);
8201
+ }
8202
+ this.__wbg_ptr = r0;
8203
+ KylesLambdaFinalization.register(this, this.__wbg_ptr, this);
8204
+ return this;
8205
+ } finally {
8206
+ wasm.__wbindgen_add_to_stack_pointer(16);
8207
+ }
8208
+ }
8209
+ reset() {
8210
+ wasm.kyleslambda_reset(this.__wbg_ptr);
8211
+ }
8212
+ /**
8213
+ * @param {number} price
8214
+ * @param {number} size
8215
+ * @param {boolean} is_buy
8216
+ * @param {number} mid
8217
+ * @returns {number | undefined}
8218
+ */
8219
+ update(price, size, is_buy, mid) {
8220
+ try {
8221
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
8222
+ wasm.kyleslambda_update(retptr, this.__wbg_ptr, price, size, is_buy, mid);
8223
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
8224
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
8225
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
8226
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
8227
+ if (r5) {
8228
+ throw takeObject(r4);
8229
+ }
8230
+ return r0 === 0 ? undefined : r2;
8231
+ } finally {
8232
+ wasm.__wbindgen_add_to_stack_pointer(32);
8233
+ }
8234
+ }
8235
+ /**
8236
+ * @returns {number}
8237
+ */
8238
+ warmupPeriod() {
8239
+ const ret = wasm.kyleslambda_warmupPeriod(this.__wbg_ptr);
8240
+ return ret >>> 0;
8241
+ }
8242
+ }
8243
+ if (Symbol.dispose) KylesLambda.prototype[Symbol.dispose] = KylesLambda.prototype.free;
8244
+
7971
8245
  export class LaguerreRSI {
7972
8246
  __destroy_into_raw() {
7973
8247
  const ptr = this.__wbg_ptr;
@@ -11906,6 +12180,80 @@ export class RWI {
11906
12180
  }
11907
12181
  if (Symbol.dispose) RWI.prototype[Symbol.dispose] = RWI.prototype.free;
11908
12182
 
12183
+ export class RealizedSpread {
12184
+ __destroy_into_raw() {
12185
+ const ptr = this.__wbg_ptr;
12186
+ this.__wbg_ptr = 0;
12187
+ RealizedSpreadFinalization.unregister(this);
12188
+ return ptr;
12189
+ }
12190
+ free() {
12191
+ const ptr = this.__destroy_into_raw();
12192
+ wasm.__wbg_realizedspread_free(ptr, 0);
12193
+ }
12194
+ /**
12195
+ * @returns {boolean}
12196
+ */
12197
+ isReady() {
12198
+ const ret = wasm.realizedspread_isReady(this.__wbg_ptr);
12199
+ return ret !== 0;
12200
+ }
12201
+ /**
12202
+ * @param {number} horizon
12203
+ */
12204
+ constructor(horizon) {
12205
+ try {
12206
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
12207
+ wasm.realizedspread_new(retptr, horizon);
12208
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
12209
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
12210
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
12211
+ if (r2) {
12212
+ throw takeObject(r1);
12213
+ }
12214
+ this.__wbg_ptr = r0;
12215
+ RealizedSpreadFinalization.register(this, this.__wbg_ptr, this);
12216
+ return this;
12217
+ } finally {
12218
+ wasm.__wbindgen_add_to_stack_pointer(16);
12219
+ }
12220
+ }
12221
+ reset() {
12222
+ wasm.realizedspread_reset(this.__wbg_ptr);
12223
+ }
12224
+ /**
12225
+ * @param {number} price
12226
+ * @param {number} size
12227
+ * @param {boolean} is_buy
12228
+ * @param {number} mid
12229
+ * @returns {number | undefined}
12230
+ */
12231
+ update(price, size, is_buy, mid) {
12232
+ try {
12233
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
12234
+ wasm.realizedspread_update(retptr, this.__wbg_ptr, price, size, is_buy, mid);
12235
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
12236
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
12237
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
12238
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
12239
+ if (r5) {
12240
+ throw takeObject(r4);
12241
+ }
12242
+ return r0 === 0 ? undefined : r2;
12243
+ } finally {
12244
+ wasm.__wbindgen_add_to_stack_pointer(32);
12245
+ }
12246
+ }
12247
+ /**
12248
+ * @returns {number}
12249
+ */
12250
+ warmupPeriod() {
12251
+ const ret = wasm.realizedspread_warmupPeriod(this.__wbg_ptr);
12252
+ return ret >>> 0;
12253
+ }
12254
+ }
12255
+ if (Symbol.dispose) RealizedSpread.prototype[Symbol.dispose] = RealizedSpread.prototype.free;
12256
+
11909
12257
  export class RecoveryFactor {
11910
12258
  __destroy_into_raw() {
11911
12259
  const ptr = this.__wbg_ptr;
@@ -19028,10 +19376,18 @@ export function __wbg_new_227d7c05414eb861() {
19028
19376
  const ret = new Error();
19029
19377
  return addHeapObject(ret);
19030
19378
  }
19379
+ export function __wbg_new_310879b66b6e95e1() {
19380
+ const ret = new Array();
19381
+ return addHeapObject(ret);
19382
+ }
19031
19383
  export function __wbg_new_from_slice_02962bf7778cf945(arg0, arg1) {
19032
19384
  const ret = new Float64Array(getArrayF64FromWasm0(arg0, arg1));
19033
19385
  return addHeapObject(ret);
19034
19386
  }
19387
+ export function __wbg_push_b77c476b01548d0a(arg0, arg1) {
19388
+ const ret = getObject(arg0).push(getObject(arg1));
19389
+ return ret;
19390
+ }
19035
19391
  export function __wbg_set_a0e911be3da02782() { return handleError(function (arg0, arg1, arg2) {
19036
19392
  const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
19037
19393
  return ret;
@@ -19206,6 +19562,9 @@ const DemandIndexFinalization = (typeof FinalizationRegistry === 'undefined')
19206
19562
  const DemarkPivotsFinalization = (typeof FinalizationRegistry === 'undefined')
19207
19563
  ? { register: () => {}, unregister: () => {} }
19208
19564
  : new FinalizationRegistry(ptr => wasm.__wbg_demarkpivots_free(ptr, 1));
19565
+ const DepthSlopeFinalization = (typeof FinalizationRegistry === 'undefined')
19566
+ ? { register: () => {}, unregister: () => {} }
19567
+ : new FinalizationRegistry(ptr => wasm.__wbg_depthslope_free(ptr, 1));
19209
19568
  const DetrendedStdDevFinalization = (typeof FinalizationRegistry === 'undefined')
19210
19569
  ? { register: () => {}, unregister: () => {} }
19211
19570
  : new FinalizationRegistry(ptr => wasm.__wbg_detrendedstddev_free(ptr, 1));
@@ -19230,6 +19589,9 @@ const DrawdownDurationFinalization = (typeof FinalizationRegistry === 'undefined
19230
19589
  const EaseOfMovementFinalization = (typeof FinalizationRegistry === 'undefined')
19231
19590
  ? { register: () => {}, unregister: () => {} }
19232
19591
  : new FinalizationRegistry(ptr => wasm.__wbg_easeofmovement_free(ptr, 1));
19592
+ const EffectiveSpreadFinalization = (typeof FinalizationRegistry === 'undefined')
19593
+ ? { register: () => {}, unregister: () => {} }
19594
+ : new FinalizationRegistry(ptr => wasm.__wbg_effectivespread_free(ptr, 1));
19233
19595
  const EhlersStochasticFinalization = (typeof FinalizationRegistry === 'undefined')
19234
19596
  ? { register: () => {}, unregister: () => {} }
19235
19597
  : new FinalizationRegistry(ptr => wasm.__wbg_ehlersstochastic_free(ptr, 1));
@@ -19257,6 +19619,9 @@ const FibonacciPivotsFinalization = (typeof FinalizationRegistry === 'undefined'
19257
19619
  const FisherTransformFinalization = (typeof FinalizationRegistry === 'undefined')
19258
19620
  ? { register: () => {}, unregister: () => {} }
19259
19621
  : new FinalizationRegistry(ptr => wasm.__wbg_fishertransform_free(ptr, 1));
19622
+ const FootprintFinalization = (typeof FinalizationRegistry === 'undefined')
19623
+ ? { register: () => {}, unregister: () => {} }
19624
+ : new FinalizationRegistry(ptr => wasm.__wbg_footprint_free(ptr, 1));
19260
19625
  const ForceIndexFinalization = (typeof FinalizationRegistry === 'undefined')
19261
19626
  ? { register: () => {}, unregister: () => {} }
19262
19627
  : new FinalizationRegistry(ptr => wasm.__wbg_forceindex_free(ptr, 1));
@@ -19344,6 +19709,9 @@ const KurtosisFinalization = (typeof FinalizationRegistry === 'undefined')
19344
19709
  const KVOFinalization = (typeof FinalizationRegistry === 'undefined')
19345
19710
  ? { register: () => {}, unregister: () => {} }
19346
19711
  : new FinalizationRegistry(ptr => wasm.__wbg_kvo_free(ptr, 1));
19712
+ const KylesLambdaFinalization = (typeof FinalizationRegistry === 'undefined')
19713
+ ? { register: () => {}, unregister: () => {} }
19714
+ : new FinalizationRegistry(ptr => wasm.__wbg_kyleslambda_free(ptr, 1));
19347
19715
  const LaguerreRSIFinalization = (typeof FinalizationRegistry === 'undefined')
19348
19716
  ? { register: () => {}, unregister: () => {} }
19349
19717
  : new FinalizationRegistry(ptr => wasm.__wbg_laguerrersi_free(ptr, 1));
@@ -19476,6 +19844,9 @@ const QuotedSpreadFinalization = (typeof FinalizationRegistry === 'undefined')
19476
19844
  const RSquaredFinalization = (typeof FinalizationRegistry === 'undefined')
19477
19845
  ? { register: () => {}, unregister: () => {} }
19478
19846
  : new FinalizationRegistry(ptr => wasm.__wbg_rsquared_free(ptr, 1));
19847
+ const RealizedSpreadFinalization = (typeof FinalizationRegistry === 'undefined')
19848
+ ? { register: () => {}, unregister: () => {} }
19849
+ : new FinalizationRegistry(ptr => wasm.__wbg_realizedspread_free(ptr, 1));
19479
19850
  const RecoveryFactorFinalization = (typeof FinalizationRegistry === 'undefined')
19480
19851
  ? { register: () => {}, unregister: () => {} }
19481
19852
  : new FinalizationRegistry(ptr => wasm.__wbg_recoveryfactor_free(ptr, 1));
Binary file