
Procurement × Research note
Procurement risk: material price shocks, escalation clauses and late deliveries
In the 2020–21 price shock, lumber prices more than doubled and steel rose by three-quarters within a year, while contractors’ bid prices barely moved. What the price data shows, how escalation clauses share the risk, how to estimate with it, and a case study on late deliveries.
Key takeaways
- Material prices can move far faster than contract prices. Over 12 months to May 2021, construction input prices rose 24.3%, lumber and plywood 111% and steel mill products 75.6%.
- Volatility runs both ways: softwood lumber prices fell 29% in one month in July 2021.
- Contractors carrying fixed prices absorbed the gap, because bid prices moved far less than input costs.
- Escalation clauses such as FIDIC Sub-Clause 13.7 and India’s CPWD clauses 10CA and 10CC share the risk using published indices and fixed weights.
- Estimates and cost models need prices rebased to a common date with a weighted index, or inflation will be mistaken for overrun.
01The 2020–2021 price shock
The pandemic years gave a clear demonstration of how fast construction input prices can move. Official producer price data show it clearly: prices for lumber rose 89.7% in the year to April 2021, with softwood lumber up 121.1%[1]. A contractors’ association (AGC), analysing the same producer price data, reported that prices for construction inputs rose 24.3% over the 12 months to May 2021, nearly twice the largest annual increase previously recorded, with steep rises across materials[2]:
Figure
Change in producer prices over the 12 months to May 2021
The problem for contractors was the gap. AGC noted that input costs far outstripped what contractors could charge: bid prices for nonresidential buildings moved very little while material costs climbed[2]. On a fixed-price contract, that gap comes straight out of margin.
02Volatility runs both ways
Price shocks are not one-way escalators. Having more than doubled, softwood lumber prices fell 29% in the single month of July 2021[1]. For an estimator, that means the risk is not only “prices will rise” but “prices will be different from the estimate, in either direction, by more than the contingency assumes”.
The risk is not only that prices will rise, but that they will be different from the estimate by more than the contingency assumes.
It also means that an escalation mechanism should work in both directions. A clause that only pays out on rises is a one-sided bet, and owners know it.
03How escalation clauses share the risk
Standard-form contracts handle this with price adjustment formulas: the contract value is split into weighted components (labour, specific materials, fuel, a fixed non-adjustable part), and each component is adjusted by the movement of a named published index between the base date and the date the work is valued.
FIDIC
In the 2017 FIDIC Red and Yellow Books, Sub-Clause 13.7, Adjustments for Changes in Cost, is opt-in: it applies only if the contract includes a Schedule of cost indexation. Where it does, the amounts payable are adjusted for rises or falls in the cost of labour, goods and other inputs by the formula in that schedule, and the schedule is a complete statement of the adjustment; any other cost movements are deemed included in the contract price[3].
Public works conditions: a two-part example
Some public works conditions split escalation in two. India’s CPWD conditions are a clear example. Clause 10CA covers price variation for specified key materials such as cement and reinforcement steel against base prices. Clause 10CC covers the rest (labour, other materials and fuel) with a component formula of the form[4]:
Both approaches share the same logic: fix the weights and the indices when the contract is signed, so that later adjustment is arithmetic, not negotiation.
04Estimating and modelling with indices
The same idea matters inside an estimating team. Historical cost data is priced in the year each project was built. Compare a 2019 project with a 2024 project without adjustment and inflation looks like a difference in design or performance. The standard remedy is to rebase every project to a common base date with a composite index weighted to the cost structure of the work.
It matters even more for machine learning. Tree-based models such as random forests and gradient boosting cannot extrapolate beyond the range of prices they were trained on, so a model trained on older, cheaper years will systematically under-estimate new projects. Rebasing to a common date, training in constant prices and re-inflating the forecast to today with the current index solves both problems.
05Case study: Procurement & Subcontracting
From my portfolio · project 09 of 15
Synthetic data- Problem
- Supplier delays are reviewed only after they disrupt the schedule.
- Decision supported
- Which orders and vendors to follow up, and future sourcing choices.
- Data
- 800 purchase orders from 60 vendors.
- Method
- Deterministic ranking: days late × (1 + the vendor’s late-delivery rate); severe = 18+ days late.
- Result
- 80 severe delays and 476 minor ones; 54 vendors with two or more late deliveries.
- Limits
- A historical review, not a forecast; agreement with synthetic labels is by construction.
06The other procurement risk: late deliveries
Price is only half of procurement risk. The other half is time: a material that arrives late stops work, however well it was priced. My Procurement & Subcontracting project ranks purchase orders by delivery risk, using a deliberately simple and explainable score[5]:
Figure
Purchase orders by delivery outcome (800 POs, 60 vendors)
Two lessons carry over. First, most late deliveries were minor, so a “late” flag on its own is too noisy to act on; severity and repetition are what make a worklist usable. Second, this is a historical review. Predicting which open orders will be late needs features known before delivery (vendor history up to that date, order size, lead time, season) and a time-based test, which is the next step for the project.
07How strong is the evidence?
Not every finding in this note rests on the same kind of evidence. This is how I would weigh each one before acting on it.
| Finding | Evidence | Strength | Main caveat |
|---|---|---|---|
| Input prices rose far faster than bid prices in 2020–21 | BLS producer price indices, AGC analysis | Strong | One market; one exceptional period |
| Prices can fall as fast as they rise | BLS monthly lumber prices | Strong | Lumber is more volatile than most inputs |
| Index-based clauses share price risk by formula | FIDIC 2017 and CPWD contract conditions | Strong | Only if the clause is included and indices named |
| Rebasing prices improves cost models | Standard QS practice; my estimating model | Moderate | Index weights must match your cost mix |
08What to put in place
- Know your exposure. Break the estimate into index-able components and identify the few materials that carry most of the price risk.
- Name the indices in the contract. Use published, independent indices and fix the base date and weights at signing.
- Make adjustment symmetric, so it works for falls as well as rises.
- Lock prices where you can, with early purchase or supplier agreements for the most volatile items, and weigh that against holding cost.
- Rebase historical data before benchmarking or training any model, and re-inflate forecasts with the current index.
- Track actual versus index monthly during the job, so escalation claims and forecasts use the same numbers.
NotesSources
- U.S. Bureau of Labor Statistics (2021). Producer prices for lumber up 89.7 percent for the year ended April 2021. The Economics Daily.
- Associated General Contractors of America (2021). Producer prices for construction materials and services jump 24 percent over 12 months.
- Fenwick Elliott. Inflation and adjustment for changes in cost in the FIDIC Red and Yellow Books.
- Central Public Works Department (India). Clauses 10CA and 10CC, General Conditions of Contract; summary in Analysis of clause 10CC, CPWD contracts.
- Iwale, A. (2026). Procurement & Subcontracting. GitHub.
Figures are quoted from the sources above as published; where a source reports a range or a survey estimate, it is described that way. Results from my own projects say whether they use real public data or synthetic data.