Madjik API documentation

Data provenance

How to read provenance labels, and why gaps are honest.

Every historical point served by the API carries a provenance label. This is house doctrine: you should always be able to tell how a number came to exist before you trust it, trade on it, or train on it.

The labels

LabelMeaning
liveComputed at the time from data available at the time. The gold standard.
backfill_recomputedThe same formula re-run later on historical raw data. Deterministic; no model judgment involved.
backfill_approximateReconstructed from approximate or coarser historical sources. Directionally faithful, not exact.
backfill_model_retroAI metrics only: model retrodiction under a blind, no-dates protocol. Hindsight leakage is minimized by construction but cannot be fully excluded — treat these points accordingly.
forecastA model-projected future value. Never an observation; never treat it as one.

Absent data is absent on purpose

Where we cannot compute an honest value, the API returns nothing for that point, variant or horizon — it does not interpolate, pad or invent. Concretely:

  • A forecast variant (next24h/next7d/next30d) is published only where the model beat a naive no-change baseline in out-of-sample backtesting. Where it did not, the variant is deliberately absent rather than fabricated.
  • A dormant metric (e.g. one whose 14-day data baseline is still maturing) serves no values at all until it can serve honest ones, and is hidden from the catalog unless you ask with include_stale=true.
  • Gaps in a time series are real gaps in what we could compute, not missing rows to forward-fill silently.

If you need continuous series for modeling, fill gaps yourself, explicitly, in your own pipeline — then you know which points are yours.

Forecast accountability

Forecast models are retrained weekly; realized forecast accuracy is tracked continuously and errors are retained, not overwritten. Forecasts are statistical projections, not predictions of actual outcomes, and are not investment advice.

Freshness

Every metric has a freshness SLA. Whether each metric is currently inside it is public: status page (human) and GET /v1/status (JSON, no auth). Payloads also carry a per-metric fresh flag.