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#
- gridstatus.ercot.AS_EXCLUDE_PRODUCTS = ['ECRSM', 'ECRSS', 'NSPNM', 'RRSFFR', 'RRSUFR', 'RRSPFR'][source]#
- gridstatus.ercot.AS_PRODUCTS = ['RRSPFR', 'RRSUFR', 'RRSFFR', 'ECRSM', 'ECRSS', 'REGUP', 'REGDN', 'NSPIN', 'NSPNM'][source]#
- 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’
ESR_CORRECTION_DATES
None
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’
OPERATIONS_MESSAGES_URL
‘https://www.ercot.com/services/comm/mkt_notices/opsmessages’
SCED_SUPPLEMENTAL_CORRECTION_END
None
SCED_SUPPLEMENTAL_CORRECTION_START
None
status_homepage
‘https://www.ercot.com/gridmktinfo/dashboards/gridconditions’
WAYBACK_CDX_URL
WAYBACK_SNAP_URL
‘https://web.archive.org/web/{timestamp}/{url}’
Methods
ambiguous_based_on_dstflag(→ pandas.Series)get_3_day_highest_price_sced(→ pandas.DataFrame)Get the bid price and name of the Load Resource submitting the
get_60_day_dam_disclosure(→ dict)Get 60 day DAM Disclosure data. Returns a dict with keys
get_60_day_sced_disclosure(→ dict)Get 60 day SCED Disclosure data
get_as_demand_curves_daily_ruc(→ pandas.DataFrame)Get Daily RUC Ancillary Service Demand Curves
get_as_demand_curves_dam_and_sced(→ pandas.DataFrame)Get Ancillary Service Demand Curves
get_as_demand_curves_hourly_ruc(→ pandas.DataFrame)Get Hourly RUC Ancillary Service Demand Curves
get_as_demand_curves_weekly_ruc(→ pandas.DataFrame)Get Weekly RUC Ancillary Service Demand Curves
get_as_deployment_factors_daily_ruc(→ pandas.DataFrame)Get Daily RUC Ancillary Service Deployment Factors
get_as_deployment_factors_hourly_ruc(→ pandas.DataFrame)Get Hourly RUC Ancillary Service Deployment Factors
get_as_deployment_factors_projected(→ pandas.DataFrame)Get Projected Ancillary Service Deployment Factors
get_as_deployment_factors_weekly_ruc(→ pandas.DataFrame)Get Weekly RUC Ancillary Service Deployment Factors
get_as_monitor(→ pandas.DataFrame)Get Ancillary Service Capacity Monitor.
get_as_plan(→ pandas.DataFrame)Ancillary Service requirements by type and quantity for each hour of the
get_as_prices(→ pandas.DataFrame)Get ancillary service clearing prices in hourly intervals in Day Ahead Market
get_as_reports(→ pandas.DataFrame)Get Ancillary Services Reports.
get_as_reports_dam(→ pandas.DataFrame)Get Day-Ahead Market Ancillary Services Reports.
get_as_reports_sced(→ pandas.DataFrame)Get 2-Day SCED Ancillary Service Disclosure Reports.
get_as_total_capability(→ pandas.DataFrame)Get Total Capability of Resources Available to Provide Ancillary Service
Retrieves the forecasted demand (Load Forecast) and the forecasted available
get_capacity_committed(→ pandas.DataFrame)Retrieves the actual committed capacity (the amount of power available from
get_capacity_forecast(→ pandas.DataFrame)Retrieves the forecasted committed capacity (Committed Capacity) and the
get_ccp_resource_names(→ pandas.DataFrame)get_dam_asdc_aggregated(→ pandas.DataFrame)Get DAM Aggregated Ancillary Service Offer Curve (NP4-19-CD).
get_dam_price_corrections(→ pandas.DataFrame)Get DAM Price Corrections
get_dam_spp(→ pandas.DataFrame)Get Historical DAM Settlement Point Prices(SPPs)
get_dam_system_lambda(→ pandas.DataFrame)Get Day-Ahead Market System Lambda
get_dam_total_as_sold(→ pandas.DataFrame)Get DAM Total Ancillary Services Sold
get_dam_total_energy_purchased(→ pandas.DataFrame)Get DAM Total Energy Purchased
get_dam_total_energy_sold(→ pandas.DataFrame)Get DAM Total Energy Sold
get_energy_storage_resources(→ pandas.DataFrame)Get energy storage resources.
get_fuel_mix(→ pandas.DataFrame)Get fuel mix 5 minute intervals
get_fuel_mix_detailed(→ pandas.DataFrame)The fuel mix with gen, hsl, and seasonal capacity for each fuel type.
get_highest_price_as_offer_selected(→ pandas.DataFrame)Get the offer price and the name of the Entity submitting
get_highest_price_as_offer_selected_dam(→ pandas.DataFrame)Get the offer price and the name of the Entity submitting
Get the offer price and the name of the Entity submitting
get_hourly_load_post_settlements(→ pandas.DataFrame)Get historical hourly load data from ERCOT's load archives.
get_hourly_resource_outage_capacity(→ pandas.DataFrame)Hourly Resource Outage Capacity report sourced
get_hub_name_dc_ties(→ pandas.DataFrame)get_indicative_lmp_by_settlement_point(→ pandas.DataFrame)get_indicative_mcpc_rtd(→ pandas.DataFrame)Get RTD Indicative Real-Time Market Clearing Prices for Capacity
get_interconnection_queue(→ pandas.DataFrame)Get interconnection queue for ERCOT
get_lmp(→ pandas.DataFrame)Get LMP data for ERCOT normally produced by SCED every five minutes
get_lmp_by_bus_dam(→ pandas.DataFrame)Get Day-Ahead Market (DAM) LMPs by Electrical Bus
get_load(→ pandas.DataFrame)Get load for a date
get_load_by_forecast_zone(→ pandas.DataFrame)Get hourly load for ERCOT forecast zones
get_load_by_weather_zone(→ pandas.DataFrame)Get hourly load for ERCOT weather zones
get_load_forecast(→ pandas.DataFrame)Returns load forecast of specified forecast type.
get_load_forecast_by_model(→ pandas.DataFrame)Get Seven-Day Load Forecast by Model and Weather Zone.
get_mcpc_dam(→ pandas.DataFrame)Get Market Clearing Prices for Capacity (MCPC) from the Day-Ahead Market
get_mcpc_dam_price_corrections(→ pandas.DataFrame)Get Market Clearing Price for Capacity (MCPC) corrections for DAM.
get_mcpc_real_time_15_min(→ pandas.DataFrame)Get Market Clearing Prices for Capacity by 15-minute interval
get_mcpc_sced(→ pandas.DataFrame)Get Market Clearing Prices for Capacity by SCED interval
get_noie_mapping(→ pandas.DataFrame)get_operations_messages(→ pandas.DataFrame)Get operations messages from the ERCOT control room.
get_raw_interconnection_queue(→ BinaryIO)get_real_time_adders(→ pandas.DataFrame)Get Real-Time ORDC and Reliability Deployment
get_real_time_adders_and_reserves(→ pandas.DataFrame)Get Real-Time ORDC and Reliability Deployment Price Adders and
get_real_time_system_conditions(→ pandas.DataFrame)Get Real-Time System Conditions.
get_reported_outages(→ pandas.DataFrame)Retrieves the 5-minute data behind this dashboard:
get_resource_node_to_unit(→ pandas.DataFrame)get_rtm_price_corrections(→ pandas.DataFrame)Get RTM Price Corrections
get_rtm_spp(→ pandas.DataFrame)Get Historical RTM Settlement Point Prices(SPPs)
get_sara(→ pandas.DataFrame)Parse SARA data from url.
get_sced_system_lambda(→ pandas.DataFrame)Get System lambda of each successful SCED
get_shadow_prices_dam(→ pandas.DataFrame)Get Day-Ahead Market Shadow Prices
get_short_term_system_adequacy(→ pandas.DataFrame)Get Short Term System Adequacy published between date and end.
get_solar_actual_and_forecast_by_geographical_region_hourly(date)Get Hourly Solar Report by geographical region
get_solar_actual_and_forecast_hourly(date[, end, verbose])Get Hourly Solar Report.
get_spp(→ pandas.DataFrame)Get SPP data for ERCOT
get_status(→ pandas.DataFrame)Returns status of grid
get_system_as_capacity_monitor(→ pandas.DataFrame)Get System Ancillary Service Capacity Monitor.
get_system_wide_actual_load(→ pandas.DataFrame)Get 15-minute system-wide actual load.
Get temperature forecast by weather zone in hourly intervals. Published
get_unplanned_resource_outages(→ pandas.DataFrame)Get Unplanned Resource Outages.
get_wind_actual_and_forecast_by_geographical_region_hourly(date)Get Hourly Wind Report by geographical region
get_wind_actual_and_forecast_hourly(date[, end, verbose])Get Hourly Wind Report.
parse_doc(→ pandas.DataFrame)read_doc(→ pandas.DataFrame)read_docs(→ pandas.DataFrame)- get_3_day_highest_price_sced(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 the bid price and name of the Load Resource submitting the highest-priced bid selected or dispatched by SCED for the given operating day.
Published daily, three days after the applicable operating day.
https://www.ercot.com/mp/data-products/data-product-details?id=np3-257-ex
- Parameters:
date – operating day to fetch data for.
end – optional end operating day for date range queries.
verbose – print verbose output.
- Returns:
Interval Start, Interval End, SCED Timestamp, QSE, DME, Load Resource, Highest Price Dispatched by SCED, Proxy Extension.
- Return type:
pandas.DataFrame with columns
- get_60_day_dam_disclosure(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, process: bool = False, verbose: bool = False, output_format: gridstatus.ercot_60d_utils.CurveOutputFormat | str = CurveOutputFormat.LIST) dict[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_only_offer_awards”
“dam_energy_only_offers”
“dam_ptp_obligation_bid_awards”
“dam_ptp_obligation_bids”
“dam_energy_bid_awards”
“dam_energy_bids”
“dam_ptp_obligation_option”
“dam_ptp_obligation_option_awards”
“dam_esr” (when available, starting 2025-12-06)
“dam_esr_as_offers” (when available, starting 2025-12-06)
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.
- Parameters:
output_format – CurveOutputFormat.LIST (default) returns Python list-of-lists per curve cell. CurveOutputFormat.PG_ARRAY_AS_STRING returns PG array strings, using ~3x less peak memory.
- get_60_day_sced_disclosure(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, process: bool = False, verbose: bool = False, output_format: gridstatus.ercot_60d_utils.CurveOutputFormat | str = CurveOutputFormat.LIST) dict[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.
output_format – CurveOutputFormat.LIST (default) returns Python list-of-lists per curve cell. CurveOutputFormat.PG_ARRAY_AS_STRING returns PG array strings, using ~3x less peak memory.
- Returns:
- dictionary with keys “sced_load_resource”, “sced_gen_resource”,
”sced_smne”, and (when available) “sced_esr”, “sced_eoc_updates”, “sced_resource_as_offers”, mapping to pandas.DataFrame objects
- Return type:
dict
- get_as_demand_curves_daily_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Daily RUC Ancillary Service Demand Curves
- get_as_demand_curves_dam_and_sced(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Ancillary Service Demand Curves
- get_as_demand_curves_hourly_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Hourly RUC Ancillary Service Demand Curves
- get_as_demand_curves_weekly_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Weekly RUC Ancillary Service Demand Curves
- get_as_deployment_factors_daily_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Daily RUC Ancillary Service Deployment Factors
- get_as_deployment_factors_hourly_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Hourly RUC Ancillary Service Deployment Factors
- get_as_deployment_factors_projected(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Projected Ancillary Service Deployment Factors
- get_as_deployment_factors_weekly_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Weekly RUC Ancillary Service Deployment Factors
Retrieves ancillary service deployment factors used by the Weekly Reliability Unit Commitment (WRUC) process for each hour in the RUC Study Period.
- Parameters:
date – Date to retrieve data for. Can be a string or pandas Timestamp.
end – Optional end date for date range queries.
verbose – If True, print verbose output.
- Returns:
Interval Start, Interval End, RUC Timestamp, AS Type, and AS Deployment Factors.
- Return type:
DataFrame with columns
- get_as_monitor(date: str = 'latest', verbose: bool = False) pandas.DataFrame[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: 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]#
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: 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 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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[source]#
Get Ancillary Services Reports.
Published with a 2 day delay around 3am central
- get_as_reports_dam(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[source]#
Get Day-Ahead Market Ancillary Services Reports.
Published with a 2 day delay around 3am central.
Contains cleared, self-arranged, and bid curve data for each AS product.
- Parameters:
date – date to fetch reports for
verbose – print verbose output
- Returns:
A DataFrame with DAM ancillary services reports
- Return type:
pandas.DataFrame
- get_as_reports_sced(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[source]#
Get 2-Day SCED Ancillary Service Disclosure Reports.
Published with a 2 day delay around 3am central.
Contains offer curves (MW offered and price) for each AS product at each SCED timestamp.
Output columns: SCED Timestamp, AS Type, Offer Curve
- Parameters:
date – date to fetch reports for
verbose – print verbose output
- Returns:
A DataFrame with SCED ancillary services offers
- Return type:
pandas.DataFrame
- get_as_total_capability(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Total Capability of Resources Available to Provide Ancillary Service
- get_available_seasonal_capacity_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = 'latest', verbose: bool = False) pandas.DataFrame[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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = 'latest', verbose: bool = False) pandas.DataFrame[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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = 'latest', verbose: bool = False) pandas.DataFrame[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_ccp_resource_names(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_cop_adjustment_period_snapshot_60_day(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_dam_asdc_aggregated(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get DAM Aggregated Ancillary Service Offer Curve (NP4-19-CD).
The DAM Aggregated Ancillary Service Demand/Offer Curve contains the aggregated offer curve (price/quantity pairs) per ancillary service type for each hour of the next day’s delivery, published once per DAM run.
dateandendare interpreted as delivery dates; the DAM runs the day before, so the underlying file is located by shifting the posted-date filter back by one day.https://www.ercot.com/mp/data-products/data-product-details?id=np4-19-cd
- get_dam_price_corrections(dam_type: str, verbose: bool = False) pandas.DataFrame[source]#
Get DAM Price Corrections
- Parameters:
dam_type (str) – ‘DAM_SPP’, ‘DAM_EBLMP’
- get_dam_spp(year: int, verbose: bool = False) pandas.DataFrame[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: 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 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_dam_total_as_sold(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get DAM Total Ancillary Services Sold
- get_dam_total_energy_purchased(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 DAM Total Energy Purchased
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime) – end time to get data for
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with DAM total energy purchased data
- Return type:
pandas.DataFrame
- get_dam_total_energy_sold(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 DAM Total Energy Sold
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime) – end time to get data for
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with DAM total energy sold data
- Return type:
pandas.DataFrame
- get_energy_storage_resources(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = 'latest', verbose: bool = False) pandas.DataFrame[source]#
Get energy storage resources. Always returns data from previous and current day
- get_fuel_mix(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[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_fuel_mix_detailed(date: str | datetime.datetime | pandas.Timestamp, verbose: bool = False) pandas.DataFrame[source]#
The fuel mix with gen, hsl, and seasonal capacity for each fuel type.
- get_highest_price_as_offer_selected(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 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_highest_price_as_offer_selected_dam(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 the offer price and the name of the Entity submitting the offer for the highest-priced Ancillary Service (AS) Offer selected in the Day-Ahead Market (DAM).
Published with 3 day delay
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime, optional) – end date for date range
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
- A DataFrame with columns:
Interval Start
Interval End
QSE
DME
Resource Name
AS Type
Block Indicator
Offered Price
Total Offered Quantity
Offered Quantities
- Return type:
pandas.DataFrame
- get_highest_price_as_offer_selected_sced(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 the offer price and the name of the Entity submitting the offer for the highest-priced Ancillary Service (AS) Offer selected in the Real-Time Market (SCED).
Published with 3 day delay
- Parameters:
date (str, datetime) – date to get data for
end (str, datetime, optional) – end date for date range
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
- A DataFrame with columns:
SCED Timestamp
QSE
DME
Resource Name
AS Type
Offered Price
Total Offered Quantity
Offered Quantities
- Return type:
pandas.DataFrame
- get_hourly_load_post_settlements(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 historical hourly load data from ERCOT’s load archives.
Downloads zip files from https://www.ercot.com/gridinfo/load/load_hist and parses the historical load data by weather zones.
- Parameters:
date (str, datetime) – Year to download data for, or “latest” for most recent data
end (str, datetime) – End date for range, or None for single date
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
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_hub_name_dc_ties(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- 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_indicative_mcpc_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get RTD Indicative Real-Time Market Clearing Prices for Capacity
- get_interconnection_queue(verbose: bool = False) pandas.DataFrame[source]#
Get interconnection queue for ERCOT
- Monthly historical data available here:
- get_lmp(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, location_type: str = SETTLEMENT_POINT_LOCATION_TYPE, verbose: bool = False) pandas.DataFrame[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_lmp_by_bus_dam(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 Day-Ahead Market (DAM) LMPs by Electrical Bus
Returns hourly Locational Marginal Prices per electrical bus from the Day-Ahead Market.
https://www.ercot.com/mp/data-products/data-product-details?id=NP4-183-CD
- Parameters:
date (str, datetime) – date to get data for. Supports “latest”, “today”, or a specific date.
end (str, datetime, optional) – end date for a date range query. If None, returns 1 day of data. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with day-ahead LMPs by electrical bus
- Return type:
pandas.DataFrame
- get_load(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 load for a date
- Parameters:
date (datetime.date, str) – “latest”, “today”, or a date string are supported.
- get_load_by_forecast_zone(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, forecast_type: ERCOTSevenDayLoadForecastReport = ERCOTSevenDayLoadForecastReport.BY_FORECAST_ZONE, verbose: bool = False) pandas.DataFrame[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_load_forecast_by_model(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 Seven-Day Load Forecast by Model and Weather Zone.
Forecasted hourly demand by Model and Weather Zone as reported by ERCOT. Released every hour for the current day and the next 7.
- Parameters:
date (str, datetime) – date to get report for. Supports “latest” or a date string.
end (str, datetime, optional) – end date for date range. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with load forecast by model data
- Return type:
pandas.DataFrame
- get_mcpc_dam(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 Market Clearing Prices for Capacity (MCPC) from the Day-Ahead Market
Returns hourly MCPC per ancillary service type in long format.
https://www.ercot.com/mp/data-products/data-product-details?id=NP4-188-CD
- Parameters:
date (str, datetime) – date to get data for. Supports “latest”, “today”, or a specific date.
end (str, datetime, optional) – end date for a date range query. If None, returns 1 day of data. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
- A DataFrame with columns: Interval Start,
Interval End, AS Type, MCPC
- Return type:
pandas.DataFrame
- get_mcpc_dam_price_corrections(verbose: bool = False) pandas.DataFrame[source]#
Get Market Clearing Price for Capacity (MCPC) corrections for DAM.
MCPC (Market Clearing Price for Capacity) corrections contain ancillary service prices at the system level.
- Returns:
- DataFrame with columns:
Price Correction Time
Interval Start
Interval End
AS Type
MCPC Original
MCPC Corrected
- Return type:
pd.DataFrame
- get_mcpc_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Market Clearing Prices for Capacity by 15-minute interval
- get_mcpc_sced(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get Market Clearing Prices for Capacity by SCED interval
- get_noie_mapping(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_operations_messages(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get operations messages from the ERCOT control room.
When called without date arguments, scrapes the live page at https://www.ercot.com/services/comm/mkt_notices/opsmessages which shows a rolling window of recent messages (~one month).
When called with a date (and optional end), fetches historical snapshots from the Wayback Machine covering the requested range, deduplicates, and filters to the requested window.
- Parameters:
date – Start date for historical query, or None for latest.
end – End date for historical query. Defaults to date + 1 month.
verbose – Print verbose output.
- Returns:
pandas.DataFrame with columns Time, Notice, Type, Status.
- get_real_time_adders(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 Real-Time ORDC and Reliability Deployment Price Adders and Reserves by SCED Interval produced by SCED every five minutes.
- Parameters:
date – date to get data for
end – end date to get data for. If None, defaults to date + 1 day
verbose – print verbose output. Defaults to False.
- Returns:
A DataFrame with ORDC price adders data
- Return type:
pandas.DataFrame
- get_real_time_adders_and_reserves(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 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: str = 'latest', verbose: bool = False) pandas.DataFrame[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: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, verbose: bool = False) pandas.DataFrame[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_resource_node_to_unit(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_rtm_price_corrections(rtm_type: str, verbose: bool = False) pandas.DataFrame[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: int, verbose: bool = False) pandas.DataFrame[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: str = 'https://www.ercot.com/files/docs/2023/05/05/SARA_Summer2023_Revised.xlsx', verbose: bool = False) pandas.DataFrame[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: 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 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_settlement_points_electrical_bus_mapping(date: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_shadow_prices_dam(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 Day-Ahead Market Shadow Prices
Returns shadow prices for binding transmission constraints from the Day-Ahead Market.
https://www.ercot.com/mp/data-products/data-product-details?id=NP4-191-CD
- Parameters:
date (str, datetime) – date to get data for. Supports “latest”, “today”, or a specific date.
end (str, datetime, optional) – end date for a date range query. If None, returns 1 day of data. Defaults to None.
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with day-ahead market shadow prices
- Return type:
pandas.DataFrame
- get_short_term_system_adequacy(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 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_solar_actual_and_forecast_by_geographical_region_hourly(date: str | datetime.date, end: str | datetime.date = None, verbose: bool = False)[source]#
Get Hourly Solar Report by geographical region
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_solar_actual_and_forecast_hourly(date: str | datetime.date, end: str | datetime.date = None, verbose: bool = False)[source]#
Get Hourly Solar Report.
- 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_spp(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, market: str = None, locations: list = 'ALL', location_type: str = 'ALL', verbose: bool = False) pandas.DataFrame[source]#
Get SPP data for ERCOT
- Supported Markets:
REAL_TIME_15_MINDAY_AHEAD_HOURLY
- Supported Location Types:
Load ZoneTrading HubResource Node
- get_status(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], verbose: bool = False) pandas.DataFrame[source]#
Returns status of grid
- get_system_as_capacity_monitor(date: str | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get System Ancillary Service Capacity Monitor.
Fetches real-time ancillary service capacity data from https://www.ercot.com/api/1/services/read/dashboards/ancillary-service-capacity-monitor.json
- Parameters:
date (str) – only supports “latest”
verbose (bool, optional) – print verbose output. Defaults to False.
- Returns:
A DataFrame with system AS capacity monitor data
- Return type:
pandas.DataFrame
- get_system_wide_actual_load(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 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: 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 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
- get_wind_actual_and_forecast_by_geographical_region_hourly(date: str | datetime.date, end: str | datetime.date = None, verbose: bool = False)[source]#
Get Hourly Wind Report by geographical region
- 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_wind_actual_and_forecast_hourly(date: str | datetime.date, end: str | datetime.date = None, verbose: bool = 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
- parse_doc(doc: pandas.DataFrame, dst_ambiguous_default: str = 'infer', verbose: bool = False, nonexistent: str = 'raise') pandas.DataFrame[source]#
- class gridstatus.ercot.ERCOTSevenDayLoadForecastReport(*args, **kwds)[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.REAL_TIME_CLEARING_LMPS_BY_RESOURCE_NODES_LOAD_ZONES_AND_TRADING_HUBS_RTD = 4104[source]#
- 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]#
- gridstatus.ercot.SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID = 13483[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