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. 139 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 — 139 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.4

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.4
File Size Uploaded
zeon_ta-0.3.4.tar.gz 332.9 kB Details

Built distribution (wheel)

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

Total release size: 476.6 kB

Release files / zeon_ta-0.3.4.tar.gz

Download URL zeon_ta-0.3.4.tar.gz
Size 332.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e6daf8ad19e4ee9ca9ac6e86eb3405d0b8f7c53e3be0623c6d27c3fd31b04f25
BLAKE2b-256 checksum
How to use checksums
a10e4b3096fd30089e3347a0360809b47f3eb3df9508e9a66bb6b4f03478cba4
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 3, 2026.

Transparency log

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

Download URL zeon_ta-0.3.4-py3-none-any.whl
Size 143.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
199f2af92a018c19a02326b2ae92b2793038f8544c3f71bd469123505b7d8df0
BLAKE2b-256 checksum
How to use checksums
09a3c8d6361cea0d71634c73168e8206afcced00088c9204a6961989f11b1567
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 3, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

This release

0.3.4 This release

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