Ercot

Contents

Ercot#

Module Contents#

Classes Summary#

Document

Ercot

Electric Reliability Council of Texas (ERCOT)

ERCOTSevenDayLoadForecastReport

Enum class for the Medium Term (Seven Day) Load Forecasts.

Functions#

parse_timestamp_from_friendly_name(→ pandas.Timestamp)

Attributes Summary#

ACTUAL_SYSTEM_LOAD_BY_FORECAST_ZONE

ACTUAL_SYSTEM_LOAD_BY_WEATHER_ZONE

AS_EXCLUDE_PRODUCTS

AS_PRODUCTS

COP_ADJUSTMENT_PERIOD_SNAPSHOT_RTID

DAILY_RUC_AS_DEMAND_CURVES_RTID

DAILY_RUC_AS_DEPLOYMENT_FACTORS_RTID

DAM_AGGREGATED_AS_OFFER_CURVE_RTID

DAM_ANCILLARY_SERVICE_PLAN_RTID

DAM_AND_SCED_ANCILLARY_SERVICE_DEMAND_CURVES_RTID

DAM_CLEARING_PRICES_FOR_CAPACITY_RTID

DAM_LMPS_BY_ELECTRICAL_BUS_RTID

DAM_PRICE_CORRECTIONS_RTID

DAM_SETTLEMENT_POINT_PRICES_RTID

DAM_SHADOW_PRICES_RTID

DAM_SYSTEM_LAMBDA_RTID

DAM_TOTAL_AS_SOLD_RTID

DAM_TOTAL_ENERGY_PURCHASED_RTID

DAM_TOTAL_ENERGY_SOLD_RTID

ELECTRICAL_BUS_LOCATION_TYPE

ERCOT_INDICATIVE_LMP_BY_SETTLEMENT_POINT_RTID

GIS_REPORT_RTID

HISTORICAL_DAM_LOAD_ZONE_AND_HUB_PRICES_RTID

HISTORICAL_RTM_LOAD_ZONE_AND_HUB_PRICES_RTID

HOURLY_RESOURCE_OUTAGE_CAPACITY_RTID

HOURLY_RUC_AS_DEMAND_CURVES_RTID

HOURLY_RUC_AS_DEPLOYMENT_FACTORS_RTID

HUB_SETTLEMENT_TYPES

LMPS_BY_ELECTRICAL_BUS_RTID

LMPS_BY_SETTLEMENT_POINT_RTID

LOAD_ZONE_SETTLEMENT_TYPES

LOCATION_TYPE_HUB

LOCATION_TYPE_RESOURCE_NODE

LOCATION_TYPE_ZONE

LOCATION_TYPE_ZONE_DC

LOCATION_TYPE_ZONE_DC_EW

LOCATION_TYPE_ZONE_EW

PROJECTED_ANCILLARY_SERVICE_DEPLOYMENTS_FACTORS_RTID

REAL_TIME_ADDERS_AND_RESERVES_RTID

REAL_TIME_ADDERS_RTID

REAL_TIME_CLEARING_LMPS_BY_RESOURCE_NODES_LOAD_ZONES_AND_TRADING_HUBS_RTD

REAL_TIME_CLEARING_PRICES_FOR_CAPACITY_15_MIN_RTID

REAL_TIME_CLEARING_PRICES_FOR_CAPACITY_BY_SCED_INTERVAL_RTID

RESOURCE_NODE_SETTLEMENT_TYPES

RTD_INDICATIVE_REAL_TIME_MCPC_RTID

RTM_PRICE_CORRECTIONS_RTID

SCED_SYSTEM_LAMBDA_RTID

SETTLEMENT_POINT_LOCATION_TYPE

Report Type IDs

SETTLEMENT_POINT_PRICES_AT_RESOURCE_NODES_HUBS_AND_LOAD_ZONES_RTID

SETTLEMENT_POINTS_LIST_AND_ELECTRICAL_BUSES_MAPPING_RTID

SHORT_TERM_SYSTEM_ADEQUACY_REPORT_RTID

SIXTY_DAY_DAM_DISCLOSURE_REPORTS_RTID

