SERIES · CI-ANALYSIS·SOURCE · CITY RECORD (qyyg-4tf5), DAILY · CAPITAL PLAN (fb86-vt7u), 3× YEARLY · BLS MATERIALS & LABOR, MONTHLY·BASE · 2019 = 100
Analysis

Two decades of demand in a single index.

The Concrete Index condenses the City's construction award record into a single composite measure, then digs into the patterns underneath: when the City buys, how project budgets grow, and how fast the pipeline converts.

Computing from the public record…

Computing two decades of award history and three capital plan snapshots…

Couldn't reach NYC Open Data.

The City's API may be momentarily unavailable. Please refresh the page to try again.

The Concrete Index
vs year ago
composite of value and count, new awards
Next in line
unspent $ in construction procurement, nearest-term award supply
Budget escalation

The Concrete Index, 2004 → today

2019 = 100
Composite of trailing-twelve-month new-award value and award count, megaprojects excluded, 2019 average = 100. One line for the demand cycle: the GFC, the 2010s build-up, COVID, and the current correction.
Each point is a geometric blend of two trailing-twelve-month series, new-award dollar value and new-award count: index = 100 × √[(value-TTM ÷ value-2019) × (count-TTM ÷ count-2019)]. Renewals and $500M-plus megaprojects are excluded so it tracks genuinely new demand, and the geometric mean keeps either series from dominating. Read it as a relative level against the 2019 = 100 baseline, not a dollar amount; the series is nominal.
How the Concrete Index is calculated

One number, two signals, indexed to 2019

The Concrete Index is a geometric blend of two trailing-twelve-month measures of new public construction work reaching the market: the dollar value of new awards and the count of new awards. Renewals and extensions are dropped by selection method, and single megaprojects of $500M and above are excluded, so the reading tracks genuinely new demand rather than one large commitment. Both components are taken relative to their 2019 baseline and combined as 100 × √[(value ÷ value-2019) × (count ÷ count-2019)], so 2019 reads 100 and the geometric mean keeps either side from running the number on its own. That baseline is the average of the twelve trailing-twelve-month readings dated January through December 2019, not the 2019 calendar-year total; because every reading looks back a full year, the base draws on award activity from February 2018 onward. Basing the series on the same trailing-twelve footing as every other point on the line is what keeps the comparison like for like. It is computed live from City Record award notices, deduplicated to one record per procurement on the pin so the same award is never counted twice.

The real trend, adjusted for cost

MATERIALS & LABOR · 2019 = 100

The headline index counts dollars as the City spends them. But a 2026 dollar buys less concrete and fewer crew-hours than a 2019 dollar did. Discounting each award by the month's construction-cost level separates real construction bought from price paid, and the two have parted company.

Adjusted Index
cost-adjusted, 2019 = 100
Gap vs nominal
index points lost to cost
Materials since 2019
PPI inputs to construction
Labor since 2019
NY State construction hourly earnings

Construction cost since 2019

2019 = 100
Materials and labor price levels, each rebased to its 2019 average. The wedge between them is the input mix the City pays for.
Two BLS price series, each rebased to its own 2019 twelve-month average = 100. Materials is the national PPI for inputs to construction industries, goods (WPUSI012011), kept national because construction materials trade in national markets. Labor is New York State construction average hourly earnings of production and nonsupervisory employees, not seasonally adjusted (SMU36000002000000008, monthly back to 2004), the State-localized twin of the prior national series. Monthly, no interpolation; the most recent month or two are forward-filled at the last published value until BLS posts them, and New York publishes one month behind the national figure. The blended deflator that drives the adjusted index weights these 60% materials, 40% labor.

Nominal vs cost-adjusted

2019 = 100
The same Concrete Index, before and after discounting each award month by that month's construction-cost level. The shaded band is the cost wedge.
For every award month, the new-award dollar value is divided by that month's deflator (deflator ÷ 100), then summed to a trailing-twelve real total before the geometric blend with award count: adjusted = 100 × √[(real-value-TTM ÷ real-value-2019) × (count-TTM ÷ count-2019)], with the deflated total over a window written as Σ over m of nominal_m ÷ (deflator_m ÷ 100). The count component is unchanged from the nominal index. Nominal stays the headline; this adjusted series is disclosed alongside it, not in place of it.

