battery storage dispatch optimization BESS VPP community solar

Dispatch Optimization for Behind-the-Meter Battery Storage in Community Solar Programs

By Nadia Osei ← All Insights
Battery storage dispatch optimization diagram showing state-of-charge curves and dispatch windows

Battery energy storage paired with community solar adds meaningful dispatch flexibility to a BTM portfolio — but it also adds a co-optimization problem that solar-only programs don't face. A storage asset has three potential uses with conflicting priorities: (1) optimize subscriber self-consumption by charging from solar and discharging against evening loads; (2) participate in ISO capacity market dispatch when called during Performance Assessment Intervals; and (3) capture energy market arbitrage value by charging during low-price periods and discharging during high-price periods. All three objectives draw on the same state-of-charge. Managing them requires an explicit optimization framework, not just a priority list.

This post describes the optimization framework for BTM battery dispatch in community solar programs enrolled in ISO capacity markets, and where the practical challenges arise.

The State-of-Charge Constraint

Everything in BTM storage optimization comes back to state-of-charge (SOC) management. Unlike solar generation, which is available when conditions allow and unusable when conditions don't, battery storage has a finite energy buffer that must be allocated across competing uses. A 10 kWh battery that spent the morning charging from solar and the afternoon discharging for subscriber self-consumption may have near-zero SOC when a PJM dispatch instruction arrives at 5 PM. If that battery is part of a committed capacity resource, the program has a shortfall problem.

The fundamental tension is between subscriber-value optimization — which typically means maximizing discharge against evening residential loads — and ISO capacity availability — which requires maintaining minimum SOC ahead of potential dispatch events. These objectives don't overlap in timing. ISO dispatch events in PJM tend to occur during peak demand periods (summer afternoons), which is also when subscriber self-consumption is ramping up. Optimizing for subscriber value without explicitly reserving ISO capacity availability creates systematic dispatch conflicts during the exact periods when ISO capacity is most likely to be called.

Defining the Reserve Requirement

The starting point for co-optimized dispatch is defining the minimum SOC reserve requirement — the percentage of rated energy capacity that must be maintained available for ISO dispatch at all times during the capacity delivery period. This is not a guess; it's a calculation based on the ISO dispatch duration requirement, the battery's rated power, and the program's committed capacity level.

For PJM Capacity Performance resources, dispatch events are typically triggered at peak period and must be sustained for the duration of the Performance Assessment Interval. If a program has committed 2 MW of storage capacity to PJM and the PAI duration requirement is one hour, the minimum energy reserve needed to fulfill the commitment is 2 MWh across the battery fleet. If the battery fleet has a total rated capacity of 5 MWh, the minimum SOC reserve is 40% of rated capacity — batteries should never fall below 40% SOC during delivery period hours when a PAI could be triggered.

In practice, the reserve calculation needs safety margins. Battery rated capacity degrades over time, and a 10-year-old battery may have effective capacity 15-20% below nameplate. Some batteries in the fleet may be in non-dispatchable states (charging, fault conditions, subscriber overrides). The dispatch optimization should target a working reserve of, say, 50-55% SOC rather than the theoretical minimum of 40%, to maintain reliability against these degradation and availability factors.

The Dispatch Priority Framework

With the reserve requirement defined, the dispatch optimization operates on a priority stack:

  1. ISO capacity obligation (highest priority): Respond to ISO dispatch instructions within the required response time. Never discharge below the minimum SOC reserve during delivery period hours. Charge to reserve threshold before the delivery period window if SOC is below threshold.
  2. Subscriber self-consumption optimization (second priority): Discharge against subscriber loads during evening ramp periods using available SOC above the reserve threshold. Charge from solar generation when SOC is below a maximum threshold (typically 90-95% to leave headroom for overvoltage conditions).
  3. Energy market arbitrage (third priority): Use available SOC above reserve — after subscriber self-consumption optimization — to capture day-ahead or real-time energy market price spreads if the program has energy market participation enabled.

