Dispatch Model

The dispatch model is a single-asset BESS optimisation that maximises revenue by solving a MILP for charge/discharge schedules across energy and ancillary service markets. Unlike the production cost model (system-wide cost minimisation), the dispatch model optimises from the perspective of one asset owner.


Revenue streams

Stream Method Frequency Source
Energy arbitrage Co-optimised in MILP Hourly DAM prices from PCM
Ancillary services Co-optimised in MILP Hourly AS prices from ML model
Capacity market Post-solve calculation Monthly ICAP demand curve clearing
ISC contract Post-solve calculation Monthly Indexed to REAP + RCP

Energy and AS are jointly optimised — the solver decides MW allocation across all markets each hour. Capacity and ISC are calculated after the dispatch is solved and do not influence the schedule.


Energy arbitrage

The solver maximises the spread between discharge hours (sell high) and charge hours (buy low) across the NYISO day-ahead market, subject to the battery’s physical constraints (SoC evolution, power limits, cycling, ramping).

The solver has perfect foresight over the DAM price horizon (daily batches), representing an upper bound on achievable revenue. Revenue capture rates (actual vs perfect foresight) are typically 70–85% for energy arbitrage.


Ancillary services

Four NYISO products are co-optimised alongside energy:

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 co-optimisation trade-off: AS capacity earns a guaranteed payment ($/MW/hour) but the reserved MW cannot simultaneously be used for energy arbitrage. The solver balances these competing revenue streams each hour.


Capacity market payments

Capacity revenue is a post-solve calculation that does not affect the dispatch schedule.

ICAP demand curve

NYISO clears monthly capacity prices for four nested localities via a downward-sloping demand curve:

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

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 (2027–2029) targeting ~1,000 MW/year.

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

Component Formula Source
Strike price Gross CONE x 1,000 / (Duration x 365 x Availability) 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

Escalates annually from the 2025-2026 base using a weighted composite (DCR Table 60):

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

If battery costs decline faster than this composite, the ISC becomes more generous over time.

Input Source Link
Gross CONE by locality/duration NYISO DCR Table 42 NYISO DCR
Escalation rate weights NYISO DCR Table 60 NYISO DCR
ISC REAP methodology NYISO ISC tariff filing NYISO
ISC tender schedule (3 x ~1 GW) NYISO Board announcements NYISO

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

  • Perfect foresight over DAM prices — represents upper bound on energy arbitrage. Actual capture rates ~70-85%.
  • 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