When the City buys

×AVG MONTH
Typical share of annual new-award value by month, 2004–2025. 1.0× = an average month.
Each bar is a calendar month's typical share of annual new-award value, computed as the median across years (2004 to 2025) of that month's fraction of its year's total, expressed as a multiple of an even share. 1.0× is an average month; above it the City awards more than its even slice, below it less. Descriptive of the procurement calendar; no other figure on the site is seasonally adjusted.

How the pipeline converts

PHASE ADVANCEMENT
PhaseProjects trackedAdvancedHeld in phase
For each capital-plan phase, the projects tracked between two consecutive plan snapshots, how many advanced to a later phase, and how many stayed put. The advancement rate is advanced ÷ projects tracked. It is a structural read of how fast the pipeline matures across the plan, not a schedule for any one project.

How project budgets grow

MEDIAN · BY AGENCY
Each bar is an agency's median project-budget growth across plan snapshots: for projects present in two snapshots, the percentage change in total budget, taken as a median so a single large revision does not dominate. Positive means budgets are being revised up. Nominal dollars, not inflation-adjusted.

How fast the City pays a contract down

DATED SET · MONTHS SINCE REGISTRATION
Every dated contract drawn against its own registration month, then averaged into one citywide payment curve, with the busiest agencies overlaid. The vertical reads percent of contract value paid; the horizontal reads months since the contract was registered.
Each dated contract's cumulative dollars paid are read at each month against its registered amount (original amount where the registered figure is missing) and placed at the whole-month index since its registration date. For each integer month the curve averages percent paid across every dated contract that carries a value there, so the contract set behind each point changes as contracts enter and finish; the line is a population average, not one contract's path. Overlay lines are the agencies with the most dated contracts. The horizon is capped at 60 months. Nominal dollars; a floor built on confirmed Checkbook NYC disbursements. Agencies with fewer than 8 dated contracts are not overlaid.

Does the agency pay ahead of or behind schedule

DATED SET · AGENCY MEANS
Each point is one agency: how far its contracts have run through their planned schedule against how much of their value has been paid. The diagonal is pay-keeping-pace; above it an agency is paying ahead of where the calendar sits, below it behind.
For each agency's dated contracts, schedule elapsed is time from start date to today as a share of start-to-end, clamped to 0 to 150 percent; paid is percent of value paid to date. The point is the agency mean of each. Contracts missing a start or end date are skipped. The end date is the registered or planned end, not actual completion, so a point below the diagonal can mean a contract running long rather than an agency paying slowly; read this as directional, not a completion measure. Agencies with fewer than 8 dated contracts are omitted.

Analysis · Methodology & definitions

SERIES NOTES

The Concrete Index

