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.2.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.2-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

ferro_ta-1.1.2-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.2-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.2-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

ferro_ta-1.1.2-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.2-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.2-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

ferro_ta-1.1.2-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.2-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.2-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

ferro_ta-1.1.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: ferro_ta-1.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 dd773e906d82ec034fe23e2c05f77b326039e89beb6b5fa7215d3ea30006a2d1
MD5 e2cb374d3ba7cabde2233200c45ef358
BLAKE2b-256 14e5b425ee36fffabf997dcf507a0f85774c124d214423931ca0497f751bbdb4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0410d075fa9065bda175c09e2a9035ba64e26da59595b85ce3c564c6f3d1207d
MD5 5c86e36a18b46c708f46dae43c5c88a2
BLAKE2b-256 256ce7c475ea7735b1aec74faec5d044034f4c3b1c5521c29ed4e04a47ba04c5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 717279e1a423c43071affc5b874d7ee7fbb4580475193527171002be887675a1
MD5 74874942c7395d2ec10fd189a4ad2941
BLAKE2b-256 0af3d0341d800619a29c304e9e6a843b57aed378240fb227faa346e9aacc468c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.2-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.2-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.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 38f601d6d981cb3b0290e69d753ed52794fa67b09d5597d61defba37cb7400ff
MD5 80cf2992559decd48de58003ff2212ff
BLAKE2b-256 732347b7a79c2404e2dc82f4b07e1ea483740f4ad5585e81172386e412c6e5c5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 66ccb267a21bb9a94b30b0cf4926852d248b72b8a8a623e68c7c8c2487b271e1
MD5 8a952b4c2f3efbdfc61c08e3757bf806
BLAKE2b-256 7b5d8c3c04638fd9a459c8a7e0e159a408a68f0838f174a0ef2f94c4c94e5791

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de19e6c93c99922093ff80b20553e2c469f4943c15850d2c366228f0abe61105
MD5 2c2309832013fd1f104b8a5c66c8f467
BLAKE2b-256 992fef4bd3164b7d5e5774e33571a16a1cfe594ec4af78b5deae0d804010c6a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.2-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.2-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.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 52d70f719783281b1b4f7b55a97d070a822e8ac41a023506c94635a52226fefe
MD5 bfc7e880a00544d8a429b1e2f710ad4e
BLAKE2b-256 da7a02e8e97b95a3bde9401e3c16835b39a3096521f457ca51dc3c92cf53034f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15d82848158ccf895162718a0ddd6755f302e0fc5e9a8409dc9d18ed443ee152
MD5 211a43105219645b8c8eb27265534d05
BLAKE2b-256 427a25cd3deb72f3ff97dee0f76fc897e68461bc58b6d61e08742f6086acdb8d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4272afab6146a237ae54187e290b379594ae73e5aacf01fd514c6603fd1f745a
MD5 feb4edc50c8c1362c4fd69d8ce3caa17
BLAKE2b-256 9344b656e18f9f2742eabd08bd2d15ccc162436a88eed0bc1ad975eadc732779

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.2-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.2-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.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f53abf0e437b6d37eefb09004afcf2c23fcb329338671fb661cd1d8fcfcac991
MD5 580af282acda32be0a26890af557ac45
BLAKE2b-256 b64b449621ef2308ab40051cb3d6033e4e2e3f662c83568dc4db8bbb347d97fe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 246ea6a2b16fc914677015fa3830393e1caa1d4a5a6e554514d3cb24e80d1456
MD5 38933b42633499afc800cfe35f96cfc9
BLAKE2b-256 5438592183f13d17dd03a1d6ea24cfa0687e9c3f185c0567d43310fc10b2f882

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ba3cd566dea5a6303c86fc2e0cbf11f4e082ee1766f4675db3260d79849488a
MD5 bc55eba9180e0df2ceae5f96ee3308b6
BLAKE2b-256 cd968fcf14e132c8fa153e59096e4c7fee0a1d64796fb680ed12889e33e80a78

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.2-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.2-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.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 9622d183f167265289566f67e29fcf749f40c895c888f82dad30099b5a13ec6c
MD5 5112f4d3f99583eba059a9f41c865ad0
BLAKE2b-256 85e8341db906f27c682b311d12fc60395e74f1c87b4b69059481dbd800e652d1

See more details on using hashes here.

Provenance

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