The generation mix, over time
Monthly share of generation by fuel type, full available history.
How hard is each fuel type actually working?
Capacity factor = actual output ÷ capacity, by fuel type, by month. A gas fleet running at 20% is mostly idle backup; nuclear running near 90% is baseload doing what baseload does.
How much power Ontario actually uses
Monthly mean and peak Ontario demand — real IESO-published figures, not derived from the fuel-mix totals above.
What electricity actually traded for
Hourly Ontario Energy Price, monthly averages — the wholesale market price, not what appears on a household bill (that's dominated by the Global Adjustment, see below).
Where surplus and shortfall go
Net monthly flow on Ontario's interties, by neighbouring jurisdiction. Positive = net import to Ontario, negative = net export.
The Global Adjustment
The charge that actually dominates most Ontario electricity bills — usually bigger than the wholesale price above. Shown for as much history as IESO's source retains, which isn't much.
The last 24 hours
Generation by fuel (share of total) above, grid-average emissions intensity below — same hour on both, hover to line them up.
"Average" intensity = the grid's whole generation mix that hour. IESO/AESO fuel categories; hydro, nuclear, wind, solar and biofuel counted as zero direct-combustion emissions (see HeatPump/METHODOLOGY.md).
The last 12 months
Daily average emissions intensity — the shaded band is each day's min–max range, the line is the daily mean.
Average vs. marginal — which number matters?
The same grid, two honest answers, and they don't agree.
"Average" is the whole grid's mix this hour — what an emissions inventory uses. "Marginal" is the fuel that ramps to cover one more kWh of demand right now — what a *new* load like a heat pump or an EV actually causes, because the clean baseload (nuclear, hydro) was already running flat out. The two agree only when the marginal fuel happens to match the average mix, which rarely holds. Full reasoning in HeatPump/METHODOLOGY.md §Phase 1.
A typical day, by season
Multi-year hourly average, not "today" — see the note below.
Quebec, for context
Not a live series — Hydro-Québec's grid is >99% hydro and wind, so a full live pipeline isn't warranted for what's essentially a flat line.
Loading…
Data sources & methodology
Ontario, recent (last 24h / 12mo): IESO Generator Output by Fuel Type Hourly (reports-public.ieso.ca) — fully live, re-fetched every run.
Ontario, historical (generation mix, capacity, demand, price, interties, Global Adjustment): six further IESO reports (Generator Output by Fuel Type Monthly, Generator Output and Capability Month, Hourly Demand, HOEP Monthly Averages, Yearly Intertie Schedule and Flow, Global Adjustment Class B Rates) — see Python/grid_history_etl.py for exactly which report backs which chart, and why each one starts in a different year (each source's own retention/archive limit, stated plainly rather than padded or truncated to match the others).
Alberta: AESO CSD Generation (Hourly) — manually refreshed from Box-hosted files, not live. Fuel mix and capacity factor go back to 2015; Alberta has no equivalent to Ontario's demand/HOEP/intertie/Global-Adjustment reports (those are IESO-specific market mechanisms).
Quebec: Hydro-Québec hourly generation by source — manually refreshed, static context only.
Gas/coal emission factors are calibrated against The Atmospheric Fund (Ontario) and Alberta.ca's published NIR-sourced generation intensity — see HeatPump/METHODOLOGY.md for the full derivation, and docs/GRID.md for this page's data layer. The "typical day by season" panel (Advanced) reuses the Heat Pump tool's own multi-year hourly Phase-1 output rather than re-deriving anything — see Python/build_grid_seasonal.py.