Skip to main content

Rust-powered Python technical analysis library with a TA-Lib-compatible API

Project description

⚡ ferro-ta

Rust-powered Python technical analysis with a TA-Lib-compatible API

Focused on one primary job: fast, reproducible technical analysis for Python users who want TA-Lib-style ergonomics without native build friction.

Binder Open in Colab Documentation


ferro-ta is a Rust-backed Python technical analysis library for NumPy-first workloads. It keeps TA-Lib-style ergonomics, ships pre-built wheels on supported targets, and publishes reproducible benchmark artifacts instead of blanket speed claims.

🚀 What ferro-ta is

TA-Lib ferro-ta
Primary product C-backed Python TA library Rust-backed Python TA library
API shape talib.SMA(close, 20) ferro_ta.SMA(close, 20)
Installation Often requires native/system setup Pre-built wheels on supported targets
Scope Technical indicators Technical indicators first; other tooling is optional and secondary

⚡ Benchmark evidence

The latest checked-in TA-Lib comparison artifact uses contiguous float64 arrays at 10k and 100k bars on an Apple M3 Max, CPython 3.13.5, and Rust 1.91.1.

  • ferro-ta achieves competitive parity with TA-Lib, winning on 7 of 12 tested indicators at 100k bars (5 of 12 at 10k bars).
  • Strong performance wins at 100k bars include MFI (3.25×), WMA (2.20×), BBANDS (1.97×), and SMA (1.93×) vs TA-Lib.
  • TA-Lib maintains performance advantages on STOCH and ADX; EMA, ATR, and OBV are statistical ties.
  • Compared to pure-Python libraries like Tulipy, ferro-ta provides 150-350x speedups through Rust-optimized implementations.

See the benchmark methodology and artifacts:

🎯 Core capabilities

  • 160+ indicators with a TA-Lib-style public API.
  • Batch and streaming APIs for multi-series and bar-by-bar workloads.
  • NumPy-first execution with pandas and polars adapters.
  • Pre-built wheels on the supported Python and OS matrix.
  • Type stubs, error codes, examples, and reproducible benchmarks.

Adjacent and experimental surfaces such as derivatives analytics, MCP, GPU, plugins, and WASM remain opt-in and secondary to the core TA library story.

📦 Installation

pip install ferro-ta

Optional extras:

pip install "ferro-ta[pandas]"   # pandas.Series support
pip install "ferro-ta[polars]"   # polars.Series support
pip install "ferro-ta[gpu]"      # PyTorch-backed GPU helpers
pip install "ferro-ta[options]"  # derivatives analytics helpers
pip install "ferro-ta[mcp]"      # MCP server for agent/tool clients
pip install "ferro-ta[all]"      # most optional extras (excluding gpu)

⚡ Quick start

import numpy as np
from ferro_ta import SMA, EMA, RSI, MACD, BBANDS

close = np.array([44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15,
                  43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33])

sma = SMA(close, timeperiod=5)
ema = EMA(close, timeperiod=5)
rsi = RSI(close, timeperiod=14)
macd_line, signal, histogram = MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
upper, middle, lower = BBANDS(close, timeperiod=5, nbdevup=2.0, nbdevdn=2.0)

📊 TA-Lib compatibility

  • ferro-ta implements 100% of TA-Lib's function set (162+ indicators).
  • Most functions are marked Exact or Close; the remaining notable non-exact categories are the Hilbert cycle indicators plus MAMA, SAR, and SAREXT.
  • The full parity matrix and coverage summary now live in TA_LIB_COMPATIBILITY.md.

Migration and compatibility references:

🗺️ Docs map

Core guides:

Evidence and APIs:

Optional and experimental surfaces:

Project and release docs:

🛠️ Development

uv sync --extra dev
uv run pytest tests/unit tests/integration
uv run maturin build --release --out dist

More setup details live in CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ferro_ta-1.2.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ferro_ta-1.2.0-cp310-abi3-win_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10+Windows ARM64

ferro_ta-1.2.0-cp310-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

ferro_ta-1.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.1 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file ferro_ta-1.2.0.tar.gz.

File metadata

  • Download URL: ferro_ta-1.2.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferro_ta-1.2.0.tar.gz
Algorithm Hash digest
SHA256 de723952671402c02f8c14e01c88b0fcf2dda9bdef4b544edb2ca10ead9cd559
MD5 80aa6bc64e0b6275ab32bf8967c67c33
BLAKE2b-256 3ceb12f93b0d28bc84124e75841189feee9c9c16208c4d633cea0f0b5dd61969

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0.tar.gz:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: ferro_ta-1.2.0-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 df93b2ff9e01040dc17e31c23454b180c697dc1d8bec8cdcbb6053b79b0cd079
MD5 2ec47e45867023df1263273943a524ee
BLAKE2b-256 c823664a40ec80bfe17315604abc6c9bd38ead70822811d837cd6026e84b9015

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-win_arm64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.2.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 44dfe55b36f4f66989570993614a9eb019837f63814a2d823f6c8197c16e1225
MD5 9ed0f0fd5ddb0386091ae35c3d20f787
BLAKE2b-256 fea4efc72d20a1010a3f90cca64dc58d6e5cad6e53ce19371bc230f50348f2a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-win_amd64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6090fed8de19bb5017ed5affd7845a325d2d6986f98cd90c9de5835b30a1b9a7
MD5 11e9f7a61af47f7123bb9dd4868c523d
BLAKE2b-256 028c50bce95e283830a9159ccafad53c1a76eb9571bfaf6da58b570402d71794

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 05bc6109c1bba4be55352f38f2564e09848fcc06674770d9711f1904f6deab2e
MD5 d5f23acc5180e6c588ed1f4ffd2df92e
BLAKE2b-256 542585c99c5d640e8bffddf6ca280970d1e137d74f918c73c5a03b77eb76b7d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c401f87f668a46d254c616ca51325fa77a64ecdb8f38b3842e4dc0ff1bf1c78
MD5 7c0e58023c60350493968742dcd85b0a
BLAKE2b-256 dba5dc38a002217387e04be912b32f040403242f2a2e71f794000325e54e61dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c8031610e4d64772c91d1cc01562f4f4bbfe67525949c6470962ead944d9479
MD5 ac29342e6d6f2ac66624b80137354c8f
BLAKE2b-256 7f40fbebd4186cc980dc687a52e697460e87c395ad6839b5bcb582af8f9225bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferro_ta-1.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ferro_ta-1.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d7942a6e9dff2386226df4d897bce03c3e78ca928766e0f9b260f2f16c3f8615
MD5 0035a64a5ede067d9272c74dabedd14d
BLAKE2b-256 e18a1c4637886ad9635f9f1914c222fe4a4042d1ea3253bac773bcbd8b6e1389

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: CI.yml on pratikbhadane24/ferro-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page