ISO-NE logo

ISO-NE Generation Mix by Fuel

What is physically generating in ISO-NE, in megawatts by fuel, one row per interval.

Native record
one row per interval, wide by fuel
irregular 5-to-7-minute snapshots publication cadence
Evidence
Observed market data
Published observations from the named source
Time basis
Point-in-time records
UTC · event_time

Overview

364,161 intervals, 2022-01 to now. Columns: coal_mw, gas_mw, nuclear_mw, hydro_mw, wind_mw, solar_mw, storage_mw, other_mw. Wide rather than long: a whole interval's mix is one row, so shares are computed across columns in that row and the timestamp does not repeat once per fuel. "Which fuel is largest" is greatest() across the columns, or simply reading the row.

Query contract

Select one exact event_time and read every fuel column from that row. A mix assembled from more than one timestamp is not a mix that ever existed.

Analysis rules

  • Compute each fuel's share against the sum of the fuel columns in that same row, not against demand and not against a total from another interval.
  • For a change over a period, resolve complete buckets and compare their canonical observations; do not query two wall-clock instants separately.

Interpretation

  • other_mw includes Oil, Wood, Refuse, Landfill Gas, and Other. Oil can dominate during winter peaks, so use iso_ne.fuel_mix when the individual fuel behind other_mw matters.
  • storage_mw begins only on 2026-08-14, when ISO-NE first published Batteries as its own category. Zero before then is a reporting-classification change, not evidence that no batteries existed.

Access

Query from your own tools

Use the guarded HTTP endpoint directly, or connect an MCP client and load the dataset contract with describe_data before calling query_data.

HTTP endpoint
POST /api/v1/datasets/isone_generation_mix/query

Need the full history of this dataset in Snowflake, Databricks or your own storage? Data services delivers it on a schedule.

Schema10

Column
Type
event_timeDateTime64(6, 'UTC')
coal_mwNullable(Float64)
gas_mwNullable(Float64)
nuclear_mwNullable(Float64)
hydro_mwNullable(Float64)
wind_mwNullable(Float64)
solar_mwNullable(Float64)
storage_mwNullable(Float64)
other_mwNullable(Float64)
sourceLowCardinality(String)

Sample data

event_timecoal_mwgas_mwnuclear_mwhydro_mwwind_mwsolar_mwstorage_mwother_mwsource
2026-10-17 03:27:06.000000∅63012110350160450356live
2026-10-17 03:21:58.000000∅63902112352161851351live
2026-10-17 03:17:03.000000∅6388211035216095116348live
2026-10-17 03:10:19.000000∅6208211035315945149350live
2026-10-17 03:08:24.000000∅6203211035316105115351live
2026-10-17 03:02:45.000000∅637521093541624535358live
2026-10-17 02:58:45.000000∅634321103531671540359live
2026-10-17 02:50:53.000000∅619321123651737526356live
2026-10-17 02:45:22.000000∅63822110360176251356live
2026-10-17 02:36:46.000000∅65522110359178050353live
2026-10-17 02:27:50.000000∅66172110365178451355live
2026-10-17 02:21:25.000000∅64812112362180351357live
2026-10-17 02:17:07.000000∅64922109361183555360live
2026-10-17 02:13:10.000000∅650721103601851516358live
2026-10-17 02:09:54.000000∅671621103621892518357live
2026-10-17 02:01:54.000000∅683421103631924511355live
2026-10-17 01:54:58.000000∅67922110360194951358live
2026-10-17 01:46:24.000000∅686321103591950531349live
2026-10-17 01:40:58.000000∅70652108356195750355live
2026-10-17 01:35:16.000000∅71002111357196553355live
2026-10-17 01:24:41.000000∅72122112358194550340live
2026-10-17 01:17:54.000000∅72142108356194351344live
2026-10-17 01:12:25.000000∅73552110356194455344live
2026-10-17 01:08:15.000000∅74282109357194056345live
2026-10-17 01:02:31.000000∅747521083551967540336live

Coverage

99.8% complete3 gap days1,748 days with data
Show coverage history
Coverage: 99.8%Days with data: 1,748Gaps: 3
2026
2025
2024
2023
2022
gaplessmore