How do you calculate a plywood price escalation clause using the PPI?
Divide the current value of BLS series WPU083 (Plywood) by its value at contract signing, then apply that ratio to the plywood part of the price. Over the 12 months to September 2026 the ratio was 1.126. A usable clause also names an averaging window, a rule for revised values and missing months, and a cap.
A plywood escalation clause indexes the plywood-affected portion to a published series instead of fixing it at signing. The benchmark is the BLS producer price index for Plywood, series WPU083.
Plywood is a real input cost in sheathing and subfloors, concrete formwork, and crating and packaging work. Its price can move further over a contract term than a fixed-price contingency is built to absorb, so indexing it moves that risk onto the published series instead of onto one party.
What's specific to plywood
Plywood moves with softwood lumber and swings just as hard. The index is one series for the whole product, so a clause should name the plywood type and grade it buys and say how it handles grades that price differently.
Plywood against the softwood lumber price index, both set to 100 in the first month they share
Sep 2026WPU083 160Softwood lumber price index 142
Sources: WPU083 (Plywood); BLS WPU0811.
Since 2017, this index has followed the softwood lumber price index about one month later and moved about two thirds as far as it over a year.
Over the 12 months to Sep 2026, the softwood lumber price index rose 14.2% and this index rose 12.6%.
1 month
Lag behind the softwood lumber price index. Monthly changes line up best this far apart.
−29.0% to +123.7%
Range of 12-month changes since 2017.
27%
Share of months that moved more than 3%. The median month moved 1.41%.
Plywood follows lumber, so a lumber clause on the same project can double count. Check whether the formula treats sheathing and sanded grades the same.
The calculation, step by step
Base index value. The index value at the base period, usually the month of contract signing or bid submission.
Current index value. The index value at the adjustment date, usually the month of delivery or invoicing.
Ratio. Current value divided by base value.
Adjustment. Apply the ratio to the plywood-affected portion only.
Take a contract signed in September 2025 with $140,000 of plywood scope, invoiced in September 2026.
Base index, Sep 2025
269.614
Current index, Sep 2026 (revisable)
303.66
Ratio, 303.66 ÷ 269.614
1.1263
Amount at signing
$140,000
Adjustment added to that amount
+$17,679
Live figures from the stored series, updated when the provider publishes. Sep 2026 can still be revised, so a clause should say whether the invoice uses the first published value or is trued up later.
Where clauses go wrong
BLS publishes other series a plywood clause could be read against, and they do not move together. A clause that only says "the plywood index" leaves the two sides to pick different ones.
Over the 12 months to Sep 2026, these series moved differently. On the same $140,000, the gap between the highest and lowest is $8,920.
Write the series code, WPU083, into the contract text, with the BLS title next to it.
No rule for revised valuesBLS can revise each value for 4 months after it is first published. Right now that covers Jun 2026 to Sep 2026. Say whether the first published value is final for invoicing, or whether invoices are trued up once BLS revises it.
Divide the current value of BLS series WPU0811 (Softwood Lumber) by its value at contract signing, then apply that ratio to the lumber part of the price. A usable clause also names an averaging window, a rule for revised values and missing months, and a cap.
The base period is the index value every future adjustment gets compared against. Pick a period that reflects normal conditions, not a seasonal high or low, and tie it to a real contract event, like signing or bid submission, not an arbitrary date.
The averaging window is how many months of index data get blended before a clause applies them. A single month reacts fast but carries noise. A 12-month average is smooth but slow to catch a real trend. The same index, read through a different window, produces a different adjustment on the same day.