Methodology

How we go from Eurostat tables to a clean, fast, and transparent live ticker for all EU-27 countries.

TL;DR
  • Source: Eurostat gov_10q_ggdebt (quarterly; S.13, GD, unit MIO_EUR).
  • Keep: the latest two quarters per country (value & reference date).
  • Compute: per-second rate from the difference and seconds between those quarters.
  • Render: within the last two quarters → linear interpolation; after last reference → linear extrapolation.
  • Safeguards: clamp extreme per-second outliers; fall back gracefully if a quarter is missing.
Method last updated: 2025-11-20

Official data source

EU Debt Map uses Eurostat’s quarterly dataset gov_10q_ggdebt (general government gross debt under the Maastricht definition).

Open API (JSON)Dataset pageAbout the project

Selection filters

freq
Q (quarterly)
sector
S13 (general government)
na_item
GD (gross debt)
unit
MIO_EUR (we convert to euro × 1,000,000)
geo
EU-27 member states (Eurostat uses EL for Greece)

Transformation & storage

We fetch once per build and derive a tiny per-country record. That keeps pages fast and the method auditable.

Step 1
Read JSON → filter to EU-27 and required keys.
Step 2
Values in MIO_EUR → multiply by 1,000,000 (euro).
Step 3
For each country keep the latest two quarters (value + ISO reference date).
Step 4
Compute per-second rate = Δ(value) / Δ(seconds). Clamp outliers.
Why only two quarters?
For a live directional signal we only need the most recent trend. This keeps the UI predictable, avoids hidden model assumptions, and makes verification easy.

Live ticker: interpolation & extrapolation

Inside the range of the last two reference dates we linearly interpolate. After the most recent reference date we linearly extrapolate using the per-second rate.

Pseudocode
rate_per_second = (last_value_eur - prev_value_eur) / (last_ts - prev_ts)

estimate(now) =
  if now <= last_ts:
    prev_value_eur + (last_value_eur - prev_value_eur) * ((now - prev_ts) / (last_ts - prev_ts))
  else:
    last_value_eur + rate_per_second * (now - last_ts)

// safeguards
if abs(rate_per_second) > MAX_ALLOWED_RATE: clamp to MAX_ALLOWED_RATE
if prev quarter missing: show last_value_eur (no ticking)
Important caveats
  • Quarterly data → intra-quarter movement is approximated as linear.
  • If a country misses a prior quarter, we display a flat line until the next release.
  • Minor rounding differences vs. national sources may occur.

Reproducibility

You can reproduce our inputs directly with Eurostat’s API. Below is a minimal example call (English, JSON). Adjust the geo parameters for specific countries.

Example Eurostat API call
https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/gov_10q_ggdebt
  ?lang=EN
  &format=JSON
  &freq=Q
  &sector=S13
  &na_item=GD
  &unit=MIO_EUR
  &geo=FR&geo=DE&geo=IT   // add EU-27 codes as needed

We track all transforms in code and re-fetch on new Eurostat releases so pages regenerate with fresh values.

Related pages

Want the concepts behind the numbers? See What is Government Debt?, visit the interactive EU map, or read our articles & analysis.