PJM logo

Hourly Solar Power Forecast

PJM's RTO-wide hourly solar forecast by publication vintage.

Native record
RTO target hour x issue vintage
hourly refresh; hourly targets publication cadence
Evidence
Forecast data
Forward-looking values with an explicit issue time
Time basis
Interval-start records
UTC · event_time

Overview

solar_forecast_mwh is utility-scale output aligned with the metered Solar row in pjm.gen_by_fuel; solar_forecast_btm_mwh is a separate behind-the-meter load-side estimate with no published metered generation actual. Historical evaluation must select a vintage issued no later than delivery. Source: PJM Data Miner 2.

Query contract

For historical scoring, select argMax(solar_forecast_mwh, evaluated_at_utc) with evaluated_at_utc <= event_time. For future targets, cap evaluated_at_utc at the analysis cutoff.

Analysis rules

  • Do not sum issue vintages.
  • solar_forecast_mwh is utility-scale output and aligns with the Solar row of pjm.gen_by_fuel. solar_forecast_btm_mwh is a distinct load-side estimate with no metered generation actual.

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/pjm_hourly_solar_power_forecast/query

Schema6

Column
Type
event_timeDateTime64(6, 'UTC')
evaluated_at_utcDateTime64(6, 'UTC')
datetime_ending_utcNullable(String)
solar_forecast_mwhNullable(Float64)
solar_forecast_btm_mwhNullable(Float64)
ingested_atDateTime64(6, 'UTC')

Sample data

event_timeevaluated_at_utcdatetime_ending_utcsolar_forecast_mwhsolar_forecast_btm_mwhingested_at
2026-09-06 00:00:00.0000002026-09-04 01:00:00.0000002026-09-06T01:00:005.37702026-09-04 01:42:39.051091
2026-09-05 23:00:00.0000002026-09-04 01:00:00.0000002026-09-06T00:00:00744.4950.4472026-09-04 01:42:39.051091
2026-09-05 23:00:00.0000002026-09-04 00:00:00.0000002026-09-06T00:00:00730.5070.4472026-09-04 01:42:39.051091
2026-09-05 23:00:00.0000002026-09-04 00:00:00.0000002026-09-06T00:00:00730.5070.4472026-09-04 00:42:39.450468
2026-09-05 22:00:00.0000002026-09-04 01:00:00.0000002026-09-05T23:00:004038.47216.7172026-09-04 01:42:39.051091
2026-09-05 22:00:00.0000002026-09-04 00:00:00.0000002026-09-05T23:00:003965.968216.7172026-09-04 01:42:39.051091
2026-09-05 22:00:00.0000002026-09-03 23:00:00.0000002026-09-05T23:00:003968.313202.7752026-09-04 01:42:39.051091
2026-09-05 22:00:00.0000002026-09-04 00:00:00.0000002026-09-05T23:00:003965.968216.7172026-09-04 00:42:39.450468
2026-09-05 22:00:00.0000002026-09-03 23:00:00.0000002026-09-05T23:00:003968.313202.7752026-09-04 00:42:39.450468
2026-09-05 22:00:00.0000002026-09-03 23:00:00.0000002026-09-05T23:00:003968.313202.7752026-09-03 23:42:44.480551
2026-09-05 21:00:00.0000002026-09-04 01:00:00.0000002026-09-05T22:00:006843.3671600.1012026-09-04 01:42:39.051091
2026-09-05 21:00:00.0000002026-09-04 00:00:00.0000002026-09-05T22:00:006703.9771600.1012026-09-04 01:42:39.051091
2026-09-05 21:00:00.0000002026-09-03 23:00:00.0000002026-09-05T22:00:006707.6351213.6372026-09-04 01:42:39.051091
2026-09-05 21:00:00.0000002026-09-04 00:00:00.0000002026-09-05T22:00:006703.9771600.1012026-09-04 00:42:39.450468
2026-09-05 21:00:00.0000002026-09-03 23:00:00.0000002026-09-05T22:00:006707.6351213.6372026-09-04 00:42:39.450468
2026-09-05 21:00:00.0000002026-09-03 22:00:00.0000002026-09-05T22:00:006709.7091213.6372026-09-04 00:42:39.450468
2026-09-05 21:00:00.0000002026-09-03 23:00:00.0000002026-09-05T22:00:006707.6351213.6372026-09-03 23:42:44.480551
2026-09-05 21:00:00.0000002026-09-03 22:00:00.0000002026-09-05T22:00:006709.7091213.6372026-09-03 23:42:44.480551
2026-09-05 20:00:00.0000002026-09-04 01:00:00.0000002026-09-05T21:00:008296.1681710.1032026-09-04 01:42:39.051091
2026-09-05 20:00:00.0000002026-09-04 00:00:00.0000002026-09-05T21:00:008093.2931710.1032026-09-04 01:42:39.051091
2026-09-05 20:00:00.0000002026-09-03 23:00:00.0000002026-09-05T21:00:008098.381340.1832026-09-04 01:42:39.051091
2026-09-05 20:00:00.0000002026-09-04 00:00:00.0000002026-09-05T21:00:008093.2931710.1032026-09-04 00:42:39.450468
2026-09-05 20:00:00.0000002026-09-03 23:00:00.0000002026-09-05T21:00:008098.381340.1832026-09-04 00:42:39.450468
2026-09-05 20:00:00.0000002026-09-03 22:00:00.0000002026-09-05T21:00:008101.7051340.1832026-09-04 00:42:39.450468
2026-09-05 20:00:00.0000002026-09-03 23:00:00.0000002026-09-05T21:00:008098.381340.1832026-09-03 23:42:44.480551

Coverage

100.0% complete0 gap days11 days with data
Show coverage history ▾
Coverage: 100.0%Days with data: 11Gaps: 0
2026
gaplessmore