Ieso

Contents

Ieso#

Module Contents#

Classes Summary#

IESO

Independent Electricity System Operator (IESO)

SurplusState

Enum for surplus baseload generation states.

Functions#

Attributes Summary#

Contents#

gridstatus.ieso.CERTIFICATES_CHAIN_FILE[source]#
gridstatus.ieso.CURRENT_DIR[source]#
class gridstatus.ieso.IESO[source]#

Bases: gridstatus.base.ISOBase

Independent Electricity System Operator (IESO)

Attributes

default_timezone

‘EST’

iso_id

‘ieso’

name

‘Independent Electricity System Operator’

status_homepage

https://www.ieso.ca/en/Power-Data

Methods

get_forecast_surplus_baseload_generation(...)

Get forecast surplus baseload generation.

get_fuel_mix(date[, end, verbose])

Hourly output and capability for each fuel type (summed over all generators)

get_generator_report_hourly(date[, end, verbose])

Hourly output for each generator for a given date or from date to end.

get_hoep_historical_hourly(date[, end, verbose])

get_hoep_real_time_hourly(→ pandas.DataFrame)

get_in_service_transmission_limits(date[, end, verbose])

get_intertie_actual_schedule_flow_hourly(...)

get_intertie_flow_5_min(→ pandas.DataFrame)

get_intertie_limits_day_ahead_hourly(→ pandas.DataFrame)

Get day-ahead intertie scheduling limits.

get_intertie_limits_real_time_5_min(→ pandas.DataFrame)

Get real-time intertie scheduling limits.

get_lmp_day_ahead_hourly(→ pandas.DataFrame)

Get day-ahead LMP data.

get_lmp_day_ahead_hourly_intertie(→ pandas.DataFrame)

get_lmp_day_ahead_hourly_ontario_zonal(date[, end, ...])

get_lmp_day_ahead_hourly_virtual_zonal(→ pandas.DataFrame)

Get day-ahead zonal virtual LMP data.

get_lmp_day_ahead_operating_reserves(→ pandas.DataFrame)

Get day-ahead operating reserves LMP data.

get_lmp_predispatch_hourly(→ pandas.DataFrame)

get_lmp_predispatch_hourly_intertie(→ pandas.DataFrame)

get_lmp_predispatch_hourly_ontario_zonal(date[, end, ...])

get_lmp_predispatch_hourly_virtual_zonal(date[, end, ...])

get_lmp_real_time_5_min(date[, end, verbose])

get_lmp_real_time_5_min_intertie(date[, end, verbose])

get_lmp_real_time_5_min_ontario_zonal(date[, end, verbose])

get_lmp_real_time_5_min_virtual_zonal(date[, end, verbose])

get_lmp_real_time_operating_reserves(date[, end, verbose])

get_load(date[, end, verbose])

Get 5-minute load for the Market and Ontario for a given date or from

get_load_forecast(date[, verbose])

Get forecasted load for Ontario. Supports only "latest" and "today" because

get_load_zonal_5_min(→ pandas.DataFrame)

get_load_zonal_hourly(→ pandas.DataFrame)

get_mcp_historical_5_min(date[, end, verbose])

get_mcp_real_time_5_min()

get_outage_transmission_limits(date[, end, verbose])

get_real_time_totals(→ pandas.DataFrame)

get_resource_adequacy_report(→ pandas.DataFrame)

Retrieve and parse the Resource Adequacy Report for a given date.

get_resource_adequacy_report_by_last_modified(...)

Retrieve and parse Resource Adequacy Reports modified after last_modified time.

get_shadow_prices_day_ahead_hourly(→ pandas.DataFrame)

get_shadow_prices_real_time_5_min(→ pandas.DataFrame)

get_solar_embedded_forecast(→ pandas.DataFrame)

get_solar_market_participant_forecast(→ pandas.DataFrame)

get_transmission_outages_planned(date[, end, verbose])

get_wind_embedded_forecast(→ pandas.DataFrame)

