RainbowStats · Forecasting · November 10, 2026
A forecast, a construction boom, and a number to watch Friday
Introducing FORECAST_ENSEMBLE_LIST: a growing directory of economic forecasts that we can run, inspect, and improve.
Friday brings the October Producer Price Index. We are preparing with a new RainbowStats tool and a forecast of roughly +0.5% month over month, a little above the +0.4% consensus benchmark I am using.
The more interesting story is how we arrived there—and how we can keep improving the process.
Both figures refer to the monthly change in headline final-demand PPI. BLS schedules the October release for Friday, November 13, at 8:30 a.m. Eastern—5:30 a.m. here in Seattle. The consensus benchmark is supplied by the author and has not been independently verified.
A directory we can keep improving
FORECAST_ENSEMBLE_LIST() opens a directory of monthly economic indicators. Choose an entry and run its forecast. The list comes from an editable JSON catalog, so we can add an indicator or revise its predictors without building another command.
The directory currently includes CPI, PCE prices, payrolls, unemployment, retail sales, industrial production, housing, durable goods, and now PPI. It shows the target and predictor expressions, making the specification visible before we run it.
Completed forecasts are cached for faster repeat visits. Change the inputs and the forecast gets a different cache key. The directory reads catalog edits on its next invocation; an already displayed page needs to be rerun.
Open the forecast directoryRun this PPI specification
Several models, one forecast exercise
Underneath the directory is FORECAST_ENSEMBLE. It fits three VAR specifications, a VECM, and Spectral ARIMA. Historical forecasts help determine a combination with nonnegative weights summing to one. We also show equal weighting as a benchmark and a separate forecast with a residual Spectral ARIMA correction.
That gives us alternatives to inspect, rather than a single number whose construction is hidden. It does not guarantee that the fitted weights will beat a simple average.
Why I added construction spending
Our PPI specification began with core PPI and oil. I added construction spending because of AI investment.
My reasoning is straightforward: data centers require physical buildings, electrical systems, cooling equipment, materials, and skilled labor. I want a predictor that might capture some of that investment pressure as it works through the economy.
For this first version I used total U.S. construction spending, TTLCONS, published monthly by the Census Bureau and available through FRED. It is a broad spending measure, not a dedicated AI or data-center series. It reflects both prices and construction activity, and much of it has nothing to do with AI. Its connection to AI investment is my modeling hypothesis, not something this regression identifies.
| Role | Input | Reason for inclusion |
|---|---|---|
| Target | PPIFIS | Headline final-demand PPI |
| Predictor | PPIFES | Core producer-price movement |
| Predictor | WTISPLC | WTI oil prices |
| Predictor | TO_INDEX(TTLCONS) | Construction activity and spending pressure |
We index construction spending to put it on a more manageable numerical scale. That preserves its proportional movements; it does not isolate AI spending or turn it into an inflation rate. The target remains in its original PPI units.
What the model says
Using September’s PPI level of 159.78 as the baseline, the one-month-ahead forecasts are:
| Method | October forecast level | Monthly change |
|---|---|---|
| LP ensemble | 160.77 | +0.62% |
| Equal-weight ensemble | 160.75 | +0.61% |
| LP + residual correction | 160.63 | +0.53% |
I am using the residual-corrected estimate as our headline call: approximately +0.5%, versus the +0.4% consensus benchmark. At full displayed precision the difference is 0.13 percentage point. The base ensembles are closer to +0.6%; the spread among them is not a confidence interval.
Adding construction did not simply push the forecast higher. In the preceding core-PPI-and-oil run, the residual-corrected estimate was +0.63%; with construction it was +0.53%. An economic reason for including a variable does not dictate the sign of its effect in a fitted multivariate model.
The backtest informs the judgment
We compared the specifications on matching historical dates. The result was mixed. Over 48 months, construction slightly worsened the LP ensemble’s mean absolute error and barely changed its RMSE. Equal weighting also did a little better without it.
The residual-corrected model improved with construction over its eight available scored months: mean absolute error fell from 0.52749 to 0.48104 PPI index points, about 9%. Eight observations are too few to establish a reliable advantage.
I am keeping construction in the model. That is a trader’s judgment about what may matter now, with the backtest available to challenge it.
These are current-vintage backtests, not reconstructions of every historical release. A broader construction series can miss the particular investment cycle I have in mind. We should improve the predictors, preserve dated forecasts, and compare the results with what is actually released.
Run it, inspect it, improve it
The catalog makes this easy:
FORECAST_ENSEMBLE_LIST()
F=FORECAST_ENSEMBLE_LIST("ppi")
SLIDESHOW(F)
Because the catalog can change, here is the exact specification behind this article:
L=SAME_DATE_RANGE(PPIFIS,PPIFES,WTISPLC,TO_INDEX(TTLCONS))
F=FORECAST_ENSEMBLE(L,1,96)
SLIDESHOW(F)
The updated list command accepts supported RainbowStats series expressions, including indexing, logarithms, differences, and arithmetic. That gives us room to develop better specifications while keeping their inputs visible. Transformations still need economic justification and must respect the information available at each forecast date.
Friday gives us an early test. One release will not settle whether the model is useful. But recording the forecast before the number arrives gives us something concrete to learn from.