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

Uploaded CPython 3.13Windows x86-64

ferro_ta-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 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.0-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

ferro_ta-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 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.0-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

ferro_ta-1.1.0-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.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 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.0-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

ferro_ta-1.1.0-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.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.0 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.0.tar.gz.

File metadata

  • Download URL: ferro_ta-1.1.0.tar.gz
  • Upload date:
  • Size: 994.1 kB
  • 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.0.tar.gz
Algorithm Hash digest
SHA256 af98b47a134849b04881b24378fde38418b04efe559acd9b47cabf0771ab4f44
MD5 84c731f0183e2e337edd6a094d43c276
BLAKE2b-256 bd5ab86171164c301341d4c8ff830eb6e6d5251b5c8241d0427813aa0095e653

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1f2548ad371bc9ff009d4605577225a4f6a1630609fa8416e462475463eb0966
MD5 68a5124bd3966392d0633d489a1cf749
BLAKE2b-256 7a7ad7f729bbf6595257e20e4bda7b08427e4197eebd0c109364be8948080309

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58ec5b6f5d9b803de509a82a27bca31865bd6e743e2e9907b2fe8bb253e1a9a3
MD5 435b6032bd845334132266fdfb578062
BLAKE2b-256 3e85e60c40f678a9ff042de7eea3f622d2cc56078abb2d5206c49bce3fd57ed6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-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.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 7b30878200e9a7811d2f353d4f6ac0a8e49c68429fb7bcdafa0597ea380d1292
MD5 13f876607672e6daeaa53982c32d4ded
BLAKE2b-256 47e866b5a9f30e2e2bac4f0ac97d9c3a5df6f6e2c106618c068954e5081106e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c5cf3e20f8cd0a36134e7948f8ea1cace7d4a66e377190dc34b5b5d0bb8493e8
MD5 dc25810c612e6ac4afb3ca953902b7df
BLAKE2b-256 290b6b5adbd7f4bd8ec657f3344c52d9d13c877514c79819231b82890265cc9f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b6dc906cb5cea6bb40fe0e58387341c1f45e0dbe92e285508884f46910d34bb
MD5 c5e95d0e570adf7a7c93a1cad6ef2f76
BLAKE2b-256 db34f4823e09f10d62a3afcd35fc6c68c3285af7b5931b6ea9acd51dd8da5cb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-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.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 9d0eabd04928e6d59a21ab8efb6eef081b9bbbf9e64d687287f0ecef37e7f630
MD5 eba96396a2060453ba80778b9b35be63
BLAKE2b-256 e1b14c466ea162d6a442d8d1549635dd2e123f9aa087da23e52b5de299a50754

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9bdcb552b44d52c0263598b1bbab20757ae54f559ccf401b1819852a71cedd08
MD5 2b31b2d362c72299883005454eaca080
BLAKE2b-256 2550780310faf09c3849496e039216046a14f4f1062794bc2fce5b3429493e76

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 882fdd48c876919bac8a5a7eb722cb4f11152bad638adf5c6425107f5c83a810
MD5 f585d83efeb7830e06a5f352495587cd
BLAKE2b-256 5d3b7b231e9a4980ea02324a32b553a0281d6a9c625f425039a88726b866b628

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-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.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 5d973f6af13c54e358e4a07234934e850481100e3ea87cf8a476292dd335b454
MD5 29f0dcd481802437e4251e49dbe702b0
BLAKE2b-256 7d4de36647e31020bc37f13ecb5add47d2d4632b5f06a643b0c38d9c46131720

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: ferro_ta-1.1.0-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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7cff9f41ffc769e0ef8131c1022b85c3dc8af66c71bec782f6618bdbcdc04b1b
MD5 c26c77f1c4148468c33cfa6b42af4ef8
BLAKE2b-256 ab644d14896593dde3add6554ea478c6b8114490085be628528b466b42391817

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54dc251cc6790b0f5a36b47dad1d0146ffcf2a03d76fe337035783c372e97267
MD5 a242f9b90d9bba2d1e512a65e9a4858a
BLAKE2b-256 82c4aa0543cfc2f1853ed8f5da65f2b3fb89c48b9f63ba725764460f030e85e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.0-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.0-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.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 3a727e226ccc0dae624563fc99865bb7c6815d4ae9a838c9adb424bbea93c396
MD5 54f2cc826b1e1b89a5633a6311b33a68
BLAKE2b-256 bce44d7cc0c57596a5e1d6a9cacef3c3f1afd19bbb695c16f0a026141915498b

See more details on using hashes here.

Provenance

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