Ercot#
Module Contents#
Classes Summary#
Electric Reliability Council of Texas (ERCOT) |
|
Enum class for the Medium Term (Seven Day) Load Forecasts. |
Functions#
Attributes Summary#
Contents#
- class gridstatus.ercot.Document[source]#
Attributes
constructed_name
None
friendly_name
None
friendly_name_timestamp
None
publish_date
None
url
None
- class gridstatus.ercot.Ercot[source]#
Bases:
gridstatus.base.ISOBaseElectric Reliability Council of Texas (ERCOT)
Attributes
ACTUAL_LOADS_FORECAST_ZONES_URL_FORMAT
https://www.ercot.com/content/cdr/html/{timestamp}_actual_loads_of_forecast_zones.html
ACTUAL_LOADS_WEATHER_ZONES_URL_FORMAT
https://www.ercot.com/content/cdr/html/{timestamp}_actual_loads_of_weather_zones.html
BASE
default_timezone
US/Central
interconnection_homepage
http://mis.ercot.com/misapp/GetReports.do?reportTypeId=15933
iso_id
ercot
LOAD_HISTORICAL_MAX_DAYS
14
location_types
None
markets
None
name
Electric Reliability Council of Texas
status_homepage
Methods
Get 60 day DAM Disclosure data. Returns a dict with keys
Get 60 day SCED Disclosure data
Get Ancillary Service Capacity Monitor.
Ancillary Service requirements by type and quantity for each hour of the
Get ancillary service clearing prices in hourly intervals in Day Ahead Market
Get Ancillary Services Reports.
Retrieves the forecasted demand (Load Forecast) and the forecasted available
Retrieves the actual committed capacity (the amount of power available from
Retrieves the forecasted committed capacity (Committed Capacity) and the
Get RTM Price Corrections
Get Historical DAM Settlement Point Prices(SPPs)
Get Day-Ahead Market System Lambda
Get energy storage resources.
Get fuel mix 5 minute intervals
Get the offer price and the name of the Entity submitting
Hourly Resource Outage Capacity report sourced
Get Hourly Solar Report.
Get Hourly Wind Report.
Get interconnection queue for ERCOT
Get LMP data for ERCOT normally produced by SCED every five minutes
Get load for a date
Get hourly load for ERCOT forecast zones
Get hourly load for ERCOT weather zones
Returns load forecast of specified forecast type.
Get Real-Time ORDC and Reliability Deployment Price Adders and
Get Real-Time System Conditions.
Retrieves the 5-minute data behind this dashboard:
Get RTM Price Corrections
Get Historical RTM Settlement Point Prices(SPPs)
Parse SARA data from url.
Get System lambda of each successful SCED
Get Short Term System Adequacy published between date and end.
Get SPP data for ERCOT
Returns status of grid
Get 15-minute system-wide actual load.
Get temperature forecast by weather zone in hourly intervals. Published
Get Unplanned Resource Outages.
- get_60_day_dam_disclosure(date, end=None, process=False, verbose=False)[source]#
Get 60 day DAM Disclosure data. Returns a dict with keys
“dam_gen_resource”
“dam_gen_resource_as_offers”
“dam_load_resource”
“dam_load_resource_as_offers”
“dam_energy_bids”
“dam_energy_bid_awards”
and values as pandas.DataFrame objects
The date passed in should be the report date. Since reports are delayed by 60 days, the passed date should not be fewer than 60 days in the past.
- get_60_day_sced_disclosure(date, end=None, process=False, verbose=False)[source]#
Get 60 day SCED Disclosure data
- Parameters:
date (datetime.date, str) – date to return
end (datetime.date, str, optional) – if declared, function will return data as a range, from “date” to “end”
process (bool, optional) – if True, will process the data into standardized format. if False, will return raw data
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
- dictionary with keys “sced_load_resource”, “sced_gen_resource”, and
”sced_smne”, mapping to pandas.DataFrame objects
- Return type:
dict
- get_as_monitor(date='latest', verbose=False)[source]#
Get Ancillary Service Capacity Monitor.
Parses table from https://www.ercot.com/content/cdr/html/as_capacity_monitor.html
- Parameters:
date (str) – only supports “latest”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with ancillary service capacity monitor data
- Return type:
pandas.DataFrame
- get_as_plan(date, end=None, verbose=False)[source]#
Ancillary Service requirements by type and quantity for each hour of the current day plus the next 6 days
- Parameters:
date (datetime.date, str) – date of delivery for AS services
end (datetime.date, str, optional) – if declared, function will return data as a range, from “date” to “end”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with prices for ECRS, NSPIN, REGDN, REGUP, RRS
- Return type:
pandas.DataFrame
- get_as_prices(date, end=None, verbose=False)[source]#
Get ancillary service clearing prices in hourly intervals in Day Ahead Market
- Parameters:
date (datetime.date, str) – date of delivery for AS services
end (datetime.date, str, optional) – if declared, function will return data as a range, from “date” to “end”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with prices for “Non-Spinning Reserves”, “Regulation Up”, “Regulation Down”, “Responsive Reserves”, “ERCOT Contingency Reserve Service”
- Return type:
pandas.DataFrame
- get_as_reports(date, verbose=False)[source]#
Get Ancillary Services Reports.
Published with a 2 day delay around 3am central
- get_available_seasonal_capacity_forecast(date='latest', verbose=False)[source]#
Retrieves the forecasted demand (Load Forecast) and the forecasted available seasonal capacity (Available Capacity) for the next 6 days.
Data is ephemeral and does not support past days.
- get_capacity_committed(date='latest', verbose=False)[source]#
Retrieves the actual committed capacity (the amount of power available from generating units that were on-line or providing operating reserves).
Data is ephemeral and does not support past days.
- get_capacity_forecast(date='latest', verbose=False)[source]#
Retrieves the forecasted committed capacity (Committed Capacity) and the forecasted available capacity (Available Capacity) for the current day.
Data is ephemeral and does not support past days.
- get_dam_price_corrections(dam_type, verbose=False)[source]#
Get RTM Price Corrections
- Parameters:
rtm_type (str) – ‘DAM_SPP’, ‘DAM_MCPC’, ‘DAM_EBLMP’
- get_dam_spp(year, verbose=False)[source]#
Get Historical DAM Settlement Point Prices(SPPs) for each of the Hubs and Load Zones
- Parameters:
year (int) – year to get data for. Starting 2011, returns data for the entire year
- get_dam_system_lambda(date, end=None, verbose=False)[source]#
Get Day-Ahead Market System Lambda
File is typically published around 12:30 pm for the day ahead
https://www.ercot.com/mp/data-products/data-product-details?id=NP4-523-CD
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime, optional) – end time to get data for. If None, return 1 day of data. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with day-ahead market system lambda data
- Return type:
pandas.DataFrame
- get_energy_storage_resources(date='latest', verbose=False)[source]#
Get energy storage resources. Always returns data from previous and current day
- get_fuel_mix(date, verbose=False)[source]#
Get fuel mix 5 minute intervals
- Parameters:
date (datetime.date, str) – “latest”, “today”, and yesterday’s date are supported.
verbose (bool) – print verbose output. Defaults to False.
- Returns:
A DataFrame with columns; Time and columns for each fuel type
- Return type:
pandas.DataFrame
- get_highest_price_as_offer_selected(date, verbose=False)[source]#
Get the offer price and the name of the Entity submitting the offer for the highest-priced Ancillary Service (AS) Offer.
Published with 3 day delay
- Parameters:
date (str, datetime) – date to get data for
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrameq
- Return type:
pandas.DataFrame
- get_hourly_resource_outage_capacity(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Hourly Resource Outage Capacity report sourced from the Outage Scheduler (OS).
Returns outage data for for next 7 days.
Total Resource MW doesn’t include IRR, New Equipment outages, retirement of old equipment, seasonal mothballed (during the outage season), and mothballed.
As such, it is a proxy for thermal outages.
- Parameters:
date (str, pd.Timestamp) – time to download. Returns last hourly report before this time. Supports “latest”
end (str, pd.Timestamp, optional) – end time to download. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with hourly resource outage capacity data
- Return type:
pandas.DataFrame
- get_hourly_solar_report(date, end=None, verbose=False)[source]#
Get Hourly Solar Report.
Posted every hour and includes System-wide and geographic regional hourly averaged solar power production, STPPF, PVGRPP, and COP HSL for On-Line PVGRs for a rolling historical 48-hour period as well as the system-wide and regional STPPF, PVGRPP, and COP HSL for On-Line PVGRs for the rolling future 168-hour period.
- Parameters:
date (str) – date to get report for. Supports “latest” or a date string
end (str, optional) – end date for date range. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with hourly solar report data
- Return type:
pandas.DataFrame
- get_hourly_wind_report(date, end=None, verbose=False)[source]#
Get Hourly Wind Report.
This report is posted every hour and includes System-wide and Regional actual hourly averaged wind power production, STWPF, WGRPP and COP HSLs for On-Line WGRs for a rolling historical 48-hour period as well as the System-wide and Regional STWPF, WGRPP and COP HSLs for On-Line WGRs for the rolling future 168-hour period. Our forecasts attempt to predict HSL, which is uncurtailed power generation potential.
- Parameters:
date (str) – date to get report for. Supports “latest”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with hourly wind report data
- Return type:
pandas.DataFrame
- get_indicative_lmp_by_settlement_point(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_interconnection_queue(verbose=False)[source]#
Get interconnection queue for ERCOT
- Monthly historical data available here:
- get_lmp(date, end=None, location_type: str = SETTLEMENT_POINT_LOCATION_TYPE, verbose=False)[source]#
Get LMP data for ERCOT normally produced by SCED every five minutes
Can specify the location type to return “electrical bus” or “settlement point” data. Defaults to “settlement point”
- get_load(date, end=None, verbose=False)[source]#
Get load for a date
- Parameters:
date (datetime.date, str) – “latest”, “today”, or a date string are supported.
- get_load_by_forecast_zone(date, verbose=False)[source]#
Get hourly load for ERCOT forecast zones
- Parameters:
date (datetime.date, str) – “today”, or a date string are supported.
verbose (bool) – print verbose output. Defaults to False.
- Returns:
pandas.DataFrame
- get_load_by_weather_zone(date, verbose=False)[source]#
Get hourly load for ERCOT weather zones
- Parameters:
date (datetime.date, str) – “today”, or a date string are supported.
verbose (bool) – print verbose output. Defaults to False.
- Returns:
pandas.DataFrame
- get_load_forecast(date, end=None, forecast_type=ERCOTSevenDayLoadForecastReport.BY_FORECAST_ZONE, verbose=False)[source]#
Returns load forecast of specified forecast type.
If date range provided, returns all hourly reports published within.
Note: only limited historical data is available
- Parameters:
date (str, datetime) – datetime to download. If end not provided, returns last hourly report published before. if “latest”, returns most recent hourly report. if end provided, returns all hourly reports published after this date and before end.
end (str, datetime,) – if provided, returns all hourly reports published after date and before end
forecast_type (ERCOTSevenDayLoadForecastReport) – The load forecast type. Enum of possible values.
verbose (bool, optional) – print verbose output. Defaults to False.
- get_real_time_adders_and_reserves(date, end=None, verbose=False)[source]#
- Get Real-Time ORDC and Reliability Deployment Price Adders and
Reserves by SCED Interval
At: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-323-CD
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime) – end date to get data for
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with ORDC data
- Return type:
pandas.DataFrame
NOTE: data only goes back 5 days
- get_real_time_system_conditions(date='latest', verbose=False)[source]#
Get Real-Time System Conditions.
Parses table from https://www.ercot.com/content/cdr/html/real_time_system_conditions.html
- Parameters:
date (str) – only supports “latest”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with real-time system conditions
- Return type:
pandas.DataFrame
- get_reported_outages(date=None, end=None, verbose=False)[source]#
Retrieves the 5-minute data behind this dashboard: https://www.ercot.com/gridmktinfo/dashboards/generationoutages
Data available at https://www.ercot.com/api/1/services/read/dashboards/generation-outages.json
This data is ephemeral in that there is only one file available that is constantly updated. There is no historical data.
- get_rtm_price_corrections(rtm_type, verbose=False)[source]#
Get RTM Price Corrections
- Parameters:
rtm_type (str) – ‘RTM_SPP’, ‘RTM_SPLMP’, ‘RTM_EBLMP’, ‘RTM_ShadowPrice’, ‘RTM_SOGLMP’, ‘RTM_SOGPRICE’
- get_rtm_spp(year, verbose=False)[source]#
- Get Historical RTM Settlement Point Prices(SPPs)
for each of the Hubs and Load Zones
- Parameters:
year (int) – year to get data for Starting 2011, returns data for the entire year
- get_sara(url='https://www.ercot.com/files/docs/2023/05/05/SARA_Summer2023_Revised.xlsx', verbose=False)[source]#
Parse SARA data from url.
Seasonal Assessment of Resource Adequacy for the ERCOT Region (SARA)
- Parameters:
url (str, optional) – url to download SARA data from. Defaults to Summer 2023 SARA data.
- get_sced_system_lambda(date, end=None, verbose=False)[source]#
Get System lambda of each successful SCED
Normally published every 5 minutes
- Parameters:
date (str, datetime, pd.Timestamp) – date or start time to get data for
end (str, datetime, optional) – end time to get data for. If None, return 1 day of data. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame
- Return type:
pandas.DataFrame
- get_short_term_system_adequacy(date, end=None, verbose=False)[source]#
Get Short Term System Adequacy published between date and end.
- Parameters:
date (str, datetime) – date to get data for
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with system adequacy data
- Return type:
pandas.DataFrame
- get_spp(date, end=None, market: str = None, locations: list = 'ALL', location_type: str = 'ALL', verbose=False)[source]#
Get SPP data for ERCOT
- Supported Markets:
REAL_TIME_15_MINDAY_AHEAD_HOURLY
- Supported Location Types:
Load ZoneTrading HubResource Node
- get_system_wide_actual_load(date, end=None, verbose=False)[source]#
Get 15-minute system-wide actual load.
This report is posted every hour five minutes after the hour.
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime, optional) – end time to get data for. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with system actuals data
- Return type:
pandas.DataFrame
- get_temperature_forecast_by_weather_zone(date, end=None, verbose=False)[source]#
Get temperature forecast by weather zone in hourly intervals. Published once a day at 5 am central.
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime, optional) – end time to get data for. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with temperature forecast data
- Return type:
pandas.DataFrame
- get_unplanned_resource_outages(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Unplanned Resource Outages.
Data published at ~5am central on the 3rd day after the day of interest. Since the date argument is the publish date, if you want to get data for a specific date, pass in the date of interest - 3 days.
- Parameters:
date (str, datetime) – publish date of the report
end (str, datetime, optional) – end date to download. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with unplanned resource outages
- Return type:
pandas.DataFrame
- parse_doc(doc: pandas.DataFrame, dst_ambiguous_default: str = 'infer', verbose: bool = False, nonexistent: str = 'raise')[source]#
- class gridstatus.ercot.ERCOTSevenDayLoadForecastReport[source]#
Bases:
enum.EnumEnum class for the Medium Term (Seven Day) Load Forecasts. The values are the report IDs.
Attributes
BY_FORECAST_ZONE
12311
BY_MODEL_AND_STUDY_AREA
15953
BY_MODEL_AND_WEATHER_ZONE
14837
BY_WEATHER_ZONE
12312
- gridstatus.ercot.SETTLEMENT_POINT_PRICES_AT_RESOURCE_NODES_HUBS_AND_LOAD_ZONES_RTID = 12301[source]#
- gridstatus.ercot.SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID = 21809[source]#
Settlement Point Type Description ========== ========== =========== Resource Node RN Resource Node for normal resource Resource Node PCCRN Physical Resource Node for combined cycle units Resource Node LCCRN Logical Resource Node for combined cycle plant Resource Node PUN Private Area Network Resource Node Load Zone LZ Congestion Load Zone Load Zone LZ_DC DCTIE Load Zone Hub HU Hub Hub SH ERCOT_345KV_HUBBUSES_AVG Hub AH ERCOT_HUB_AVG ============================================================ Source: https://www.ercot.com/files/docs/2009/10/26/07_tests_for_rsnable_lmps_overview_of_price_valid_tool_09102.ppt