Monthly balancing authority operations
Demand, net generation and total interchange summed by month for each frame balancing authority, from Form EIA-930, with the number of hours each sum covers. A sum adds reported hours only, leaving out the flagged hours (reports EIA marked with its own imputed value, under each measure's rule), so read it beside its hours before treating it as a full month: a month is complete when its hours plus flagged hours cover it.
At a glance
- Period
- 2015-07–2026-09
- One row is
- frame balancing authority x UTC calendar month
- Built from source rows of
- balancing authority x UTC hour (hour-ending)
- Evidence and method
- reported · directReported values as filed; EIA-adjusted and EIA-imputed columns kept beside them and never substituted for a reported value. An EIA-imputed value beside a reported one is EIA's mark that it replaced that report. Every marked demand hour is left out of every sum, mean and hours count and counted as flagged; a marked net-generation or interchange hour only when it is at least 1.5 times the largest unmarked magnitude of the authority's year, the others staying as reported. Frame authorities only enter the release.
- Origin
- U.S. EIA Form 930 Hourly and Daily Balancing Authority Operations Report: demand, net generation, total interchange, day-ahead demand forecast per balancing authority and UTC hour ↗Source notice and licenceLicence: CC-BY-4.0
- Edition in this release
- PUDL v2026.9.0 (embedded 2026.8.1.dev50) ·
core_eia930__hourly_operations· retrieved 2026-09-29 - Download
- ba_monthly_930.parquet ↓2,113 rows · 40 KB
Measures
| Column | Unit | What it measures |
|---|---|---|
demand_mwh | MWh | Sum of the hourly demand the authority reported for the hours that start in the UTC month. EIA stamps an hour at its end, so the month holds stamps after its first instant up to and including the next month's first instant: the hour ending 00:00 UTC on the 1st belongs to the month before. Hours without a reported value add nothing and are counted, never filled. A reported hour EIA marked with its own imputed value adds nothing, is not in hours_demand and is counted in hours_demand_flagged; the imputed value is never substituted. |
net_generation_mwh | MWh | Sum of the hourly net generation the authority reported for the hours that start in the UTC month (the hour ending 00:00 UTC on the 1st belongs to the month before), over reported hours only, leaving out a marked hour at least 1.5 times the largest unmarked magnitude of the authority's year (counted in hours_net_generation_flagged); other marked hours are summed as reported. |
interchange_mwh | MWh | Sum of the hourly total interchange the authority reported for the hours that start in the UTC month (the hour ending 00:00 UTC on the 1st belongs to the month before), over reported hours only, leaving out a marked hour at least 1.5 times the largest unmarked magnitude of the authority's year (counted in hours_interchange_flagged); other marked hours are summed as reported. Positive is net outflow, negative is net inflow. |
Coverage by balancing authority
Months and hours, balancing authority x UTC hour (hour-ending)| Authority | First month | Last month | Months listed of expected | Hours listed of hours in those months | demand: hours reported | net generation: hours reported | interchange: hours reported |
|---|---|---|---|---|---|---|---|
| AvistaAVA | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.5%21 h replaced by EIA, left out · 444 h not reported | 99.5%21 h replaced by EIA, left out · 444 h not reported | 99.5%444 h not reported |
| Avangrid RenewablesAVRN · generation only | 2018-07 | 2026-09 | 99 of 99 | 70,992 of 72,336 h | Not applicable | 99.9%46 h replaced by EIA, left out · 0 h not reported | 99.9%46 h replaced by EIA, left out · 0 h not reported |
| Bonneville Power AdministrationBPAT | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.9%65 h not reported | 99.9%69 h not reported | 99.9%68 h not reported |
| Chelan County PUDCHPD | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.8%2 h replaced by EIA, left out · 158 h not reported | 99.8%158 h not reported | 99.8%157 h not reported |
| Douglas County PUDDOPD | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 97.1%2,876 h not reported | 97.1%2,876 h not reported | 97.1%2,876 h not reported |
| Grant PUDGCPD | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 100.0%26 h not reported | 100.0%26 h not reported | 100.0%5 h replaced by EIA, left out · 26 h not reported |
| GridforceGRID · generation only | 2015-07 | 2026-09 | 135 of 135 | 98,016 of 98,640 h | Not applicable | 99.9%69 h not reported | 99.9%69 h not reported |
| NaturEner Power WatchGWA · generation only | 2015-07 | 2026-09 | 135 of 135 | 98,016 of 98,640 h | Not applicable | 99.7%259 h not reported | 99.7%1 h replaced by EIA, left out · 259 h not reported |
| Idaho PowerIPCO | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.9%103 h not reported | 99.9%103 h not reported | 99.9%103 h not reported |
| NorthWestern EnergyNWMT | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.9%19 h replaced by EIA, left out · 98 h not reported | 99.9%11 h replaced by EIA, left out · 98 h not reported | 99.9%98 h not reported |
| PacifiCorp WestPACW | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 96.1%99 h replaced by EIA, left out · 3,721 h not reported | 96.1%98 h replaced by EIA, left out · 3,722 h not reported | 96.2%1 h replaced by EIA, left out · 3,722 h not reported |
| Portland General ElectricPGE | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.4%2 h replaced by EIA, left out · 580 h not reported | 99.3%1 h replaced by EIA, left out · 649 h not reported | 99.3%1 h replaced by EIA, left out · 676 h not reported |
| Puget Sound EnergyPSEI | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 86.5%13,200 h not reported | 86.5%13,202 h not reported | 86.2%13,540 h not reported |
| Seattle City LightSCL | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 99.9%8 h replaced by EIA, left out · 112 h not reported | 99.9%10 h replaced by EIA, left out · 112 h not reported | 99.9%3 h replaced by EIA, left out · 112 h not reported |
| Tacoma PowerTPWR | 2015-07 | 2026-09 | 135 of 135 | 98,040 of 98,640 h | 100.0%24 h not reported | 100.0%24 h not reported | 100.0%24 h not reported |
| NaturEner Wind WatchWWA · generation only | 2015-07 | 2025-10 | 124 of 124 | 89,880 of 90,624 h | Not applicable | 99.8%1 h replaced by EIA, left out · 192 h not reported | 99.8%12 h replaced by EIA, left out · 193 h not reported |
What is missing, and why
- month_not_listedMonths between an authority's first and last listed month with no row0 BA-months
- Hour not listedHours of listed months with no row in the hourly source, including the part of a first or last month outside the source's span10,536 BA-hours
- Reported, then replaced by the publisher · demandReported hours left out because EIA marked them by publishing its own imputed value beside the report: every marked demand hour, and a marked net-generation or interchange hour at least 1.5 times the largest unmarked magnitude of its authority and year. Left out of every sum, mean and hours-reported count, never substituted; other marked hours stay as reported151 BA-hours
- Listed without a reported value · demandHours of listed months with no reported value; the monthly sum covers reported hours only21,407 BA-hours
- Not applicable · demandListed hours of authorities EIA lists as generation-only, which report no value for this measure: AVRN, GRID, GWA, WWA356,904 BA-hours
- Reported, then replaced by the publisher · net generationReported hours left out because EIA marked them by publishing its own imputed value beside the report: every marked demand hour, and a marked net-generation or interchange hour at least 1.5 times the largest unmarked magnitude of its authority and year. Left out of every sum, mean and hours-reported count, never substituted; other marked hours stay as reported188 BA-hours
- Listed without a reported value · net generationHours of listed months with no reported value; the monthly sum covers reported hours only22,003 BA-hours
- Reported, then replaced by the publisher · interchangeReported hours left out because EIA marked them by publishing its own imputed value beside the report: every marked demand hour, and a marked net-generation or interchange hour at least 1.5 times the largest unmarked magnitude of its authority and year. Left out of every sum, mean and hours-reported count, never substituted; other marked hours stay as reported69 BA-hours
- Listed without a reported value · interchangeHours of listed months with no reported value; the monthly sum covers reported hours only22,367 BA-hours
- No row in the sourceFrame authorities with no row in the source table (generation-only, retired, or not an EIA-930 respondent; the table cannot tell which)0 balancing authorities
How often it changes
Checked 2026-09-21- Publisher
- Balancing authorities send EIA demand every hour, and demand, net generation and total interchange each morning for the previous day. EIA publishes them on its Grid Monitor and as six-month CSV files, the files PUDL integrates.www.eia.gov/electricity/930-content/about.html ↗www.eia.gov/survey/form/eia_930/instructions.pdf ↗docs.catalyst.coop/pudl/en/v2026.9.0/data_sources/eia930.html ↗
- Delay
- On EIA's Grid Monitor, demand is typically available one hour after the end of the operating hour; net generation and total interchange for each hour of yesterday are typically available by 11:00 a.m. Eastern time. This table is not that feed: its last month is the one stated under coverage.www.eia.gov/electricity/930-content/about.html ↗
- This atlas
- The atlas reads this history through PUDL, which Catalyst Cooperative publishes as quarterly versioned releases. Each atlas release pins one PUDL version, named under edition; the table changes only when that pin moves. No timed refresh.docs.catalyst.coop/pudl/en/v2026.9.0/data_access.html ↗
Checks and corrections
- Passed
keys.ba_hourly_930_unique{"distinct":1533384,"rows":1533384} - Passed
history.930_hours_bounded{"months_over_hours_in_month":0} - Passed
history.930_frame_coverage{"authorities":16,"latest_month":"2026-09"} - Passed
history.930_flagged_hours_excluded{"first":{"demand":[],"generation":[],"interchange":[],"net_generation":[]},"generation_months_wrong":0,"months_wrong":{"demand":0,"interchange":0,"net_generation":0}} - Passed
history.930_marks_bounded{"limit":0.01,"measures":{"demand":{"marked":151,"reported":1155073,"share":0.000131},"interchange":{"marked":409,"reported":1511017,"share":0.000271},"net_generation":{"marked":565,"reported":1511381,"share":0.000374},"net_generation_by_source":{"marked":385,"reported":3949160,"share":0.000097}},"unit":"BA-hours (energy-source hours for net_generation_by_source)"}
No corrections apply to this dataset in this release. Earlier editions: not available (earlier releases did not retain per-dataset edition comparisons).
Release 20260929T050546Z-51ae0f7d3c78