Skip to content

feat(nowcast): annual electricity price by manufacturing industry from MECS and EIA - #1219

Open
WesIngwersen wants to merge 2 commits into
mainfrom
electricity_price_by_buyer
Open

WesIngwersen wants to merge 2 commits into
mainfrom
electricity_price_by_buyer

Conversation

@WesIngwersen

Copy link
Copy Markdown
Member

Closes #901. Part of the plan in #902.

Adds bedrock/transform/eeio/electricity_price.py: the annual electricity price per kWh delivered, by BEA 2017 detail manufacturing industry, for 2017-2024. Nothing reads it yet, so no model output changes. #902 will divide bills by it.

How the price is built

price_i(t) = relative_i(t) x level(t)
level(t)   = EIA industrial price(t) x MECS-to-EIA ratio(t)
  • Survey prices: MECS Table 7.10 dollars over Table 7.7 kWh. Both count purchases from any supplier, so they include delivery. A row with no total uses its local-utility values. A NAICS with no published row of its own takes what its parent row has left after the published children.
  • Relative prices: anchored on MECS 2022, moving geometrically to MECS 2018 and held to 2017. An industry whose surveys publish different rows stays at its 2022 relative.
  • Level: matches the industries' average MECS price in both surveys, using a ratio to EIA's industrial price that moves between them and holds outside.

Buyers outside manufacturing take their EIA class price (class_price). Prices are per kWh delivered, as published. The allocator's class kWh are scaled to eGRID generation, so #902 has to convert.

Why not MECS's 31-33 row for the level. In MECS 2022 the three-digit rows sum to $2.1bn less than that row. Scaling to it moved every 2022 price about 0.16 ¢/kWh above its published value.

Results on the real tables

Industries priced 232 of 232
Cornerstone manufacturing commodities without a price 0
2022 against the published price exact
2018 against the published price median gap 0.02 ¢/kWh; above 0.05 for the 4 industries on different rows, at most 1.06
Industries on the same rows in both surveys 228 of 232
Rank correlation of relative prices, 2018 and 2022 0.91
kWh-weighted mean absolute change in relative price 8.5%
Relative price moving more than 20% 2 industries, 1.5% of kWh

The two movers are 331313 alumina and primary aluminum (+36%) and 331314 secondary aluminum (-37%). They are left unsmoothed, because smelter closures make a real change plausible.

¢/kWh delivered 2017 2018 2020 2021 2022 2023 2024
EIA industrial 6.88 6.92 6.67 7.18 8.32 8.04 8.13
Lowest industry 4.05 4.07 4.60 4.88 5.42 5.24 5.30
Median industry 8.56 8.61 8.05 8.46 9.96 9.63 9.73
Highest industry 11.73 11.80 11.46 12.39 14.40 13.92 14.07

Limits

Checks

Unit tests are synthetic and need no data. black, ruff and mypy are clean on the new files. The real-table results above came from a local run. The suite is left to CI.

🤖 Generated with Claude Code

…m MECS and EIA (#901)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build the annual per-industry electricity price from MECS structure and EIA level

1 participant