2026-03-24 00:38:50 +05:30
|
|
|
# ferro_ta_core
|
|
|
|
|
|
|
|
|
|
`ferro_ta_core` is the pure Rust indicator engine behind [`ferro-ta`](https://github.com/pratikbhadane24/ferro-ta).
|
|
|
|
|
|
|
|
|
|
It provides allocation-friendly indicator functions over `&[f64]` slices without any
|
|
|
|
|
PyO3, NumPy, or Python runtime dependency, which makes it a good fit for:
|
|
|
|
|
|
|
|
|
|
- Rust-native technical analysis workloads
|
|
|
|
|
- custom services and backtesting engines
|
|
|
|
|
- future non-Python bindings such as WASM and other FFI layers
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[dependencies]
|
2026-03-24 15:03:00 +05:30
|
|
|
ferro_ta_core = "1.0.6"
|
2026-03-24 00:38:50 +05:30
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Design
|
|
|
|
|
|
|
|
|
|
- Pure functions over Rust slices
|
|
|
|
|
- No Python or NumPy dependency
|
|
|
|
|
- Shared core for the Python package and WASM bindings
|
|
|
|
|
- Output shape matches TA-Lib-style full-length series with `NaN` warm-up values where applicable
|
|
|
|
|
|
|
|
|
|
## Modules
|
|
|
|
|
|
|
|
|
|
- `overlap` - moving averages, MACD, Bollinger Bands
|
|
|
|
|
- `momentum` - RSI, MOM
|
|
|
|
|
- `volatility` - ATR, TRANGE
|
|
|
|
|
- `volume` - OBV
|
|
|
|
|
- `statistic` - STDDEV
|
|
|
|
|
- `math` - rolling SUM/MAX/MIN helpers
|
|
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
use ferro_ta_core::overlap;
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
let close = vec![1.0, 2.0, 3.0, 4.0, 5.0];
|
|
|
|
|
let sma = overlap::sma(&close, 3);
|
|
|
|
|
|
|
|
|
|
assert!(sma[0].is_nan());
|
|
|
|
|
assert!(sma[1].is_nan());
|
|
|
|
|
assert!((sma[2] - 2.0).abs() < 1e-10);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Relationship To `ferro-ta`
|
|
|
|
|
|
|
|
|
|
The published Python package:
|
|
|
|
|
|
|
|
|
|
- crate: `ferro_ta`
|
|
|
|
|
- PyPI package: `ferro-ta`
|
|
|
|
|
|
|
|
|
|
wraps this crate with PyO3 bindings and adds:
|
|
|
|
|
|
|
|
|
|
- NumPy conversion
|
|
|
|
|
- pandas/polars wrappers
|
|
|
|
|
- streaming classes
|
|
|
|
|
- batch helpers
|
|
|
|
|
- higher-level Python tooling
|
|
|
|
|
|
|
|
|
|
If you only need Rust indicator functions, use `ferro_ta_core` directly.
|
|
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
|
|
|
|
From the repository root:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cargo build -p ferro_ta_core
|
|
|
|
|
cargo test -p ferro_ta_core
|
|
|
|
|
cargo bench -p ferro_ta_core --no-run
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
MIT
|