How single-asset battery revenues are modeled in ERCOT
The dispatch model produces site-specific revenue forecasts for individual battery energy storage assets, using the energy and ancillary service prices from the fundamentals model. It maximizes revenue from the perspective of a single asset owner by solving a mixed-integer linear program for the battery’s charge, discharge and ancillary service schedule.
It is the same single-asset dispatch optimization used across Modo Energy’s market regions, applied to ERCOT prices and market rules. See the core Dispatch Model for the shared methodology. The points below describe how ERCOT differs.
Revenue streams
| Stream | Method | Source |
|---|---|---|
| Wholesale energy | Co-optimized | Hourly nodal or hub prices from the fundamentals model |
| Ancillary services | Co-optimized | Hourly prices for each service from the fundamentals model |
| DART uplift | Applied post-solve | Zone and year specific uplift factors |
Prices are nodal from 2026 through 2033. From 2034 the forecast is zonal, and each asset is settled at the trading hub for its load zone (HB_NORTH, HB_SOUTH, HB_WEST or HB_HOUSTON).
Imperfect price foresight
ERCOT builds imperfect foresight into the optimization itself.
Before each window is solved, the energy price series is smoothed with a centered nine-hour rolling average. The battery schedules its charge and discharge against this blurred series, so it sees the broad shape of the day but not the exact hour or the full height of each price spike. The resulting dispatch is then settled at the actual, unsmoothed prices. Revenue is therefore what the schedule would have earned in the real price series, not in the smoothed one.
This approach captures two features of real operation. A trader knows roughly when the evening peak will fall but not precisely which hour will clear highest, and scarcity intervals are far more valuable in settlement than in any forecast. Ancillary service prices are not smoothed. The nine-hour window was calibrated against the ME ERCOT BESS index, Modo Energy’s dataset of realized battery revenues in ERCOT, so that modeled revenues track what operating assets have achieved.
Optimization windows
Each window is solved independently. The window length depends on battery duration: one day for batteries up to four hours, two days up to six hours and three days above that. State of charge at the end of each window must return to its level at the start, so the battery cannot borrow energy from the next window.
Ancillary services
The model co-optimizes energy with the five ERCOT ancillary services in each hour. Ancillary service revenue is a capacity payment on the megawatts held, in dollars per megawatt per hour. Services can be stacked, subject to the battery’s power and energy limits.
| Product | Direction | Energy headroom |
|---|---|---|
| Regulation Up | Discharge | 30 minutes at full power |
| Regulation Down | Charge | 30 minutes at full power |
| Responsive Reserve (RRS) | Discharge | 30 minutes at full power |
| ERCOT Contingency Reserve (ECRS) | Discharge | 1 hour at full power |
| Non-Spinning Reserve | Discharge | 4 hours at full power |
Three further rules shape ancillary participation:
- Market size: The megawatts a single asset can clear in each service are capped by an hourly acceptance rate derived from the size of each market, so a large battery cannot clear more than the market can absorb.
- Activation: Expected energy delivered when a service is called moves the state of charge, using activation rates estimated from historical ERCOT data.
- Saturation: Forecast ancillary prices decline over the horizon as the battery fleet grows and competes for a finite requirement, reflecting the saturation already visible in ERCOT’s ancillary markets.
DART uplift
Forecast runs optimize against hourly prices, representing the Day-Ahead energy market. Real batteries in ERCOT also earn from the difference between Day-Ahead and Real-Time prices. This value is added after the optimization as a DART (Day-Ahead to Real-Time) uplift: wholesale revenue is scaled by a factor that depends on the load zone and forecast year.
Battery assumptions
- Round-trip efficiency: 88% by default, applied on the charge side.
- Cycling: Up to two full cycles per day by default, enforced as a cap on discharged energy in each window. A small cycling cost is charged on every megawatt-hour discharged, so the battery does not cycle for negligible spreads.
- Degradation: Optional. Usable capacity and efficiency can follow Modo Energy’s standard curve or a custom curve as cycles accumulate, with optional repowering. See Battery Degradation.
- Solar and wind co-location: Supported for AC-coupled sites.
- Solar profile: Modelled from ERA5 irradiance at the site, for the weather year at the chosen yield exceedance level (P50 by default), then reshuffled onto the synthetic weather year behind the price forecast. See Solar.
Calibration
Modeled revenues are calibrated against the ME ERCOT BESS index, Modo Energy’s proprietary dataset of realized battery revenues in ERCOT. The imperfect foresight window, cycling cost and ancillary participation limits are set so that backtested revenues fall within the range observed across the index. See the Backtest page for results.
Outputs
Monthly and annual per-asset metrics:
- Revenue by stream: wholesale energy, DART uplift and each ancillary service
- Cycling: average cycles per day, state of health and efficiency
- Prices: average wholesale price, capture prices on charge and discharge, and the top-bottom spread for the battery’s duration