Batch (Series)
Convert full bar collections to indicators, best for once-and-done bulk conversions.
Learn more
Convert full bar collections to indicators, best for once-and-done bulk conversions.
Learn more
Standalone incrementing `IReadOnlyList` results you append to, best for simple self-managed incremental data.
Learn more
Subscription-based hub-observer pattern, best for streaming/live data and advanced architectures.
Learn more
The library provides three distinct indicator styles to support different use cases.
| Feature | Batch (Series) | Buffer lists | Stream hubs |
|---|---|---|---|
| Incrementing | no | yes | yes |
| Batch speed | fastest | faster | fast |
| Scaling | low | moderate | high |
| Class type | static | instance | instance |
| Base interface | IReadOnlyList | IReadOnlyList (+ Add) | IStreamHub |
| Complexity | lowest | moderate | highest |
| Chainable | yes | manual | yes |
| Pruning | with utility | auto-preset | auto-preset |
| Healing | no | no | yes |
Healing: Built-in handling of out-of-order and de-deplication of incoming data.
Start with Batch (Series) style unless you have a specific need for incremental processing or real-time streaming.
Don't re-run a Series method for every new bar. Its cost grows with the history it recalculates, while a stream hub's cost per new bar stays flat. For EMA, SMA, RSI and MACD, the hub is already cheaper once the history passes about 12 to 20 bars, and at 1,000 bars the Series method costs 40 to 110 times as much per bar. To measure it on your own hardware, run the StreamCrossover benchmark in tools/performance.
See Getting started for installation, first steps, and example usage.