ERCOT logo

ERCOT Day-Ahead Binding Constraints

Which transmission facilities bound in ERCOT's day-ahead market and what each one cost, one row per interval and constraint.

Native record
constraint x delivery hour
hourly (DAM) publication cadence
Evidence
Cleared day-ahead market
A market outcome, not a physical observation
Time basis
Interval-start records
UTC · event_time

Overview

2.94M rows, 2017-01 to the next delivery day. Columns: event_time, constraint_name, shadow_price_usd_mwh, plus contingency, from_station and to_station, limit_mw and flow_mw. The shadow price is the marginal cost of the binding limit — what the market would have saved from one more megawatt of capability on that element. This is the table that answers WHY congestion appeared; a price spread between two locations shows that they separated but not which facility separated them.

Query contract

A row means this constraint was binding in this interval. Absence of a row means it was not binding, not that it does not exist.

Analysis rules

  • Rank constraints by summed or averaged shadow price over a window, and say which — a constraint that binds rarely but hard ranks differently from one that binds constantly and cheaply.
  • Count binding INTERVALS, not rows, when describing how often a constraint bound.

Related analysis

  • explaining why a location's congestion component moved in an interval · align on event_time; the constraint explains the market-wide congestion pattern, not one location's share of it

Interpretation

  • A shadow price is the marginal value of relaxing the limit. It is not the amount of power that flowed, not a measure of how loaded the line was, and not a dollar cost anyone paid.
  • This table names the binding element. Attributing a specific location's congestion to a specific constraint additionally needs a shift factor, which is not published here.

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/ercot_constraints_da/query

Need the full history of this dataset in Snowflake, Databricks or your own storage? Data services delivers it on a schedule.

Schema8

Column
Type
event_timeDateTime64(6, 'UTC')
constraint_nameLowCardinality(String)
contingencyLowCardinality(String)
from_stationLowCardinality(Nullable(String))
to_stationLowCardinality(Nullable(String))
shadow_price_usd_mwhNullable(Float64)
limit_mwNullable(Float64)
flow_mwNullable(Float64)

Sample data

event_timeconstraint_namecontingencyfrom_stationto_stationshadow_price_usd_mwhlimit_mwflow_mw
2026-10-13 05:00:00.000000TREADW_YELWJC1_1DBIGKEN5TREADWELYELWJCKT11.98204204
2026-10-13 05:00:00.000000THW_AT2TBASE CASETHWTHW0.0042525
2026-10-13 05:00:00.000000RG_SC_1BASE CASEREDGATEREDGATE0.105325325
2026-10-13 05:00:00.000000RAYBURN_69_2SFURMOU8RAYBURNRAYBURN1.1788484
2026-10-13 05:00:00.000000RANDAD_ZAPATA1_1BASE CASERANDADOZAPATA0.0037777
2026-10-13 05:00:00.000000ODEHV_MR1HMODERTR5ODEHVODEHV1.792550550
2026-10-13 05:00:00.000000NLARSW_PILONC1_1DFOAVLO5NLARSWPILONCIL0.04139139
2026-10-13 05:00:00.000000MENPHT_YELWJC1_1MMSWMSN9YELWJCKTMENPHTAP17.0126060
2026-10-13 05:00:00.000000LPLMK_LPLCO_1XLP259LPLCOLPLMK1.371131131
2026-10-13 05:00:00.000000KLNSW_MR1HDSALKLN5KLNSWKLNSW73.442750750
2026-10-13 05:00:00.000000HARGRO_TWINBU1_1DBAKCED5TWINBUHARGROVE1.846151151
2026-10-13 05:00:00.000000G138_4B_1SGRNCAD8CADDOTNAPACHE0.285379379
2026-10-13 05:00:00.000000FTST_SOLSTI1_1DBAKSOL5FTSTSOLSTICE0.029222222
2026-10-13 05:00:00.000000DIESEL_FMR1BASE CASEDIESELDIESEL0.0092525
2026-10-13 05:00:00.000000CG_CG_06_1BASE CASECGCG0.264180180
2026-10-13 05:00:00.000000CELANE_KLEBER1_1SN_SAJO5KLEBERGCELANEBI0.088243243
2026-10-13 05:00:00.000000BRUNI_69_1SLAQLOB8BRUNIBRUNI5.743737
2026-10-13 05:00:00.000000BRUNI_69_1DFOAVLO5BRUNIBRUNI21.4073737
2026-10-13 05:00:00.000000BLESSI_PAVLOV1_1SCBEDYN8BLESSINGPAVLOV0.747157157
2026-10-13 05:00:00.000000BLESSING_1382DELMSTP5BLESSINGBLESSING8.007428428
2026-10-13 05:00:00.000000BERGHE_AT1HDZORHAY5BERGHEBERGHE1.035370370
2026-10-13 05:00:00.000000BENTS_FRTER_1B_1SBENS_M8FRONTERAS_MISSIN4.601213213
2026-10-13 05:00:00.000000BCVPSA03_ASSCJFS8PSABCV8.475478478
2026-10-13 05:00:00.000000BAKRFLD_CEDCAN_1SBAKCED5CEDACABAKESW1.4717931793
2026-10-13 05:00:00.0000006830__BDGRMGRS8CRDSWOLNEY0.9914848

Coverage

100.0% complete0 gap days3,572 days with data
Show coverage history
Coverage: 100.0%Days with data: 3,572Gaps: 0
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
gaplessmore