Dispatch Model

How battery energy storage is optimized across California Independent System Operator (CAISO) markets


Scope and framework

The WECC dispatch model optimizes a single battery. It co-optimizes charging, discharging and ancillary service commitments for the highest forecast revenue, within physical and market rules. Shared methodology is on the Core Dispatch Model page.

Geographic coverage

Dispatch is offered only for standalone batteries in CAISO, at its three main load-serving entity nodes:

  • Pacific Gas and Electric Company (PG&E)
  • Southern California Edison (SCE)
  • San Diego Gas & Electric (SDG&E)

Other WECC balancing authorities appear in the fundamentals model but cannot be selected for battery dispatch.

Revenue stack

The CAISO battery earns from five wholesale products and one capacity payment:

  • Day-ahead energy: Hourly buying and selling against the forecast zonal day-ahead price of the selected node.
  • Regulation up: Hourly upward frequency regulation, which reserves discharge capability.
  • Regulation down: Hourly downward frequency regulation, which reserves charging capability.
  • Spinning reserve: Hourly synchronized reserve, held as discharge headroom.
  • Non-spinning reserve: Hourly non-synchronized reserve.
  • Resource Adequacy (RA): A capacity obligation layered on top of the wholesale markets, not a cleared market product. It pays a capacity revenue taken as given. Under Flex RA, it can also require the battery to hold discharge power and stored energy in RA hours. See Resource Adequacy.

Day-ahead energy and ancillary services are co-optimized each hour on the same power and state-of-charge limits. RA sits outside that stack. Capacity not reserved for RA stays available for energy and ancillary services.

Day-ahead and ancillary services

Day-ahead energy covers arbitrage against the forecast zonal day-ahead price for PG&E, SCE or SDG&E.

Ancillary services follow CAISO product definitions. Regulation holds upward or downward reserve, as CAISO rules require. Spinning and non-spinning reserves need enough stored energy and ramp capability to meet a call. The optimization stops the same megawatts being sold twice across products and energy.

Ancillary service awards are capped at what the fleet actually clears

CAISO’s ancillary service markets are small next to its battery fleet. In the year to August 2026, the fleet’s average regulation-down award was about 810 MW, against a fleet of about 17,400 MW. A single battery cannot sell its full capacity into these markets every hour.

The model therefore caps each ancillary award at an acceptance rate: the share of an offer the market can absorb.

  • Backtests: The acceptance rate is the fleet’s observed ancillary award, from CAISO’s daily energy storage report, divided by fleet capacity that hour. Real-time awards count only the increment above the day-ahead award.
  • Forecasts: The acceptance rate comes from the fundamentals model. It holds the fleet’s recent award volumes for each month and hour fixed. It then divides them by the forecast CAISO battery fleet, including new builds. As the fleet grows, each battery’s share shrinks.

Regulation energy is settled at market prices

A regulation award does more than reserve capacity. When called, the battery charges or discharges. CAISO publishes attenuation factors for each quarter and trade hour: the share of a regulation award that moves a battery’s state of charge. The model uses these factors directly. In 2026, regulation down moves about 30% of the award, against about 7% for regulation up.

This energy is settled at the market price, as CAISO settles it. Backtests use the real-time dispatch price, and forecasts use the day-ahead price. Spinning and non-spinning reserves are rarely called, so they move state of charge by 0.3% and 0.1% of the award.

Ancillary service durations follow the CAISO tariff

Each ancillary award must be backed by enough stored energy to deliver it for the duration the CAISO tariff requires.

Product Minimum duration Tariff reference
Spinning and non-spinning reserve 30 minutes Section 8.4.3
Regulation, day-ahead 60 minutes Section 8.4.1.1(g)
Regulation, real-time 30 minutes Section 8.4.1.1(g)

Forecast revenues are calibrated to the CAISO battery fleet

The dispatch model optimizes one battery with full knowledge of its own constraints. Real batteries face outages, bidding uncertainty and contract limits, so they earn less.

To keep forecasts grounded, the model is backtested against Modo Energy’s CAISO battery fleet index (ME BESS CAISO) over the latest year. The benchmark methodology describes how the index is built. Forecast energy and ancillary revenues are scaled by the ratio of fleet revenue to backtest revenue. RA payments and grid charges are not scaled.

Resource Adequacy

Resource Adequacy is a capacity obligation on the asset, not a co-optimized market product. Contracted capacity earns an RA payment, taken as given. The run settings decide whether RA also constrains dispatch.

RA hours are a fixed evening window, hour ending 17 to 21. The optimizer does not choose them.

The RA panel in the Create Forecast flow is shown below.

Resource Adequacy settings showing RA contract price, contracted capacity, and Enable Flex RA toggle

Fields and behavior

Control Units Effect
RA contract price $/kW-month Optional. When set, the contracted megawatts earn this fixed rate. When blank, they earn the modeled RA price times the battery’s RA credit: its duration divided by four hours, capped at 90%. A battery of 3.6 hours or longer receives the full 90%.
Contracted capacity MW Capacity under the RA contract that earns RA payments. With Flex RA on, it also sets the discharge reservation.
Enable Flex RA On / off See System RA versus Flex RA.

System RA versus Flex RA

System RA (Flex RA off)
The asset earns RA payments for the contracted capacity. RA rules do not constrain dispatch, so energy and ancillary services are co-optimized freely in every hour.

Flex RA (Flex RA on)
The asset earns the same RA payments. In RA hours, it must also hold discharge power and stored energy to meet the obligation. This reduces flexibility for arbitrage and for discharge-side ancillary services in those hours. Charging earlier in the day must also line up with delivering in RA hours.

Flex RA does not fix the whole schedule. Capacity above the reservation stays in the co-optimization and can still earn merchant revenue.

Practical notes

  • Contracted capacity: Set it to the megawatts covered by the contract being simulated. Zero removes RA volume.
  • RA contract price: Set it only to override the modeled RA price. Leave it blank to use the default RA revenue.
  • Comparing runs: Results break out RA revenue, so System RA and Flex RA runs can be compared side by side on the same energy and ancillary prices.