Aeso#

Submodules#

Package Contents#

Classes Summary#

AESO

API client for Alberta Electric System Operator (AESO) data.

Contents#

class gridstatus.aeso.AESO(api_key: str | None = None)[source]#

API client for Alberta Electric System Operator (AESO) data.

Handles authentication and provides methods to access various AESO datasets including supply and demand, market data, and operational information.

Initialize the AESO API client.

Parameters:

api_key – AESO API key. If not provided, will try to get from AESO_API_KEY environment variable.

Attributes

api_key

None

base_url

https://apimgw.aeso.ca/public

default_headers

None

default_timezone

‘US/Mountain’

HISTORICAL_FORECAST_EARLIEST

None

HISTORICAL_FORECAST_LATEST

None

MAX_NAVIGATION_ATTEMPTS

100

REQUEST_TIMEOUT

(10, 120)

Methods

get_asset_list(→ pandas.DataFrame)

Get list of assets in the AESO system.

get_daily_average_pool_price(→ pandas.DataFrame)

Get daily average pool price data with on-peak and off-peak breakdowns.

get_forecast_pool_price(→ pandas.DataFrame)

Get pool price data.

get_fuel_mix(→ pandas.DataFrame)

Get current generation by fuel type.

get_generator_outages_hourly(→ pandas.DataFrame)

Get hourly generator outage data.

get_interchange(→ pandas.DataFrame)

Get current interchange flows with neighboring regions.

get_load(→ pandas.DataFrame)

Get current load data.

get_load_forecast(→ pandas.DataFrame)

Get load forecast data.

get_pool_price(→ pandas.DataFrame)

Get pool price data.

get_reserves(→ pandas.DataFrame)

Get current reserve data.

get_solar_10_min(→ pandas.DataFrame)

Get actual solar generation data with 10-minute intervals.

get_solar_forecast_12_hour(→ pandas.DataFrame)

Get 12-hour solar forecast data.

get_solar_forecast_7_day(→ pandas.DataFrame)

Get 7-day solar forecast data.

get_solar_hourly(→ pandas.DataFrame)

Get actual solar generation data with hourly intervals.

get_supply_and_demand(→ pandas.DataFrame)

Get current supply and demand summary data.

get_system_marginal_price(→ pandas.DataFrame)

Get system marginal price data.

get_transmission_outages(→ pandas.DataFrame)

Get transmission outages data.

get_unit_status(→ pandas.DataFrame)

Get current unit status data for all assets in the AESO system.

get_wind_10_min(→ pandas.DataFrame)

Get actual wind generation data with 10-minute intervals.

get_wind_forecast_12_hour(→ pandas.DataFrame)

Get 12-hour wind forecast data.

get_wind_forecast_7_day(→ pandas.DataFrame)

Get 7-day wind forecast data.

get_wind_hourly(→ pandas.DataFrame)

Get actual wind generation data with hourly intervals.

get_asset_list(asset_id: str | None = None, pool_participant_id: str | None = None, operating_status: str | None = None, asset_type: str | None = None) pandas.DataFrame[source]#

Get list of assets in the AESO system.

Parameters:
  • asset_id – Filter by specific asset ID

  • pool_participant_id – Filter by pool participant ID

  • operating_status – Filter by operating status

  • asset_type – Filter by asset type

Returns:

DataFrame containing asset information

get_daily_average_pool_price(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 daily average pool price data with on-peak and off-peak breakdowns.

On-peak hours are defined as hours ending 8 through 23 (inclusive). Off-peak hours are all other hours.

Returns:

DataFrame containing daily average price data

get_forecast_pool_price(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 pool price data.

Returns:

DataFrame containing pool price data

get_fuel_mix() pandas.DataFrame[source]#

Get current generation by fuel type.

Returns:

DataFrame containing generation data by fuel type, with each fuel type as a column containing its net generation value

get_generator_outages_hourly(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 hourly generator outage data.

Parameters:
  • date – Start date for the data. Can be “latest” to get current data.

  • end – End date for the data. If not provided, will get 24 months of data.

  • verbose – Whether to print verbose output.

Returns:

DataFrame containing generator outage data

get_interchange() pandas.DataFrame[source]#

Get current interchange flows with neighboring regions.

Returns:

DataFrame containing interchange data with separate columns for each region’s flow and a net interchange flow column

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 current load data.

Returns:

DataFrame containing load data

get_load_forecast(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 forecast data.

The AESO publishes load forecasts daily at 7am Mountain Time. The forecast covers the next 13 days. The publish time is determined as follows:

  • For historical data: 7am on the day of the interval if interval is after 7am, otherwise 7am the previous day

  • For future data: 7am today (if after 7am) or 7am yesterday (if before 7am)

Returns:

DataFrame containing load forecast data with publish times.

get_pool_price(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 pool price data.

Returns:

DataFrame containing pool price data

get_reserves() pandas.DataFrame[source]#

Get current reserve data.

Returns:

DataFrame containing reserve information

get_solar_10_min(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 actual solar generation data with 10-minute intervals.

Returns:

DataFrame containing actual solar generation data with 10-minute intervals

get_solar_forecast_12_hour(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 12-hour solar forecast data.

Returns:

DataFrame containing 12-hour solar forecast data with min, most likely, and max values

get_solar_forecast_7_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 7-day solar forecast data.

Returns:

DataFrame containing 7-day solar forecast data with min, most likely, and max values

get_solar_hourly(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 actual solar generation data with hourly intervals.

Returns:

DataFrame containing actual solar generation data with hourly intervals

get_supply_and_demand() pandas.DataFrame[source]#

Get current supply and demand summary data.

Returns:

DataFrame containing current supply and demand information

get_system_marginal_price(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 marginal price data.

Returns:

DataFrame containing system marginal price data with minutely intervals

get_transmission_outages(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None) pandas.DataFrame[source]#

Get transmission outages data.

Parameters:
  • date – Start date for the data. Can be “latest” to get current data.

  • end – End date for the data. If not provided, will get data for the specified date.

Returns:

DataFrame containing transmission outage data

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

Get current unit status data for all assets in the AESO system.

Returns:

  • Time: Timestamp of the data

  • Asset: Asset identifier

  • Fuel Type: Type of fuel used

  • Sub Fuel Type: Sub-category of fuel type

  • Maximum Capability: Maximum generation capability in MW

  • Net Generation: Current net generation in MW

  • Dispatched Contingency Reserve: Amount of contingency reserve dispatched in MW

Return type:

DataFrame containing unit status data with columns

get_wind_10_min(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 actual wind generation data with 10-minute intervals.

Returns:

DataFrame containing actual wind generation data with 10-minute intervals

get_wind_forecast_12_hour(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 12-hour wind forecast data.

Returns:

DataFrame containing 12-hour wind forecast data with min, most likely, and max values

get_wind_forecast_7_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 7-day wind forecast data.

Returns:

DataFrame containing 7-day wind forecast data with min, most likely, and max values

get_wind_hourly(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 actual wind generation data with hourly intervals.

Returns:

DataFrame containing actual wind generation data with hourly intervals