房地产市场疯了
The Housing Market Is Nuts

原始链接: https://nuts.logical.li/

本研究主要使用2023年数据(法国为2022年工资),比较西班牙、葡萄牙、法国、意大利和荷兰312个NUTS-3区域的住房可负担性。它以每平方米所需的地区总工资月数衡量住房努力,并辅以抵押贷款模拟(贷款成数90%、利率4%、净工资45%)。数据来自国家统计局、登记机构和Eurostat;使用NUTS-2层级工资回退的数据已标记并排除出回归分析。由于工资和价格概念、tenure结构以及建筑面积定义不同,跨国比较需谨慎。NUTS-3边界为行政区划且不均匀;巴黎与Petite Couronne合并以减少扭曲。分析将住房努力与就业密度和旅游强度关联,采用对数线性模型和双变量模型,并处理异常值。EU-SILC住房成本指标显示差异:计算负担将荷兰排名最高,而主观负担将其排名最低。总体而言,区域住房压力与密度和旅游强相关,但精确的跨国排名应谨慎解读。

一篇 Hacker News 帖子讨论“房地产市场疯了”。评论者指出,就业集中在大城市是根本原因之一,导致需求滚雪球式增长。作者提到住房统计数据存在缺口。其他评论指出抵押贷款会计问题,因为本金还款可能在负担指标中不可见;荷兰人认为住房不可负担,尽管报告的财务负担较低;外国投资与移民增加对理想城市的住房需求;以及严格法规、密度受限和公共交通不足带来的供给约束。有人指责富裕外国人或外来务工人员,也有人强调结构性供给短缺。总体而言,该帖子将住房可负担性描绘为受到集中需求、被低估成本和供给不足的挤压。
相关文章

原文

Geographic unit: NUTS-3 regions (312 across ES, PT, FR, IT, NL).
Housing prices: National statistical offices (INE, INSEE, CBS, ISTAT) and transaction registries.
Wages: National sources (Quadros de Pessoal, AEAT, DADS/INSEE, INPS, CBS) at NUTS-3; Eurostat NUTS-2 fallback for missing regions.
Employment: Eurostat (nama_10r_3empers).
Tourism: Eurostat (tour_occ_nin3).
Housing cost burden: Eurostat EU-SILC (ilc_mded01, ilc_mded04), 2023.
Effort metric: months of gross regional wage per m² of housing (monthly wage = annual salary / 12; note that PT, ES and IT pay 14 salaries).
Mortgage simulation: Annuity formula, 90% LTV, 4% annual interest, 45% of net salary (≈70% of gross). The 10% deposit is not included in the repayment timeline. In high-effort regions, saving that deposit - plus transaction taxes and fees, which are substantial in Spain and Portugal - can itself take years, competing with the repayment period and making the total time to ownership longer than the figures shown.

All data is from 2023 except where noted, using the NUTS 2024 classification and boundaries. Eurostat employment and tourism series for 2023 are already published in NUTS 2024 codes for the five countries in this study. French wages use 2022 (latest available). Regions using Eurostat NUTS-2 fallback wages are flagged and excluded from regression fits. Full data and source code are available in the project repository.

#Source datasets

All source data is publicly available. Eurostat datasets cover the full EU; national sources cover NUTS-3 regions within each country. The Local copy column links to our downloaded snapshot used for this analysis.

