Skip to main content

zeon-ta

CI Python License

Technical analysis for Python — the widely used classics (RSI, MACD, Bollinger Bands, Ichimoku, and the rest of the standard toolkit) alongside modern, academically-sourced tools most TA libraries skip: Ehlers' cycle-analysis filters, the Hurst exponent, wavelet-based denoising and multi-scale volatility, OHLC volatility estimators standard in quantitative finance (Parkinson, Garman-Klass, Rogers-Satchell, Yang-Zhang), and a causal cross-wavelet lead-lag transform.

Formulas follow standard, widely published technical-analysis definitions where one exists. Where a formula's own academic paper is the source instead, or where a candidate indicator turned out to have no single agreed-on formula across implementations, the docstring says which and why.

Why another TA library

  • Broad on purpose. 127 indicators across 8 categories (moving averages, oscillators, volatility, trend, volume, statistics) — not just the popular dozen.
  • Classic and modern, both formula-verified. Every indicator — whether it is RSI or a MODWT wavelet-variance decomposition — cites what its formula was checked against, and a proposed indicator with no single agreed-on formula across sources is declined outright rather than guessed at (documented in CHANGELOG.md either way).
  • No build step. Every dependency ships prebuilt wheels, so pip install just works — everywhere, including on ARM Macs and in slim containers.
  • One contract, every indicator. Pass a Series, an array or a list; get pandas back with your index intact and the same length as your input. Warm-up bars are NaN, never trimmed, so nothing silently shifts under a backtest.
  • Two ways to call it. A functional API and a .zta DataFrame accessor that routes to the exact same code — verified equal by tests, not by convention.
  • Documented honestly. Every indicator's page states its pitfalls, including where an output contains look-ahead information and what to do about it.
  • Measured, not assumed, performance. Every indicator is benchmarked at up to 1M bars, with real numbers and methodology in BENCHMARKS.md — most complete in low milliseconds even at that size.

Install

Not on PyPI yet — install straight from GitHub:

pip install git+https://github.com/selimozbas/zeon-ta.git

Or clone and install locally:

git clone https://github.com/selimozbas/zeon-ta.git
cd zeon-ta
pip install .

Requires Python 3.12+.

Quick start

import pandas as pd
import zeonta

df = pd.read_csv('ohlcv.csv', parse_dates=['date']).set_index('date')

# Functional
rsi = zeonta.rsi(df['close'], length=14)
bands = zeonta.bbands(df['close'], length=20, std=2)

# Accessor — identical results
rsi = df.zta.rsi(length=14)
trend = df.zta.supertrend(length=10, multiplier=3)

# Discover everything that is available
print(zeonta.list_indicators())

More in examples/, runnable directly against a committed sample dataset.

Output contract

Input Output
pd.Series Series / DataFrame with the same index
np.ndarray or list Series / DataFrame with a RangeIndex

Single-line indicators return a named Series; multi-line ones return a DataFrame whose column names carry the settings used (RSI_14, MACD_12_26_9, SUPERT_10_3.0). ichimoku additionally returns the part of the cloud that projects past the last bar, rather than discarding it.

Documentation

The full indicator reference — 127 indicators across 8 categories, each with its formula, parameters, worked examples and (where one exists) the external source it was verified against — is published at:

https://selimozbas.github.io/zeon-ta/

It's generated straight from the code and from actually running every example (see tools/gen_docs.py), so it never drifts out of sync with what's installed. Browse it locally under docs/ instead if you'd rather not leave the repo.

zeonta.cross_asset.wavelet_lead_lag(close_a, close_b, period=20) compares two independent price series — which one is leading the other, and by how much, at a chosen timescale — via a causal Morlet Cross-Wavelet Transform (Torrence & Compo, 1998). It isn't in list_indicators() or the .zta accessor: every registered indicator assumes one asset's own OHLCV columns, and a second, independent series doesn't fit that contract. Import and call it directly; see its own docstring for the full method and a documented lag-estimate caveat.

Development

pip install -e ".[dev]"
pytest                      # test suite
ruff check . && mypy src/   # lint and types
python tools/gen_docs.py    # regenerate the docs

Documentation is generated: prose lives in tools/docs_content.py, while parameter tables, column names and example output are taken from the code itself and from actually running each example. A test fails if the committed files drift.

See CONTRIBUTING.md for the full workflow, and docs/methodology.md for how a formula gets verified before it's implemented. This project follows a Code of Conduct; see SECURITY.md to report a vulnerability privately.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zeon_ta-0.3.0.tar.gz (285.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zeon_ta-0.3.0-py3-none-any.whl (124.4 kB view details)

Uploaded Python 3

File details

Details for the file zeon_ta-0.3.0.tar.gz.

File metadata

  • Download URL: zeon_ta-0.3.0.tar.gz
  • Upload date:
  • Size: 285.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zeon_ta-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f31a411eec741a187341148103ccacb3f873252ecd9c9423859087bf22c111f8
MD5 2622b57acc0c9ef4db52c459eedd293c
BLAKE2b-256 516f23fd84557f58d4049abcc7ee60e9e0e733aa482b078db60197734b6c3e59

See more details on using hashes here.

Provenance

The following attestation bundles were made for zeon_ta-0.3.0.tar.gz:

Publisher: publish.yml on selimozbas/zeon-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 zeon_ta-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: zeon_ta-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 124.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for zeon_ta-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a18cefc103c239d8537dfcdb5b661fec8c3e4e367cb7bdf85ece2292b0797e7
MD5 373fc773bcbcd2a204714381411fe8f4
BLAKE2b-256 508ab2c7e6a543745a27159b326aaf9bb7b6e420e0a89e4a480e59c421726e63

See more details on using hashes here.

Provenance

The following attestation bundles were made for zeon_ta-0.3.0-py3-none-any.whl:

Publisher: publish.yml on selimozbas/zeon-ta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page