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 Market Data.

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

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

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-10-21 01:00:00.0000002026-10-19 02:00:00.0000002026-10-21T02:00:00002026-10-19 02:42:36.717434
2026-10-21 00:00:00.0000002026-10-19 02:00:00.0000002026-10-21T01:00:00002026-10-19 02:42:36.717434
2026-10-21 00:00:00.0000002026-10-19 01:00:00.0000002026-10-21T01:00:00002026-10-19 02:42:36.717434
2026-10-21 00:00:00.0000002026-10-19 01:00:00.0000002026-10-21T01:00:00002026-10-19 01:42:38.905479
2026-10-20 23:00:00.0000002026-10-19 02:00:00.0000002026-10-21T00:00:000.13602026-10-19 02:42:36.717434
2026-10-20 23:00:00.0000002026-10-19 01:00:00.0000002026-10-21T00:00:000.11702026-10-19 02:42:36.717434
2026-10-20 23:00:00.0000002026-10-19 00:00:00.0000002026-10-21T00:00:000.11602026-10-19 02:42:36.717434
2026-10-20 23:00:00.0000002026-10-19 01:00:00.0000002026-10-21T00:00:000.11702026-10-19 01:42:38.905479
2026-10-20 23:00:00.0000002026-10-19 00:00:00.0000002026-10-21T00:00:000.11602026-10-19 01:42:38.905479
2026-10-20 22:00:00.0000002026-10-19 02:00:00.0000002026-10-20T23:00:00770.91602026-10-19 02:42:36.717434
2026-10-20 22:00:00.0000002026-10-19 01:00:00.0000002026-10-20T23:00:00758.41702026-10-19 02:42:36.717434
2026-10-20 22:00:00.0000002026-10-19 00:00:00.0000002026-10-20T23:00:00753.40202026-10-19 02:42:36.717434
2026-10-20 22:00:00.0000002026-10-18 23:00:00.0000002026-10-20T23:00:00752.73302026-10-19 02:42:38.086844
2026-10-20 22:00:00.0000002026-10-19 01:00:00.0000002026-10-20T23:00:00758.41702026-10-19 01:42:38.905479
2026-10-20 22:00:00.0000002026-10-19 00:00:00.0000002026-10-20T23:00:00753.40202026-10-19 01:42:38.905479
2026-10-20 22:00:00.0000002026-10-18 23:00:00.0000002026-10-20T23:00:00752.73302026-10-19 01:42:38.905479
2026-10-20 21:00:00.0000002026-10-19 02:00:00.0000002026-10-20T22:00:005892.857286.1492026-10-19 02:42:36.717434
2026-10-20 21:00:00.0000002026-10-19 01:00:00.0000002026-10-20T22:00:005805.867286.1492026-10-19 02:42:36.717434
2026-10-20 21:00:00.0000002026-10-19 00:00:00.0000002026-10-20T22:00:005801.221286.1492026-10-19 02:42:36.717434
2026-10-20 21:00:00.0000002026-10-18 23:00:00.0000002026-10-20T22:00:005783.72286.1492026-10-19 02:42:38.086844
2026-10-20 21:00:00.0000002026-10-18 22:00:00.0000002026-10-20T22:00:005782.45290.3572026-10-19 02:42:38.086844
2026-10-20 21:00:00.0000002026-10-19 01:00:00.0000002026-10-20T22:00:005805.867286.1492026-10-19 01:42:38.905479
2026-10-20 21:00:00.0000002026-10-19 00:00:00.0000002026-10-20T22:00:005801.221286.1492026-10-19 01:42:38.905479
2026-10-20 21:00:00.0000002026-10-18 23:00:00.0000002026-10-20T22:00:005783.72286.1492026-10-19 01:42:38.905479
2026-10-20 21:00:00.0000002026-10-18 22:00:00.0000002026-10-20T22:00:005782.45290.3572026-10-19 01:42:40.211807

Coverage

100.0% complete0 gap days72 days with data
Show coverage history
Coverage: 100.0%Days with data: 72Gaps: 0
2026
gaplessmore