ERCOT Market Overview¶
The Electric Reliability Council of Texas operates the electricity grid for approximately 90% of Texas's load. ERCOT is unique among US ISOs in that it is electrically isolated from the Eastern and Western Interconnections, which means it is not subject to FERC jurisdiction over wholesale markets (though it is regulated by the Public Utility Commission of Texas).
Market Structure¶
ERCOT operates a two-settlement system:
- Day-Ahead Market (DAM): Hourly financial commitments cleared the day before the operating day.
- Real-Time Market (RTM): 15-minute settlement intervals reflecting actual dispatch conditions.
15-Minute RT Intervals
Unlike MISO and SPP (which use 5-minute RT intervals), ERCOT settles real-time at 15-minute granularity. This affects how RT prices are aggregated to hourly data in ProgridPy.
Settlement Point Types¶
ERCOT prices are published at "Settlement Points" rather than nodes. The SettlementPointType enum in ProgridPy captures the full taxonomy:
Hubs¶
| Type | Description |
|---|---|
HU |
Hub -- a weighted average of a group of resource node prices |
SH |
South Hub |
AH |
Houston Hub (weighted average) |
Load Zones¶
| Type | Description |
|---|---|
LZ |
Load Zone |
LZEW |
Load Zone Energy Weighted |
LZ_DC |
DC Tie Load Zone |
LZ_DCEW |
DC Tie Load Zone Energy Weighted |
Resource Nodes¶
| Type | Description |
|---|---|
RN |
Resource Node |
LCCRN |
Load Carrying Capacity Resource Node |
PCCRN |
Peak Capacity Carrying Resource Node |
PUN |
Private Use Network |
DST and Timestamp Handling¶
ERCOT source files are local-time-based and include a DSTFlag column to disambiguate repeated hours during daylight saving transitions.
DSTFlag Is Required for Correct Processing
During the fall-back transition, hour ending 2 occurs twice. The DSTFlag distinguishes the first occurrence (DST in effect) from the second (standard time). ProgridPy resolves the local delivery date/hour with the DSTFlag, converts to interval_start_utc, and then derives interval_start_local from UTC. This ensures repeated hours have distinct UTC keys.
Processing Flow¶
- Parse the local delivery date and hour-ending from the source file.
- Use the
DSTFlagto resolve DST ambiguity. - Convert the resolved local instant to
interval_start_utc. - Derive
interval_start_localfrominterval_start_utc(the final local timestamp preserves the intended wall-clock hour).
Available Raw Data Types¶
| Data Type | Description | Granularity |
|---|---|---|
SPP_DAY_AHEAD_HOURLY |
DA Settlement Point Prices | Hourly, per settlement point |
SPP_REAL_TIME_15_MIN |
RT Settlement Point Prices | 15-minute, per settlement point |
AS_PRICES |
Ancillary Service Prices | Hourly, system-wide |
HOURLY_WIND_POWER_PRODUCTION |
Wind generation | Hourly, per resource |
HOURLY_SOLAR_POWER_PRODUCTION |
Solar generation | Hourly, per resource |
LF_BY_MODEL_WEATHER_ZONE |
Load forecast by weather zone | Hourly |
ACTUAL_SYSTEM_LOAD_BY_WEATHER_ZONE |
Actual load by weather zone | Hourly |
Processed Data Granularity¶
| Processed Type | Description | Typical Rows/Day |
|---|---|---|
NODAL |
Per-settlement-point DA and RT prices | nodes x 24 |
SYSTEM |
System-wide aggregate data | 24 |
WEATHER_ZONE |
Data partitioned by weather zone | zones x 24 |
LOAD_ZONE |
Data partitioned by load zone | zones x 24 |
Data Access¶
ERCOT publishes data through a public API managed via the ercot_api module within ProgridPy. The ERCOT API uses endpoint-based access with pagination support, unlike the file-browser portals used by SPP and MISO.