Skip to main content

zeon-ta

CI PyPI 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. 145 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

pip install zeon-ta

Or install the latest commit straight from GitHub, ahead of the next release:

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 — 145 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.

Roadmap

No fixed release calendar — see ROADMAP.md for the current direction (more indicator sources, an optional acceleration path, backtest-engine integration examples) and what's deliberately out of scope.

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.

Metadata

Release files for zeon-ta 0.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zeon-ta 0.3.6
File Size Uploaded
zeon_ta-0.3.6.tar.gz 351.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zeon-ta 0.3.6
File Interpreter ABI Platform
zeon_ta-0.3.6-py3-none-any.whl Python 3 none any Details

Total release size: 502.4 kB

Release files / zeon_ta-0.3.6.tar.gz

Download URL zeon_ta-0.3.6.tar.gz
Size 351.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e14a56c21b93d1435e28fb7632c50b3bd1feaa93513b5b75632e8e2b00d8abcc
BLAKE2b-256 checksum
How to use checksums
b502a8f0b31f0faf92366d5e6419071647b10b247b23f6182249287c0d7a0ddd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / zeon_ta-0.3.6-py3-none-any.whl

Download URL zeon_ta-0.3.6-py3-none-any.whl
Size 150.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec22bf539ed73aece0b4641abdcf84469f96f0593120554c46927355158f313f
BLAKE2b-256 checksum
How to use checksums
41e612438116aa4e34e76c1638cbc4e0c7a6e32b86cba587140a05d8b2326de4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.7

2 release files

This release

0.3.6 This release

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release 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