Dispatch

Intraday BESS Dispatch and Solar Curtailment: What the Dispatch Window Actually Buys You

Intraday BESS dispatch and solar curtailment analysis

Consider a solar farm in western Japan: 20 MW AC capacity, co-located with a 10 MW / 40 MWh BESS. On a spring afternoon with high cloud variability, the area's aggregate solar output has been rising all morning. By 11:45, output control instructions (shutsuryoku seiyaku shiji) are looking likely from the area transmission operator. The operator has two real options: wait for the curtailment instruction and accept the lost generation, or pre-position the BESS now by charging ahead of the surplus window.

The dispatch window, meaning the gap between when a reliable intraday forecast shows incoming surplus and when the curtailment instruction actually arrives, is the resource you are trying to manage.

What Determines Window Width

Curtailment instructions in Japan's renewable-rich areas (primarily Kyushu, Shikoku, and Okinawa, but increasingly Tohoku and parts of Kansai) typically arrive with somewhere between 30 minutes and two hours of prior notice from the time the TSO projects a system-level surplus. Exact notification timing varies by area operator protocol and the nature of the triggering condition.

On the battery side, what matters is not whether you received the instruction, but whether your BESS has the available capacity and SOC headroom to absorb generation from the moment output control begins. If SOC is already at 85% when the instruction lands, your absorption capacity is limited to the remaining 15% of usable range, minus any buffer the dispatch logic reserves for intraday price arbitrage.

This is where day-ahead schedule planning interacts with intraday dispatch. A battery dispatched too aggressively during the morning JEPX peak hour may arrive at the pre-curtailment window with insufficient headroom to do anything useful.

How the Intraday Forecast Feeds Dispatch Logic

A dispatch system without intraday forecast updating treats the day-ahead plan as the operative constraint. That works on routine days with low cloud variability. It breaks down when:

  • A frontal system moves through faster than predicted, creating an unplanned generation ramp
  • Cloud cover clears mid-morning, pushing system generation above the original TSO forecast
  • Offshore wind in the same balancing group unexpectedly surges during the pre-curtailment window

Intraday forecast updates, refreshed at 30 to 60 minute intervals using high-resolution NWP corrections and satellite nowcasting, give the dispatch engine a continuously updated view of expected solar output over the next two to four hours. The optimizer can then re-solve the remaining-day SOC trajectory using updated irradiance estimates.

In practical terms: if the 11:00 intraday update shows 25% higher-than-planned generation volume for the 11:30 to 14:00 window, the dispatch logic can pre-position the BESS to a lower SOC by 11:30, ensuring absorptive capacity is available when the surplus arrives. Without that update, the battery sits at the wrong position when the curtailment window opens.

What the Window Actually Buys You

The economic framing is curtailment avoidance revenue. In Kyushu, where output control events have been extensive since 2018, the revenue foregone per curtailment event can be estimated using the fixed-price FIT tariff or the prevailing JEPX spot price for that interval. Neither is trivial, particularly for generation assets in the later years of their FIT contract where every avoided curtailment event directly improves project economics.

We are not saying every curtailment event is avoidable with a BESS. Storage capacity is finite. Some curtailment periods span many hours with total surplus volume exceeding any co-located battery's usable capacity by a large margin. The point is that the dispatch window determines how much of the avoidable curtailment you actually capture. A battery pre-positioned correctly can absorb the first two to three hours of a curtailment event. One that arrived at the window with 80% SOC absorbs almost nothing.

The Interaction with JEPX Intraday Pricing

The tension operators actually face is between curtailment absorption and intraday price arbitrage. When area prices are elevated in the 12:00 to 16:00 block due to demand peaks, holding capacity in reserve for curtailment absorption has an opportunity cost measured against what the battery could have earned discharging into the JEPX intraday market.

The dispatch optimizer needs to weigh these two modes simultaneously, not sequentially. That requires a forecast of both solar surplus probability and JEPX intraday price over the next two to four hours. Neither forecast is deterministic. The optimizer trades off expected curtailment recovery value against expected JEPX arbitrage value, with each estimate weighted by forecast confidence.

A dispatch engine that treats these as independent decisions, first locking the JEPX schedule and then fitting curtailment around whatever remains, will systematically underperform against one that solves the joint problem. The JEPX intraday market allows plan revisions up to roughly one hour before delivery; that revision window is what makes the joint optimization executable rather than theoretical.

What the Afternoon SOC Sets Up

One outcome of intraday dispatch that is easy to overlook: the SOC trajectory through the afternoon sets the overnight position, which in turn affects day-ahead optimization for the following day. A battery that absorbed heavily during a curtailment event and ended the day at high SOC may need to discharge overnight at sub-optimal prices just to create headroom for the next morning's charge cycle.

This is a real operational constraint. We build the day-ahead optimizer around it explicitly, feeding the overnight SOC target back as a constraint into the intraday window, so the dispatch logic does not create an unconstrained drawdown situation the following morning.

The dispatch window is not just about today's curtailment event. It is one node in a rolling multi-day optimization problem, and the intraday layer is how you keep that chain from accumulating positioning errors.

Related posts