EIA Form 930 – Hourly and Daily Balancing Authority Operations Report

Source URL


Source Description

The EIA Form 930 provides hourly demand and generation statistics by balancing area (or sub-balancing area in the case of some larger areas). These statistics include a breakdown by energy source (coal, gas, hydro, wind, solar, etc.) as well as interchange between the balancing areas, including international exchanges with Canada and Mexico.


All entities in the contiguous United States that are listed in the North American Electric Reliability Corporation’s (NERC) Compliance Registry as a balancing authority.

Source Format

Comma separated values (CSV)

Download Size

326 MB

Temporal Coverage





Open EIA Form 930 – Hourly and Daily Balancing Authority Operations Report issues

PUDL Database Tables

Clicking on the links will show you a description of the table as well as the names and descriptions of each of its fields. Due to the size of the EIA-930 hourly tables we only publish them as Parquet files, which are not browseable online. See Kaggle and Nightly Builds for information on how to access these outputs.

Data Dictionary

Browse Online


Table not published to Datasette.


Table not published to Datasette.


Table not published to Datasette.


Table not published to Datasette.


The EIA Form 930 provides hourly operating data about the high-voltage bulk electric power grid in the Lower 48 states. See the official EIA-930 documentation for additional details.

The EIA-930 6-month consolidated CSVs contain the following hourly data elements:

  • Demand (MWh)

  • Demand by subregion (available for select BAs beginning 2018-07-01)

  • Day ahead demand forecasts

  • Net generation (MWh)

  • Net generation by energy source (beginning 2018-07-01)

  • Total net interchange (MWh)

  • Interchange with adjacent BAs (MWh)

Additional CO2 emissions data is available through the per-BA Excel spreadsheet data, but these spreadsheet data have not (yet) been integrated into PUDL:

  • Estimated total CO2 emissions (beginning 2018-07-01)

  • Estimated CO2 emissions by fuel type (beginning 2018-07-01)

  • Estimated CO2 emissions for electricity imports or exports (beginning 2018-07-01)

Demand and demand by subregion

Demand is a calculated value representing the amount of electricity load within a BA’s electric system. A BA derives its demand value by taking the total metered net electricity generation within its electric system and subtracting the total metered net electricity interchange occurring between the BA and its neighboring BAs.

For select BAs, demand by subregion data provide demand at a further level of geographic disaggregation (for example, load zones, weather zones, operating company areas, local BAs, etc.) within a BA’s electric system. A BA’s reporting demand by subregion section below provides more information on subregions. A mapping of BA codes to their subregions can be found in core_eia__codes_balancing_authority_subregions

Day-ahead demand forecast

Each BA produces a day-ahead electricity demand forecast for every hour of the next day. These forecasts help BAs plan for and coordinate the reliable operation of their electric system.

Net generation

Net generation represents the metered output of electric generating units in a BA’s electric system. This generation only includes generating units that are managed by a BA or whose operations are visible to a BA.

Generators on the distribution system—both large-scale resources and small-scale distributed resources, such as rooftop solar photovoltaic (PV) systems—are typically not included.

BAs report generation from dual-fuel (switching from one fuel to another) and multiple-fuel (using multiple fuels simultaneously) generators under the actual energy source used, if known, and under the generator’s primary energy source, if not known.

To maintain generator confidentiality, generation may sometimes be reported in the Other category if too few generators are reported for a particular energy source category.

In some of our electricity publications, we report generation from all utility-scale generating units in the United States. BAs only meter generating units that are from a subset of all utility-scale generating units. As a result, when hourly generation from the EIA-930 data is aggregated to monthly or annual levels, the results will be lower than monthly and annual aggregations in other electricity publications.

Total interchange and interchange with adjacent BAs

Interchange is the net metered tie line flow from one BA to another directly interconnected BA. Total net interchange is the net sum of all interchange occurring between a BA and its directly interconnected neighboring BAs.

Negative interchange values indicate net inflows, and positive interchange values indicate net outflows.

Download additional documentation

Data available through PUDL

