---
url: /guide/styles.md
description: Three distinct indicator styles to support different use cases.
package: FacioQuo.Stock.Indicators
docs_version: v3
canonical: https://dotnet.stockindicators.dev/guide/styles/
generated: 2026-09-30T04:41:06.055Z
commit: ae1f432eaa0b03ae9f39e032c69434b557efa4a2
---

## Feature comparison

The library provides three distinct indicator styles to support different use cases.

| Feature | [Batch (Series)](/guide/styles/batch.md) | [Buffer lists](/guide/styles/buffer.md) | [Stream hubs](/guide/styles/stream.md) |
| ------- | ------------ | ------------ | ----------- |
| 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.

## Which style to use?

Start with **Batch (Series)** style unless you have a specific need for incremental processing or real-time streaming.

* Use **[Batch](/guide/styles/batch.md)** when you have a complete historical dataset and need to calculate indicators once. Fastest and simplest.
* Use **[Buffer lists](/guide/styles/buffer.md)** when bars arrive one at a time and you need incremental processing without the overhead of a full hub infrastructure.
* Use **[Stream hubs](/guide/styles/stream.md)** when you need coordinated, automatic updates across multiple chained indicators from a live data feed with self-healing.

### Bars that arrive one at a time

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`.

## Getting started

See [Getting started](/guide/getting-started.md) for installation, first steps, and example usage.
