Obscura

ECB Series

European Central Bank Data Portal series, retrieved by series key.

ecb_series — the dataset name to pass to the Obscura API.

Category Macro Columns 7 Refresh Weekly Entity key series Point-in-time available_date

What one row means

One ECB Data Portal SDMX observation for one configured series on one date: the fixed value of a named macro/FX series (e.g. the eur_usd daily reference rate) as of a single observation period, pulled from the keyless SDMX-JSON API at data-api.ecb.europa.eu/service/data/{flow}/{key}. Long format — one row per (series, date), not one row per series with wide date columns.

One row per (series, available_date).

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For ecb_series: published: available_date = the SDMX TIME_PERIOD normalized to a date. This is sound ONLY for the EXR dataflow (the daily euro FX reference rates), where the period IS the same-day publication date, so the collector REFUSES any other flow (`tasks::ecb::ensure_supported_flow`). Every other ECB flow reports a reference PERIOD released weeks later — a monthly one would land the reference month here, 5-7 weeks before publication — and must get its own dataset with a declared ReleaseCalendar lag rather than a line in this one's series list.

Refresh cadence

Obscura refreshes ecb_series weekly — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 7 columns

The full public column list for ecb_series, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/ecb_series.

ColumnTypeDescription
seriestext · not nullConfigured series label from EcbSeriesSpec.name, e.g. "eur_usd", "eur_gbp", "eur_jpy" (schedules/prod/macro_global.yaml). Primary-key part 1; the stable handle consumers query on — not an SDMX identifier itself, just the operator-chosen name for one flow+key pair.
available_datedate · not nullThe SDMX TIME_PERIOD for this observation, normalized to a date (a month-only period like "2026-06" becomes the first of the month). Primary-key part 2. For the currently configured all-daily EXR series this equals both the FX fixing date and its public-availability date.
valuedouble precisionThe observation's numeric value. For the configured EXR series this is the ECB reference exchange rate (foreign-currency-per-EUR). Nullable — an SDMX observation with an absent/non-numeric value still upserts.
flow_keytextSDMX flow/key pair the row was pulled from, formatted "{flow}/{key}", e.g. "EXR/D.USD.EUR.SP00.A" — the source reference for re-deriving the exact ECB API endpoint queried.
obs_statustextPer-observation SDMX OBS_STATUS code — the data-quality flag on this single observation: "A" Normal, "E" Estimated, "P" Provisional, "M" Missing, etc. Resolved from element [1] of the observation array (raw `attributes.observation[].OBS_STATUS`); NULL when the source omits the status attribute. Distinguishes a real vs. estimated `value`.
unittextSeries-level SDMX UNIT — the unit of measure of `value` (e.g. "USD" for the configured EXR series; an index base, percent, or "EUR" for other macro flows). Raw `attributes.series[].UNIT`. Constant per series and carried onto every observation so a non-EXR value stays interpretable.
unit_multbigintSeries-level SDMX UNIT_MULT — the base-10 scale exponent applied to `value` (0 = units, 3 = thousands, 6 = millions). Raw `attributes.series[].UNIT_MULT`. Constant per series. NULL if absent.

Access ecb_series

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="ecb_series",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the ecb_series dataset?

European Central Bank Data Portal series, retrieved by series key. One ECB Data Portal SDMX observation for one configured series on one date: the fixed value of a named macro/FX series (e.g. the eur_usd daily reference rate) as of a single observation period, pulled from the keyless SDMX-JSON API at data-api.ecb.europa.eu/service/data/{flow}/{key}. Long format — one row per (series, date), not one row per series with wide date columns.

How do I avoid look-ahead bias with ecb_series?

Filter on ecb_series.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = the SDMX TIME_PERIOD normalized to a date. This is sound ONLY for the EXR dataflow (the daily euro FX reference rates), where the period IS the same-day publication date, so the collector REFUSES any other flow (`tasks::ecb::ensure_supported_flow`). Every other ECB flow reports a reference PERIOD released weeks later — a monthly one would land the reference month here, 5-7 weeks before publication — and must get its own dataset with a declared ReleaseCalendar lag rather than a line in this one's series list. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get ecb_series?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="ecb_series". The column schema is public at https://api.obscura.trade/v1/catalog/ecb_series.

Can I filter ecb_series by company or symbol?

Yes. ecb_series carries series, the column the API's symbols filter resolves against.

How often is ecb_series updated?

Obscura refreshes ecb_series on a weekly schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

BLS SeriesEconomic series from the U.S. Bureau of Labor Statistics, fetched by series ID: employment, unemployment, CPI, PPI, wage… Comtrade FlowsAnnual bilateral goods-trade totals between countries, from UN Comtrade. FRED SeriesSeries from the Federal Reserve's FRED database by series ID — rates, prices, output, employment and more — as a point-i… IMF IndicatorsCountry-level macro indicators from the IMF's DataMapper. ONS SeriesUK macroeconomic series from the Office for National Statistics. Policy RatesThe policy interest rate set by each currency's monetary authority, on every calendar day back to 1946 — twenty currenci… Treasury Average RatesAverage interest rates the U.S. Treasury pays on its outstanding debt, by security type. Treasury DebtTotal U.S. public debt outstanding, updated daily ('debt to the penny').