Hourly balancing authority operations

Demand, net generation and total interchange for each frame balancing authority and hour, from Form EIA-930. Values are as the authority reported them; EIA's adjusted and imputed values sit beside them and never replace them. Where EIA published an imputed value beside a reported one, EIA marked that report as replaced. The atlas leaves every marked demand hour out of every sum, mean and count and counts it 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.

At a glance

Period
2015-07-01 07:00 UTC – 2026-09-06 07:00 UTCbalancing authority x UTC hour (hour-ending)
One row is
frame balancing authority x UTC hour (hour-ending)
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.
Edition in this release
PUDL v2026.9.0 (embedded 2026.8.1.dev50) · core_eia930__hourly_operations · retrieved 2026-09-29
Download
ba_hourly_930.parquet ↓1,533,384 rows · 20.1 MB

Measures

ColumnUnitWhat it measures
demand_reported_mwhMWhDemand as the balancing authority reported it, one hourly integrated value per hour-ending UTC interval. An hour whose EIA-imputed column carries a value is one EIA marked as replaced (EIA's documented triggers: missing, zero, negative, or at least 1.5 times the authority's past maximum, none a valid demand); every such hour is counted as flagged and never summed.
net_generation_reported_mwhMWhMetered output of the generating units in the authority's system as it reported it, per hour-ending UTC interval. An hour whose EIA-imputed column carries a value is one EIA marked as replaced. Zeros and small negatives are real here, so a marked hour is counted as flagged and never summed only when its magnitude is at least 1.5 times the largest unmarked magnitude of the authority's UTC year (or the year has no unmarked hour); other marked hours are summed as reported.
interchange_reported_mwhMWhNet metered flow with all directly interconnected authorities as reported, per hour-ending UTC interval; positive is net outflow, negative is net inflow. An hour whose EIA-imputed column carries a value is one EIA marked as replaced (EIA's documented rule: beyond 1.5 times the authority's past extremes, imputed as 0), which catches ordinary imports of an authority that usually exports. A marked hour is counted as flagged and never summed only when its magnitude is at least 1.5 times the largest unmarked magnitude of the authority's UTC year (or the year has no unmarked hour); other marked hours are summed as reported.

Coverage by balancing authority

