SPP logo

SPP Day-Ahead Prices

SPP day-ahead locational marginal prices, one row per interval and location.

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

Overview

Check measured time coverage separately for settlement and bus prices. Carries price_usd_mwh plus energy_usd_mwh, congestion_usd_mwh and loss_usd_mwh. Locations are node, hub and unambiguous bus; location_id joins atg.spp_locations for the readable name, and kind is carried inline so a hub-only or zone-only question needs no join at all. Every market's day-ahead price table in this catalog has these same column names, so a cross-market price comparison is a UNION rather than a per-ISO rewrite. Revisions are already collapsed — read it plainly.

Query contract

One row is already the canonical price for (event_time, location_id, kind) — the refresh collapsed the source's revisions. Select the interval and the locations you need; do not de-duplicate again. Day-ahead rows for the next delivery day are published in a single late-evening batch, so max(event_time) runs ahead of the wall clock by design.

Analysis rules

  • Prices are intensive. Averaging across intervals gives a simple (unweighted) average price, which is not a settlement or load-weighted price; say which one you computed. Never sum prices across intervals or locations.
  • Do not add price_usd_mwh to its own components — they decompose it, they do not extend it.

Related analysis

  • resolving a location's readable name and type · join on location_id, and on kind where both carry it
  • day-ahead versus real-time basis at one location · aggregate the real-time intervals in the delivery hour before comparing

Interpretation

  • SPP publishes a separate DA bus archive. Canonical bus coverage begins with the new ingestion and verified backfills; inspect coverage rather than assuming it matches settlement history. BAA-ambiguous bus names are excluded from this canonical schema; use spp_public_da_lmp_by_bus for the native BAA axis.
  • SPP posts next-day day-ahead prices before delivery. Readers check hourly; verify the observed latest interval and publication coverage before saying the next day is available.

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

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

Schema7

Column
Type
event_timeDateTime64(6, 'UTC')
location_idLowCardinality(String)
kindLowCardinality(String)
price_usd_mwhNullable(Float64)
energy_usd_mwhNullable(Float64)
congestion_usd_mwhNullable(Float64)
loss_usd_mwhNullable(Float64)

Sample data

event_timelocation_idkindprice_usd_mwhenergy_usd_mwhcongestion_usd_mwhloss_usd_mwh
2026-10-13 04:00:00.000000PUPPnode26.217916.59459.38830.2351
2026-10-13 04:00:00.000000RCEASTnode26.091916.59458.98310.5143
2026-10-13 04:00:00.000000RCDCnode28.975529.0633-0.007-0.0808
2026-10-13 04:00:00.000000PSLO_STER1_PR_PSCO_PSCMnode27.676729.0632-0.0035-1.383
2026-10-13 04:00:00.000000PSLO_EES_CSWSnode23.500916.59456.37220.5342
2026-10-13 04:00:00.000000SCEnode30.13129.06340.00511.0625
2026-10-13 04:00:00.000000SALINA_2node27.311116.594510.60780.1088
2026-10-13 04:00:00.000000PSLO_PEETZ_PR_PSCO_PSCMnode27.901129.0633-0.0039-1.1583
2026-10-13 04:00:00.000000SALINA_3node27.311116.594510.60780.1088
2026-10-13 04:00:00.000000PSLO_MISO_WAUE_RPGInode12.309116.5945-4.2362-0.0492
2026-10-13 04:00:00.000000SCLnode29.795729.0633-0.00160.734
2026-10-13 04:00:00.000000SALINA_4node27.311116.594510.60780.1088
2026-10-13 04:00:00.000000PSLO_KELIM_PR_PSCO_PSCMnode28.793629.0632-0.0032-0.2664
2026-10-13 04:00:00.000000SCnode31.257716.594514.21930.4439
2026-10-13 04:00:00.000000SALINA_1node27.311116.594510.60780.1088
2026-10-13 04:00:00.000000SALINA_5node27.311116.594510.60780.1088
2026-10-13 04:00:00.000000PSLO_MISO_WAUE_MDUM_NITSnode79.10116.594562.23880.2677
2026-10-13 04:00:00.000000PSLO_MISO_WAUE_OTPWnode75.455516.594558.4980.363
2026-10-13 04:00:00.000000SARPY_4node6.978716.5945-9.3444-0.2714
2026-10-13 04:00:00.000000PSLO_MISO_WAUE_ALTMnode13.102816.5945-3.2018-0.2899
2026-10-13 04:00:00.000000PSLO_MISO_WAUE_MECBnode10.891216.5945-5.1452-0.5581
2026-10-13 04:00:00.000000SARPY_3node6.978716.5945-9.3444-0.2714
2026-10-13 04:00:00.000000SARPY_2node6.902316.5945-9.468-0.2242
2026-10-13 04:00:00.000000SARPY_5node6.978716.5945-9.3444-0.2714
2026-10-13 04:00:00.000000SARPY_1node6.949916.5945-9.4044-0.2402

Coverage

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