SIXTY_DAY_SCED_DISCLOSURE_REPORTS_RTID

SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID

SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID

Settlement Point Type Description

SYSTEM_WIDE_ACTUALS_RTID

TEMPERATURE_FORECAST_BY_WEATHER_ZONE_RTID

THREE_DAY_DAM_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID

THREE_DAY_HIGHEST_PRICE_BIDS_SCED_RTID

THREE_DAY_HIGHEST_PRICE_OFFERED_SCED_RTID

THREE_DAY_SCED_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID

TOTAL_CAPABILITY_OF_RESOURCES_AS_RTID

TWO_DAY_ANCILLARY_SERVICES_REPORTS_RTID

TWO_DAY_SCED_ANCILLARY_SERVICES_REPORTS_RTID

UNPLANNED_RESOURCE_OUTAGES_REPORT_RTID

WEEKLY_RUC_AS_DEMAND_CURVES_RTID

WEEKLY_RUC_AS_DEPLOYMENT_FACTORS_RTID

WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID

WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID

Contents#

gridstatus.ercot.ACTUAL_SYSTEM_LOAD_BY_FORECAST_ZONE = 14836[source]#
gridstatus.ercot.ACTUAL_SYSTEM_LOAD_BY_WEATHER_ZONE = 13101[source]#
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]#
gridstatus.ercot.COP_ADJUSTMENT_PERIOD_SNAPSHOT_RTID = 10038[source]#
gridstatus.ercot.DAILY_RUC_AS_DEMAND_CURVES_RTID = 26383[source]#
gridstatus.ercot.DAILY_RUC_AS_DEPLOYMENT_FACTORS_RTID = 24895[source]#
gridstatus.ercot.DAM_AGGREGATED_AS_OFFER_CURVE_RTID = 12330[source]#
gridstatus.ercot.DAM_ANCILLARY_SERVICE_PLAN_RTID = 12316[source]#
gridstatus.ercot.DAM_AND_SCED_ANCILLARY_SERVICE_DEMAND_CURVES_RTID = 24893[source]#
gridstatus.ercot.DAM_CLEARING_PRICES_FOR_CAPACITY_RTID = 12329[source]#
gridstatus.ercot.DAM_LMPS_BY_ELECTRICAL_BUS_RTID = 12328[source]#
gridstatus.ercot.DAM_PRICE_CORRECTIONS_RTID = 13044[source]#
gridstatus.ercot.DAM_SETTLEMENT_POINT_PRICES_RTID = 12331[source]#
gridstatus.ercot.DAM_SHADOW_PRICES_RTID = 12332[source]#
gridstatus.ercot.DAM_SYSTEM_LAMBDA_RTID = 13113[source]#
gridstatus.ercot.DAM_TOTAL_AS_SOLD_RTID = 24888[source]#
gridstatus.ercot.DAM_TOTAL_ENERGY_PURCHASED_RTID = 12333[source]#
gridstatus.ercot.DAM_TOTAL_ENERGY_SOLD_RTID = 12334[source]#
class gridstatus.ercot.Document[source]#

Attributes

constructed_name

None

friendly_name

None

friendly_name_timestamp

None

publish_date

None

url

None

gridstatus.ercot.ELECTRICAL_BUS_LOCATION_TYPE = 'Electrical Bus'[source]#
class gridstatus.ercot.Ercot[source]#

Bases: gridstatus.base.ISOBase

Electric 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

https://www.ercot.com/api/1/services/read/dashboards

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_RESOURCE_AS_OFFERS_SUPPLEMENTAL_END

None

SCED_RESOURCE_AS_OFFERS_SUPPLEMENTAL_START

None

SCED_SUPPLEMENTAL_CORRECTION_END

None

SCED_SUPPLEMENTAL_CORRECTION_START

None

status_homepage

https://www.ercot.com/gridmktinfo/dashboards/gridconditions

WAYBACK_CDX_URL

https://web.archive.org/cdx/search/cdx

WAYBACK_SNAP_URL

https://web.archive.org/web/{timestamp}/{url}’

Methods

