Transparent methodology · Human Environmental Comfort Index

How we score environmental comfort.

The Human Environmental Comfort Index (HECI) ranks places on nine components, each scored 0–10 using transparent, evidence-based formulas applied to historical data. The index is deliberately not fully compensatory: HECI = 70% the mean of all nine components + 30% the mean of the worst three. An environment is only as livable as its worst recurring features (Liebig's law of the minimum): a brutal summer or a savage winter cannot be averaged away by a perfect disaster-risk score.

These core components make up the HECI score (0–10, higher = more comfortable).
Thermal Comfort
Air Quality
Wind
Sunlight
Rainfall
Disaster Risk
UV Safety
Day–Night Swing
Seasons

Scoring Components

Thermal Comfort

Based on apparent temperature (feels-like temperature combining air temperature, humidity, wind). We score each day's mean then average the scores, so extremes are penalized rather than hidden in averages. The optimal band on daily means is 14–23°C, anchored to the UTCI no-thermal-stress range (9–26°C): a day whose mean is 14°C typically spans roughly 8–20°C, entirely stress-free. The curve is deliberately asymmetric - heat stress escalates faster than cold at equal distance from the band.

Optimal
14–23°C mean = Score 10
Good
10°C = 7.5 · 26°C = 8
Poor
≤-5°C or ≥35°C = Score 0
Wind

Based on daily maximum wind gusts (ERA5 reanalysis). We score each day's peak gust then average, so persistently windy places score lower than places with the occasional storm. We use gusts rather than sustained wind speed because reanalysis grid cells smooth out coastal wind regimes; gusts track what a windy day actually feels like.

Calm
≤25 km/h gusts = Score 10
Breezy
35–45 km/h = Score 7.5–9
Windy
60 km/h = Score 5
Gale
≥80 km/h = Score 0–2
Air Quality

Based on PM2.5 concentrations converted to US EPA AQI scale, averaged from daily measurements over the data window. Where a live ground monitor exists within 25 km, we use real OpenAQ measurements. To qualify, a station needs at least a year of history and a report within the last 90 days: a station that has gone silent cannot keep scoring a city on the strength of its archive. We check up to ten nearby stations before giving up; only then do we fall back to CAMS atmospheric model data (Open-Meteo AQ). CAMS is unreliable city-by-city (validated against published ground truth it reads some cities at half their true PM2.5 and others at double), so where a city has historical monitor data overlapping the model we correct CAMS by that city's own observed ratio and label it "monitor-corrected". Monitor data is sanity-checked before scoring: days that are physically implausible (negative readings, saturation codes, spikes far beyond anything weather can do) are dropped, and a sensor whose whole record is implausible is rejected in favor of the next station. Each city's page shows which source it uses and the distance to its monitor. Currently 70 of 100 cities score from ground monitors and 30 from the model.

Good
0–50 AQI = Score 8–10
Moderate
51–100 AQI = Score 5–8
Unhealthy
101–150 AQI = Score 3–5
Very Unhealthy
151+ AQI = Score 0–3
Sunlight

Annual solar energy received (global horizontal irradiance, kWh/m² per year, from ERA5 daily shortwave radiation). We deliberately do not use ERA5's sunshine-duration variable: validated against published climatology it overcounts cloudy cities by 40–75% (Dublin reads 2,492 hours against roughly 1,400 actual) while sunny cities read only 5–10% high, which erased the very signal being scored. Radiation is measured physics and matches the global solar atlas within about 10% uniformly.

Sun-drenched
2000+ kWh/m² = Score 10
Mediterranean
1600 kWh/m² = Score 8.5
Grey NW Europe
1000 kWh/m² = Score 5
Subpolar gloom
≤700 kWh/m² = Score 2
Rainfall

Three-part blend: annual volume (40%), how often it rains (40%, days with ≥1mm), and year-to-year reliability (20%, coefficient of variation of annual totals). Volume alone is blind to character: 650mm over 120 grey drizzle days feels nothing like 580mm in 75 afternoon thunderstorms. The frequency term only penalizes rainy-all-the-time regimes; it is capped so rain scarcity is judged by the volume curve alone and a desert can never earn a dryness bonus.

Optimal
600–1400mm = Score 10
Wet but livable
2000–2500mm = Score 6–8
(London, Singapore)
Arid
200mm = Score 4
Extreme
0mm or 5000mm+ = Score 0
Natural Disaster Risk

Four measured sub-hazards from long-window archives, combined as a weighted mean (earthquakes 35%, tropical cyclones 30%, floods 20%, volcanoes 15%). This measures recorded event exposure, not probabilistic geological risk: a fault that has stayed quiet for 50 years scores well even if geologists worry about it, and distant earthquakes beyond 100km are not counted even where soil conditions transmit them.

Earthquakes
USGS, 50 years of M4.5+ within 100km, magnitude-weighted annual rate
Tropical cyclones
NOAA IBTrACS, 45 years of storm tracks within 150km, intensity-weighted (Manila: 98 passes)
Floods
GloFAS river discharge extremes (~30y) plus days of 100mm+ rainfall (30y)
Volcanoes
Smithsonian GVP Holocene volcanoes within 100km, weighted by eruption recency and distance
UV Safety

Daily maximum UV index, scored per day then averaged. Only hazardous peaks are penalized; low UV is not (sun exposure is rewarded by the Sunlight component; this one measures skin safety). UV ≤5 (moderate) scores 10; extreme equatorial or high-altitude UV (11+) approaches 0.

Day–Night Swing

The daily gap between maximum and minimum temperature, scored per day then averaged. On comfortable days, mild swings (≤12°C) score 10 and desert-style whiplash (25–30°C between noon and 3am) drops toward 0. On hot days (mean feels-like ≥26°C) the logic inverts: a small swing is not "pleasant stability", it is a night that never cools, so hot days score the swing as nighttime relief(bigger is better, capped at 8). Humid-tropical cities no longer earn a 10 for sweltering monotony.

Seasons

Seasonal amplitude: the gap between the warmest and coldest month's average temperature, scored on a “Goldilocks” curve. Distinct but gentle seasons (6–14°C amplitude) score 10. Eternal sameness (Medellín) scores 7: pleasant, but monotonous. Brutal continental swings (30°C+) score 2–3. Amplitude alone cannot tell 15→26°C (perfect seasons) from 20→31°C (hot to hotter), so the score is capped when many months average above 27°C: four or more hot months cap it at 6, seven or more at 4. Having seasons is a feature; having them all be hot is not.

Comfort Classes

Each place earns a class from its HECI score. The bands are round numbers on purpose: transparent cut-points, not thresholds tuned to the distribution. Class A is deliberately exclusive - under the current index, no city on Earth qualifies. The Goldilocks Zone is waiting for its first resident.

A
Goldilocks Zone
HECI 9.0 - 10
B
Seasonal Sweet Spot
HECI 8.0 - 8.9
C
Fair Comfort
HECI 7.0 - 7.9
D
Marginal
HECI 5.0 - 6.9
E
Harsh
HECI below 5.0

Data Sources

Open-Meteo

Weather (apparent temperature, sunshine, precipitation, wind gusts) via ERA5 reanalysis.

OpenAQ

Real ground-monitor PM2.5, used where a live station with sufficient history exists nearby.

CAMS (Open-Meteo AQ)

Atmospheric model PM2.5, the fallback where no live ground monitor exists.

USGS

Earthquake monitoring data (magnitude 4.5+).

NOAA IBTrACS

Global tropical-cyclone track archive, 45 years of storm passes.

Smithsonian GVP

Holocene volcano catalogue: proximity and eruption recency.

GloFAS (Copernicus)

Global river-discharge history for riverine flood exposure.

Validation Results

The model, measured: CAMS vs. 69 ground monitors

Since our air-quality scores fall back to the CAMS atmospheric model where no live monitor exists, we tested the model itself. For 69 cities we hold both a qualifying ground monitor and the full CAMS series (2022 onward). Matching them day for day, on each city's local calendar and with implausible sensor days excluded, gives 65,826 matched days of model-vs-reality comparison (July 2026).

17/69
cities where CAMS lands within 10% of the monitor's long-run PM2.5
21/69
cities where the model is off by more than 1.5x, in either direction
3.0x
worst over-read: Tokyo measures 9 µg/m³, CAMS models 27
2.0x
worst under-read: Marrakech measures 21 µg/m³, CAMS models 10.5

The errors are large but not random: each city's bias is a stable local property. Splitting every city's record in half, the bias measured in the first half strongly predicts the second (correlation 0.82; 59 of 69 cities stay on the same side of the truth). That stability is what makes our "monitor-corrected" approach sound: where a city has monitor history overlapping the model, scaling CAMS by that city's own observed ratio removes most of the error. It is also why we refuse to present raw model output as measurement: cities scored from uncorrected CAMS are labeled as such, and their true PM2.5 could plausibly sit anywhere within the error band above.

The scoring system has been validated against real-world climate expectations:

Hot climates
Baghdad (5.9), Dubai (5.8), Cairo (6.1)
Appropriately penalized for extreme heat
Temperate climates
Lisbon (8.4), Perth (8.6), Curitiba (8.4)
Highest scores
Wet climates
Vancouver (7.7), London (7.7)
Realistic scores despite high rainfall
Windy cities
Wind scores: Wellington (3.1), Cape Town (4.3)
Persistent gales lower comfort scores
Polluted cities
Air scores: New Delhi (3.3), Beijing (5.2)
Penalized for poor air quality

Technical Implementation

1
Scoring curves
HECI uses piecewise linear interpolation for smooth, explainable scoring curves.
2
Historical data
The system processes ~10 years of historical data per location and updates daily.
3
Open and reproducible
All scoring functions and data sources are open and reproducible.
Sources:Open‑MeteoOpen‑Meteo AQUSGS EarthquakesNASA EONETLast updated: July 2026