# Methods — Europe’s Flights Came Back. The Old Hub Map Did Not.

## Question

The analysis asks whether the recovery of European commercial flight movements implies that the pre-pandemic hub system has recovered, and what public evidence can establish about a possible shift toward direct links between non-hub airports.

The work is descriptive. No causal aircraft effect, forecast or scenario is estimated.

## Scope and units

Three evidence families are kept separate:

1. **Commercial flight movements:** Eurostat tables based on Eurocontrol Instrument Flight Rules data. One movement is one take-off or landing. The European Union annual total covers EU-27.
2. **Airport connectivity:** SEO Amsterdam Economics NetScan measures distributed with the ACI Europe 2025 report. The annex contains 476 European airports. Direct, indirect, airport and hub connectivity are weighted indices, not movement or passenger counts.
3. **Passenger capacity:** Eurostat `avia_tf_aca` annual flight-stage data for ten selected reporting airports, covering passenger flights, available seats and passengers on board.

The movement and connectivity datasets have different European geographies and different statistical concepts. Figure 1 contrasts their recovery indices; it does not merge their observations or imply an identical denominator.

## Index convention

Every recovery index uses 2019 = 100 for the same underlying measure:

\[
I_{2025} = 100 \times \frac{x_{2025}}{x_{2019}}.
\]

Thus, an index of 98 means that the measured 2025 level reached 98% of its 2019 level. It does not mean that 98% of flights returned or that 98% of passengers travelled.

ACI/SEO percentage changes are converted to indices by `100 × (1 + change)`. Published 2025 scores and percentage changes are retained; reconstructed 2019 score levels are clearly labelled derived.

## Acquisition

### Eurostat

`04_research/code/acquire_eurostat.sh` retrieves frozen JSON-stat responses from the Eurostat dissemination API:

- `avia_tf_cm`: EU-27 monthly commercial flights, January 2019 to December 2025;
- `avia_tf_airpm`: all reporting airports, calendar 2019 and calendar 2025;
- `avia_tf_aca`: annual airport-level passenger flights, seats and passengers for ten selected airports, 2019–2025.

The retrieved files and hashes are preserved under `04_research/data/source/eurostat/` and in `sources.csv`.

### ACI Europe / SEO Amsterdam Economics

`04_research/code/acquire_aci_connectivity.py` retrieves the public 2025 annex workbook from the official ACI Europe attachment endpoint. The workbook states that the data are the intellectual property of SEO Amsterdam Economics, provided to ACI Europe, and require the attribution:

> SEO Amsterdam Economics / Airports Council International - Europe (ACI EUROPE)

The raw workbook is not redistributed in the release package. The acquisition script, SHA-256 hash and attributed derived extracts are included.

### Fraport and aircraft evidence boundary

Fraport’s official “About Us” page supplies the approximately 80,000 people / around 500 companies and organisations statement. Airbus’s official A321XLR page verifies the designation. Eurostat and EUROCONTROL documentation are used to describe what model-specific and itinerary evidence is unavailable.

## Transformations

`04_research/code/prepare_eurostat.py` rebuilds the three Eurostat base tables used downstream:

1. Sum monthly EU-27 movement observations to calendar years 2019, 2024 and 2025.
2. Sum airport monthly movements to calendar-year totals for the ten airports named in the Eurostat release.
3. Extract passenger flights, available seats and passengers on board from `avia_tf_aca` for 2019 and 2025.
4. Calculate seats per passenger flight as available seats divided by passenger flights.
5. Calculate implied seat occupancy as passengers on board divided by available seats.

`04_research/code/build_analysis.py` then:

1. validates the ACI/SEO attribution and 476 unique-airport rows;
2. converts published changes versus 2019 into recovery indices;
3. ranks airports by the published 2025 direct-connectivity score;
4. calculates direct-versus-hub change gaps;
5. constructs airport-size and business-model evidence from published report values;
6. joins Eurostat movement and capacity evidence to the connectivity annex where airport codes match;
7. exports one exact-value CSV for every figure.

No smoothing, imputation, forecast or causal model is used. Athens is excluded from seat-based comparisons where 2019 available-seat data are not reported.

## Airline-business-model denominator

ACI Europe Chart 20 reports 2019–2025 changes in **all direct connectivity** by airline business model: low-cost carriers +19%, full-service carriers −15%, all carriers −5%.

The report’s 32%→39% low-cost share refers to **intra-European direct connectivity**. The exact-value table labels the different universe. The share is not used to calculate the Chart 20 changes, and the Chart 18 intra-European score series is retained only as an audit extract.

## Validation and reconciliation

The build stops if any of the following checks fail:

- 476 unique airports and complete direct-connectivity fields in the ACI annex;
- 6,905,681 EU commercial flight movements in 2025;
- EU movement recovery of 97.97 when 2019 equals 100;
- Istanbul ranks first by the published 2025 direct-connectivity score;
- Frankfurt direct change equals −11% and hub change equals −21%;
- Frankfurt passenger-flight change equals −11.7%;
- passenger and seat component identities reconcile within each Eurostat airport extract;
- all seven chart-plan records pass the strict Schym chart validator.

The source metadata file records 240 airports with a published 2019–2025 hub-connectivity comparison. All 476 have direct-connectivity values.

## Aircraft-causality boundary

The public data reviewed on 30 August 2026 do not identify the causal effect of the A220 or A321XLR:

- Eurostat’s aircraft taxonomy does not isolate the A220 cleanly;
- A321 variants are not separated sufficiently to identify A321XLR operations;
- public airport-pair data available in the reviewed tables stop at 2024;
- segment schedules do not identify each passenger’s connecting airport.

A credible causal design would require model-specific schedules or registrations, route openings, passenger itineraries and controls for demand, airline strategy, airport constraints and aircraft availability. Commercial schedule and booking sources could support that extension.

## Personal-observation boundary

The author’s same-day Frankfurt travel and security experience is used only as a labelled personal observation. “World-class” is not treated as an airport-performance statistic and is not used to validate any quantitative claim.

## Reproduction

From the package root:

```bash
bash 04_research/code/acquire_eurostat.sh
python3 04_research/code/prepare_eurostat.py
python3 04_research/code/acquire_aci_connectivity.py --output /tmp/aci-connectivity-annex-2025.xlsx
python3 04_research/code/build_analysis.py --aci-workbook /tmp/aci-connectivity-annex-2025.xlsx
python3 04_research/code/render_figures.py
python3 04_research/code/build_html.py
python3 04_research/code/render_social_assets.py
```

The editable carousel is built separately with the bundled presentation runtime; the PDF and page PNGs are derived from that one source.

## Reuse

Eurostat data are redistributed with acknowledgement under the stated European Commission reuse framework. ACI/SEO material remains subject to its workbook disclaimer; only the attributed derived evidence required to audit the publication is included. No ACI, Fraport, Airbus or Eurostat logo is used.
