IESO Load Examples#

Retrieves data from the Independent Electricity System Operator of Canada. https://www.ieso.ca/

import pandas as pd
import gridstatus
from gridstatus.ieso import IESO

ieso = IESO()
print(gridstatus.list_isos())
                                      Name     Id  Class
0                         Midcontinent ISO   miso   MISO
1                           California ISO  caiso  CAISO
2                                      PJM    pjm    PJM
3    Electric Reliability Council of Texas  ercot  Ercot
4                     Southwest Power Pool    spp    SPP
5                             New York ISO  nyiso  NYISO
6                          ISO New England  isone  ISONE
7  Independent Electricity System Operator   ieso   IESO

Get Five Minute Load#

Five minute load for the market and Ontario. From https://reports-public.ieso.ca/public/RealtimeConstTotals/

yesterday_start = pd.Timestamp.now().normalize() - pd.Timedelta(days=1)
today_start = yesterday_start + pd.Timedelta(days=1)

load = ieso.get_load(date=yesterday_start, end=today_start)
load.head(5)
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 24/24 [00:01<00:00, 12.68it/s]
Interval Start Interval End Market Total Load Ontario Load
0 2024-01-15 00:00:00-05:00 2024-01-15 00:05:00-05:00 19_160.0000 16_159.8000
1 2024-01-15 00:05:00-05:00 2024-01-15 00:10:00-05:00 19_131.7000 16_131.7000
2 2024-01-15 00:10:00-05:00 2024-01-15 00:15:00-05:00 19_073.1000 16_073.5000
3 2024-01-15 00:15:00-05:00 2024-01-15 00:20:00-05:00 19_056.0000 16_053.8000
4 2024-01-15 00:20:00-05:00 2024-01-15 00:25:00-05:00 18_871.8000 15_871.7000

Load Forecast#

Hourly load forecast for Ontario through tomorrow. https://www.ieso.ca/-/media/Files/IESO/Power-Data/Ontario-Demand-multiday.ashx

load_forecast = ieso.get_load_forecast("latest")
load_forecast.head(5)
Interval Start Interval End Publish Time Ontario Load Forecast
0 2024-01-11 00:00:00-05:00 2024-01-11 01:00:00-05:00 2024-01-16 19:52:18-05:00 16_243.0000
1 2024-01-11 01:00:00-05:00 2024-01-11 02:00:00-05:00 2024-01-16 19:52:18-05:00 15_464.0000
2 2024-01-11 02:00:00-05:00 2024-01-11 03:00:00-05:00 2024-01-16 19:52:18-05:00 15_048.0000
3 2024-01-11 03:00:00-05:00 2024-01-11 04:00:00-05:00 2024-01-16 19:52:18-05:00 14_821.0000
4 2024-01-11 04:00:00-05:00 2024-01-11 05:00:00-05:00 2024-01-16 19:52:18-05:00 14_797.0000

Zonal Load Forecast#

Hourly zonal load forecast up to 34 days in the future for Ontario, East, and West. https://reports-public.ieso.ca/public/OntarioZonalDemand

zonal_load_forecast = ieso.get_zonal_load_forecast("latest")
zonal_load_forecast.tail(5)
Interval Start Interval End Publish Time Ontario Load Forecast East Load Forecast West Load Forecast
835 2024-02-19 19:00:00-05:00 2024-02-19 20:00:00-05:00 2024-01-16 09:01:05-05:00 19_573.0000 19_027.0000 546.0000
836 2024-02-19 20:00:00-05:00 2024-02-19 21:00:00-05:00 2024-01-16 09:01:05-05:00 19_162.0000 18_616.0000 546.0000
837 2024-02-19 21:00:00-05:00 2024-02-19 22:00:00-05:00 2024-01-16 09:01:05-05:00 18_557.0000 18_017.0000 540.0000
838 2024-02-19 22:00:00-05:00 2024-02-19 23:00:00-05:00 2024-01-16 09:01:05-05:00 17_826.0000 17_296.0000 530.0000
839 2024-02-19 23:00:00-05:00 2024-02-20 00:00:00-05:00 2024-01-16 09:01:05-05:00 17_080.0000 16_564.0000 516.0000

