Models / PyPSA-USA CAISO (California)

Production-cost back-cast of the California ISO market: full-year 2025 3-hourly economic dispatch of the real fixed fleet (named EIA-860 units at their true sites), MOSEK-solved, validated per fuel against EIA-930 actuals.

License: MIT
Repository
licenseMITproblemLP

Overview

A production-cost (historical back-cast) model of the California ISO market for the full year 2025 at 3-hourly resolution. The fleet is fixed to the historical mix of real, named generating units, and the model dispatches them economically to meet observed demand — answering "given the plants that actually existed, how would the system have been operated, and at what locational prices?"

Carved from the Western Interconnection to California. CAISO imports roughly a quarter of its energy from neighbouring states, which the model represents explicitly as capacity-limited boundary links (calibrated to observed net interchange) — so the in-state fleet isn't forced to self-supply imported energy.

Spatial resolution: 58 county-level zones. Built on the open-source PyPSA-USA toolchain.

How it's built

  • Fleet — every operable generating unit from the latest EIA record (EIA-860 2024 final plus EIA-860M 2025 monthlies, so 2025 build-out is included), placed at its true coordinates with named identity, scoped to this market's balancing authority.
  • Renewables — wind and solar capacity factors from ERA5 reanalysis (2025 weather), mapped to each bus.
  • Demand — hourly EIA-930 / GridEmissions actuals for the market's balancing authority.
  • Dispatch — an economic-dispatch LP (coal on a must-run floor; no unit commitment yet) over the full year, fixed transmission, load-shedding priced at value-of-lost-load, solved with MOSEK.

Validation

This page checks the model's output against independent observations — see the tables and charts above:

  • Generation by technology — modelled vs CAISO's published fuel mix (gridstatus), per fuel, with daily correlation — the complete observed reference for a battery- and import-rich market (it carries the battery and net-import series the EIA-930 archive lacks).
  • Generation mix — each technology's share of total generation, model vs observed.
  • CO₂ emissions — annual generation CO₂ vs an EIA-930-derived estimate; a single headline trust number.
  • Battery storage — modelled vs observed (gridstatus) discharge.

Renewable generation tracks the observed daily shape well (high day-to-day correlation for wind and solar). With imports now explicitly modelled, gas and CO₂ read realistically (CO₂ within ~17% of observed) rather than the gas over-dispatch an import-free carve produces. The model does, however, under-cycle its battery fleet — the energy-only dispatch's near-flat price curve leaves little arbitrage spread (the Battery storage row shows this honestly). Wholesale-price validation against ISO day-ahead LMP is deferred to a future calibrated version — the energy-only economic dispatch clears at marginal fuel cost and structurally underprices vs day-ahead LMP (the price metrics are computed and retained in the backend). See Known limitations and the project's validation audit for the full cross-market detail.

Known limitations

This is a research-grade back-cast; treat it as indicative, not a settlement-grade reproduction.

  • Fuel-cost vintage, not fleet. The generator fleet is latest-operable and already includes 2025 build-out (via EIA-860M); what is held at 2024 is unit fuel costs and heat rates (PUDL has no 2025 EIA-923 yet). Any capacity commissioned after the EIA data cutoff is not captured, so the newest late-2025 renewables can read slightly low. Refreshes when EIA-860/923 2025 final lands (~Oct 2026).
  • Imports modelled; batteries under-cycle. CAISO's ~25% net imports are represented as capacity-limited boundary links calibrated to observed interchange, so gas and CO₂ are realistic. But the cheap, near-constant import price flattens the intraday price curve, so the model barely cycles its ~15 GW battery fleet versus the ~250–300 cycles/yr of reality (visible in the Battery storage row). Both stem from the same energy-only price formation; a future version with finer temporal resolution and scarcity pricing addresses it.
  • Wholesale prices are not yet validated on the page. The energy-only merit-order LP clears at marginal generation cost (≈ gas cost) and omits scarcity/reserve pricing, time-varying fuel, and fine-grained congestion, so modelled prices sit well below ISO day-ahead LMP. Price validation is deferred to a future calibrated version; the metrics are computed and retained in the backend.

Data & attribution

EIA-860 / EIA-923 / EIA-930 (US Energy Information Administration, public domain), ERA5 reanalysis (Copernicus / ECMWF), renewable profiles via NREL GODEEEP, network and methodology from PyPSA-USA (MIT), solved with MOSEK.

Downloads

  • Solved network (.nc) — the full PyPSA network with dispatch and prices (free, sign-in).
  • Convexity database (.db) — re-solvable model with named units pinned at their sites (licence-gated).