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
| Label | Meaning |
|---|---|
live | Computed at the time from data available at the time. The gold standard. |
backfill_recomputed | The same formula re-run later on historical raw data. Deterministic; no model judgment involved. |
backfill_approximate | Reconstructed from approximate or coarser historical sources. Directionally faithful, not exact. |
backfill_model_retro | AI 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. |
forecast | A 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.