This priority stack is conceptually straightforward. The implementation complexity comes from the forecasting requirements at each priority level: predicting when ISO dispatch events are likely (which is, by design, not fully predictable), predicting subscriber load profiles to optimize self-consumption discharge timing, and reading energy market price signals for arbitrage opportunity identification.

Forecasting Requirements

ISO dispatch optimization requires probabilistic forecasting of dispatch event likelihood. PJM and other ISOs post operational conditions advisories and hot weather outlooks that are leading indicators of PAI likelihood — a Heat Advisory day in the PJM footprint with high coincident peak load forecast is a day when the dispatch probability is elevated. The optimization model should treat these signals as inputs to SOC reserve management: on a high-PAI-probability day, increase the SOC reserve threshold and limit subscriber discharge below reserve more aggressively.

Subscriber load forecasting is necessary to determine how much SOC above the reserve can be committed to self-consumption optimization without leaving the battery depleted when morning solar charging resumes. For a typical residential subscriber, load profiles are relatively predictable — evening peak from 6-9 PM, moderate overnight, morning ramp — with weather-driven variation in HVAC load. For commercial subscribers, the profile is building-type-specific and less seasonal in character.

A 20 MW BTM storage fleet across 800 subscriber accounts in a Maryland community solar program illustrates the forecasting complexity at scale. The fleet includes a mix of 10 kWh and 20 kWh residential batteries paired with rooftop solar, across two distribution utility territories. On a summer weekday with an above-normal temperature forecast and a PJM generation shortage outlook, the dispatch optimization needs to: (a) increase all fleet SOC reserves to the elevated threshold by 2 PM; (b) shift subscriber self-consumption discharge to morning hours using overnight charging to pre-position batteries; and (c) suspend energy market arbitrage discharge entirely for the day. Executing this requires the optimization algorithm to read the PJM operational forecast, apply the reserve escalation rule, recalculate the available discharge capacity for subscriber optimization, and push revised dispatch schedules to 800 battery management systems — all before 7 AM the morning of the event.

Subscriber Self-Consumption vs. Capacity Revenue: The Trade-Off Is Real

We're not saying that ISO capacity market participation is always the highest-value use of community solar battery storage. For residential subscribers with high self-consumption needs — households with EVs, high HVAC loads, or time-of-use rate exposure — the value of self-consumption optimization can exceed the per-unit capacity market revenue for a given battery cycle. The economic analysis is specific to the subscriber rate structure, the ISO clearing price, and the battery's remaining useful life.

Programs should be honest with subscribers about the trade-off. A subscriber who enrolled in a community solar program expecting maximum self-consumption optimization may be surprised if capacity market dispatch is reducing their bill savings on peak days. Subscriber program agreements should describe how ISO dispatch priority affects battery dispatch and what subscriber protections exist (e.g., minimum SOC thresholds below which the ISO dispatch system cannot go, ensuring critical backup functions are preserved).

The best-designed programs create alignment between capacity market participation and subscriber value — not just co-existence. When ISO capacity revenue is allocated back to subscriber accounts as a bill credit, the capacity market participation is visible as a concrete benefit, not just a constraint on when the subscriber's battery charges. This transparency supports subscriber retention and reduces the friction of operating the program under capacity market obligations.

Platform vs. In-House Optimization

Building a co-optimized dispatch engine for BTM solar and storage in a community solar VPP context requires integrating ISO operational signals, subscriber metering data, battery management system APIs, and energy market price feeds — all with sub-hourly decision making frequency. The engineering requirements are substantial: low-latency data pipelines, deterministic scheduling logic, and fallback behavior when data streams are unavailable.

Programs that decide to build dispatch optimization in-house should plan for the full scope of this engineering: not just the optimization algorithm, but the data infrastructure, the battery API integrations, the ISO telemetry interface, and the operational monitoring system that allows program operators to understand and override dispatch decisions when needed. Programs that source the dispatch optimization from a dedicated aggregation platform can often reach capacity market readiness in less time and with less engineering investment — particularly for the ISO telemetry and data integration components, which are the most standards-heavy and slowest parts of the system to build correctly from scratch.

Continue reading in Nexwatt Insights

← Back to all articles