Hours, balancing authority x UTC hour (hour-ending)
Hours with a value as the authority reported it. EIA-adjusted or EIA-imputed values are counted beside a missing reported value and never replace it.
AuthorityFirst hourLast hourHours listed of expecteddemand: reportednet generation: reportedinterchange: reported
AvistaAVA2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.5%21 h replaced by EIA, left out · 35 h adjusted or imputed only · 409 h without any value99.5%21 h replaced by EIA, left out · 35 h adjusted or imputed only · 409 h without any value99.5%0 h adjusted or imputed only · 444 h without any value
Avangrid RenewablesAVRN · generation only2018-07-31 08:00 UTC2026-09-05 07:00 UTC70,992 of 70,992 hNot applicable99.9%46 h replaced by EIA, left out · 0 h adjusted or imputed only · 0 h without any value99.9%46 h replaced by EIA, left out · 0 h adjusted or imputed only · 0 h without any value
Bonneville Power AdministrationBPAT2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.9%41 h adjusted or imputed only · 24 h without any value99.9%21 h adjusted or imputed only · 48 h without any value99.9%0 h adjusted or imputed only · 68 h without any value
Chelan County PUDCHPD2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.8%2 h replaced by EIA, left out · 134 h adjusted or imputed only · 24 h without any value99.8%134 h adjusted or imputed only · 24 h without any value99.8%0 h adjusted or imputed only · 157 h without any value
Douglas County PUDDOPD2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h97.1%2,516 h adjusted or imputed only · 360 h without any value97.1%1,895 h adjusted or imputed only · 981 h without any value97.1%0 h adjusted or imputed only · 2,876 h without any value
Grant PUDGCPD2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h100.0%2 h adjusted or imputed only · 24 h without any value100.0%2 h adjusted or imputed only · 24 h without any value100.0%5 h replaced by EIA, left out · 0 h adjusted or imputed only · 26 h without any value
GridforceGRID · generation only2015-07-01 08:00 UTC2026-09-05 07:00 UTC98,016 of 98,016 hNot applicable99.9%69 h adjusted or imputed only · 0 h without any value99.9%0 h adjusted or imputed only · 69 h without any value
NaturEner Power WatchGWA · generation only2015-07-01 07:00 UTC2026-09-05 06:00 UTC98,016 of 98,016 hNot applicable99.7%231 h adjusted or imputed only · 28 h without any value99.7%1 h replaced by EIA, left out · 0 h adjusted or imputed only · 259 h without any value
Idaho PowerIPCO2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.9%78 h adjusted or imputed only · 25 h without any value99.9%78 h adjusted or imputed only · 25 h without any value99.9%0 h adjusted or imputed only · 103 h without any value
NorthWestern EnergyNWMT2015-07-01 07:00 UTC2026-09-06 06:00 UTC98,040 of 98,040 h99.9%19 h replaced by EIA, left out · 74 h adjusted or imputed only · 24 h without any value99.9%11 h replaced by EIA, left out · 74 h adjusted or imputed only · 24 h without any value99.9%0 h adjusted or imputed only · 98 h without any value
PacifiCorp WestPACW2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h96.1%99 h replaced by EIA, left out · 3,529 h adjusted or imputed only · 192 h without any value96.1%98 h replaced by EIA, left out · 1,535 h adjusted or imputed only · 2,187 h without any value96.2%1 h replaced by EIA, left out · 0 h adjusted or imputed only · 3,722 h without any value
Portland General ElectricPGE2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.4%2 h replaced by EIA, left out · 52 h adjusted or imputed only · 528 h without any value99.3%1 h replaced by EIA, left out · 72 h adjusted or imputed only · 577 h without any value99.3%1 h replaced by EIA, left out · 0 h adjusted or imputed only · 676 h without any value
Puget Sound EnergyPSEI2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h86.5%292 h adjusted or imputed only · 12,908 h without any value86.5%289 h adjusted or imputed only · 12,913 h without any value86.2%0 h adjusted or imputed only · 13,540 h without any value
Seattle City LightSCL2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h99.9%8 h replaced by EIA, left out · 86 h adjusted or imputed only · 26 h without any value99.9%10 h replaced by EIA, left out · 85 h adjusted or imputed only · 27 h without any value99.9%3 h replaced by EIA, left out · 0 h adjusted or imputed only · 112 h without any value
Tacoma PowerTPWR2015-07-01 08:00 UTC2026-09-06 07:00 UTC98,040 of 98,040 h100.0%0 h adjusted or imputed only · 24 h without any value100.0%0 h adjusted or imputed only · 24 h without any value100.0%0 h adjusted or imputed only · 24 h without any value
NaturEner Wind WatchWWA · generation only2015-07-01 07:00 UTC2025-10-01 06:00 UTC89,880 of 89,880 hNot applicable99.8%1 h replaced by EIA, left out · 190 h adjusted or imputed only · 2 h without any value99.8%12 h replaced by EIA, left out · 0 h adjusted or imputed only · 193 h without any value

What is missing, and why

  • Hour not listedHours between an authority's first and last listed hour with no row in the source
    0 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 reported
    151 BA-hours
  • Listed without a reported value · demandListed hours with no reported value; an EIA-adjusted or EIA-imputed value may sit beside the null and never replaces it
    21,407 BA-hours6,839 with an adjusted or imputed value beside them
  • Not applicable · demandListed hours of authorities EIA lists as generation-only, which report no value for this measure: AVRN, GRID, GWA, WWA
    356,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 reported
    188 BA-hours
  • Listed without a reported value · net generationListed hours with no reported value; an EIA-adjusted or EIA-imputed value may sit beside the null and never replaces it
    22,003 BA-hours4,710 with an adjusted or imputed value beside them
  • 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 reported
    69 BA-hours
  • Listed without a reported value · interchangeListed hours with no reported value; an EIA-adjusted or EIA-imputed value may sit beside the null and never replaces it
    22,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
  • Outside the atlas frameEIA-930 rows for balancing authorities outside the frame
    4,698,458 BA-hours

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 hour 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

  • 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)"}
    Passed

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