ferro-ta Documentation ====================== .. toctree:: :maxdepth: 2 :caption: Core Library quickstart migration_talib support_matrix pandas_api error_handling api/index streaming batch extended .. toctree:: :maxdepth: 2 :caption: Evidence and Releases benchmarks changelog .. toctree:: :maxdepth: 2 :caption: Adjacent and Experimental derivatives adjacent_tooling plugins contributing Overview -------- **ferro-ta** is a Rust-powered Python technical analysis library focused on a TA-Lib-compatible API for NumPy-centered workloads. .. important:: Performance varies by indicator, array layout, warmup, build flags, and machine. ferro-ta is often faster on selected indicators, not universally faster. See :doc:`benchmarks` for the reproducible workflow, methodology notes, and the indicators where TA-Lib still wins or ties in the current checked-in artifact. Core library: - 160+ indicators covering all TA-Lib categories - TA-Lib-style imports such as ``ferro_ta.SMA(close, timeperiod=20)`` - Pre-built wheels for the supported Python/OS matrix - Pure Rust core library (``crates/ferro_ta_core``) — no PyO3 / numpy dependency - Batch execution API — run indicators on 2-D arrays of multiple series - Streaming / bar-by-bar API for live trading - Transparent pandas.Series support - Type stubs (.pyi) for IDE auto-completion - 10 extended indicators not in TA-Lib (VWAP, Supertrend, Ichimoku Cloud, ...) Adjacent and experimental tooling: - **Backtesting engine** — OHLCV fill, 23 metrics, Monte Carlo, walk-forward, multi-asset — see :doc:`adjacent_tooling` - Derivatives analytics — see :doc:`derivatives` - Agentic workflow and LangChain tool wrappers — see `Agentic guide `_ - MCP server for MCP-compatible clients — see `MCP guide `_ - WASM, plugins, and other optional surfaces — see :doc:`adjacent_tooling` Installation ~~~~~~~~~~~~ .. code-block:: bash pip install ferro-ta Quick Start ~~~~~~~~~~~ .. code-block:: python import numpy as np from ferro_ta import SMA, EMA, RSI, MACD, BBANDS close = np.array([10.0, 11.0, 12.0, 13.0, 14.0, 13.5, 12.5]) print(SMA(close, timeperiod=3)) # Batch: run SMA on 5 symbols at once from ferro_ta.batch import batch_sma data = np.random.rand(100, 5) result = batch_sma(data, timeperiod=10) Further Reading ~~~~~~~~~~~~~~~ - `Architecture `_ — Rust/Python layout, two-crate design, binding flow. - `Performance Guide `_ — when to use raw numpy vs pandas/polars, batch notes, tips. - `API Stability `_ — stability tiers, versioning, and deprecation policy. - :doc:`support_matrix` — parity status, tested wheel targets, supported Python versions, and experimental modules. - `Rust-First Policy `_ — all compute logic belongs in Rust; how to add new indicators. - `Out-of-Core Execution `_ — chunked processing and Dask integration. - :doc:`derivatives` — IV helpers, options pricing/Greeks/IV, futures analytics, strategy schemas, and payoff helpers. - :doc:`adjacent_tooling` — optional surfaces such as derivatives, MCP, WASM, GPU, plugins, and agent-oriented integrations. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`