Skip to main content

time-series-ai999x — offline, verified time series solver with step-by-step answers

Install · Capability guide · Evaluation · AI999X on Hugging Face · Website · Support: Buy Me a Coffee

License: Apache-2.0 · Author: Ibnul Jaif Farabi (creator and engineer) · Organization: AI999X · Version 1.0.3

Field: Mathematics & Statistics · Tasks: Question Answering, Token Classification, Text Classification, Time Series Forecasting, Sentence Similarity, Feature Extraction

time-series-ai999x is an offline, deterministic Python solver that answers time series questions with verified results from 77 certified capabilities, gives 403 documented answers identically on Windows and Linux, and refuses rather than guesses when an answer cannot be verified.

time-series-ai999x is a compact, deterministic time series engine for Python. It reads a question in plain English (or a typed call), picks a certified time series capability, computes the answer exactly, checks it, and returns the result with its steps, units, LaTeX and assumptions — or an honest refusal that says what is missing. It runs fully offline on any CPU, needs no GPU, no API key and no internet, and is built to give zero wrong answers: when it is not sure, it refuses instead of guessing.

Buy me a coffee License Python Offline

Highlights

  • Verified, not generated. Every answer is computed by a certified time series capability and checked (substituted back, dimension-checked or compared with an independent computation) before it is returned.
  • Zero wrong answers by design. Seven explicit outcomes — SOLVED, NEEDS_INPUT, AMBIGUOUS, INVALID_INPUT, OUT_OF_SCOPE, UNRECOGNIZED_FORMAT, INTERNAL_ERROR — never a silent guess. Every one of its 403 documented answers is reproduced exactly on every tested platform.
  • Plain-English questions and a guaranteed typed interface. ask() reads documented question forms; solve(capability_id, **inputs) always solves a supported task with valid inputs.
  • Explains itself. Steps, formulas in LaTeX, units, assumptions and the model used, ready for notebooks, tutoring apps and homework checkers.
  • Small and portable. Pure Python (sympy, mpmath); identical answers on Windows and Linux (Python 3.10, 3.11, 3.12, 3.13, 3.14).
  • Coverage: moving averages, exponential smoothing and Holt-Winters, autocorrelation, ARIMA basics, stationarity tests, change points, forecast accuracy and Kalman filtering.

Model overview

Property Value
Package time-series-ai999x 1.0.3 (import time_series_ai999x)
Type Deterministic neuro-symbolic time series engine (rule-based reading + certified symbolic capabilities)
Capabilities 77 certified procedures
Knowledge pack version 1.0.0
Golden answers 403 documented answers, identical on every tested platform
Platforms tested Windows (Python 3.13), Linux x86-64 (Python 3.10, 3.11, 3.12, 3.13, 3.14)
Runtime CPU only, offline; no GPU, no network, no API key
License Apache-2.0
Creator / engineer Ibnul Jaif Farabi
Organization AI999X

Quickstart

pip install time-series-ai999x
import time_series_ai999x as time_series

time_series.ask("Find the 3-period simple moving average of [10, 12, 14, 13, 15].").show()
# -> SOLVED — sma = [12.0, 13.0, 14.0], last = 14, count = 3  (simple_moving_average)
time_series.ask("Apply Holt's linear trend method with alpha = 0.5 and beta = 0.3 to [10, 12, 15, 16, 19, 21].").show()
# -> SOLVED — forecast = 22.6533, level = 20.6553, trend = 1.99795, sse = 7.49276  (holt_linear_trend)
time_series.ask("Perform the Ljung-Box test with 3 lags on [4, 6, 5, 8, 7, 9, 8, 10, 9, 12, 11, 13].").show()
# -> SOLVED — q = 9.3191, p_value = 0.0253358, df = 3  (ljung_box_test)
time_series.ask("Find the MAPE for actual values [10, 12, 14, 13] and forecasts [11, 12, 13, 15].").show()
# -> SOLVED — mape = 8.13187, n = 4  (mean_absolute_percentage_error)
time_series.solve("kalman_filter_local_level", x="10.4, 11.1, 10.7, 11.9, 12.3", q=0.5, r=2, m0=10, p0=5).show()
# -> SOLVED — estimate = 11.6241, variance = 0.79064, gain = 0.39532, estimates = [10.293333333333333, 10.693277310924369, 10.696149217809866, 11.182224215246636, 11.624103148133084]  (kalman_filter_local_level)
time_series.ask("Who created you?").message
# -> time-series-ai999x was created and engineered by Ibnul Jaif Farabi at AI999X.

Command line: time-series-ai999x "<question>", time-series-ai999x --capabilities. The outputs above were produced by running this exact code on time-series-ai999x 1.0.3.

Find the right capability, and draw it

time_series.search() finds which certified capability a question is about — across every AI999X model, so a question for another model points you to it. It runs ai999x-encoder, AI999X's own capability encoder (4.7M parameters, a 4.9 MB ONNX model, offline; the root model.safetensors of this repository): pip install "time-series-ai999x[search]". ask(question, suggest=True) adds the same pointers to a question it does not answer; an answer itself never changes.

