SPP logo

SPP Day-Ahead Ancillary Prices

Cleared day-ahead ancillary-service capacity prices in SPP, one row per hour, reserve zone and product.

Native record
product x region x delivery hour
hourly (day-ahead) publication cadence
Evidence
Cleared day-ahead market
A market outcome, not a physical observation
Time basis
Interval-start records
UTC · event_time

Overview

Inspect the current measured time coverage. Products: reg_up, reg_down, spin, supplemental, ramp_up, ramp_down, uncertainty_up. 8 SPP reserve zones. price_usd_mw is a price for CAPACITY held in reserve — dollars per megawatt of commitment — not dollars per megawatt-hour of energy delivered. The two are different units and are not comparable to an LMP.

Query contract

Select one product and one region before aggregating. Each row is already the canonical cleared price for that combination.

Analysis rules

  • Never sum prices across products. Reserve products are separately procured markets and their prices do not add to a meaningful total.
  • Never sum or average across reserve zones without saying so; 8 spp reserve zones.

Interpretation

  • price_usd_mw is $/MW of capacity held, not $/MWh of energy. Do not compare it directly to an LMP, and do not multiply it by megawatt-hours.
  • A cleared price is what the day-ahead market settled at. It is not the quantity procured, not a scarcity measurement, and not evidence that reserves were short.

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

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

Schema4

Column
Type
event_timeDateTime64(6, 'UTC')
regionLowCardinality(String)
productLowCardinality(String)
price_usd_mwNullable(Float64)

Sample data

event_timeregionproductprice_usd_mw
2026-10-12 04:00:00.0000005reg_down7.868
2026-10-12 04:00:00.0000005ramp_down0
2026-10-12 04:00:00.0000005ramp_up0
2026-10-12 04:00:00.0000001ramp_up0
2026-10-12 04:00:00.0000001ramp_down0
2026-10-12 04:00:00.0000004reg_up8.7248
2026-10-12 04:00:00.0000004spin1
2026-10-12 04:00:00.0000001reg_up8.7248
2026-10-12 04:00:00.0000004ramp_down0
2026-10-12 04:00:00.0000005spin1
2026-10-12 04:00:00.0000005reg_up8.7248
2026-10-12 04:00:00.0000004reg_down7.868
2026-10-12 04:00:00.0000004ramp_up0
2026-10-12 04:00:00.0000005uncertainty_up0
2026-10-12 04:00:00.0000004uncertainty_up0
2026-10-12 04:00:00.0000005supplemental0.0101
2026-10-12 04:00:00.0000004supplemental0.0101
2026-10-12 04:00:00.00000021ramp_up0
2026-10-12 04:00:00.0000002ramp_down0
2026-10-12 04:00:00.0000002reg_down7.868
2026-10-12 04:00:00.00000021reg_down8.8359
2026-10-12 04:00:00.00000021ramp_down0
2026-10-12 04:00:00.0000001reg_down7.868
2026-10-12 04:00:00.0000003ramp_down0
2026-10-12 04:00:00.000000SWPWramp_up0

Coverage

100.0% complete0 gap days4,609 days with data
Show coverage history
Coverage: 100.0%Days with data: 4,609Gaps: 0
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
gaplessmore