By Ian Hargreaves · Market intelligence · Lausanne CH Co-movement · Research vintage 2016–2025

Who moves together

Retail demand across Europe, market by market: which demand cycles run together, which run alone, and how much of the togetherness was 2020. A spectrum, not a cluster map · hard clusters are not supported by these data.

Window
2016–2025 · monthly
Markets
33 · IE & SE excluded, short history
Measure
Pairwise trajectory correlation
Uncertainty
Block bootstrap · 95% CI
Vintage
Annual refit · not monthly
Read firstEach market is scored by the median correlation of its retail-volume trajectory with every other market. Fine-grained rank order is noise: read tiers and tails, not positions. The COVID years manufacture co-movement, so the spectrum is shown with and without them.
01Synchronization spectrum · retail volume, year-on-year trajectories
-.25.00.25.50LITHUANIAITALYPORTUGALFRANCESLOVAKIASLOVENIABULGARIACZECHIANETHERLANDSMALTACROATIAHUNGARYPOLANDAUSTRIASPAINSERBIAESTONIAROMANIAGREECESWITZERLANDCYPRUSBELGIUMNORTH MACEDONIAALBANIAGERMANYBOSNIA AND HERZEGO…FINLANDLATVIADENMARKMONTENEGROLUXEMBOURGINDEPENDENTTÜRKIYEBORDERLINENORWAYINDEPENDENT
Full window 2016–2025 Ex-COVID (2020–21 removed) 95% bootstrap CI (full window)

Median pairwise correlation with the other 32 markets · sorted by full window

The reordering is the finding. Removing 2020–21 reorders the spectrum (rank correlation 0.51) and drops the median from 0.41 to 0.28. A meaningful part of the common European retail cycle is the 2020 shock, not a standing structure.

Fell back ex-COVID: Bosnia and Herzegovina 0.26→-0.10 · Spain 0.42→0.06 · Albania 0.30→-0.03 · Cyprus 0.32→0.00. Their apparent synchronization was substantially the shared lockdown collapse.

Rose ex-COVID: Germany 0.29→0.51 · Latvia 0.21→0.39 · Finland 0.24→0.35. Their COVID paths were idiosyncratic and masked real alignment.

Method & caveats →
02Dependably independent
2
markets outside the common cycle in ≥80% of bootstrap resamples
Luxembourg · both windowsP = 0.97
Norway · full window only · ex-COVID 0.24P = 0.88
Türkiye · borderline · both windowsP = 0.79

Everything else sits somewhere on the spectrum, with wide intervals.

02The one stable pair
France–Italy
r = 0.82 · 95% CI [0.65, 0.87] · the only pair whose interval clears 0.50

Candidates that did not survive the bootstrap: ES–IT [0.23, 0.90] · MT–PT [0.40, 0.85] · ES–PT [0.26, 0.88]. Wide intervals, no stable claim.

02Prices do not differentiate
0.94
median synchronization of the price environment · 32 of 33 markets · minimum 0.56 (Türkiye)

Inflation cycles are pan-European: nearly every market shares one price environment. What differentiates markets is almost entirely on the demand side.

Top tierThe most synchronized markets · Lithuania 0.56 · Italy 0.54 · Portugal 0.51 · France 0.51 · membership of this tier is solid; the order inside it is noise.
03Tracking the euro-area aggregate
France
0.88
Italy
0.88
Austria
0.82
Lithuania
0.81
Switzerland
0.76
Spain
0.74
Portugal
0.73
Belgium
0.69
Slovakia
0.68
Czechia
0.67
Bulgaria
0.67
Slovenia
0.65
Netherlands
0.65
Poland
0.64
Estonia
0.64
Greece
0.61
Serbia
0.60
Germany
0.58
Croatia
0.58
Albania
0.57
Cyprus
0.55
Hungary
0.54
Malta
0.54
Romania
0.53
Denmark
0.43
Finland
0.39
North Macedonia
0.38
Latvia
0.37
Bosnia and Herzegovina
0.34
Montenegro
0.16
Türkiye
0.16
Norway
0.10
Luxembourg
0.07

Correlation of each market's retail trajectory with the euro-area total (EA21) · EA21 median vs markets 0.60 · partly mechanical for euro members, whose own data sits inside the aggregate

04Method & caveats

What is measured. For each pair of markets, the correlation of retail-volume trajectories (year-on-year, monthly, 2016–2025). A market's spectrum score is its median correlation with every other market. Aggregates never enter the panel: EA21 pairs with every member partly by construction, so it is shown only as the reference column above.

Why a spectrum and not clusters. We tested for natural groupings. The best split explains little of the variation and its membership does not survive resampling. What the data supports is one weak common cycle, a top tier, a long middle, and a short independent tail. Publishing a cluster map would manufacture structure that is not there.

The COVID problem. 2020–21 hit every market at once, which reads as synchronization. Removing those months reorders the ranking (rank correlation 0.51 between windows) and drops the median pairwise correlation from 0.41 to 0.28. Both windows are shown; claims are made only where they agree.

Uncertainty. Year-on-year trajectories are smooth by construction (adjacent observations share 11 of 12 underlying months), so naive resampling would fake certainty. Intervals come from a moving-block bootstrap (12-month blocks, 500 resamples) that preserves the autocorrelation. The intervals are wide, and that width is the finding: only the claims in module 02 clear it.

What survives. A weak common European retail-demand cycle (median pairwise correlation ~0.28 ex-COVID). Luxembourg (both windows) and Norway (full window only) outside it, with Türkiye borderline. France–Italy as the one stable pair. Price environments that move together almost everywhere, so demand, not prices, differentiates markets. Nothing finer.

Vintage & cadence. This page is a research artifact built on the 2016–2025 window, not part of the monthly data sheet. Correlations over a decade move slowly and refitting monthly would produce label churn without information: the analysis is refit annually or on regime change. The demand ranges on the main sheet are unaffected: this page describes co-movement, it does not predict anything.

New to correlation or co-movement reads? How to read these pages, in plain terms →
© 2026 Ian Hargreaves. A spectrum, not a cluster map · claims limited to what survives the bootstrap ← Retail Demand, Europe · the data sheet
Built 16 July 2026 · Source: Eurostat retail volume (sts_trtu_m), 2016–2025 · Research vintage, refit annually · Correlations describe the past window, they are not forecasts