ambiguous_based_on_dstflag(→ pandas.Series)

get_3_day_highest_price_bids_selected_sced(...)

Get the bid price and name of the Load Resource submitting the

get_3_day_highest_price_offered_sced(→ pandas.DataFrame)

Get the offer price and name of the Generation Resource submitting

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

get_available_seasonal_capacity_forecast(...)

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_cop_adjustment_period_snapshot_60_day(...)

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_highest_price_as_offer_selected_sced(...)

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_settlement_points_electrical_bus_mapping(...)

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(...)

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)

ambiguous_based_on_dstflag(df: pandas.DataFrame) pandas.Series[source]#
get_3_day_highest_price_bids_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 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_3_day_highest_price_offered_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 name of the Generation Resource submitting the highest-priced offer selected 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-916-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, Generation Resource, LMP, Proxy Extension, Power Balance Penalty Flag.

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)

  • “dam_as_only_awards” (when available, starting 2025-12-06)

  • “dam_as_only_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. date and end are 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

Source:

https://www.ercot.com/mp/data-products/data-product-details?id=NP4-180-ER

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

Includes large generation, small generation, inactive, and cancelled projects from the GIS Report.

Monthly historical data available here:

http://mis.ercot.com/misapp/GetReports.do?reportTypeId=15933&reportTitle=GIS%20Report&showHTMLView=&mimicKey

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

Source:

https://www.ercot.com/mp/data-products/data-product-details?id=NP3-565-CD

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_raw_interconnection_queue(verbose: bool = False) BinaryIO[source]#
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

Source:

https://www.ercot.com/mp/data-products/data-product-details?id=NP6-785-ER

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_MIN

  • DAY_AHEAD_HOURLY

Supported Location Types:
  • Load Zone

  • Trading Hub

  • Resource 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]#
read_doc(doc: Document, parse: bool = True, verbose: bool = False, request_kwargs: dict | None = None, read_csv_kwargs: dict | None = None) pandas.DataFrame[source]#
read_docs(docs: list[Document], parse: bool = True, empty_df: pandas.DataFrame | None = None, verbose: bool = False, request_kwargs: dict | None = None) pandas.DataFrame[source]#
gridstatus.ercot.ERCOT_INDICATIVE_LMP_BY_SETTLEMENT_POINT_RTID = 13073[source]#
class gridstatus.ercot.ERCOTSevenDayLoadForecastReport(*args, **kwds)[source]#

Bases: enum.Enum