DatasetSourceCoverageLocal copy
Employment (all countries) Eurostat - nama_10r_3empers NUTS-3, employed persons (thousands) csv
Land area (all countries) Eurostat - reg_area3 NUTS-3, km² csv
Tourism nights (all countries) Eurostat - tour_occ_nin2 NUTS-3 (NUTS-2 in some countries) csv
Share of housing costs in disposable household income (all countries) Eurostat - ilc_mded01 (EU-SILC) Country level, total households csv
Financial burden of housing cost (all countries) Eurostat - ilc_mded04 (EU-SILC) Country level, total households csv
Housing costs over income, HC 1.2 (all countries) OECD Affordable Housing Database Country level, median mortgage and rent burden xlsx
NUTS-3 boundaries (all countries) Eurostat - GISCO 2024, 1:10M GeoJSON polygons geojson
Housing prices (Portugal) INE - indicator 0012235 NUTS-3, median transaction price per m² csv
Wages (Portugal) MTSS - Quadros de Pessoal NUTS-3, mean monthly earnings (ganho) × 14 csv
Housing prices (Spain) Colegio de Registradores - Portal Estadístico Province, mean transaction price per m² csv
Wages (Spain) AEAT - Mercado de Trabajo (IRPF) Province, mean annual salary csv
Housing prices (France) DGFIP - Demandes de Valeurs Foncières (DVF) Département, median transaction price per m² csv
Wages (France) INSEE - DADS/DSN T401b Département, gross annual salary EQTP (2022) csv
Housing prices (Italy) Agenzia delle Entrate - OMI quotazioni Province, appraised market values per m² csv
Wages (Italy) INPS - Osservatorio lavoratori dipendenti Province, mean gross annual pay csv
Housing prices (Netherlands) CBS - StatLine (Bestaande koopwoningen) COROP, mean transaction price per m² csv
Wages (Netherlands) CBS - StatLine (Regionale rekeningen) COROP, compensation per employee (÷ 1.27) csv

#Derived datasets

The following datasets are produced by the analysis scripts and underpin the charts in this story. Each file can be downloaded for independent verification.

#Why only five countries?

This analysis requires three datasets at NUTS-3 level for every country: housing prices per m², wages, and employment. No single European source publishes all three. Each country must be assembled from national statistical offices, tax authorities and property registries - each with its own methodology, coverage and access conditions. Portugal, Spain, France, Italy and the Netherlands are the five where the necessary data could be obtained at comparable quality. Germany was investigated but its regional price data (AK OGA) is published only as binned ranges, not as values usable in regression. Denmark's wages are available only at NUTS-2, too coarse for this analysis. Other countries face similar gaps. Expanding coverage is a matter of data access, not methodology.

#Why 2023?

2023 is the most recent year for which all five countries have both housing prices and wages at NUTS-3 level. France is the binding constraint - INSEE publishes regional wages with a one-year lag, so 2022 wages are the latest available and are used as a proxy for 2023. Portugal's transaction price series (INE 0012235) starts in Q4 2019, making anything before 2020 unavailable at comparable quality. Italy's INPS wage data begins in 2019. Tourism data from Eurostat (tour_occ_nin3) switched to NUTS 2024 codes in 2023, making that the only year where tourism intensity can be matched to the current regional boundaries without manual code reconciliation. The housing cost burden chart uses the same 2023 reference year as the rest of the analysis.

#Comparability caveats

Cross-country comparisons should be read with care. The wage concept differs: Portugal (MTSS Quadros de Pessoal) and Italy (INPS) cover private-sector employees only, while Spain (AEAT) and France (INSEE DADS) include all sectors. The Netherlands (CBS) reports compensation of employees - gross salary plus employer social contributions - which is corrected by dividing by 1.27 to approximate gross salary. Within each country all regions use the same concept, so regional rankings are unaffected.

Housing prices also differ in concept: Portugal and France use median transaction prices from notarial records; Spain and the Netherlands use mean transaction prices; Italy uses expert-appraised market value ranges (OMI quotations), not actual transactions. Mean prices are typically 5-15% higher than medians due to luxury outliers. The Italian figures are methodologically closer to valuations than to recorded sales.

There are also differences between national definitions of dwelling floor area. These include the treatment of common areas in apartment buildings, balconies and terraces, as well as other spaces such as cellars, attics and storage rooms. Consequently, the reported price per square metre is not based on a perfectly harmonised measure of floor area across countries.

Per-country scatter plots and regressions are reliable. The combined multi-country plots are useful for seeing overall patterns but should not be read as precise cross-country rankings.

#Tourism metric caveat

Visitor nights per worker is a NUTS-3 average. In a capital region, tourists cluster near the city centre while the workforce spreads across the whole metropolitan area, so the metric undercounts tourism pressure where it is most intense and dilutes it across suburbs where it barely exists. In regions like Algarve or Corsica, where tourism is the defining activity across the territory, visitors are more distributed and this average is far more representative of reality. Naturally, when comparing regions, this nuance can only be evaluated qualitatively, because NUTS-3 is the finest granularity we have data for.