import time_series_ai999x as time_series

time_series.search("Solve x^2 - 5x + 6 = 0", k=2)
# -> Roots of a quadratic equation (math-foundations-ai999x, 0.63); Roots of a cubic equation (math-foundations-ai999x, 0.59)

How every answer is verified

  1. Reading — the question is turned into typed quantities (value, unit, kind, role) and one asked quantity; every stated number must be used or the question is refused.
  2. Planning — only certified capabilities may answer; a capability applies only under the conditions the wording states (for example a pendulum, a liquid at rest, boiling).
  3. Computing — exact symbolic or high-precision numeric evaluation.
  4. Checking — dimensions, substitution back into the defining equation, and agreement between independent readings; any disagreement becomes a refusal, never a number.

Capabilities are certified before they ship: each must reproduce hand-worked reference cases, reject a deliberately wrong variant (a control), and leave every benchmark answer unchanged.

Worked examples

Each question was put to time-series-ai999x; the answer is the one it returned, with the steps it took.

Simple moving average · Moving averages

Find the 3-period simple moving average of [10, 12, 14, 13, 15].

→ sma = [12, 13, 14], last = 14, count = 3

Steps
  • Simple moving average: x = [10, 12, 14, 13, 15], k = 3 → sma = [12, 13, 14], last = 14, count = 3

Holt's linear trend method · Exponential smoothing

Apply Holt's linear trend method with alpha = 0.5 and beta = 0.3 to [10, 12, 15, 16, 19, 21].

→ forecast = 22.65328591, level = 20.65533969, trend = 1.997946219, sse = 7.492761855

Steps
  • Holt's linear trend method: x = [10, 12, 15, 16, 19, 21], alpha = 0.5, beta = 0.3 → forecast = 22.65328591, level = 20.65533969, trend = 1.997946219, sse = 7.492761855

Ljung-Box test · Autocorrelation

Perform the Ljung-Box test with 3 lags on [4, 6, 5, 8, 7, 9, 8, 10, 9, 12, 11, 13].

→ q = 9.319101598, p_value = 0.0253357685, df = 3

Steps
  • Ljung-Box test: x = [4, 6, 5, 8, 7, 9, 8, 10, 9, 12, 11, 13], h = 3 → q = 9.319101598, p_value = 0.0253357685, df = 3

Mean absolute percentage error · Forecast accuracy

Find the MAPE for actual values [10, 12, 14, 13] and forecasts [11, 12, 13, 15].

→ mape = 8.131868132, n = 4

Steps
  • Mean absolute percentage error: y = [10, 12, 14, 13], f = [11, 12, 13, 15] → mape = 8.131868132, n = 4

Kalman filter for a random-walk (local level) model · Kalman filtering

m.solve("kalman_filter_local_level", x="10.4, 11.1, 10.7, 11.9, 12.3", q=0.5, r=2, m0=10, p0=5)

→ estimate = 11.62410315, variance = 0.7906396594, gain = 0.3953198297, estimates = [10.29333333, 10.69327731, 10.69614922, 11.18222422, 11.62410315], log_likelihood = -8.617118062

Steps
  • Kalman filter for a random-walk (local level) model: x = [10.4, 11.1, 10.7, 11.9, 12.3], q = 0.5, r = 2, m0 = 10, p0 = 5 → estimate = 11.62410315, variance = 0.7906396594, gain = 0.3953198297, estimates = [10.29333333, 10.69327731, 10.69614922, 11.18222422, 11.62410315], log_likelihood = -8.617118062

AR(1) forecast towards the mean · ARIMA models

Forecast 3 steps ahead for an AR(1) process with mean 50, phi = 0.7 and last value 58.

→ forecast = 52.744

Steps
  • AR(1) forecast towards the mean: x = 58, phi = 0.7, mu = 50, h = 3 → forecast = 52.744

Figures

Every point was computed by time-series-ai999x.

Seasonal series and three forecasts

Seasonal series and three forecasts — computed by time-series-ai999x

A quarterly series of 12 values (30, 21, 29, 31, 40, 30, 39, 41, 50, 39, 48, 51) and three forecasts for the next 8 periods, each step computed by the package: Holt–Winters additive and multiplicative (m = 4, α = 0.5, β = 0.3, γ = 0.2) and a linear trend with seasonal effects; 8-step forecasts 67.8788, 68.1074 and 69.875.

AR(1) forecast fan reverting to the mean

AR(1) forecast fan reverting to the mean — computed by time-series-ai999x

AR(1) forecasts from the last value x = 58 with φ = 0.7, μ = 50 and innovation variance σ² = 4, 1 to 12 steps ahead, with the 95 % interval the package returns at each step (it widens to [44.6223, 55.5992] at h = 12); marked: h = 3, forecast = 52.744.

