mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-14 16:48:04 +00:00
71 lines
3.7 KiB
Markdown
71 lines
3.7 KiB
Markdown
[](https://app.codacy.com/gh/mihakralj/QuanTAlib/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
[](https://codecov.io/gh/mihakralj/QuanTAlib)
|
|
[](https://sonarcloud.io/summary/new_code?id=mihakralj_QuanTAlib)
|
|
[](https://www.codefactor.io/repository/github/mihakralj/quantalib/overview/main)
|
|
|
|
[](https://www.nuget.org/packages/QuanTAlib/)
|
|

|
|
[](https://www.nuget.org/packages/QuanTAlib/)
|
|
[](https://github.com/mihakralj/QuanTAlib/watchers)
|
|
[](https://dotnet.microsoft.com/en-us/download/dotnet)
|
|
|
|
# QuanTAlib - Quantitative Technical Indicators Without Compromises
|
|
|
|
TA libraries face a fundamental choice: accept approximations for simplicity OR enforce math rigor. We chose rigor.
|
|
|
|
**Quan**titative **TA** **lib**rary (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.
|
|
|
|
## Quick Start
|
|
|
|
Install from NuGet:
|
|
|
|
```bash
|
|
dotnet add package QuanTAlib
|
|
```
|
|
|
|
Calculate an SMA in real-time:
|
|
|
|
```csharp
|
|
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 | 359.3 μs | 0 B | 1.13x slower |
|
|
| Skender | 71,277 μs | 50.8 MB | 224x slower |
|
|
|
|
*See [Benchmarks](docs/BENCHMARKS.md) for full details and methodology.*
|
|
|
|
## Documentation
|
|
|
|
- [**Architecture**](docs/ARCHITECTURE.md): Learn about SoA layout, SIMD, and design philosophy.
|
|
- [**Indicators**](docs/INDICATORS.md): Full catalog of available indicators and their mathematical families.
|
|
- [**Usage Guides**](docs/USAGE.md): Detailed patterns for Span, Streaming, Batch, and Eventing modes.
|
|
- [**Integration**](docs/INTEGRATION.md): Setup guides for Quantower, NinjaTrader, and QuantConnect.
|
|
- [**Benchmarks**](docs/BENCHMARKS.md): Detailed performance evidence and test methodology.
|