@ebowwa/quant
v0.1.0
Published
Quantitative trading tools and formulas - technical indicators, risk management, pattern detection, and statistical functions for AI trading systems
Maintainers
Readme
@ebowwa/quant
Multi-market quantitative trading tools and formulas for AI trading systems.
Features
Multi-Market Support
- Prediction Markets - Binary outcomes, AMM math, Kelly criterion
- Traditional Markets - Stocks, crypto, forex technical analysis
- Derivatives - Options, futures, perpetuals risk management
Modules
prediction - Prediction Market Tools
import { kellyCriterion, ammBuyCost, detectArbitrage } from '@ebowwa/quant/prediction';
// Kelly sizing for binary bets
const kelly = kellyCriterion(0.65, 0.55, 1000); // Your prob, market price, bankroll
console.log(kelly.kellyFraction); // Optimal fraction to bet
// AMM cost calculation (constant product)
const cost = ammBuyCost({ poolYes: 1000, poolNo: 1000, k: 1000000 }, 'yes', 100);
// Detect arbitrage
const arb = detectArbitrage(0.48, 0.48); // YES + NO < 1 = arb opportunityindicators - Technical Indicators
import { sma, ema, rsi, macd, bollingerBands, atr } from '@ebowwa/quant/indicators';
const prices = [100, 102, 101, 103, 105, 104, 106];
// Moving averages
const sma20 = sma(prices, 20);
const ema12 = ema(prices, 12);
// RSI
const rsi14 = rsi(prices, 14);
// MACD
const { macd: macdLine, signal, histogram } = macd(prices, 12, 26, 9);
// Bollinger Bands
const { upper, middle, lower } = bollingerBands(prices, 20, 2);risk - Risk Management
import {
sharpeRatio, sortinoRatio, calculateDrawdown,
calculateVaR, fixedFractionalSize
} from '@ebowwa/quant/risk';
// Position sizing
const size = fixedFractionalSize(10000, 0.02, 100, 95); // 2% risk
// Risk metrics
const sharpe = sharpeRatio(returns, 0.04, 252);
const { maxDrawdown } = calculateDrawdown(equityCurve);
const { var95, expectedShortfall95 } = calculateVaR(returns);stats - Statistical Functions
import {
pearsonCorrelation, linearRegression,
distributionStats, autocorrelation
} from '@ebowwa/quant/stats';
// Distribution analysis
const stats = distributionStats(returns);
console.log(stats.skewness, stats.kurtosis);
// Correlation
const corr = pearsonCorrelation(assetReturns, marketReturns);
// Linear regression
const { slope, intercept, r2 } = linearRegression(x, y);
// Time series
const acf = autocorrelation(prices, 20);patterns - Pattern Detection
import {
findSupportResistance, detectDoubleTop,
detectHeadAndShoulders, detectTriangles
} from '@ebowwa/quant/patterns';
// Support/Resistance levels
const levels = findSupportResistance(high, low);
// Pattern detection
const doubleTops = detectDoubleTop(high, low);
const headShoulders = detectHeadAndShoulders(high, low);
const triangles = detectTriangles(high, low);Installation
bun add @ebowwa/quantAPI Reference
Prediction Markets
| Function | Description |
|----------|-------------|
| kellyCriterion(yourProb, marketPrice, bankroll) | Calculate optimal bet size |
| ammBuyCost(state, outcome, shares) | Cost to buy shares from AMM |
| ammSharesReceived(state, outcome, cost) | Shares received for cost |
| detectArbitrage(yesPrice, noPrice) | Find arb opportunities |
| brierScore(predictions) | Measure forecast accuracy |
| calculateCalibration(predictions) | Calibration analysis |
Technical Indicators
| Function | Description |
|----------|-------------|
| sma(data, period) | Simple Moving Average |
| ema(data, period) | Exponential Moving Average |
| rsi(data, period) | Relative Strength Index |
| macd(data, fast, slow, signal) | MACD indicator |
| bollingerBands(data, period, stdDev) | Bollinger Bands |
| atr(high, low, close, period) | Average True Range |
| adx(high, low, close, period) | Average Directional Index |
| ichimoku(high, low, close) | Ichimoku Cloud |
Risk Management
| Function | Description |
|----------|-------------|
| sharpeRatio(returns, rf, periods) | Sharpe ratio |
| sortinoRatio(returns, rf, periods) | Sortino ratio |
| calculateDrawdown(equityCurve) | Max drawdown analysis |
| calculateVaR(returns) | Value at Risk |
| portfolioVolatility(weights, covMatrix) | Portfolio volatility |
| beta(assetReturns, marketReturns) | Beta coefficient |
Statistics
| Function | Description |
|----------|-------------|
| distributionStats(data) | Full distribution analysis |
| pearsonCorrelation(x, y) | Pearson correlation |
| linearRegression(x, y) | Simple linear regression |
| autocorrelation(data, maxLag) | ACF |
| rollingStats(data, period) | Rolling statistics |
Types
The package includes comprehensive TypeScript types for all market types:
MarketType- 'prediction' | 'equity' | 'crypto' | 'forex' | 'derivative'OHLCV- Standard candlestick dataPredictionQuote- Prediction market quoteAMMState- AMM pool stateKellyResult- Kelly criterion outputTradingSignal- Trading signal with confidencePatternMatch- Detected pattern with confidence
Future: MCP Interface
This package is designed to be wrapped by an MCP server for AI trading systems:
// Future MCP tool example
{
name: "calculate_kelly",
description: "Calculate optimal position size using Kelly criterion",
inputSchema: {
type: "object",
properties: {
yourProbability: { type: "number" },
marketPrice: { type: "number" },
bankroll: { type: "number" }
}
}
}License
MIT