For each month since 2004, the index combines trailing-twelve-month value and trailing-twelve-month count of new construction awards (renewals excluded by selection method; awards of $500M and above excluded so single megaprojects don't move the cycle reading). Award notices are first deduplicated to one record per procurement (the City Record pin, keeping the largest published amount), the same rule the “Awarded” page uses, so the same award is never counted twice. The two components are expressed relative to their 2019 baselines and blended geometrically; 2019 = 100. Each baseline is the mean of the twelve trailing-twelve-month readings dated in 2019, a mean of overlapping year-long windows reaching back to February 2018, rather than the calendar-year 2019 sum. The two bases differ by a few percent, so the level of the series depends on which one is used; this page uses the trailing-twelve base throughout, including in the cost-adjusted variant. Dollars are nominal; the index reads demand activity rather than inflation-adjusted volume.

Why this differs from the “Awarded” page total. The trailing-twelve award figure on the “Awarded” page sums every construction award in the window after the per-procurement dedupe, including renewals and awards of $500M and above. This index deliberately strips renewals and megaprojects out to isolate the cycle in genuinely new work. Both numbers are computed on the same deduplicated universe and are correct for their purpose, so the two pages will show different trailing-twelve totals by design.

Cost adjustment

The nominal index counts dollars at face value, so it cannot tell rising prices from rising volume. The adjusted series deflates it. Two Bureau of Labor Statistics price series carry the cost signal: materials, the national producer price index for inputs to construction industries, goods (WPUSI012011); and labor, New York State construction average hourly earnings of production and nonsupervisory employees, not seasonally adjusted (SMU36000002000000008). Materials stays national because construction inputs trade in national markets, while labor is localized to New York because construction wages are set regionally. The labor series uses the production-and-nonsupervisory definition because it reaches back to 2004, matching the award record, and is the methodological twin of the national series it replaced. Localizing the labor leg ties the deflator to New York wage growth rather than the national average. Where the two diverge, the cost-adjusted index reads above the all-national blend when New York wages have run slower since 2019 and below it when they have run faster.

Each series is rebased to its own 2019 twelve-month average = 100, then blended into one monthly deflator weighted 60% materials and 40% labor, a split that reflects the materials-heavy mix of the City's general construction work while still carrying the wage signal. Because both series are monthly, the deflator needs no interpolation; the most recent one or two months are forward-filled at the last published value until BLS posts them, and those points are flagged in the data. Every award month's new-award value is divided by that same month's deflator before the trailing-twelve sum, so a 2021 award and a 2025 award are each discounted by the cost level that actually prevailed when the City committed the money, not by a single blanket factor. The cost-adjusted index then applies the same geometric blend with award count, holding the count component unchanged. By construction the 2019 real total equals the 2019 nominal total, which the page uses as an internal check.

Caveats. The labor leg is measured for New York State, but the materials leg is national, so the deflator still approximates local materials cost rather than measuring it. Award value is a floor on real activity, since the published amount is the award notice, not the final registered contract. The 60/40 weighting is a deliberate approximation of input mix, not a measured cost build-up. The nominal index remains the headline reading; the adjusted series is a separate, disclosed view, and its latest months inherit the forward-filled cost values noted above; New York labor publishes one month behind the national materials figure, so the most recent month is forward-filled.

Seasonality

For each complete calendar year, each month's share of that year's new-award value is computed; the profile shows the median share across years, scaled so 1.0 equals an average month. Medians keep single unusual years from distorting the profile.

Pipeline conversion

Projects are matched across consecutive capital plan snapshots (roughly four months apart) by agency and FMS ID, pooled over the two most recent transitions. A project "advances" when its delivery phase moves forward in the sequence pending → pre-design → design → procurement → construction → close-out. Projects that leave the dataset between snapshots are not counted.

Budget escalation

Projects present in both the earliest available plan snapshot (May 2023) and the most recent one, with budgets above $1M in both, are matched by agency and FMS ID. Escalation is each project's total-budget growth across that span; the headline figure is the median. Budget growth blends scope changes with cost escalation. The public record doesn't separate the two, so neither does this page.

Dated payment timing

Two sections read a separate, same-origin dataset, /data/contract-search.json (the file the “Contracts” page uses), falling back to a bundled sample if the live file is absent. It holds registered construction contracts, each carrying its scope description and the City's procurement identification number, both searchable on that page; only those with confirmed Checkbook NYC disbursements carry dated payment timing, and only those are used here. The payment curve averages percent of contract value paid at each whole month since registration across the dated set, with the three agencies holding the most dated contracts overlaid; the contract set behind each month changes as contracts enter and finish, so the line is a population average rather than one contract's path, the horizon is capped at 60 months, and dollars are nominal. The schedule-pace scatter plots each agency's mean schedule-elapsed against its mean paid-to-date; schedule elapsed is start-to-today over start-to-end, clamped to 0 to 150 percent, and the end date is the registered or planned end, not actual completion, so the read is directional rather than a measure of completion. Both sections require at least eight dated contracts per agency before an agency is shown.

Sources

Award history: City Record Recent Contract Awards (qyyg-4tf5), 2003→present. Capital plan: Capital Projects Dashboard (fb86-vt7u), snapshots May 2023→present. Both on NYC Open Data, queried live on every page load. Construction cost: BLS series WPUSI012011 (national materials) and SMU36000002000000008 (New York State construction labor, NSA), 2004→present, fetched server-side by the nightly archive and read here from a same-origin snapshot.