Data Sources#
Overview#
Every dataset in this project is free and public. CAISO market data is pulled with the open-source gridstatus library, which reads directly from CAISO’s own publication channels (OASIS and caiso.com) - no API key, no quota, no paid services. Weather comes from the free Open-Meteo historical archive (ERA5 reanalysis), and plant metadata from EIA’s public 860M monthly release. The GridStatus.io hosted API service is not used at this time.
Datasets#
Dataset |
Source |
Granularity |
Description |
|---|---|---|---|
CAISO LMPs (DAM, RT 15-min, RT 5-min) |
CAISO (GridStatus) |
Hourly / 15-min / 5-min |
Hub APNode prices for the spreads workstream |
CAISO fuel prices and regions |
CAISO (GridStatus) |
Hourly / snapshot |
Citygate gas legs for MIHR, spark spread, HRCO |
CAISO load, fuel mix, renewables |
CAISO (GridStatus) |
5-min / hourly |
Grid operational context (net load, duck curve) |
Curtailed generator report + derived outages |
CAISO (GridStatus) |
Daily / hourly derived |
Generator-level outage reasons; quanto conditioning |
Station temperatures |
Open-Meteo (ERA5) |
Daily |
HDD/CDD legs at six California stations |
EIA-860M generators |
EIA (bulk download) |
Monthly snapshot |
Plant coordinates, technology, capacity (plant map) |
Full per-dataset documentation lives on the DataFrames pages of this site.
Data Pipeline#
Pull: one module per dataset under
src/pulls/, orchestrated bypull_all_caiso.py(thepull_caisodoit task). Each run tops every dataset up through today, repairs any gaps, and refreshes the snapshot tables (fuel regions, EIA-860M).Store: typed Parquet caches under
data/opensource/- naive-UTC timestamps, Float64 numerics, local-time columns dropped at ingest. Merges dedup on each dataset’s natural key, so no date range is ever pulled twice.Derive: the hourly outage aggregation is rebuilt from the cached generator report at the end of every pull run; DAM-RT spreads are computed in the analysis layer from the cached LMP legs.