Skip to content

Enverus NRF API Knowledge Base

Overview

The Enverus NRF (Nodal Resource Forecast) API provides wind and solar power forecasts for various ISOs across the US. This document covers the key concepts for using the API effectively for day-ahead trading.

Key Concept: start_date vs Forecast Date

Important: The API's start_date parameter specifies when the forecast model is generated, NOT the date of the forecasted data.

For example: - start_date=20260111 requests the forecast generated on Jan 11 - This forecast contains predictions for Jan 11, Jan 12, and part of Jan 13 (~48 hours for HRRR)

Day-Ahead Trading Workflow

Terminology

  • OD (Operating Day): The day you are trading/forecasting for
  • OD-1: The day before the operating day (when you place trades)

How the Client Works

When you call fetch_df("miso", EnverusDataType.WIND_FORECAST, "20260113"):

  1. The client requests the model run from OD-1 (Jan 12's model run)
  2. The HRRR 12:00 UTC model produces ~48 hours of forecasts
  3. This includes full 24-hour coverage for OD (Jan 13, 00:00 to 23:59)
  4. The client filters and returns only Jan 13 data

Example: Trading Jan 13 (OD)

from progridpy.utils.enverus_api import EnverusClient, EnverusDataType, WeatherModel

client = EnverusClient()

# On Jan 12 (OD-1), fetch forecast for Jan 13 (OD)
df = client.fetch_df(
    "miso",
    EnverusDataType.WIND_FORECAST,
    "20260113",  # Operating Day you want forecast for
    model=WeatherModel.HRRR
)

# Returns full 24-hour forecast: 00:00 to 23:59 local time
print(df["interval_start_local"].min())  # 2026-01-13 00:00:00
print(df["interval_start_local"].max())  # 2026-01-13 23:00:00

Model Run Times (gen_hr)

The gen_hr parameter specifies the model generation hour (UTC):

Model gen_hr Model Run (UTC) First Forecast Hour (Local)
HRRR 0 00:00 UTC ~18:00 previous day
HRRR 6 06:00 UTC ~00:00 same day
HRRR 12 12:00 UTC ~06:00 same day
HRRR 18 18:00 UTC ~12:00 same day
ECMWF 0 00:00 UTC ~18:00 previous day

Default: gen_hr=12 for HRRR (final forecast before market close)

Model Run Availability at 8 AM Local Time

When fetching forecast for OD on OD-1 at 8 AM local time:

MISO/SPP/ERCOT (Central Time: 8 AM CST = 14:00 UTC)

Model gen_hr Model Run (UTC) Available at 8 AM? OD Coverage
HRRR 0 00:00 UTC Yes (14 hrs old) Full 24 hrs
HRRR 6 06:00 UTC Yes (8 hrs old) Full 24 hrs
HRRR 12 12:00 UTC Yes (2 hrs old) Full 24 hrs
ECMWF 0 00:00 UTC Yes Full 24 hrs

PJM/NYISO (Eastern Time: 8 AM EST = 13:00 UTC)

Model gen_hr Model Run (UTC) Available at 8 AM? OD Coverage
HRRR 0 00:00 UTC Yes (13 hrs old) Full 24 hrs
HRRR 6 06:00 UTC Yes (7 hrs old) Full 24 hrs
HRRR 12 12:00 UTC TIGHT (1 hr old) Full 24 hrs
ECMWF 0 00:00 UTC Yes Full 24 hrs

Example: Using Different gen_hr Values

# Safe for 8 AM trading (default)
df = client.fetch_df("miso", EnverusDataType.WIND_FORECAST, "20260113")

# Latest forecast for 10 AM trading
df = client.fetch_df("miso", EnverusDataType.WIND_FORECAST, "20260113", gen_hr=12)

Data Structure

The API returns data in long format with these columns:

Column Description
interval_start_local Start of the forecast interval (local time)
node Power node identifier (e.g., ALTE.CEDARDGE)
wind_forecast / solar_forecast Forecasted power output (MW)

Supported Features

from progridpy.utils.enverus_api import EnverusDataType, WeatherModel

# Forecast types
EnverusDataType.WIND_FORECAST      # Wind power forecast
EnverusDataType.SOLAR_FORECAST     # Solar power forecast
EnverusDataType.EXTREME_WIND_SPEED # High wind speed flags (HRRR only)
EnverusDataType.TURBINE_ICING      # Turbine icing flags (HRRR only)
EnverusDataType.SOLAR_SMOKE        # Solar smoke flags (HRRR only)
EnverusDataType.SOLAR_SNOW         # Solar snow cover flags (HRRR only)

# Weather models
WeatherModel.HRRR   # High-Resolution Rapid Refresh (hourly updates)
WeatherModel.ECMWF  # European model (longer forecast horizon)

ISOs Supported

  • miso - Midcontinent ISO
  • ercot - ERCOT (Texas)
  • spp - Southwest Power Pool
  • pjm - PJM Interconnection
  • nyiso - New York ISO
  • isone - ISO New England
  • caiso - California ISO

API Limitations

  1. AWS Timeout: Large date ranges may timeout. Fetch one day at a time.
  2. Historical Data: HRRR forecasts available from 12/3/2020, ECMWF from 1/1/2018.
  3. Missing Data: Some historical forecasts may be unavailable (shown as -999).

Reference

For full API documentation, see the official Enverus NRF API User Guide (ST NRF - API User Guide.pdf).