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.1.3.tar.gz (1.0 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.1.3-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

ferro_ta-1.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.3-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.1 MB view details)

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

ferro_ta-1.1.3-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

ferro_ta-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.1 MB view details)

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

ferro_ta-1.1.3-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

ferro_ta-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.1 MB view details)

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

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

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

File details

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

File metadata

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

File hashes

Hashes for ferro_ta-1.1.3.tar.gz
Algorithm Hash digest
SHA256 441d7371737ad5cb3e80d863a09cedfcbd45bd1f6d510b31e87c189e213f87c5
MD5 6e28fe96dc4bf0caf8aa1a47e4f16e85
BLAKE2b-256 33363e0cff4a18968868b50607b043d38229a91945ec7c01c4f90da2bb5ae3c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3.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.1.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ferro_ta-1.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 44e5c5e8fabc183279318151ab8cf7dff9643a1f29f3cfb49a2c55b46dae8f5d
MD5 af30e312baa173bbad824a4486171570
BLAKE2b-256 5a486ddc2cb413e043819e7a4874ed9893a56b7131a399ee9def3e3127e73612

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp313-cp313-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.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9acd0cdf8b9b27492498504c202c8a8b77a4acfa688847d5f3142098c7912506
MD5 c01a765275728232e340d22e98e72c39
BLAKE2b-256 20138f3d43d03775d025edfa85c64124907100ae8ccc7847ce12b4e1d1a52c97

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp313-cp313-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.1.3-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f5f04b117ca9d4f7c6b65cce7d6d89201e3bb20658fcca52398c3ac0a92340ed
MD5 acfde77c9194e467e5e0c846ab87a5c6
BLAKE2b-256 bb3429f94e960628bcb180fc10df611a82d88e1aa3f2558f2ac046896c08b1cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp313-cp313-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.

File details

Details for the file ferro_ta-1.1.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ferro_ta-1.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b74e22da5b1b587e119dda57d3bec68fd5297089d7177e0248a8ce28f4c85f65
MD5 8e0c9995b5776526add5fb273629e0e8
BLAKE2b-256 8c6e36dc4db06862aa39fd61c117a020e05f16ff1751edc3c6a4e6d83876562b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp312-cp312-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.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e2492d62cffdcadbfd9fc66cb8701616e30926c3f448c187faa2616e2516156
MD5 b2ab65af0d7e155fbee088e3e6cc1437
BLAKE2b-256 c366b40769d8eb62755a895378f08c944ee474561814d3bd607611a42d47d5d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp312-cp312-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.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 993f8f0f27e759d04e26bf8a7556130797c3a695c71aaf8ccd7324517d7e809a
MD5 0eba8a708034627180c39917b327c25c
BLAKE2b-256 c57f2c000274b11b9c1caed10f7817e407bb3ca8ce877eeca2c53170c586187d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp312-cp312-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.

File details

Details for the file ferro_ta-1.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ferro_ta-1.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 da0eacbbe902efca51ca2ad5d96b0470bffe82cd2dae605ad325c2f2c01bd38c
MD5 db41eca6d56f99a13a6000f40618a77a
BLAKE2b-256 43942d18aeb7c754494c95863d3d6227c953ab604ffa8eacc4bcdfc1bfc34ea9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp311-cp311-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.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8c0d6e2307665307f9220f7035396d50fada9407a8070a2d3ff0ca2a370518d
MD5 4535775dde09a12c2de395a0ddcd46cd
BLAKE2b-256 73ee057bbff2524a1a88811aa4ef9da9e63c5bcf0e92fe9375fa85f5272e328c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp311-cp311-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.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 8f853f4954fd6fae5af29a58b8a93f17064f4a1a3a834679e3774087497ee155
MD5 428ceda07ff13be92ac83d8aef7eb282
BLAKE2b-256 e4e688ba45258ecc8e271f2d9bd7d424f7592e4cd63815723aeac1f6f585aaf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp311-cp311-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.

File details

Details for the file ferro_ta-1.1.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.3-cp310-cp310-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.7

File hashes

Hashes for ferro_ta-1.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f2c432471fcf5c16c32627c884ca362a6bcc0f582c88cd36f2b2af09d79851fc
MD5 4460043946a8f31314fded665244bff3
BLAKE2b-256 5f4959df24b837f9378cf2f814f8cb671f6e61279ab226c13549175419a6b0f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp310-cp310-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.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b990ea9e96fda15f5030d9190558f338397d400445493d66f0efd08e3b8b1746
MD5 ca56ce31370fd9fc12ca83ad6b032986
BLAKE2b-256 bd1ab1efe25cd7ba93f5dc7d8dcd20872a7a3ec263f42bbfb7ec14cda2ad7a8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp310-cp310-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.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ferro_ta-1.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f511a91cd9524a04491109e3d5c6a3a23e805397cc6352ce3bbf28113a6e8bab
MD5 fe8901d6dc062e15fad98bed548b9bd4
BLAKE2b-256 5d4a86e5a563ecccd8ab9b7883b703243e55e370a24377aa719db6ed34cea89a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.3-cp310-cp310-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