With the exception of the hourly CO2 emisisons data, all of the data mentioned above is available through PUDL (demand, day ahead demand forecasts, demand by subregion, net generation, net generation by energy source, total net interchange, and interchange by adjacent BA)

Who submits this data?

The EIA-930 data is collected from electricity balancing authorities (BAs) that operate the grid. Balancing authorities are a functional role defined by the North American Electric Reliability Corporation (NERC), and are mainly responsible for balancing electricity supply, demand, and interchange on their electric systems in real time.

What does the original data look like?

EIA publishes several versions of the Form 930:

  • Bulk CSVs each of which cover six months of data for all BAs (this is the data integrated into PUDL)

  • Per-BA Excel spreadsheets with additional CO2 emissions data and other detailed information about outlying values (not yet used by PUDL).


Notable Irregularities

Be sure to check out the official EIA-930 documentation.

EIA publishes the original raw data as it is supplied by the balancing authorities, and it includes many irregularities including oulying and missing values, which they attempt to manage in their aggregated (daily or nationwide) data, but which are present in the original reported data.

Inconsistent interchange

Balancing authorities do not always report symmetric, internally consistent interchange. For example, entity A might report receiving 100 MWh of energy from entity B, while entity B only reports sending 50 MWh of energy to entity A, so the data as reported do not satisfy conservation of energy, and may need additional processing for use as energy system modeling constraints.

Localization of timestamps

In the raw EIA-930 data both UTC and local timestamps are provided. We have retained only the UTC times, because the timezones used by the balancing authorities do not always correspond to their physical location, and the localized times include gaps and duplicate hours due to daylight savings time shifts. The reporting timezone used by each BA can be found in the core_eia__codes_balancing_authorities table, and can be used to re-localize the UTC timestamps if needed.

Inconsistent totals

See PR #3584 and this comment for an exploration of the following irregularities:

  • In some cases the sum of reported net generation by energy source does not equal the total reported net generation for a BA. In most cases it’s close, but for some BAs (typically the smaller ones) it can be off by factor of 10 or more.

  • The sum of reported demand by subregion is very close to being equal to the total demand for a BA, but the correspondence isn’t perfect.

  • The sum of reported interchange with adjacent BAs does not always equal the total net interchange for a BA.

  • Directly calculating demand as the total net generation minus interchange sometimes results in very different values than the reported demand.

BA consolidations and retirements

Many smaller balancing authorities have been consolidated into larger organizations over the years, especially into the Southwest Power Pool and MISO. As a result there are a number of historical BA codes that also appear in the BA subregion codes. Compare these tables:

Pseudo-ties and dynamic scheduling

Form EIA-930 data attempts to represent, as purely as possible, a physical picture of supply, demand, and energy flow (interchange) on the U.S. electric grid. For the purposes of Form EIA-930, interchange is the physical flow of electricity metered at the tie line boundaries between electric systems. Net generation is a metered value of the output of generating units in the BA. Demand (or load) is a calculated value based on the activity occurring within the tie line boundaries of the electric system.

This physical picture of BA operations is not the way many electric systems account for and report how they dispatch their generators, manage interchange, and balance their systems. Utilities sometimes enter into commercial arrangements with other systems including:

  • Dynamic scheduling: the dispatch of generating units located in one system to serve customers in another systems

  • Pseudo-ties: the transfer of electric energy through virtual interchange, where no direct physical connections exist between the two systems.

If operating data were reported with these commercial arrangements incorporated, then:

  • Demand might include demand served outside the BA’s tie line boundaries or exclude internal demand served by other BAs

  • Net generation might include the output of generating units outside the BA’s tie line boundaries or might exclude the output of internal units dispatched by other systems.

  • Energy flows might be reported between BAs that are not directly interconnected.

BA Codes and Names

Note that the BA codes that appear in the EIA-930 are based on official NERC BA codes and so may not match the current full name of BAs because of changes in corporate ownership, mergers, or other business transactions.

Other EIA-930 Projects

PUDL Data Transformations

To see the transformations applied to the data in each table, you can read the docstrings for pudl.transform.eia930 created for each table’s respective transform function.