get_wind_market_participant_forecast(→ pandas.DataFrame)

get_yearly_intertie_actual_schedule_flow_hourly(...)

Get yearly intertie actual schedule flow hourly. Since this is a yearly file

get_zonal_load_forecast(date[, end, verbose])

Get forecasted load by forecast zone (Ontario, East, West) for a given date

get_forecast_surplus_baseload_generation(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get forecast surplus baseload generation.

Parameters:
  • date – The publish date to get data for. The forecast will be for the day after this date.

  • end – The end date to get data for. If None, only get data for the start date.

  • verbose – Whether to print verbose output.

Returns:

  • Interval Start: The start of the interval

  • Interval End: The end of the interval

  • Publish Time: The time the forecast was published

  • Surplus Baseload MW: The forecast surplus baseload generation in MW

  • Surplus State: The state of the surplus baseload generation

  • Action: The action taken for the surplus baseload generation

  • Export Forecast MW: The forecast export in MW

  • Minimum Generation Status: The minimum generation status

Return type:

DataFrame with columns

get_fuel_mix(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#

Hourly output and capability for each fuel type (summed over all generators) for a given date or from date to end. Variable generators (solar and wind) have a forecast.

Parameters:
  • date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.

  • end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.

  • verbose (bool, optional) – Print verbose output. Defaults to False.

Returns:

fuel mix

Return type:

pd.DataFrame

get_generator_report_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#

Hourly output for each generator for a given date or from date to end. Variable generators (solar and wind) have a forecast and available capacity. Non-variable generators have a capability.

Parameters:
  • date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.

  • end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.

  • verbose (bool, optional) – Print verbose output. Defaults to False.

Returns:

generator output and capability/available capacity

Return type:

pd.DataFrame

get_hoep_historical_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
get_hoep_real_time_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_in_service_transmission_limits(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_intertie_actual_schedule_flow_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_intertie_flow_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_intertie_limits_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get day-ahead intertie scheduling limits.

This returns hourly data showing import and export limits for each of Ontario’s intertie zones used in the day-ahead market.

Parameters:
  • date – Date or date range to get data for, or “latest”

  • end – End date for date range (optional)

  • verbose – Whether to print verbose output

Returns:

DataFrame with columns for interval start/end and import/export limits for each intertie zone

get_intertie_limits_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get real-time intertie scheduling limits.

This returns 5-minute interval data showing import and export limits for each of Ontario’s intertie zones.

Parameters:
  • date – Date or date range to get data for, or “latest”

  • end – End date for date range (optional)

  • verbose – Whether to print verbose output

Returns:

DataFrame with columns for interval start/end and import/export limits for each intertie zone

get_lmp_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get day-ahead LMP data. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output.

Returns:

DataFrame with LMP data.

get_lmp_day_ahead_hourly_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_lmp_day_ahead_hourly_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_day_ahead_hourly_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get day-ahead zonal virtual LMP data. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output.

Returns:

DataFrame with LMP data.

get_lmp_day_ahead_operating_reserves(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get day-ahead operating reserves LMP data.

Parameters:
  • date – The date to get the data for.

  • end – The end date to get the data for.

  • verbose – Whether to print verbose output.

Returns:

DataFrame with operating reserves LMP data.

get_lmp_predispatch_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_lmp_predispatch_hourly_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_lmp_predispatch_hourly_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_predispatch_hourly_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_real_time_5_min_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_real_time_5_min_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_real_time_5_min_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_lmp_real_time_operating_reserves(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_load(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#

Get 5-minute load for the Market and Ontario for a given date or from date to end date.

Parameters:
  • date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.

  • end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.

  • verbose (bool, optional) – Print verbose output. Defaults to False.

  • frequency (str, optional) – Frequency of data. Defaults to “5min”.

Returns:

zonal load as a wide table with columns for each zone

Return type:

pd.DataFrame

get_load_forecast(date: str, verbose: bool = False)[source]#

Get forecasted load for Ontario. Supports only “latest” and “today” because there is only one load forecast.

Parameters:
  • date (str) – Either “today” or “latest”

  • verbose (bool, optional) – Print verbose output. Defaults to False.

Returns:

Ontario load forecast

Return type:

pd.DataFrame

get_load_zonal_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_load_zonal_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_mcp_historical_5_min(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
get_mcp_real_time_5_min()[source]#
get_outage_transmission_limits(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_real_time_totals(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_resource_adequacy_report(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, vintage: Literal['all', 'latest'] = 'latest', last_modified: str | datetime.date | datetime.datetime | None = None) pandas.DataFrame[source]#

Retrieve and parse the Resource Adequacy Report for a given date.

Parameters:
  • date (str | datetime.date | datetime.datetime) – The date for which to get the report

  • end (datetime.date | datetime.datetime | None) – The end date for the range of reports to get

  • vintage (Literal["all", "latest"]) – The version of the report to get

  • last_modified (str | datetime.date | datetime.datetime | None) – The last modified time after which to get report(s)

Returns:

The Resource Adequacy Report df for the given date

Return type:

pd.DataFrame

get_resource_adequacy_report_by_last_modified(last_modified: str | datetime.date | datetime.datetime) pandas.DataFrame[source]#

Retrieve and parse Resource Adequacy Reports modified after last_modified time. This method bypasses date iteration and gets all files across all dates. This is useful for ETL systems that want to get all new files at once.

Parameters:
  • last_modified – The last modified time after which to get report(s)

  • vintage – The version of the report to get

Returns:

The Resource Adequacy Report df with all files modified after last_modified

Return type:

pd.DataFrame

get_shadow_prices_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, last_modified: str | pandas.Timestamp | None = None) pandas.DataFrame[source]#
get_shadow_prices_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, last_modified: str | pandas.Timestamp | None = None) pandas.DataFrame[source]#
get_solar_embedded_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
get_solar_market_participant_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
get_transmission_outages_planned(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
get_wind_embedded_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
get_wind_market_participant_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
get_yearly_intertie_actual_schedule_flow_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, vintage: Literal['all', 'latest'] = 'latest', last_modified: str | datetime.date | datetime.datetime | None = None) pandas.DataFrame[source]#

Get yearly intertie actual schedule flow hourly. Since this is a yearly file it is updated less frequency than the daily files. These can be retrieved via the get_intertie_schedule_flow_hourly method. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output. :param vintage: Whether to get the latest version or all versions of the report. :param last_modified: Only return reports modified after this date.

Returns:

DataFrame with hourly intertie schedule flow data.

get_zonal_load_forecast(date: str | datetime.date | tuple[datetime.date, datetime.date], end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#

Get forecasted load by forecast zone (Ontario, East, West) for a given date or from date to end date. This method supports future dates.

Supports data 90 days into the past and up to 34 days into the future.

Parameters:
  • date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.

  • end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.

  • verbose (bool, optional) – Print verbose output. Defaults to False.

Returns:

forecasted load as a wide table with columns for each zone

Return type:

pd.DataFrame

gridstatus.ieso.retired_data_warning()[source]#
gridstatus.ieso.RETIRED_DATE[source]#
class gridstatus.ieso.SurplusState[source]#

Bases: str, enum.Enum

Enum for surplus baseload generation states.

The state is determined by the Action field in the report: - No Action (empty/null) -> No Surplus (white) - Other -> Managed with exports/curtailments/VG dispatch (green) - Manoeuvre -> Potential to dispatch nuclear units (yellow) - Shutdown -> Potential to shutdown nuclear units (red)

Initialize self. See help(type(self)) for accurate signature.

Attributes

MANAGED_WITH_EXPORTS

‘Managed with Exports’

NO_SURPLUS

‘No Surplus’

NUCLEAR_DISPATCH

‘Nuclear Dispatch’

NUCLEAR_SHUTDOWN

‘Nuclear Shutdown’