Fuel Mix#

We can get the historical and real-time mix of fuel types used in the IESO region.

today = pd.Timestamp.now().normalize()
ten_days_ago = today - pd.Timedelta(days=10)

fuel_mix = ieso.get_fuel_mix(ten_days_ago, today)
fuel_mix.head()
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:11<00:00,  1.11s/it]
Interval Start Interval End Biofuel Gas Hydro Nuclear Solar Wind
0 2024-01-06 00:00:00-05:00 2024-01-06 01:00:00-05:00 22.0000 5_038.0000 3_833.0000 9_449.0000 0.0000 297.0000
1 2024-01-06 01:00:00-05:00 2024-01-06 02:00:00-05:00 18.0000 4_202.0000 3_643.0000 9_443.0000 0.0000 415.0000
2 2024-01-06 02:00:00-05:00 2024-01-06 03:00:00-05:00 18.0000 3_805.0000 3_610.0000 9_448.0000 0.0000 511.0000
3 2024-01-06 03:00:00-05:00 2024-01-06 04:00:00-05:00 18.0000 3_991.0000 3_565.0000 9_453.0000 0.0000 496.0000
4 2024-01-06 04:00:00-05:00 2024-01-06 05:00:00-05:00 18.0000 3_725.0000 3_690.0000 9_452.0000 0.0000 675.0000

Generator Output and Capability/Available Capacity#

We can see the output for all assets in IESO on an hourly basis. The variable generators (wind and solar) have a forecast and an available capacity. The non-variable generators have a capability.

gen_output = ieso.get_generator_report_hourly(today)
gen_output.head()
Interval Start Interval End Generator Name Fuel Type Output MW Capability MW Available Capacity MW Forecast MW
0 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 ATIKOKAN-G1 BIOFUEL 0.0000 215.0000 NaN NaN
1 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 CALSTOCKGS BIOFUEL 22.0000 38.0000 NaN NaN
2 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 TBAYBOWATER CTS BIOFUEL 0.0000 50.0000 NaN NaN
3 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 BRIGHTON BEACH GAS 241.0000 565.0000 NaN NaN
4 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 CARDINAL GAS 0.0000 184.0000 NaN NaN
gen_output[gen_output["Fuel Type"] == "SOLAR"].head()
Interval Start Interval End Generator Name Fuel Type Output MW Capability MW Available Capacity MW Forecast MW
128 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 GRANDSF SOLAR 0.0000 NaN 100.0000 0.0000
129 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 KINGSTONSF SOLAR 0.0000 NaN 0.0000 0.0000
130 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 NANTICOKE SOLAR SOLAR 0.0000 NaN 44.0000 0.0000
131 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 NORTHLAND POWER SOLAR FACILITIES SOLAR 0.0000 NaN 40.0000 0.0000
132 2024-01-16 00:00:00-05:00 2024-01-16 01:00:00-05:00 SOUTHGATE SF SOLAR 0.0000 NaN 50.0000 0.0000
gen_output.groupby(["Fuel Type", "Interval Start", "Interval End"]).sum(
    numeric_only=True
).tail()
Output MW Capability MW Available Capacity MW Forecast MW
Fuel Type Interval Start Interval End
WIND 2024-01-16 14:00:00-05:00 2024-01-16 15:00:00-05:00 3_011.0000 0.0000 4_896.0000 3_035.0000
2024-01-16 15:00:00-05:00 2024-01-16 16:00:00-05:00 3_115.0000 0.0000 4_896.0000 3_171.0000
2024-01-16 16:00:00-05:00 2024-01-16 17:00:00-05:00 2_945.0000 0.0000 4_896.0000 3_031.0000
2024-01-16 17:00:00-05:00 2024-01-16 18:00:00-05:00 2_842.0000 0.0000 4_916.0000 2_908.0000
2024-01-16 18:00:00-05:00 2024-01-16 19:00:00-05:00 2_877.0000 0.0000 4_916.0000 2_946.0000