#NUTS-3 regions are not equal

NUTS-3 boundaries follow administrative divisions, not a standard grid. Paris (FR101) is 103 km² - just the city proper. Madrid (ES300) is 7,972 km² - the entire province, including sparsely populated countryside. Grande Lisboa sits between at 1,322 km²; Rome covers 5,280 km². This matters most for employment density: Paris registers 21,700 jobs per km² while Madrid shows 484 - a 45-fold difference that is largely a boundary artefact, not a real difference in urban intensity.

Housing effort (price ÷ wage) is more robust, since both numerator and denominator are measured at the same geographic scale and area does not enter the calculation. However, large regions like Madrid average high-effort urban cores with low-effort rural fringes, which understates peak affordability pressure. Paris, by contrast, captures almost exclusively the dense, expensive centre - which is why its effort figure looks extreme even by capital-city standards. The adjacent Petite Couronne départements (Hauts-de-Seine, Seine-Saint-Denis, Val-de-Marne) have effort values of 1.1 to 1.3 - still elevated, but far below the 2.1 of Paris itself.

This is why in the cross-country scatter plots we merge Paris with its Petite Couronne into a single employment-weighted data point. The case for merging is straightforward. At 103 km², Paris is the smallest NUTS-3 region in our entire dataset - smaller than any region in Portugal, Spain, the Netherlands, or Italy. Even after merging with the three surrounding départements the combined area is just 753 km², still well below the median NUTS-3 area of 4,500 km² across our five countries. The four regions form a contiguous urban mass where housing markets are deeply intertwined: Paris prices would not sustain themselves without the millions of workers who commute from the Petite Couronne every day, and those same workers face housing costs inflated by their proximity to the centre. Treating Paris as an isolated data point overstates its density by an order of magnitude and places its effort on a mathematical cliff where small assumption changes produce wild swings. The merge does not hide the problem - Paris + Petite Couronne still ranks as the highest-priced and densest unit in our dataset - it simply brings the measurement closer to what the other capital regions already capture by default through their wider boundaries.

If anything, this intervention errs on the side of caution: the functional Paris labour market extends well beyond the Petite Couronne into the grande couronne and further, and a case could be made for merging a larger area still. We stop at four départements because they form the obvious contiguous core and because extending further would require judgement calls about where the commuter basin ends - a question that the NUTS classification was supposed to answer for us. None of this is a criticism of the NUTS-3 classification itself. EU regulation requires NUTS regions to follow existing administrative divisions within each member state, and for good reason: administrative units have the data-collection infrastructure, legal authority, and political legitimacy that purpose-built statistical areas would lack. France's départements date to the Revolution, designed so any citizen could reach the capital in a day on horseback - sensible for 18th-century governance, less so for 21st-century labour-market analysis.

Not every country maps NUTS-3 to a traditional administrative division. The Netherlands is the clearest exception: its COROP regions are non-administrative areas designed around commuting patterns. Portugal's Comunidades Intermunicipais are a hybrid - created to coordinate EU structural funding, they have no role in day-to-day governance, which remains with the individual municipalities. But France, Spain and Italy map NUTS-3 directly to long-established administrative divisions - départements, provincias, province - whose boundaries reflect centuries of political history. The Paris merge is our way of working with what we have: not redrawing the map, but acknowledging that one boundary was drawn too tightly for the question we are asking.

Per-country scatter plots and regressions are not affected - regions within the same country are drawn from the same administrative system and are reasonably comparable. The combined cross-country scatter plots use the Paris + Petite Couronne merge described above, which mitigates the most extreme size asymmetry. The x-axis (density) still mixes differently sized containers across countries, but no other region presents a distortion as severe as unmerged Paris.

#Wage detail

The effort metric uses gross salary - the broadest wage concept consistently available at NUTS-3 level across all five countries. The exact source differs: Portugal uses mean monthly earnings from employer reports (MTSS Quadros de Pessoal, "ganho" × 14); Spain uses mean annual salary from tax returns (AEAT); France uses gross annual salary in full-time equivalents (INSEE DADS/DSN); the Netherlands uses total compensation of employees divided by headcount (CBS); and Italy uses mean gross pay from social security records (INPS).

