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

Uploaded CPython 3.13Windows x86-64

ferro_ta-1.1.4-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.4-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.4-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.11Windows x86-64

ferro_ta-1.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

ferro_ta-1.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ferro_ta-1.1.4-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.4.tar.gz.

File metadata

  • Download URL: ferro_ta-1.1.4.tar.gz
  • Upload date:
  • Size: 1.0 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.1.4.tar.gz
Algorithm Hash digest
SHA256 24cf5a290ad343789c94485488c0b4624b9d280d84ef0cde29ad4a511324a001
MD5 d9894a8c55acaf938358c79e1c9ca65c
BLAKE2b-256 7a9f2428b293fd9df83460538a88cb22c1c64bb6f3588799a2f25c638df72659

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, 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.1.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 19d0106365eabf746e172146005f7e4ad210d1bbf4ca9f6cb7af8899c279708e
MD5 0e6e01fe186ef47976881a6ea0c932f7
BLAKE2b-256 bbb3e485d2e6623e98f2cb5c399d569461e12fea04a779f4520922e38d45612e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2edcd35e5550ca4f49e48ac58f59c5aaaff4490a63f0cc99d954e538ff663c1b
MD5 d306bc91fa7946a23c2e6236b7031734
BLAKE2b-256 e17b53af8a7a411173a1ae4775cb0f766dcf9e17d71052e63567c0c90570fa3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.4-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.4-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.4-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 5c54c6a9359e2cfab3b2f0c2a17d1d6d48ec85e1792f07009f445b315aadb834
MD5 ae14e089cbef3a6b20c048a77218ead3
BLAKE2b-256 73c270061d2c4d2da8092b1cda9598f9a049028fc30c343dbe5b922c5925a598

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, 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.1.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f596612145224cf4a641ad7e91cb21a061e787c75aec85b5c4dd2a5da295fe02
MD5 0e7f399f233552ef877429362239252a
BLAKE2b-256 16134df3c8890893bb7954ae23907f02e165c0a11bff4bf8e29bef552beed063

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fad41d1b48201bf05ffb7f0f1422cd5165c8ef49c71e2b926eb9f5cc276ca991
MD5 178e9eb86e23d680205da7a47d18de6b
BLAKE2b-256 83c2eff7354ff305f8d7acda5f84eeaea5c01b83a9b93676e7c557ab698ea5e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.4-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.4-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.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 448e431ecbca70beb74ee9461ba0ae42778efef91eb3435b7f3d00fb17e38c32
MD5 c7c54a36272e4c41aa41ab931b1310bd
BLAKE2b-256 d47e8cf42fe2565ec384bb48dd3919450f5a28b11cbf51ba8953063431e20317

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.4-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.12

File hashes

Hashes for ferro_ta-1.1.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e60a85c1eb4e979f006110b3156e41c6bf6612318bab0dc671098222e0c42840
MD5 2ad6b4ae46b1c8318a0e76351986afff
BLAKE2b-256 42d1d0da34b9e6cb10ebebe0060673faf7a388203965b928ff4a9dc85d519f7c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1935d225cfc2b012748fa131543c2a43d882b6feeaa2b751b4e97ceeb5534d7d
MD5 5807137e8bd186fe1299e7fe1fdcacc3
BLAKE2b-256 d6f61ea1edd936f58eae47349ed90ba4b27c6a115e7e3c2e84374014a0c0911e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.4-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.4-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.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 4750c47563850a8a7004c30aa539d929e2a94c827ff00e9fdd106b18ec4dfbd2
MD5 65c8b6ff2e5378b588e2c8665e295ba5
BLAKE2b-256 fd63973cab651ee0fa885087b07adbabf5bc8634033ca85290146cbb9f532e5c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ferro_ta-1.1.4-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.12

File hashes

Hashes for ferro_ta-1.1.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dc3aafb7739523f115471627e9a587b8a04314c2af3b492cad74e70995cbfead
MD5 99610f71913431399a203bd97659d9d5
BLAKE2b-256 2c39653280b13291f2fd6edfd84751bb0282849d3ab70c2b48178b90f7c05f42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ferro_ta-1.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a8f62b62e0024215c59662891bce98ed58d0eead47849c79b63ed9e69718592
MD5 d6f015c1ac8d08a4610b8510150838c2
BLAKE2b-256 ff7c4eda11b7ee179784038004409f141a736f9fe50699c50ce18bb930f21e71

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferro_ta-1.1.4-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.4-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.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d415d58f698a57a32351b43fab757d7d5e2c9e21cf0d36ff6070e04a3feb79b3
MD5 77b98a5cc8ee53ff9d7aea6afa46f728
BLAKE2b-256 26ff64fe208ac714eb313f0d62594870a68463de145d0e4944654c908a43e37c

See more details on using hashes here.

Provenance

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