@ebowwa/quant-rust 0.1.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.
Files changed (60) hide show
  1. package/README.md +161 -0
  2. package/bun-ffi.d.ts +54 -0
  3. package/dist/index.js +576 -0
  4. package/dist/src/index.d.ts +324 -0
  5. package/dist/src/index.d.ts.map +1 -0
  6. package/dist/types/index.d.ts +403 -0
  7. package/dist/types/index.d.ts.map +1 -0
  8. package/native/README.md +62 -0
  9. package/native/darwin-arm64/libquant_rust.dylib +0 -0
  10. package/package.json +70 -0
  11. package/scripts/postinstall.cjs +85 -0
  12. package/src/ffi.rs +496 -0
  13. package/src/index.ts +1073 -0
  14. package/src/indicators/ma.rs +222 -0
  15. package/src/indicators/mod.rs +18 -0
  16. package/src/indicators/momentum.rs +353 -0
  17. package/src/indicators/sr.rs +195 -0
  18. package/src/indicators/trend.rs +351 -0
  19. package/src/indicators/volatility.rs +270 -0
  20. package/src/indicators/volume.rs +213 -0
  21. package/src/lib.rs +130 -0
  22. package/src/patterns/breakout.rs +431 -0
  23. package/src/patterns/chart.rs +772 -0
  24. package/src/patterns/mod.rs +394 -0
  25. package/src/patterns/sr.rs +423 -0
  26. package/src/prediction/amm.rs +338 -0
  27. package/src/prediction/arbitrage.rs +230 -0
  28. package/src/prediction/calibration.rs +317 -0
  29. package/src/prediction/kelly.rs +232 -0
  30. package/src/prediction/lmsr.rs +194 -0
  31. package/src/prediction/mod.rs +59 -0
  32. package/src/prediction/odds.rs +229 -0
  33. package/src/prediction/pnl.rs +254 -0
  34. package/src/prediction/risk.rs +228 -0
  35. package/src/risk/beta.rs +257 -0
  36. package/src/risk/drawdown.rs +256 -0
  37. package/src/risk/leverage.rs +201 -0
  38. package/src/risk/mod.rs +388 -0
  39. package/src/risk/portfolio.rs +287 -0
  40. package/src/risk/ratios.rs +290 -0
  41. package/src/risk/sizing.rs +194 -0
  42. package/src/risk/var.rs +222 -0
  43. package/src/stats/cdf.rs +257 -0
  44. package/src/stats/correlation.rs +225 -0
  45. package/src/stats/distribution.rs +194 -0
  46. package/src/stats/hypothesis.rs +177 -0
  47. package/src/stats/matrix.rs +346 -0
  48. package/src/stats/mod.rs +257 -0
  49. package/src/stats/regression.rs +239 -0
  50. package/src/stats/rolling.rs +193 -0
  51. package/src/stats/timeseries.rs +263 -0
  52. package/src/types.rs +224 -0
  53. package/src/utils/mod.rs +215 -0
  54. package/src/utils/normalize.rs +192 -0
  55. package/src/utils/price.rs +167 -0
  56. package/src/utils/quantiles.rs +177 -0
  57. package/src/utils/returns.rs +158 -0
  58. package/src/utils/rolling.rs +97 -0
  59. package/src/utils/stats.rs +154 -0
  60. package/types/index.ts +513 -0
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Bun FFI wrapper for quant-rust
3
+ *
4
+ * This module provides TypeScript bindings for the Rust quant library
5
+ * using Bun's FFI capabilities.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { OHLCV, AMMState, AMMCostResult, AMMPriceImpactResult, LMSRPriceResult, KellyResult, ArbitrageResult, OddsConversion, VaRResult, DrawdownResult, SharpeResult } from "../types/index.js";
10
+ /**
11
+ * Get the library version
12
+ */
13
+ export declare function getVersion(): string;
14
+ /**
15
+ * Clear the last error
16
+ */
17
+ export declare function clearError(): void;
18
+ /**
19
+ * Get the path to the loaded native library
20
+ */
21
+ export declare function getLibraryPath(): string;
22
+ /**
23
+ * Create an OHLCV candlestick data structure
24
+ *
25
+ * @param timestamp - Unix timestamp in milliseconds
26
+ * @param open - Opening price
27
+ * @param high - High price
28
+ * @param low - Low price
29
+ * @param close - Closing price
30
+ * @param volume - Volume
31
+ * @returns OHLCV object
32
+ */
33
+ export declare function createOHLCV(timestamp: number, open: number, high: number, low: number, close: number, volume: number): OHLCV;
34
+ /**
35
+ * Create an AMM state for constant-product AMMs
36
+ *
37
+ * @param poolYes - YES pool reserves
38
+ * @param poolNo - NO pool reserves
39
+ * @param fee - Fee as decimal (e.g., 0.003 for 0.3%)
40
+ * @returns AMMState object
41
+ */
42
+ export declare function createAMM(poolYes: number, poolNo: number, fee: number): AMMState;
43
+ /**
44
+ * Calculate the cost to buy shares from a constant-product AMM
45
+ *
46
+ * Uses the formula: cost = new_pool_no - pool_no where new_pool_no = k / (pool_yes + shares)
47
+ *
48
+ * @param poolYes - Current YES pool reserves
49
+ * @param poolNo - Current NO pool reserves
50
+ * @param outcome - Whether to buy 'yes' or 'no' shares
51
+ * @param shares - Number of shares to buy
52
+ * @returns Cost in currency units (always positive, number for API compatibility)
53
+ */
54
+ export declare function ammCalculateCost(poolYes: number, poolNo: number, outcome: 'yes' | 'no' | boolean, shares: number): number;
55
+ /**
56
+ * Calculate the cost to buy shares from a constant-product AMM (full result)
57
+ *
58
+ * @param poolYes - Current YES pool reserves
59
+ * @param poolNo - Current NO pool reserves
60
+ * @param outcome - Whether to buy 'yes' or 'no' shares
61
+ * @param shares - Number of shares to buy
62
+ * @returns Full cost calculation result with cost and avg_price (always positive)
63
+ */
64
+ export declare function ammCalculateCostFull(poolYes: number, poolNo: number, outcome: 'yes' | 'no' | boolean, shares: number): AMMCostResult;
65
+ /**
66
+ * Calculate the price impact for a trade on a constant-product AMM
67
+ *
68
+ * @param poolYes - Current YES pool reserves
69
+ * @param poolNo - Current NO pool reserves
70
+ * @param outcome - Whether to buy 'yes' or 'no' shares
71
+ * @param shares - Number of shares to buy
72
+ * @returns Price impact analysis
73
+ */
74
+ export declare function ammPriceImpact(poolYes: number, poolNo: number, outcome: 'yes' | 'no' | boolean, shares: number): AMMPriceImpactResult;
75
+ export declare const amm_buy_cost: typeof ammCalculateCost;
76
+ export declare const amm_calculate_cost: typeof ammCalculateCost;
77
+ export declare const amm_price_impact: typeof ammPriceImpact;
78
+ /**
79
+ * Calculate LMSR prices for a prediction market
80
+ *
81
+ * Uses the LMSR formula: price_yes = exp(q_yes/b) / (exp(q_yes/b) + exp(q_no/b))
82
+ *
83
+ * @param yesShares - YES shares outstanding
84
+ * @param noShares - NO shares outstanding
85
+ * @param b - Liquidity parameter (controls price sensitivity)
86
+ * @returns LMSR price result with yes_price and no_price
87
+ */
88
+ export declare function lmsrPrice(yesShares: number, noShares: number, b: number): LMSRPriceResult;
89
+ /**
90
+ * Calculate the cost to buy shares using LMSR
91
+ *
92
+ * Uses the LMSR cost formula: C(q') - C(q) = b * ln(sum(exp(q'_i/b))) - b * ln(sum(exp(q_i/b)))
93
+ *
94
+ * @param yesShares - Current YES shares outstanding
95
+ * @param noShares - Current NO shares outstanding
96
+ * @param b - Liquidity parameter
97
+ * @param outcome - Whether to buy 'yes' or 'no' shares (or boolean)
98
+ * @param shares - Number of shares to buy
99
+ * @returns Cost calculation result
100
+ */
101
+ export declare function lmsrCost(yesShares: number, noShares: number, b: number, outcome: 'yes' | 'no' | boolean, shares: number): AMMCostResult;
102
+ /**
103
+ * Calculate LMSR price and cost (unified function)
104
+ *
105
+ * @param yesShares - Current YES shares outstanding
106
+ * @param noShares - Current NO shares outstanding
107
+ * @param liquidityParam - Liquidity parameter (b)
108
+ * @param operation - "price" or "cost"
109
+ * @param outcome - "yes" or "no"
110
+ * @param sharesToBuy - Number of shares (only for cost operation)
111
+ * @returns Price or cost result
112
+ */
113
+ export declare function lmsrCalculate(yesShares: number, noShares: number, liquidityParam: number, operation: "price" | "cost", outcome: "yes" | "no", sharesToBuy?: number): LMSRPriceResult | AMMCostResult;
114
+ /**
115
+ * Calculate the Kelly criterion for optimal position sizing
116
+ *
117
+ * The Kelly criterion determines the optimal fraction of bankroll to bet
118
+ * based on your estimated probability vs the market price.
119
+ *
120
+ * @param yourProbability - Your estimated probability of winning (0-1)
121
+ * @param marketPrice - Current market price to buy shares (0-1)
122
+ * @param bankroll - Your total bankroll in currency units
123
+ * @returns Kelly criterion result with various bet sizes
124
+ */
125
+ export declare function kellyCriterion(yourProbability: number, marketPrice: number, bankroll: number): KellyResult;
126
+ export declare const kelly_criterion: typeof kellyCriterion;
127
+ /**
128
+ * Detect arbitrage opportunities in prediction markets
129
+ *
130
+ * If yes_price + no_price < 1, there's an arbitrage opportunity.
131
+ *
132
+ * @param yesPrice - Current YES share price (0-1)
133
+ * @param noPrice - Current NO share price (0-1)
134
+ * @returns Arbitrage analysis with profit field for API compatibility
135
+ */
136
+ export declare function detectArbitrage(yesPrice: number, noPrice: number): ArbitrageResult & {
137
+ profit: number;
138
+ };
139
+ export declare const detect_arbitrage: typeof detectArbitrage;
140
+ /** Odds input type */
141
+ export type OddsType = "probability" | "decimal" | "american";
142
+ /**
143
+ * Convert between probability, decimal odds, and American odds
144
+ *
145
+ * @param value - The value to convert
146
+ * @param fromType - The type of the input value
147
+ * @param toType - Optional target type (if specified, returns just that value)
148
+ * @returns Converted odds in all formats, or single value if toType specified
149
+ */
150
+ export declare function convertOdds(value: number, fromType: OddsType, toType?: OddsType): OddsConversion | number;
151
+ export declare const convert_odds: typeof convertOdds;
152
+ /**
153
+ * Calculate the mean (average) of an array of numbers
154
+ *
155
+ * @param data - Array of numbers
156
+ * @returns Mean value, or NaN if array is empty
157
+ */
158
+ export declare function mean(data: number[]): number;
159
+ /**
160
+ * Calculate the standard deviation of an array of numbers
161
+ *
162
+ * @param data - Array of numbers
163
+ * @returns Standard deviation, or NaN if array is empty
164
+ */
165
+ export declare function stdDev(data: number[]): number;
166
+ /**
167
+ * Calculate the variance of an array of numbers
168
+ *
169
+ * @param data - Array of numbers
170
+ * @returns Variance, or NaN if array is empty
171
+ */
172
+ export declare function variance(data: number[]): number;
173
+ /**
174
+ * Calculate the Pearson correlation coefficient between two arrays
175
+ *
176
+ * @param x - First array of numbers
177
+ * @param y - Second array of numbers
178
+ * @returns Correlation coefficient (-1 to 1), or NaN if arrays are invalid
179
+ */
180
+ export declare function correlation(x: number[], y: number[]): number;
181
+ export declare const std_dev: typeof stdDev;
182
+ /**
183
+ * Simple Moving Average (SMA)
184
+ *
185
+ * @param prices - Array of prices
186
+ * @param period - Number of periods to average
187
+ * @returns Array of SMA values
188
+ */
189
+ export declare function sma(prices: number[], period: number): number[];
190
+ /**
191
+ * Exponential Moving Average (EMA)
192
+ *
193
+ * @param prices - Array of prices
194
+ * @param period - EMA period
195
+ * @returns Array of EMA values
196
+ */
197
+ export declare function ema(prices: number[], period: number): number[];
198
+ /**
199
+ * Relative Strength Index (RSI)
200
+ *
201
+ * @param prices - Array of prices
202
+ * @param period - RSI period (default: 14)
203
+ * @returns Array of RSI values (0-100)
204
+ */
205
+ export declare function rsi(prices: number[], period?: number): number[];
206
+ /**
207
+ * MACD (Moving Average Convergence Divergence)
208
+ *
209
+ * @param prices - Array of prices
210
+ * @param fastPeriod - Fast EMA period (default: 12)
211
+ * @param slowPeriod - Slow EMA period (default: 26)
212
+ * @param signalPeriod - Signal line period (default: 9)
213
+ * @returns Object with macd, signal, and histogram arrays
214
+ */
215
+ export declare function macd(prices: number[], fastPeriod?: number, slowPeriod?: number, signalPeriod?: number): {
216
+ macd: number[];
217
+ signal: number[];
218
+ histogram: number[];
219
+ };
220
+ /**
221
+ * Calculate Value at Risk (VaR) and Expected Shortfall (CVaR)
222
+ *
223
+ * @param returns - Array of returns
224
+ * @param confidenceLevel - Confidence level (default: 0.95)
225
+ * @returns VaR result
226
+ */
227
+ export declare function calculateVar(returns: number[], confidenceLevel?: number): VaRResult;
228
+ /**
229
+ * Calculate drawdown analysis from equity curve
230
+ *
231
+ * @param equityCurve - Array of equity values over time
232
+ * @returns Drawdown analysis result
233
+ */
234
+ export declare function calculateDrawdown(equityCurve: number[]): DrawdownResult;
235
+ /**
236
+ * Calculate Sharpe ratio
237
+ *
238
+ * @param returns - Array of returns
239
+ * @param riskFreeRate - Annual risk-free rate (default: 0.04)
240
+ * @param periodsPerYear - Trading periods per year (default: 252)
241
+ * @returns Annualized Sharpe ratio (number for API compatibility)
242
+ */
243
+ export declare function calculateSharpeRatio(returns: number[], riskFreeRate?: number, periodsPerYear?: number): number;
244
+ /**
245
+ * Calculate Sharpe ratio with full result
246
+ *
247
+ * @param returns - Array of returns
248
+ * @param riskFreeRate - Annual risk-free rate (default: 0.04)
249
+ * @param periodsPerYear - Trading periods per year (default: 252)
250
+ * @returns Full Sharpe ratio result object
251
+ */
252
+ export declare function calculateSharpeRatioFull(returns: number[], riskFreeRate?: number, periodsPerYear?: number): SharpeResult;
253
+ export declare const calculate_var: typeof calculateVar;
254
+ export declare const calculate_drawdown: typeof calculateDrawdown;
255
+ export declare const calculate_sharpe_ratio: typeof calculateSharpeRatio;
256
+ export declare const sharpeRatio: typeof calculateSharpeRatio;
257
+ /**
258
+ * Calculate Sortino ratio (only penalizes downside volatility)
259
+ *
260
+ * @param returns - Array of returns
261
+ * @param riskFreeRate - Annual risk-free rate (default: 0.04)
262
+ * @param periodsPerYear - Trading periods per year (default: 252)
263
+ * @returns Sortino ratio
264
+ */
265
+ export declare function calculateSortinoRatio(returns: number[], riskFreeRate?: number, periodsPerYear?: number): number;
266
+ /**
267
+ * Calculate beta and alpha against a benchmark
268
+ *
269
+ * @param assetReturns - Array of asset returns
270
+ * @param benchmarkReturns - Array of benchmark returns
271
+ * @returns Object with beta and alpha values
272
+ */
273
+ export declare function calculateBetaAlpha(assetReturns: number[], benchmarkReturns: number[]): {
274
+ beta: number;
275
+ alpha: number;
276
+ };
277
+ export declare const calculate_sortino_ratio: typeof calculateSortinoRatio;
278
+ export declare const calculate_beta_alpha: typeof calculateBetaAlpha;
279
+ export * from "../types/index.js";
280
+ declare const _default: {
281
+ getVersion: typeof getVersion;
282
+ clearError: typeof clearError;
283
+ getLibraryPath: typeof getLibraryPath;
284
+ createOHLCV: typeof createOHLCV;
285
+ createAMM: typeof createAMM;
286
+ ammCalculateCost: typeof ammCalculateCost;
287
+ ammCalculateCostFull: typeof ammCalculateCostFull;
288
+ ammPriceImpact: typeof ammPriceImpact;
289
+ amm_buy_cost: typeof ammCalculateCost;
290
+ amm_calculate_cost: typeof ammCalculateCost;
291
+ amm_price_impact: typeof ammPriceImpact;
292
+ lmsrPrice: typeof lmsrPrice;
293
+ lmsrCost: typeof lmsrCost;
294
+ lmsrCalculate: typeof lmsrCalculate;
295
+ kellyCriterion: typeof kellyCriterion;
296
+ kelly_criterion: typeof kellyCriterion;
297
+ detectArbitrage: typeof detectArbitrage;
298
+ detect_arbitrage: typeof detectArbitrage;
299
+ convertOdds: typeof convertOdds;
300
+ convert_odds: typeof convertOdds;
301
+ mean: typeof mean;
302
+ stdDev: typeof stdDev;
303
+ std_dev: typeof stdDev;
304
+ variance: typeof variance;
305
+ correlation: typeof correlation;
306
+ sma: typeof sma;
307
+ ema: typeof ema;
308
+ rsi: typeof rsi;
309
+ macd: typeof macd;
310
+ calculateVar: typeof calculateVar;
311
+ calculate_var: typeof calculateVar;
312
+ calculateDrawdown: typeof calculateDrawdown;
313
+ calculate_drawdown: typeof calculateDrawdown;
314
+ calculateSharpeRatio: typeof calculateSharpeRatio;
315
+ calculateSharpeRatioFull: typeof calculateSharpeRatioFull;
316
+ calculate_sharpe_ratio: typeof calculateSharpeRatio;
317
+ sharpeRatio: typeof calculateSharpeRatio;
318
+ calculateSortinoRatio: typeof calculateSortinoRatio;
319
+ calculate_sortino_ratio: typeof calculateSortinoRatio;
320
+ calculateBetaAlpha: typeof calculateBetaAlpha;
321
+ calculate_beta_alpha: typeof calculateBetaAlpha;
322
+ };
323
+ export default _default;
324
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}