CAISO logo

CAISO Day-Ahead Ancillary Prices

Cleared day-ahead ancillary-service capacity prices in CAISO, one row per hour, AS region 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

2,172,326 rows, 2014-12 to now. Products: reg_up, reg_down, spin, non_spin, reg_mileage_up, reg_mileage_down. 12 CAISO ancillary-service regions (AS_CAISO, AS_NP26, AS_SP26 and their expanded variants). The expanded regions overlap the base ones by design — never sum across regions. 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 AS regions without saying so; 12 caiso ancillary-service regions (as_caiso, as_np26, as_sp26 and their expanded variants). the expanded regions overlap the base ones by design — never sum across regions.

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/caiso_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 06:00:00.000000AS_SP26_EXPnon_spin0
2026-10-12 06:00:00.000000AS_CAISOnon_spin0
2026-10-12 06:00:00.000000AS_CAISO_EXPnon_spin1
2026-10-12 06:00:00.000000AS_NP26non_spin0
2026-10-12 06:00:00.000000AS_CAISO_EXPreg_down0.16
2026-10-12 06:00:00.000000AS_NP26_EXPnon_spin0
2026-10-12 06:00:00.000000AS_SP26non_spin0
2026-10-12 06:00:00.000000AS_NP26reg_down0
2026-10-12 06:00:00.000000AS_CAISOreg_down0
2026-10-12 06:00:00.000000AS_NP26reg_up0
2026-10-12 06:00:00.000000AS_NP26_EXPreg_down1.34
2026-10-12 06:00:00.000000AS_SP26reg_down0
2026-10-12 06:00:00.000000AS_SP26_EXPreg_down0
2026-10-12 06:00:00.000000AS_NP26_EXPreg_up0
2026-10-12 06:00:00.000000AS_CAISO_EXPreg_mileage_down0
2026-10-12 06:00:00.000000AS_CAISO_EXPreg_mileage_up0
2026-10-12 06:00:00.000000AS_CAISOreg_up0
2026-10-12 06:00:00.000000AS_SP26reg_up0
2026-10-12 06:00:00.000000AS_CAISO_EXPreg_up3.02
2026-10-12 06:00:00.000000AS_SP26_EXPreg_up0
2026-10-12 06:00:00.000000AS_CAISOspin0
2026-10-12 06:00:00.000000AS_CAISO_EXPspin1
2026-10-12 06:00:00.000000AS_NP26spin0
2026-10-12 06:00:00.000000AS_SP26spin0
2026-10-12 06:00:00.000000AS_NP26_EXPspin0

Coverage

100.0% complete2 gap days6,402 days with data
Show coverage history
Coverage: 100.0%Days with data: 6,402Gaps: 2
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
gaplessmore