Enum 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.GIS_REPORT_RTID = 15933[source]#
gridstatus.ercot.HISTORICAL_DAM_LOAD_ZONE_AND_HUB_PRICES_RTID = 13060[source]#
gridstatus.ercot.HISTORICAL_RTM_LOAD_ZONE_AND_HUB_PRICES_RTID = 13061[source]#
gridstatus.ercot.HOURLY_RESOURCE_OUTAGE_CAPACITY_RTID = 13103[source]#
gridstatus.ercot.HOURLY_RUC_AS_DEMAND_CURVES_RTID = 26382[source]#
gridstatus.ercot.HOURLY_RUC_AS_DEPLOYMENT_FACTORS_RTID = 24896[source]#
gridstatus.ercot.HUB_SETTLEMENT_TYPES = ['HU', 'SH', 'AH'][source]#
gridstatus.ercot.LMPS_BY_ELECTRICAL_BUS_RTID = 11485[source]#
gridstatus.ercot.LMPS_BY_SETTLEMENT_POINT_RTID = 12300[source]#
gridstatus.ercot.LOAD_ZONE_SETTLEMENT_TYPES = ['LZ', 'LZ_DC'][source]#
gridstatus.ercot.LOCATION_TYPE_HUB = 'Trading Hub'[source]#
gridstatus.ercot.LOCATION_TYPE_RESOURCE_NODE = 'Resource Node'[source]#
gridstatus.ercot.LOCATION_TYPE_ZONE = 'Load Zone'[source]#
gridstatus.ercot.LOCATION_TYPE_ZONE_DC = 'Load Zone DC Tie'[source]#
gridstatus.ercot.LOCATION_TYPE_ZONE_DC_EW = 'Load Zone DC Tie Energy Weighted'[source]#
gridstatus.ercot.LOCATION_TYPE_ZONE_EW = 'Load Zone Energy Weighted'[source]#
gridstatus.ercot.parse_timestamp_from_friendly_name(friendly_name: str) pandas.Timestamp[source]#
gridstatus.ercot.PROJECTED_ANCILLARY_SERVICE_DEPLOYMENTS_FACTORS_RTID = 24886[source]#
gridstatus.ercot.REAL_TIME_ADDERS_AND_RESERVES_RTID = 13221[source]#
gridstatus.ercot.REAL_TIME_ADDERS_RTID = 13221[source]#
gridstatus.ercot.REAL_TIME_CLEARING_LMPS_BY_RESOURCE_NODES_LOAD_ZONES_AND_TRADING_HUBS_RTD = 4104[source]#
gridstatus.ercot.REAL_TIME_CLEARING_PRICES_FOR_CAPACITY_15_MIN_RTID = 24898[source]#
gridstatus.ercot.REAL_TIME_CLEARING_PRICES_FOR_CAPACITY_BY_SCED_INTERVAL_RTID = 24891[source]#
gridstatus.ercot.RESOURCE_NODE_SETTLEMENT_TYPES = ['RN', 'PCCRN', 'LCCRN', 'PUN'][source]#
gridstatus.ercot.RTD_INDICATIVE_REAL_TIME_MCPC_RTID = 24889[source]#
gridstatus.ercot.RTM_PRICE_CORRECTIONS_RTID = 13045[source]#
gridstatus.ercot.SCED_SYSTEM_LAMBDA_RTID = 13114[source]#
gridstatus.ercot.SETTLEMENT_POINT_LOCATION_TYPE = 'Settlement Point'[source]#

Report Type IDs

gridstatus.ercot.SETTLEMENT_POINT_PRICES_AT_RESOURCE_NODES_HUBS_AND_LOAD_ZONES_RTID = 12301[source]#
gridstatus.ercot.SETTLEMENT_POINTS_LIST_AND_ELECTRICAL_BUSES_MAPPING_RTID = 10008[source]#
gridstatus.ercot.SHORT_TERM_SYSTEM_ADEQUACY_REPORT_RTID = 12315[source]#
gridstatus.ercot.SIXTY_DAY_DAM_DISCLOSURE_REPORTS_RTID = 13051[source]#
gridstatus.ercot.SIXTY_DAY_SCED_DISCLOSURE_REPORTS_RTID = 13052[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

gridstatus.ercot.SYSTEM_WIDE_ACTUALS_RTID = 12340[source]#
gridstatus.ercot.TEMPERATURE_FORECAST_BY_WEATHER_ZONE_RTID = 12325[source]#
gridstatus.ercot.THREE_DAY_DAM_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID = 13018[source]#
gridstatus.ercot.THREE_DAY_HIGHEST_PRICE_BIDS_SCED_RTID = 13230[source]#
gridstatus.ercot.THREE_DAY_HIGHEST_PRICE_OFFERED_SCED_RTID = 13029[source]#
gridstatus.ercot.THREE_DAY_SCED_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID = 25812[source]#
gridstatus.ercot.TOTAL_CAPABILITY_OF_RESOURCES_AS_RTID = 24887[source]#
gridstatus.ercot.TWO_DAY_ANCILLARY_SERVICES_REPORTS_RTID = 13057[source]#
gridstatus.ercot.TWO_DAY_SCED_ANCILLARY_SERVICES_REPORTS_RTID = 25814[source]#
gridstatus.ercot.UNPLANNED_RESOURCE_OUTAGES_REPORT_RTID = 22912[source]#
gridstatus.ercot.WEEKLY_RUC_AS_DEMAND_CURVES_RTID = 26384[source]#
gridstatus.ercot.WEEKLY_RUC_AS_DEPLOYMENT_FACTORS_RTID = 24897[source]#
gridstatus.ercot.WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID = 14787[source]#
gridstatus.ercot.WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID = 13028[source]#