These concepts are not perfectly harmonised. The Dutch figure includes employer social contributions, making it broader than the others. The Spanish figure comes from tax returns, which may undercount informal or irregular earnings. The Portuguese "ganho" includes overtime and regular bonuses beyond base pay.

We use gross rather than net salary because net wages are only published at NUTS-3 level in France. For the remaining countries, computing net salary would require modelling each country's tax and social security system - which varies by household composition, deductions, and (in Spain) by autonomous community. Disposable household income is available at NUTS-3 in four of the five countries, but not in Italy, and it includes non-work income (pensions, transfers, investment), which measures something different from what a worker earns. Gross salary, despite its imperfections, is the only metric that isolates worker income at the regional level across all five countries.

#Regression notes

Outliers are detected in two steps. First, a log-linear model is fitted to all points (effort against ln(density)). The residuals of this initial fit are then tested using the interquartile range (IQR): points whose residual falls more than 1.5 × IQR below the first quartile or above the third quartile are flagged as outliers. The regression is then refitted without them. This is a standard non-parametric method that does not assume normally distributed residuals, and it is applied independently within each country so that cross-country differences in wage or price concepts do not influence which points are flagged.

Despite the comparability limitations described above, the single-variable fits are strong within each country. When countries are combined, the Portugal + Spain and Portugal + Spain + France subsets offer a good balance between sample size and methodological similarity: the Iberian pair shares a similar housing market structure and data tradition, while adding France extends the sample with a well-documented price source (notarial DVF data) and a comparable wage concept. In both combinations the role of the outliers identified in the individual Portuguese and Spanish fits is confirmed with higher statistical confidence thanks to the larger sample.

The two-variable model uses a logarithmic term for density and a linear term for tourism intensity. The logarithm captures the expectation that density's contribution to housing effort has diminishing returns: workers who pay for housing, whether through mortgages or rents that ultimately reflect purchase prices, are constrained by their wages and by credit rules. After the 2008 financial crisis, banking regulation tightened debt-to-income limits across Europe, not primarily to protect borrowers from high effort, but to protect the banking system from systemic risk. These constraints act as a ceiling: as density grows, effort cannot grow without bound. A logarithm approximates this saturating behaviour.

Tourism intensity, by contrast, enters linearly. The demand that tourism brings to a housing market can be inelastic to price: if a region reaches full accommodation capacity and prices rise, the visitor profile may shift to higher-paying segments rather than the volume declining. The supply of housing is locally rigid, but the pool of potential visitors is drawn from a global market whose purchasing power is large relative to any single region's stock, especially when that purchasing power is time-shared across the same property, as in short-term holiday rentals.

As an empirical check, we fitted the alternative model effort = a · ln(density) + b · ln(tourism) + c, replacing the linear tourism term with a logarithmic one. The R² was lower for four of five countries and for the pooled sample: the linear tourism term provides a better fit, consistent with the argument above.

#Housing cost burden (EU-SILC)

Part one uses two Eurostat EU-SILC indicators. The first, ilc_mded01, reports total housing costs as a share of disposable household income. Housing costs are defined as rent (for tenants) or mortgage interest (for owners), utilities, structural insurance, mandatory services, maintenance, and housing-related taxes. Mortgage principal repayment is explicitly excluded on the grounds that it constitutes saving rather than expenditure. This means the indicator captures the interest component of a mortgage payment but not the principal component, systematically understating the cash-flow burden for homeowners with active mortgages.

The second indicator, ilc_mded04, is a subjective measure: households report whether housing costs represent a heavy burden, some burden, or no burden. For the five countries in this analysis, the subjective ranking (NL least burdened, ES/IT most burdened) contradicts the calculated one (NL most burdened, PT least). The divergence illustrates how the exclusion of mortgage principal and the averaging of very different tenure structures can produce a calculated indicator that points in the opposite direction of lived experience.

联系我们 contact @ memedata.com