Dispatch Model

The dispatch model is a single-asset BESS optimization that maximizes revenue by solving a MILP for the battery’s charge/discharge schedule against day-ahead energy prices, subject to a reserve-margin headroom constraint. Unlike the production cost model (system-wide cost minimization), the dispatch model optimizes from the perspective of one asset owner.

The methodology is shared across the Eastern Interconnection. The points below apply to all three regions, with region-specific revenue streams documented in the dropdowns that follow.

Energy arbitrage is the only stream inside the MILP. The solver maximizes the spread between discharge hours (sell high) and charge hours (buy low) across the region’s day-ahead market, subject to the battery’s physical constraints (SoC evolution, power limits, cycling, ramping).

Perfect foresight over the DAM horizon. The solver has perfect foresight over the day-ahead price horizon (daily batches), representing an upper bound on achievable revenue. Simulated energy revenue is then scaled toward realized performance through a calibration factor, described under Revenue calibration below.

Ancillary services are valued post-solve, not co-optimized. The dispatch holds reserve-margin headroom for the modeled AS products, and their revenue is applied after the MILP is solved using post-processed AS prices. AS is never co-optimized inside the MILP. Prices are calculated in a post-processing step from historical clearing prices, with a saturation effect that depresses per-asset value as the storage fleet grows. The trade-off: reserve-margin headroom held for AS reduces the MW available for energy arbitrage, while AS capacity earns a guaranteed payment ($/MW/hour) valued post-solve at the predicted clearing prices.

Capacity revenue is a post-solve calculation. Capacity payments do not affect the dispatch schedule. A battery’s accredited capacity is multiplied by the relevant clearing price for its zone or locality.

Revenue calibration

The perfect-foresight optimization sets an upper bound on what a battery could earn, so simulated energy arbitrage revenue is multiplied by a flat calibration factor before it is reported. The factor can be read as a “percent of perfect”: it bridges three residual gaps between idealized dispatch and what a real BESS achieves.

  • Foresight gap: the solver optimizes against the full day-ahead price path, which a real trader does not know with certainty at gate closure.
  • Availability gap: real assets are not available 100% of the time. Outages, maintenance windows, prequalification re-tests, and other downtime reduce the hours in which a battery can earn.
  • Execution gap: bid latency, partial market access, operator strategy variation, and residual trading frictions sit outside the optimization.

NYISO, MISO, and PJM each apply a factor of 0.80, scaling simulated energy revenue to 80% of the perfect-foresight result. The factor applies to energy arbitrage only. Ancillary service, capacity, and (for NYISO) Indexed Storage Credit revenues are not scaled, because they settle at known cleared prices rather than being outputs of the optimization. The factor is applied in both forecast and backtest modes.

The 0.80 value is anchored to observed fleet capture in Great Britain, where asset-level disclosures allow a direct comparison between perfect-foresight modeled revenue (from the same dispatch model run on GB historical prices) and realized asset revenue. It is applied as a single scalar rather than a market-by-market calibration, to preserve the internal revenue ratios produced by the optimization. The value is an interim anchor pending region-specific observed-versus-modeled benchmark datasets.

NYISO

Revenue streams

Stream Method Frequency Source
Energy arbitrage MILP optimization Hourly DAM prices from PCM
Ancillary services Applied post-solve Hourly AS prices from post-processing
Capacity market Post-solve calculation Monthly ICAP demand curve clearing
ISC contract Post-solve calculation Monthly Indexed to REAP + RCP

The four revenue streams above are summarized in the chart below.

Ancillary services

Four NYISO products are modeled. The product parameters are listed in the table below.

Product Direction Max Call Duration SOC Headroom Symmetric
10-min spinning Discharge only 30 min SoC >= MinSoC + (MW x 0.5h) No
10-min non-sync Discharge only 30 min SoC >= MinSoC + (MW x 0.5h) No
30-min operating Discharge only 1 hour SoC >= MinSoC + (MW x 1.0h) No
NYCA regulation Both (symmetric) ~36 sec Minimal Yes

NYISO-specific rules modeled:

  • 10-min spinning and 10-min non-sync are mutually exclusive: a battery offers into one or the other each hour, not both
  • Regulation is symmetric: must reserve equal MW for up (discharge) and down (charge). NYISO pays a single capacity price regardless of direction.
  • SOC headroom: must hold enough stored energy to deliver at full reserved power for the product’s maximum call duration
  • Acceptance rate saturation: empirical cap on per-asset participation for each product

The per-product AS revenue is broken out in the chart below.

Capacity market payments

ICAP demand curve

NYISO clears monthly capacity prices for four nested localities via a downward-sloping demand curve, as set out below.

Locality Zones Description
NYCA All 11 Statewide: every resource participates
G-J Locality G, H, I, J Downstate: transmission-constrained premium
NYC J Most constrained: highest prices
Long Island K Island: limited interconnection

CAFs

Each BESS earns a fraction of nameplate MW as UCAP credit, based on duration, locality, year, and scenario (base/low/high). CAFs decline as storage penetration grows: see Capacity Expansion Model for the full table.

Monthly revenue = clearing price ($/kW-mo) x CAF x 1,000

The relationship between CAF and duration is shown below.

See Capacity Prices for CAF tables and demand curve parameters.

Indexed Storage Credit (ISC)

The ISC is NYISO’s 15-year availability-based subsidy for battery storage, awarded through competitive solicitation. Three tenders are planned leading up to 2030, targeting ~1,000 MW per tender.

