mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-28 09:47:43 +00:00
a7b7207801
- Updated mathematical foundations and performance profiles where necessary to maintain clarity and coherence.
5.5 KiB
5.5 KiB
QuanTAlib - Quantitative Technical Indicators Without Compromises
TA libraries face a fundamental choice: accept approximations for simplicity OR enforce math rigor. QuanTAlib chooses rigor.
Quantitative TA library (QuanTAlib) is a C# library built on the premise that you shouldn't have to choose. Modern CPUs process 4-8 FLOPS per cycle via SIMD. Modern .NET exposes memory layouts making hardware acceleration trivial. QuanTAlib exploits both. Result: mathematically rigorous indicators at speeds making real-time multi-symbol analysis practical on ordinary hardware.
Key Features
- Zero Allocation: Hot paths are allocation-free. No GC pauses during trading.
- SIMD Accelerated: Uses AVX2/AVX-512 for 8x throughput on modern CPUs.
- O(1) Streaming: Constant time updates regardless of lookback period.
- Platform Agnostic: Runs on .NET 8/9/10, compatible with Quantower, NinjaTrader, QuantConnect.
- Mathematically Rigorous: Validated against original research papers and established libraries.
Indicators
| Category | What It Measures | Representative Indicators |
|---|---|---|
| Trends | Direction and strength of price movement through smoothing and filtering | SMA, EMA, WMA, HMA, JMA, KAMA, ALMA, DEMA, TEMA, T3 |
| Volatility | Size and variability of price movements | ATR, StdDev, Bollinger Bands, Keltner Channels, Historical Volatility |
| Momentum | Speed and magnitude of price changes | RSI, Stochastic, CCI, Williams %R, MACD, Momentum, ROC |
| Volume | Trading activity and price-volume relationships | OBV, VWAP, Volume ROC, A/D, MFI |
| Channels | Price boundaries and range definitions | Donchian Channels, Keltner Channels, Price Channels |
| Statistics | Mathematical relationships between price series | Correlation, Covariance, Beta, Z-Score, Linear Regression |
| Numerics | Mathematical transformations and signal processing | Convolution, Filters, Integration, Differentiation, Smoothing |
| Errors | Measurement accuracy and model fit quality | MAE, RMSE, Residuals, R-Squared |
| Forecasts | Future price prediction and projection | Linear Regression Forecast, Moving Average Projection |
| Cycles | Periodic patterns and dominant frequencies | Hilbert Transform, Dominant Cycle, Instantaneous Phase, Sine Wave |
Quick Start
Install from NuGet:
dotnet add package QuanTAlib
Calculate an SMA in real-time:
using QuanTAlib;
var sma = new Sma(period: 14);
double price = 100.0;
// Update with new price
var result = sma.Update(new TValue(DateTime.UtcNow, price));
if (result.IsHot)
{
Console.WriteLine($"SMA: {result.Value}");
}
Performance Snapshot
QuanTAlib is designed for speed. Here is how it compares calculating a 500,000 bar SMA against other libraries:
| Library | Mean Time | Allocations | Relative Speed |
|---|---|---|---|
| QuanTAlib (Span) | 318.3 μs | 0 B | 1.00x (baseline) |
| TA-Lib | 356.4 μs | 34 B | 1.12x slower |
| Tulip Indicators | 359.3 μs | 0 B | 1.13x slower |
| Skender Indicators | 71,277 μs | 50.8 MB | 224x slower |
See Benchmarks for full details and methodology.
Documentation
- Architecture: Learn about SoA layout, SIMD, and design philosophy.
- Indicators: Full catalog of available indicators and their mathematical families.
- Benchmarks: Detailed performance evidence and test methodology.
- Usage Guides: Detailed patterns for Span, Streaming, Batch, and Eventing modes.
- Integration: Setup guides for Quantower, NinjaTrader, and QuantConnect.
- Glossary: Definitions of core QuanTAlib concepts, types, and terminology.