Crate algotrading

Crate algotrading 

Source
Expand description

§Algotrading Library

High-performance quantitative trading primitives optimized for AWS EC2.

§Design Philosophy

  • f64 only: Financial precision is non-negotiable
  • Stack allocated: Const generics, zero heap allocations
  • SIMD optimized: AVX2 baseline (all modern EC2 instances)
  • Cache-friendly: 64-byte alignment, structure-of-arrays layout

§Modules

  • stats: Rolling statistics, PDF estimation
  • probability: Mahalanobis distance, kernel density, empirical CDF
  • filters: Kalman filters for state estimation
  • regime: Markov switching, HMM
  • data: Data quality checks and validation
  • matrix: Linear algebra operations (Cholesky, Eigen, SVD, etc.)
  • options: Black-Scholes pricing, Greeks, implied volatility
  • risk: VaR, Sharpe ratio, drawdown, Kelly criterion
  • ta: Technical indicators (MACD, RSI, Bollinger Bands, etc.)

§Performance Targets (c6i.xlarge)

  • Rolling stats: ~2.5ns per update
  • KDE density eval: ~50ns
  • Mahalanobis distance: ~20ns
  • Markov update: ~15ns
  • Batch (4-wide SIMD): ~8ns per series

§Example

use algotrading::prelude::*;

// Stack-allocated, 300-sample window
let mut stats = RollingStats::<f64, 300>::new();
let (mean, std) = stats.update(0.001);

// Regime detection
let mut regime = MarkovSwitching::spy_default();
regime.update(mean);
 
if regime.is_volatile(0.8) {
    println!("Market is volatile!");
}

Modules§

core
Core data structures and primitives
data
filters
matrix
numeric
options
prelude
Common imports
probability
regime
risk
stats
Statistical computations with optional SIMD acceleration
ta
Technical indicators with optional SIMD acceleration

Macros§

impl_default_numeric
Macro to implement Default for generic numeric structs
init_array
Create a new generic instance with proper initialization
numeric_aliases
Macro to create type aliases for scalar and SIMD versions
numeric_struct
Macro to create a generic version of an existing struct with numeric fields