Files
ferro-ta/crates/ferro_ta_core
Pratik Bhadane 436954138f chore: prepare v1.1.0 release
Update version numbers across Rust, Python, and documentation files to 1.1.0. Enhance the .gitignore to include macOS dSYM files and plans directory. Introduce new dependencies in the Rust core library and update the README to reflect recent performance benchmarks and backtesting engine capabilities. Add new artifacts to the benchmarks manifest and improve documentation for the backtesting engine API.
2026-03-30 12:45:52 +05:30
..
2026-03-30 12:45:52 +05:30
2026-03-30 12:45:52 +05:30
2026-03-30 12:45:52 +05:30

ferro_ta_core

ferro_ta_core is the pure Rust indicator engine behind 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

[dependencies]
ferro_ta_core = "1.2.0"

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

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:

cargo build -p ferro_ta_core
cargo test -p ferro_ta_core
cargo bench -p ferro_ta_core --no-run

License

MIT