The ISC is an indexed contract: payments adjust monthly based on what the battery “should” have earned. When market revenues are low, the ISC tops up income. When revenues are high, the developer pays back part of the windfall.

Contract mechanics

Monthly payment = (Strike Price - Reference Price) x MW x Duration x Days

The components of the payment formula are defined below.

Component Formula Source
Strike price Defaults to Gross CONE x 1,000 / (Duration x 365 x Availability); user-configurable to reflect a specific tender outcome or sensitivity DCR Table 42, by locality and duration
REAP Avg(top-X - bottom-X / 0.85) daily, X = min(duration, 8) DAM prices
RCP UCAP price x CAF x 1,000 / (Duration x Days) Capacity auction
Reference price REAP + RCP  
Clawback cap Monthly payment cannot exceed strike x operational MWh  

Strike price escalation

The Gross CONE methodology escalates annually from the 2025-2026 base using a weighted composite (DCR Table 60), so the default strike price varies depending on when a project becomes operational. The composite weights are set out below.

Component Weight
Construction labor 40%
Storage batteries 35%
Materials 15%
GDP deflator 10%

The waterfall below decomposes the resulting ISC revenue.

The ISC contract mechanics and escalation methodology are defined in the following sources.

Input Source Link
Gross CONE by locality/duration NYISO DCR Table 42 NYISO DCR
Escalation rate weights NYISO DCR Table 60 NYISO DCR
ISC formula definitions NYSERDA ISC RFP NYSERDA ISC RFP

Model integration

Input Source Format
Energy prices PCM zonal DAM LMPs Parquet (S3)
AS prices PCM ML predictions Parquet (S3)
Capacity prices PCM ICAP demand curve Parquet (S3)
CAFs NYISO iCAF Set 1 CSV (S3)
Gross CONE NYISO DCR Table 42 CSV (S3)
Escalation rates NYISO DCR Table 60 CSV (S3)

Assumptions and caveats

  • No real-time market: all settlement at DAM prices. RT price volatility not captured.
  • AS acceptance rates are empirical averages: actual call patterns vary with system conditions.
  • ISC terms based on 2025-2029 DCR: will change in future reset cycles.
  • Capacity prices are endogenous PCM outputs, not historical: reflect the model’s supply-demand view.
  • Duration capping: capacity and ISC calculations clamp duration to 8h max, round down to nearest supported (2, 4, 6, 8).

Data sources

Source Description Link
NYISO DCR Demand curve parameters, Gross CONE, escalation rates NYISO DCR
NYISO ICAPWG Capacity Accreditation Factors NYISO ICAPWG
NYISO ICAP UCAP auction results NYISO ICAP
NYISO OASIS Historical ancillary service prices (inputs to the AS post-processing) NYISO OASIS
NYISO Manual 2 Ancillary service product definitions NYISO Manual 2
MISO

MISO has no storage subsidy comparable to NYISO’s Indexed Storage Credit, so revenue comes from energy, ancillary services, and the seasonal capacity auction.

Revenue streams

Stream Method Frequency Source
Energy arbitrage MILP optimization Hourly DAM prices from PCM
Ancillary services Applied post-solve Hourly AS prices from post-processing
Capacity market Post-solve calculation Seasonal MISO PRA clearing

These three streams are broken out in the chart below.

Ancillary services

MISO’s market co-optimizes five reserve products with energy (regulation, spinning reserve, supplemental reserve, short-term reserve, and ramp capability), but regulation is the only one that meaningfully pays batteries. The model represents the three priced reserves, across MISO’s reserve zones:

  • Regulation
  • Spinning reserve
  • Supplemental reserve

Short-term reserve and ramp capability are not currently modeled.

Capacity market payments

A battery’s accredited capacity (see Capacity Prices) is multiplied by the seasonal PRA clearing price for its zone.

Assumptions and caveats

  • Only regulation, spinning, and supplemental reserves are modeled among MISO’s ancillary products.

Data sources

Source Description
MISO ASM market reports Day-ahead ancillary service clearing prices (training data)
MISO PRA reports Seasonal capacity clearing prices
PJM

PJM has no storage subsidy comparable to NYISO’s Indexed Storage Credit, so revenue comes from energy, ancillary services, and the forward RPM capacity auction.

Revenue streams

Stream Method Frequency Source
Energy arbitrage MILP optimization Hourly DAM prices from PCM
Ancillary services Applied post-solve Hourly AS prices from post-processing
Capacity market Post-solve calculation Forward (annual) RPM clearing

The chart below shows how these streams combine.

Ancillary services

The model includes the PJM products that carry meaningful value for storage (regulation and synchronized/primary reserve). PJM’s day-ahead scheduling reserve has historically cleared near zero and is excluded.

Capacity market payments

A battery’s ELCC-accredited capacity (see Capacity Prices) is multiplied by the forward RPM clearing price for its LDA.

Assumptions and caveats

  • Among PJM’s ancillary products, only regulation and synchronized/primary reserve are modeled.

Data sources

Source Description
PJM day-ahead AS results Regulation and reserve clearing prices (training data)
PJM BRA results Forward capacity clearing prices

Data sources

The energy, ancillary service, and capacity prices that drive the dispatch are produced by the production cost and capacity expansion models, then consumed by the dispatch as inputs. Each region’s specific market data sources are listed inside its dropdown above.

Source Description
PCM zonal DAM LMPs Day-ahead energy prices that the MILP optimizes against
AS post-processing Predicted ancillary service clearing prices applied post-solve
Capacity model outputs Accreditation factors and clearing prices for post-solve capacity revenue