Skip to main content

tsanomaly

A Python library for autonomous, explainable, real-time anomaly detection on time-series metrics.

pip install tsanomaly

Why tsanomaly

  • Zero configuration - seasonality, model choice, and the expected-range "envelope" are learned per metric.
  • Calibrated - envelope coverage is enforced by adaptive conformal inference; tail rarity comes from extreme value theory, not Gaussian assumptions.
  • Comparable scores - magnitude × duration × persistence, judged against the metric's own history: a 90 means the same rarity on any metric.
  • Regime-aware - a permanent level shift becomes one "new normal" finding and a re-anchored baseline, not endless alerts.
  • Incidents - concurrent anomalies group into one finding, ordered by who moved first: the root-cause hint.
  • Real-time - O(1) streaming updates, out-of-order tolerance, alert lifecycle with pluggable sinks, stall detection, checkpoint/restore.
  • Explainable - every anomaly carries its expected range, score breakdown, provenance, and a counterfactual.

Quickstart

import pandas as pd
import tsanomaly as tsa

# any long frame with metric / timestamp / value columns
history = pd.read_csv("payments.csv", parse_dates=["ts"])

det = tsa.Detector.auto()
det.fit(history)                      # learn normal, per metric
result = det.detect(new_data)         # scored, explained anomalies

print(result.summary())
for anomaly in result.alerts(min_score=70):
    print(anomaly.explain().to_text())

Output (NYC taxi ridership around the January 2015 blizzard):

learned seasonality: day (strength 0.67), week (strength 0.84)

`nyc.taxi.passengers` dropped to 7076 (expected 18060 to 25606)
    for 33.0 h starting 2014-11-27 05:30 UTC - score 100.   # Thanksgiving
`nyc.taxi.passengers` spiked to 23848 (expected 15488 to 19792)
    for 6.0 h starting 2015-01-18 09:30 UTC - score 100.    # MLK weekend
`nyc.taxi.passengers` dropped to 570 (expected 15629 to 22110)
    for 39.0 h starting 2015-01-26 11:30 UTC - score 100.   # blizzard travel ban
quickstart: NYC taxi ridership with detected anomalies

Examples

CNC mill vibration with the two Bosch-labeled bad cycles flagged

Documentation

  • Usage guide - data formats, batch & streaming APIs, configuration, persistence, incidents, events, feedback, evaluation utilities.
  • Architecture - the full pipeline.
  • Examples

How it works

the tsanomaly pipeline

For more details, refer to docs/architecture.md.

Acknowledgements

The architecture of tsanomaly - autonomous per-metric baselines, anomaly scoring against a metric's own history, automatic seasonality detection, and condensing concurrent anomalies into incidents - is inspired by the system described in Anodot's published patents:

tsanomaly borrows the ideas and implements them with different, modern mechanisms - adaptive conformal calibration, extreme-value tail modeling, Bayesian online changepoint detection, harmonic-mean evidence combination, and effective-signal correction - detailed in docs/architecture.md.

License

Apache-2.0

Download files

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

Source Distribution

tsanomaly-0.2.0.tar.gz (69.8 kB view details)

Uploaded Source

Built Distribution

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

tsanomaly-0.2.0-py3-none-any.whl (74.1 kB view details)

Uploaded Python 3

File details

Details for the file tsanomaly-0.2.0.tar.gz.

File metadata

  • Download URL: tsanomaly-0.2.0.tar.gz
  • Upload date:
  • Size: 69.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for tsanomaly-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4bbf3f6d0e9ddc7d1c9857d99ef178e469af21fa47a159c88d45c34e7727e4d1
MD5 3b8459dd9d7e75505295fa879240ed91
BLAKE2b-256 87acb85323da645883eeff60b156f88bd4679226fe1066e04799e1696cd33541

See more details on using hashes here.

Provenance

The following attestation bundles were made for tsanomaly-0.2.0.tar.gz:

Publisher: release.yml on visakhunnikrishnan/tsanomaly

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

File details

Details for the file tsanomaly-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: tsanomaly-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 74.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for tsanomaly-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 debb911d9ea94cc6ef307909f1e66d217e7962410c0117b5ad8422f7c12fcb41
MD5 02d6d92ef773e08d408d0d7e45108fce
BLAKE2b-256 297b27b50bbaca72dd140e290add5e447c229ef9ea4a43f5dacdedd6cf0ebd15

See more details on using hashes here.

Provenance

The following attestation bundles were made for tsanomaly-0.2.0-py3-none-any.whl:

Publisher: release.yml on visakhunnikrishnan/tsanomaly

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

Release history Release notifications | RSS feed

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

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