CAISO logo

CAISO Day-Ahead Prices

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

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

Overview

1.21B rows, 2016-01 to the next delivery day. Carries price_usd_mwh only. The component columns exist in the raw CAISO day-ahead feed but are entirely NULL in it, so this table carries no decomposition rather than four empty columns. Locations are node (26k — including the TH_ trading hubs such as TH_SP15_GEN-APND; CAISO has no 'hub' kind), interface (the ties), zone (6 aggregates only); location_id joins atg.caiso_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

  • There is no day-ahead congestion or loss component for CAISO. A day-ahead congestion question for this market cannot be answered from price data alone; caiso_constraints_da carries the binding constraints instead.
  • CAISO publishes the next day's day-ahead prices around 1 PM Pacific the day before delivery. Before then, the next day's prices have not been published yet.

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/caiso_prices_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')
location_idLowCardinality(String)
kindLowCardinality(String)
price_usd_mwhNullable(Float64)

Sample data

event_timelocation_idkindprice_usd_mwh
2026-10-14 05:00:00.000000C590M1_7_N004node48.72831
2026-10-14 05:00:00.000000C590M1_7_N005node48.72831
2026-10-14 05:00:00.000000C643TM1_7_N001node47.404
2026-10-14 05:00:00.000000C643T_2_B1node47.404
2026-10-14 05:00:00.000000C7-1-S1_1_N002interface48.67717
2026-10-14 05:00:00.000000C7-2-S1_1_N002interface48.63627
2026-10-14 05:00:00.000000C877P1C2_7_N001node50.26736
2026-10-14 05:00:00.000000C877P2C2_7_N001node50.22646
2026-10-14 05:00:00.000000C877P2C2_7_ND002node50.03216
2026-10-14 05:00:00.000000CABALLO3_7_N001node50.68664
2026-10-14 05:00:00.000000CABALLO3_7_N002node50.68664
2026-10-14 05:00:00.000000CABAZON_7_B1node49.41858
2026-10-14 05:00:00.000000CABRILLO_1_N001node51.80642
2026-10-14 05:00:00.000000CABRILLO_6_N001node50.8656
2026-10-14 05:00:00.000000CABRILLO_6_N004node50.8656
2026-10-14 05:00:00.000000CABRILLO_6_N011node50.8656
2026-10-14 05:00:00.000000CALGEN_1_UNITS-APNDnode46.5621
2026-10-14 05:00:00.000000CACHE_LNODEADnode45.88449
2026-10-14 05:00:00.000000CADET_6_N001node49.74071
2026-10-14 05:00:00.000000CADET_6_N002node49.74071
2026-10-14 05:00:00.000000CAFLTSSS_2_B1node50.25714
2026-10-14 05:00:00.000000CACHE_6_THERM1GNODEnode45.88449
2026-10-14 05:00:00.000000CALFLAX_6_N001node50.32872
2026-10-14 05:00:00.000000CALEVRAS_1_N001node52.6143
2026-10-14 05:00:00.000000CALELEC_1_N004node49.73048

Coverage

Showing the last 3,214 days of a 3,940-day history (Jan 1, 2016 → Oct 14, 2026). This dataset holds 1.23B rows — too many to count day by day on every visit — so the calendar and the figures below cover the window from Dec 27, 2017.

100.0% complete0 gap days3,214 days with data
Show coverage history
Coverage: 100.0%Days with data: 3,214Gaps: 0
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
gaplessmore