Atlas Growth Intelligence: methodology (growth_v1)
Engine: src/packs/sitelens/growth/. The rules below are frozen as growth_v1; any change to a threshold or rule is a new version.
1. Geography
| Input | Geography used | Mapping recorded |
|---|---|---|
zipcode | The Census 2020 ZCTA with the same code, from the Neighbourhood Emergence Index v1 universe (33,642 ZCTAs) | "postal ZIP = ZCTA of the same code (proxy)". PO-box and single-site ZIPs are refused (NOT_A_ZCTA) |
latitude + longitude | The 2024 TIGER ZCTA that covers the point | "point in ZCTA" |
A point + mode + minutes | The routed catchment's H3-10 cells | Tracts by building floor area. Counties and ZCTAs are weighted by the catchment's residents. ZCTAs are found from resolution-8 cell centres |
area_change.growth_compare takes ZIPs only: ZIP and catchment evidence differ in source and period.
2. Evidence record
Every record carries:
metric,dimension,kind,value,unit,period,geography,source,status;- where published:
moe90,significant_90andpeer_percentile(metro and national, with their basis).
Statuses:
observedandderivedcan establish a signal.proxyis a county series: context only.not_significantmeans |change| ≤ the 90% MOE of the change.insufficient_history,unavailable,suppressedandwithheldare never zero.
Dimensions: demographic, economic, housing, commercial, mobility, urban_fabric.
3. Sources and periods
| Evidence | Geography | Period | Source |
|---|---|---|---|
| Population, households, housing units, renter share, vacancy share, bachelor's+ share, share of households above $200,000 in 2024 dollars, poverty share, work-from-home share, real median household income | ZCTA | ACS 5-year 2015–19 → 2020–24 | Census ACS via Emergence Index 20261007-v1. Income is deflated by R-CPI-U-RS 462.5/375.8; top-coded medians are withheld; boundary support is screened. The high-income share uses a constant-dollar line (below) |
| Jobs located here | ZCTA | LODES 2019 → 2023 | Emergence structural context |
| Rents: YoY, 36-month, 3-month momentum, excess over metro, and acceleration (YoY now minus YoY 12 months earlier) | ZIP | ZORI to 2026-08 | Atlas national_zip_dynamics (pinned, sha256) |
| Home prices (real annual growth 2022–25 and 2019–22, acceleration) | ZIP5 or tract | FHFA HPI annual | FHFA developmental index. CPI: 2019–22 is BLS CPI-U 4.6% a year; 2022–25 assumes 3.0% a year |
| Home value YoY (corroboration) | ZIP | Zillow ZHVI, latest year | Atlas housing_earnings_context |
| Employer establishments by consumer category | ZIP | ZBP 2019 → 2023 (NAICS 2017 both years) | Emergence place transformation. Baselines under 10 are descriptive only |
| Night lights | ZCTA (emergence); catchment | ZCTA per emergence; catchment 2019, 2022, 2025 | NASA Black Marble VNP46A4 |
| County context: population, private employment and establishments, business applications, permits per home | County, resident-weighted | 2019–2025 | PEP V2025, QCEW, BFS, BPS |
| Catchment ACS change | Tracts in the catchment | ACS 2015–19 → 2020–24 | Tract-weighted means. No MOE is propagated, so significance is not tested |
| Catchment jobs | Blocks in the catchment | LODES 2016, 2019, 2023 | Block-level WAC |
4. Signals
| Signal | Rule |
|---|---|
| Growth | (X_t / X_{t−k})^(1/k) − 1 for annual series; the published change for ACS periods |
| Direction | Up or down outside a flat band, otherwise flat. Bands: change 2%, annual growth 0.5 pp/yr, share change 1 pp, establishment change 3%, momentum and acceleration 0.25–0.5 pp. Metric overrides: rent 36-month 3%, rent YoY 1%, night lights 5% (change) or 1.5%/yr. not_significant → flat |
| Acceleration | Recent annualized growth minus earlier annualized growth (needs three observations) |
| Peer-relative | Metro percentile if published, else national. ≥70 above peers, ≤30 below. Emergence uses 70% metro + 30% national midrank percentiles; FHFA uses all ZIP5s and same-metro ZIPs (≥20) |
| Structural shift | A significant change in a share: education, high income, poverty, tenure, vacancy, work from home |
| Convergence | For each dimension, the first supported local primary indicator (order in §5). It counts positive, negative or flat. County proxies never count. Rents and home prices together are one dimension |
| Divergence | values up + jobs down; units up + households flat or down; prices up + people down; income up + people down; establishments up + jobs down; local households opposite to the county population; households up + population down (smaller households) |
Constant-dollar high-income share
ACS income bins are nominal. A fixed $200,000 line sits about 19% lower in real terms in 2020–24 than in 2015–19, so households cross it with no real gain. The Emergence Index stores this nominal share and says it is not inflation-comparable, so growth_v1 never uses it as a signal; it is kept only as nominal_200k_share_change_pp on the record.
high_income_share_real_change_pp measures the share of households above $200,000 in 2024 dollars.
- 2024: bin B19001_017 ($200k+).
- 2019: the line is $200,000 × 375.8/462.5 = $162,508. The share is the $200k+ bin plus 75.0% of the $150,000–199,999 bin (linear split).
- Direction of bias: upper-tail density falls with income, so the linear split overstates the 2019 base and understates any rise. The bias is conservative.
- MOE: the 2019 count MOE is √(m₁₇² + (0.75·m₁₆)²), then the ACS proportion formula with households as the denominator; the change MOE is root-sum-square.
- Effect. Garden City (11530) goes from +13.6 pp nominal to +2.5 pp in constant dollars, not significant.
5. Primary indicators (in preference order)
- Demographic: households change, population change, catchment ACS population change, ZCTA-weighted households change.
- Economic: real median household income change, then jobs located here (LODES).
- Housing: rent 36-month growth, real home-price growth, rent YoY, catchment rent change, home value YoY.
- Commercial: consumer-facing establishments change (ZBP).
- Mobility: none yet. The work-from-home share is reported as a structural shift, not growth, so mobility does not count toward convergence until a worker-inflow or transit-use series is added.
- Urban fabric: housing-unit change, night-light growth.
6. Transitions
| Transition | Rule |
|---|---|
| affluence_upgrading | Real income up with the constant-dollar high-income or bachelor's+ share up (significant); or the constant-dollar high-income share up (significant) with income not falling. Affluent medians sit near the ACS top-code, so their change is often not significant |
| education_upgrading | Bachelor's+ share up (significant) |
| densification | Housing units and households both up |
| commercial_intensification | Consumer establishments up, with a peer percentile ≥60 where published |
| tenure_shift_to_renting / to_owning | Renter share significantly up or down |
| vacancy_rising | Vacancy share significantly up |
| remote_work_shift | Work-from-home share significantly up. A national pattern: it is reported, but it never makes a place "transforming" |
| economic_softening | Jobs and consumer establishments both down |
Each transition carries significance:
tested_90: every ACS sample estimate behind it passed the 90% test;not_tested: some ACS estimate has no MOE. This happens with tract-weighted catchment values, and the description then says "direction only". Administrative counts (LODES, ZBP) are not samples, so they need no test.
7. Classification
- growth_state.
- growing: households or population up; or flat with jobs or income up and the urban fabric up.
- declining: people down, with jobs or income flat or down.
- transforming: people flat (or down with income up) and a local transition supported (national patterns such as remote work excluded).
- stable: otherwise.
- insufficient_evidence: no supported demographic or economic signal.
- momentum. Uses local acceleration signals with a supported status. County proxies are excluded, and rent 3-month momentum is reported but does not vote.
- accelerating or decelerating: at least two point that way and outnumber the opposite;
- steady: none move;
- mixed: otherwise;
- insufficient_evidence: fewer than two.
- growth_character. The lead transition, plus maturity (Emergence maturity score: ≥75 mature, ≥40 established, below that developing), plus affluence (income national percentile: ≥80 affluent, ≤30 lower-income), plus built form (households per km²: ≥4,000 dense urban, ≥1,500 urban, ≥300 suburb, below that exurban or rural). When the lead is affluence-led, the affluence word is dropped; for example, "Affluence-led mature suburb".
- emergence_stage. From the Emergence Index v1. For a catchment, the stage mix is weighted by residents.
- sufficiency.
- strong: ≥5 dimensions with local evidence;
- moderate: 3–4;
- weak: 1–2;
- insufficient: none.
8. Validation levels
| Level | Claim | Status |
|---|---|---|
| Descriptive | "This metric changed" | Every record traces to pinned releases. Tests rebuild values from the source tables |
| Analytical | "This is unusual against peers" | Uses the published peer percentiles. Divergence and transition rules are fixed in tests |
| Predictive | "This pattern precedes change" | Not validated. Planned backtest: signals with data to 2014–16, tested on 2016–23 change against matched peers, held out by metro. Until it passes, no forecasting language |
9. Limits
- There is no historical places inventory. Commercial change is employer establishments by postal ZIP.
- Only two non-overlapping ACS periods exist, so there is no demographic acceleration.
- ZORI is short in thin markets. For example, 11530 has three months, so its rent acceleration is
insufficient_history. - County series describe counties, not places.
- The Emergence Index is descriptive and uncalibrated; its NYC check was weak or mixed.
- A catchment's ZCTA-weighted values include ZCTA areas outside the catchment.