In 2020, as governments imposed lockdowns, economists scrambled for real-time indicators. Official GDP figures come with a 6-week lag. PMI surveys miss the first week of a shock. But satellite-derived NO₂ data from Copernicus CAMS dropped instantly — and tracked the economic collapse and recovery almost hour by hour.
Hedge funds and macro desks have quietly known this for years. NO₂ — nitrogen dioxide — is primarily emitted by combustion: trucks, factories, power plants, aircraft. Where there is economic activity, there is NO₂. Where there isn't, there isn't.
The COVID natural experiment
The 2020 lockdowns provided the cleanest economic experiment in modern history: an abrupt, enforced halt to transport and industry across dozens of countries simultaneously. CAMS reanalysis data shows the signal clearly.
The contrast across cities is striking. Madrid saw the sharpest drop (−42%) — Spain imposed one of the strictest total lockdowns in Europe, halting nearly all non-essential industry. Milan followed at −35%, consistent with Italy's early hard shutdown of the Po Valley industrial corridor. Paris fell −34%; London, which maintained more essential activity, dropped −25%. Warsaw is the outlier: NO₂ barely moved (+4%) during March–April 2020 compared to 2019. Poland's lockdown was lighter and later, and a cold spring meant continued coal-fired residential heating. This isn't noise — Warsaw's result directly confirms what NO₂ measures: actual combustion activity, not just mobility. Where restrictions didn't cut industrial output, NO₂ didn't fall.
The recovery signal
Equally valuable is the recovery: NO₂ rebounded as lockdowns lifted, with a distinct pattern between countries with V-shaped vs. L-shaped recoveries. The chart below shows weekly mean NO₂ for Paris through 2020, alongside the IHS Markit France PMI.
The correlation is striking: NO₂ leads PMI by approximately 1–2 weeks during both the collapse and the recovery. By the time the April PMI print came in at 31.5 — a historical low — the NO₂ data had already been showing the same depth of contraction for three weeks.
Ten-year trend: structural shift or cyclical noise?
Looking beyond 2020, the longer-term NO₂ trend across European cities tells a more complex story about the energy transition, deindustrialisation, and vehicle fleet composition.
Three structural observations emerge from a decade of data:
- Paris and London show a consistent downward trend — Paris at −0.78 µg/m³/year, London at −0.49 µg/m³/year (OLS via
aggregate="trend") — driven by the Euro 6 vehicle transition, natural gas replacing coal in power, and long-run deindustrialisation of city cores. - Warsaw shows a fundamentally different pattern — NO₂ rose from 13.4 µg/m³ in 2013 to a peak of 20.4 µg/m³ in 2015, before partially recovering to 13.6 in 2024. The net OLS trend is nearly flat (+0.08 µg/m³/year), unlike the structural decline in Western Europe. Coal-fired residential heating and slower EV adoption set Central European cities apart.
- 2020 is a permanent reset, not just a dip. Post-COVID levels in Paris and London did not recover to 2019 peaks — remote work, reduced commuting, and accelerated EV adoption locked in a lower baseline.
The investment signal
How does this translate into actionable intelligence for investors?
| Strategy | Signal | Lag vs. official data | Asset class |
|---|---|---|---|
| Industrial activity tracking | Weekly NO₂ change in manufacturing corridors | 4–6 weeks faster than PMI | Equities, FX, rates |
| Supply chain disruption | NO₂ drop in port / logistics zones | Near real-time | Shipping, commodities |
| Real estate risk pricing | 10-year mean NO₂ at asset location | — | CRE, RMBS, green bonds |
| ESG portfolio scoring | Portfolio-weighted site-level exposure | — | Equity, fixed income |
| Energy transition monitoring | Year-on-year NO₂ trend in target regions | 3–4 months vs. agency stats | Carbon credits, utilities |
Quantifying the edge
The value of alternative data is usually measured in days of lead time. For NO₂:
A 4-day lag versus a 23-day lag is a significant edge in fast-moving markets. For macro funds trading European rate volatility around data releases, knowing the industrial pulse three weeks early is not just interesting — it's potentially alpha-generating.
Getting the data
All the analysis above can be replicated with the Jiskta Python SDK in a few lines.
For cities where an OSM administrative boundary is indexed, the area=
parameter is the cleanest approach — no manual bbox needed:
from jiskta import JisktaClient
import pandas as pd
client = JisktaClient("your_key")
# Monthly series via OSM administrative boundary
df = client.query(
area="paris", # resolves OSM boundary automatically
start="2013-01", end="2024-12",
variables=["no2"],
aggregate="area_monthly", # one row per month, area-averaged
)
# df: year_month, no2_mean — 144 rows, returned in ~180ms
# For London (use bbox until Greater London is in the OSM index)
df_london = client.query(
lat=(51.3, 51.7), lon=(-0.5, 0.3),
start="2013-01", end="2024-12",
variables=["no2"],
aggregate="area_monthly",
)
# OLS trend — one call, zero manual calculation
trend = client.query(
area="paris",
start="2013-01", end="2024-12",
variables=["no2"],
aggregate="trend",
)
slope = trend["slope"].mean()
r2 = trend["r2"].mean()
print(f"Paris NO₂ trend: {slope:+.3f} µg/m³/yr (R²={r2:.2f})")
# → Paris NO₂ trend: -0.779 µg/m³/yr (R²=0.09)
For multi-city portfolio coverage across an entire decade:
geographic_tiles × months × variables = ~4 × 144 × 1 ≈ 576 credits per city — roughly €0.59 at Starter pricing. A portfolio covering 20 major European cities costs under €12.
Limitations and caveats
NO₂ is not GDP. A few important caveats for any financial application:
- Weather matters. Cold temperatures and atmospheric inversion trap NO₂ near the surface, creating spikes unrelated to economic activity. Always join ERA5 boundary layer height to adjust for meteorology.
- CAMS interim vs. validated data. The 4-day lag applies to interim reanalysis data, which is slightly less accurate than validated reanalysis (available with an 18-month lag). For real-time monitoring, use interim; for long-term trend analysis, use validated.
- Spatial resolution. A 0.1° grid cell (~11 km) covers mixed land use. A manufacturing district and a residential park may be in the same cell. Subsetting to known industrial zones improves signal quality significantly.
- This is not financial advice. All correlations shown are illustrative. Past correlation between NO₂ and economic indicators does not guarantee future predictive value.
Build your own economic signal
Get 500 free credits on sign-up. Enough to pull a full decade of data for 5 cities.
Start for free →