Plating Power Optimizer

Cutting demand charges and energy costs at a mid-size SPP-grid metal finisher — measured against 12 months of real wholesale prices.

$—
Annual savings, 12mo backtest
Model WMAPE: —

Tomorrow's schedule

kW demand by hour, based on the latest 48h price forecast.

Demand charge: before vs after

Flat baseline

Optimized

— kW
Flat peak
— kW
Optimized peak
$—/mo
Demand cost saved

Shift breakeven calculator

Would extending the day shift to capture cheap overnight hours pay for itself?

$—
Net annual benefit of extending shift

How it works

Methodology in plain English

What it does

Tells you when to run plating loads during the day to minimize two costs at once: the kWh charge (when wholesale electricity is cheap) and the demand charge (your peak kW during the month).

The data

  • SPP wholesale prices — gridstatus library, 24 months hourly LMP at the SPP North Hub node.
  • Retail rate — LES 2026 industrial tariff: $15.03/kW demand at 115kV.
  • Weather — NOAA NCEI daily temperature at KLNK (feature for the forecast).
  • System demand — EIA RTO hourly demand for SWPP (feature for the forecast).
  • Operator wage — BLS OEWS SOC 51-4193, Lincoln NE MSA median.

The model

XGBoost regressor on hourly LMP with calendar + weather + demand + lag features. 80/20 chronological split. The metric above is WMAPE (weighted absolute percentage error: sum of errors divided by sum of actual prices) — the industry-standard metric for ISO LMP forecasting. WMAPE is used instead of plain MAPE because SPP LMP regularly dips below zero during high-wind hours, which breaks the percentage math in MAPE.

The schedulers

  • Greedy (recommended) — two-pass heuristic. Pass 1 places each job in its cheapest valid window. Pass 2 redistributes jobs out of peak hours when it lowers total cost. Beats the flat baseline on every scenario.
  • LP (V1) — formal optimization with binary decision variables. V1 minimizes energy cost only — it doesn't yet model the demand-charge non-linearity, so it lights up the cheapest hours without flattening peak. On a demand-charge tariff, this actually loses money vs greedy. V2 adds a piecewise constraint that pulls peak kW into the objective.

The backtest

For each of the last 365 days, both schedulers replay against that day's real SPP LMP. The savings number above is the year sum of (flat-baseline cost − optimized cost).

What's next (V2)

Want a heads-up when V2 ships? DM me on LinkedIn.