Autocorrelation function with its significance band

Autocorrelation function with its significance band — computed by time-series-ai999x

Sample autocorrelations of the series 30, 21, 29, 31, 40, 30, 39, 41, 50, 39, 48, 51 at lags 1 to 6 (0.512567, 0.361929, 0.190263, 0.157039, -0.138822, -0.267831) and the 95 % band ±0.565793 … ±0.789621 from Bartlett's standard errors, all returned by the package.

Kalman filter and smoother against noisy observations

Kalman filter and smoother against noisy observations — computed by time-series-ai999x

A local-level model (state noise q = 0.5, observation noise r = 2, start m₀ = 10, p₀ = 5) run by the package on 12 observations: the filtered level after each observation and the smoothed level from the backward pass; marked: t = 12, filtered level = 13.8669 (variance 0.780786, gain 0.390393).

Two change points and the segment means

Two change points and the segment means — computed by time-series-ai999x

The two change points the package finds in x = 5, 6, 5, 12, 13, 12, 20, 21, 19: after observations 3 and 6, splitting the series into segments with means 5.33333, 12.3333, 20 (total squared error 3.33333).

Where an AR(2) model is stationary

Where an AR(2) model is stationary — computed by time-series-ai999x

Which AR(2) models x_t = φ₁x(t−1) + φ₂x_(t−2) + e_t are stationary: the package's verdict at 1025 points of the (φ₁, φ₂) plane — stationary with real roots (120 points), stationary with complex roots, i.e. damped oscillation (223), or not stationary (682); together they trace the stationarity triangle. Marked: φ₁ = 0.5, φ₂ = 0.3, real roots, largest modulus 0.85208._

Capabilities

77 certified procedures. A few of them:

  • Procedures: AR(1) forecast towards the mean; AR(p) estimation by Yule-Walker; AR(p) estimation by conditional least squares; Augmented Dickey-Fuller statistic; Bartlett standard error of a sample autocorrelation; Best smoothing constant among candidates; Box-Pierce test; CUSUM estimate of a change point; Centred moving average; Compound average growth rate of a series; Damped-trend Holt method; Dickey-Fuller unit-root statistic; Exponential (log-linear) interpolation; Exponential moving average; Exponential smoothing forecast update; Exponential trend fit and forecast; Forecasts of an AR(p) model; Forecasts of an ARIMA(p,1,0) model; Holt's linear trend method; Holt-Winters additive method; Holt-Winters multiplicative method; Invertibility of an MA(2) process; KPSS stationarity statistic; Kalman filter for a constant-velocity model …

time_series_ai999x.templates() lists every question form ask() reads; the capability guide (PDF, every example executed) is included in this repository.

Out of scope

  • Open-ended explanation, essay writing or tutoring dialogue: it is a solver, not a chatbot.
  • Questions outside its certified time series capabilities, and any question whose stated numbers it cannot all use — it refuses with the reason instead.
  • High-stakes engineering, medical or legal decisions without independent review.

Limitations

  • It answers what its certified capabilities cover (moving averages, exponential smoothing and Holt-Winters, autocorrelation, ARIMA basics, stationarity tests, change points, forecast accuracy and Kalman filtering); anything else is refused with a reason.
  • ask() reads documented question forms and common phrasings; unusual wording may be refused — use solve() for guaranteed results.
  • Results are as correct as the certified relations and their stated conditions; a certified relation is a checked model, not a claim about every physical situation.

Citation

@software{time_series_ai999x_1_0_3,
  title  = {time-series-ai999x: an offline, verified time series solver},
  author = {Farabi, Ibnul Jaif}, organization = {AI999X},
  year   = {2026}, version = {1.0.3},
  url    = {https://huggingface.co/AI999X/time-series-ai999x}
}

Contact

Questions, bug reports and requests: open a discussion on https://huggingface.co/AI999X/time-series-ai999x/discussions or visit https://ai999x.com.

Support the project

time-series-ai999x is free and open source. If it helps you, you can support further development on Buy Me a Coffee.

Created and engineered by Ibnul Jaif Farabi · AI999X · ai999x.com

Metadata

Release files for time-series-ai999x 1.0.3

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

Built distribution (wheel)

Table of built distributions (wheels) for time-series-ai999x 1.0.3
File Interpreter ABI Platform Actions
time_series_ai999x-1.0.3-py3-none-any.whl Python 3 none any Details for time_series_ai999x-1.0.3-py3-none-any.whl

Release files / time_series_ai999x-1.0.3-py3-none-any.whl

Download URL time_series_ai999x-1.0.3-py3-none-any.whl
Size 19.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
194201d48044804801881e30e81b3e805121b7a322bcc56edbee157d8687373d
BLAKE2b-256 checksum
How to use checksums
82d65d4ceeac2d0bfe16746211771ab2f21bd63e595a4c083efb7fc913aee40e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Security for time-series-ai999x 1.0.3

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.3 This release

1 release file No provenance

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