Balancing Authority Day-Ahead Demand Forecast

EIA-930 day-ahead demand forecast for every reporting balancing authority, keyed by ba.

Native record
balancing authority x forecast hour
hourly publication cadence
Evidence
Forecast data
Forward-looking values with an explicit issue time
Time basis
Interval-start records
UTC · event_time

Overview

4.5M rows, 71 BAs, 2019-01 through the next day. One forecast per hour, latest submission; join atg.ba_load on (ba, event_time) for forecast error.

Query contract

One row per (ba, event_time) is already the latest EIA submission; read it plainly.

Analysis rules

  • Filter ba to your scope's code with a direct WHERE; search_data returns the allowed value. One ba per query keeps a region's rows from mixing with another's.
  • Forecast error is atg.ba_load.demand_mw minus forecast_mw for the same (ba, event_time).

Interpretation

  • This is the day-ahead forecast only, the latest submission for each hour; it cannot show how a forecast changed as delivery approached.
  • This table is a materialized MergeTree whose refresh has already collapsed source revisions. Do not add FINAL and do not re-apply argMax over ingested_at.

Access

Query from your own tools

Use the guarded HTTP endpoint directly, or connect an MCP client and load the dataset contract with describe_data before calling query_data.

HTTP endpoint
POST /api/v1/datasets/ba_load_forecast/query

Schema4

Column
Type
event_timeDateTime64(6, 'UTC')
baLowCardinality(String)
forecast_mwNullable(Float64)
source_timeNullable(DateTime64(6, 'UTC'))

Sample data

event_timebaforecast_mwsource_time
2026-09-19 07:00:00.000000CISO263552026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000IPCO16932026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000AZPS46422026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000PACW20002026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000GCPD6292026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000TIDC3292026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000BANC19652026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000BPAT59112026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000EPE10792026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000LDWP26502026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000NEVP48342026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000SCL8562026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000SW147892026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000WALC13262026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000SRP44352026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000CAL317632026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000CHPD1652026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000AVA10942026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000TEPC18332026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000PGE24832026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000IID4642026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000NW202882026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000PNM14742026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000DOPD2312026-09-19 04:07:01.842213
2026-09-19 07:00:00.000000US48668402026-09-19 04:07:01.842213

Coverage

100.0% complete0 gap days2,819 days with data
Show coverage history
Coverage: 100.0%Days with data: 2,819Gaps: 0
2026
2025
2024
2023
2022
2021
2020
2019
gaplessmore