Modelling the complex operations of the storage fleet
Key principles
Storage assets are a small part of todayâs power systems but grow quickly in our longâterm outlook. That future fleet will play a major role in setting prices, so we need a modelling approach that can stand up to scrutiny before it arrives at scale.
This page explains how storage is represented in the market model, what behaviours emerge from that representation, and why we believe this is a robust way to capture the impact of growing storage fleets on prices and revenues.
Energy arbitrage and price formation
The fundamentals model clears the wholesale market (e.g. the day-ahead market) by solving a system cost minimisation problem. For storage, this acts as a reasonable proxy for profit-maximising energy arbitrage.
When the model charges a battery, it does so because prices are low â buying energy is cheap. When it discharges, prices are high â selling is valuable. The zonal prices that emerge from this market-clearing process reflect the collective effect of storage alongside all other generation and demand.
In a competitive market, there is a well-known relationship between system-level optimisation and individual behaviour:
- System cost minimisation finds a dispatch that serves load at low total cost.
- Individual profit maximisation leads each asset to buy low and sell high.
- At equilibrium, these perspectives tend to align â the prices that clear the market are also the prices that would guide profit-seeking behaviour.
Our modelling approach draws on this relationship. By solving the market-clearing problem with storage included, we capture the effect of batteries doing energy arbitrage and shaping wholesale prices. The resulting price forecasts reflect a world where storage operators respond to spreads in much the same way they would in a competitive market.
For asset-specific dispatch optimisation and detailed revenue modelling, see the Battery Dispatch Model section.
Avoiding unrealistic âsquareâwaveâ behaviour
Storage has simple physics but strong systemâwide effects. When fleets get large, small modelling choices can meaningfully change:
- when batteries move energy across time,
- how much they compress price spreads, and
- how often they displace fossil or renewable plant.
If you give a large battery fleet perfect foresight, no cycling penalties, and one perfectly coordinated block of capacity, the costâminimising solution tends to charge flatâout below a threshold price and discharge flatâout above it. At high penetrations this produces nearâsquareâwave price shapes â valleys filled in, peaks shaved, prices almost biâmodal. Real markets are messier: operators have different expectations and constraints, not all batteries see the same signals, and grid limits constrain how aggressively they can move.
Our goal is to let storage move prices in a realistic way, without turning it into an allâknowing, perfectly coordinated trader. We do this by keeping the mathematics clean and transparent, and adding a small number of behavioural frictions:
| Friction | Applies to | Effect |
|---|---|---|
| Cycling cost tranches | Gridâscale batteries | Each fleet is split into tranches with their own state of charge and cycling cost, so only part of the fleet cycles on a typical day |
| Fleet power caps | Gridâscale batteries | Charge and discharge at each bidding zone are capped at 80% of fleet power |
| Cycling costs | All storage | Storage seeks a minimum arbitrage value to protect limited lifetime of cycles |
| Coordination limits | Prosumer batteries | Only a fraction of behindâtheâmeter capacity responds in a coordinated way |
Together these produce storage actions and price shifts that are smoother and more heterogeneous, much closer to what we observe in highâpenetration storage markets.
Technologies covered
We distinguish three storage types, each with its own operational rules:
-
Pumped hydro â Longâduration, largeâscale assets that behave like reversible hydro plants. Typically a small number of big units with durations of ~10 hours. No tranches; treated as wellâmanaged assets with simple operational limits.
-
Gridâscale batteries â Aggregated fleets of gridâconnected batteries, grouped by bidding zone and duration (2h, 4h, 6h, 8h). Split into cycling cost tranches with separate state of charge, to prevent unrealistic, perfectly coordinated ramps.
-
Prosumer batteries â Aggregated home and commercial/industrial batteries behind the meter. These behave differently from gridâscale fleets: they keep a minimum state of charge for backup and only a timeâvarying fraction of the fleet can act in a coordinated way at any point in time.
Pumped hydro
Pumped hydro is modelled as a classic energyâlimited reservoir with roundâtrip efficiency:
- Each plant has a power capacity \(P^{\max}\) (MW) and a usable energy reservoir \(E^{\max}\) (MWh).
- We assume a roundâtrip efficiency \(\eta_{\text{PH}} \lesssim 1\), applied on the charging side.
- Plants can both import (pumping) and export (generating), but remain bound by reservoir limits and power limits.
For each pumped hydro unit \(s\) and time step \(t\) with step length \(\Delta t\) (hours), the state of charge evolves as:
\[E_{s,t} = E_{s,t-1} + \eta_{\text{PH}}\, P^{\text{imp}}_{s,t-1}\,\Delta t - P^{\text{exp}}_{s,t-1}\,\Delta t,\]with bounds
\[0 \leq E_{s,t} \leq E^{\max}_s \quad\text{and}\quad 0 \leq P^{\text{imp}}_{s,t},\, P^{\text{exp}}_{s,t} \leq P^{\max}_s.\]In plain language:
- Pumped hydro stores energy when prices are low (pumping) and releases energy when prices are high (generating).
- The model tracks the water level (SoC) over time and ensures it never exceeds the reservoir size or goes negative.
- There are no tranches and no prosumer behaviour here; pumped hydro is treated as a set of large, wellâmanaged assets with relatively simple operational limits.
Gridâscale batteries
Gridâscale batteries are one of the fastestâgrowing storage technologies. As gigawatts of capacity arrive, they start to shape prices, not just follow them. Our model captures this behaviour in a way that is:
- rich enough to represent competition between storage and other technologies,
- nuanced enough to avoid unrealistic âperfect traderâ behaviour, and
- simple enough to remain transparent and explainable.
Fleet representation and aggregation
Rather than modelling every individual site, we represent batteries as aggregated storage units:
- Capacity is grouped by bidding zone, technology (âBattery Storageâ) and duration (e.g. 2h, 4h, 6h, 8h).
- Each group has rated power \(P^{\max}_s\) (MW), energy capacity \(E^{\max}_s\) (MWh) and roundâtrip efficiency \(\eta_s\).
- Each group is then split into tranches of up to 500 MW (see Cycling cost tranches).
- Installed capacity paths are interpolated across the forecast horizon so that growth is reflected smoothly over time.
In each bidding zone, the combination of different durations gives the system a portfolio of âfast but shallowâ and âslower but deeperâ storage. This mirrors how real markets build a mix of 2âhour, 4âhour and longerâduration assets to balance intraday spreads and multiâday events.
Each fleet unit can charge (\(P^{\text{imp}}_{s,t}\)), discharge (\(P^{\text{exp}}_{s,t}\)), and hold energy (\(E_{s,t}\)), subject to the constraints below.
Emergent arbitrage rather than hardâcoded bidding
Gridâscale batteries participate in the same system cost minimisation as other technologies:
- They pay a cycling cost per MWh charged/discharged.
- They are limited by power and energy capacity, roundâtrip efficiency, stateâofâcharge limits and fleet power caps.
- They interact with network constraints and transmission limits through zonal balances.
The contribution of fleet \(s\) to the objective over all times \(t\) is:
\[\sum_t \lambda_{s,t}^{\text{cycle}} \bigl(P^{\text{imp}}_{s,t} + P^{\text{exp}}_{s,t}\bigr),\]with \(\lambda_{s,t}^{\text{cycle}}\) a timeâ and assetâvarying cycling cost discussed below.
The dual variables of the power balance constraints are the zonal prices. These prices are not imposed externally; they emerge from the interaction of:
- thermal generation bids,
- renewable curtailment penalties,
- lossâofâload penalties,
- network congestion, and
- storage decisions.
Because the optimisation is global, battery behaviour emerges as a byâproduct of minimising total system cost. Storage imports when the model âthinksâ energy is cheap relative to its future value; it exports when it can displace more expensive generation. When discharging, storage effectively sets the price by undercutting the next thermal unit in the merit order, bidding just below what that plant would offer, given where demand sits on the supply stack.
Cycling cost tranches: preventing unrealistically coordinated fleets
A naive representation would give each fleet a constant charge/discharge limit:
\[0 \leq P^{\text{imp}}_{s,t},\, P^{\text{exp}}_{s,t} \leq P^{\max}_s,\]independent of how full the battery is. With perfect foresight, a large fleet under these rules:
- charges flatâout whenever prices are below some threshold,
- discharges flatâout when prices are above it, and
- if the fleet is big, it can transform the price shape into something close to a square wave.
To avoid this, we split each utilityâscale fleet into tranches. Each tranche is a separate storage unit with its own state of charge and its own cycling cost.
Tranche size
- Each fleet is split into tranches of up to 500 MW.
- A fleet has at least 2 and at most 20 tranches. Fleets above 10 GW therefore have 20 tranches larger than 500 MW.
- Each tranche gets an equal share of the fleetâs power and energy capacity.
Cycling costs
Each tranche \(k\) pays a cycling cost \(\lambda_{k,t}^{\text{cycle}}\) per MWh charged and discharged. In the objective, the storage cycling term becomes:
\[\sum_{k,t} \lambda_{k,t}^{\text{cycle}} \bigl(P^{\text{imp}}_{k,t} + P^{\text{exp}}_{k,t}\bigr).\]- Costs are spread on a geometric scale from âŹ10/MWh to âŹ200/MWh across the tranches of a fleet.
- A small timeâofâday modulation is added, so tranches with similar costs do not act in exactly the same hour.
- The range was calibrated against observed GB battery behaviour (Elexon physical notifications and dayâahead plus intraday positions, 2023â2025).
These are not physical wear costs. They spread dayâahead participation across the fleet. The highest costs reflect that part of the fleet keeps headroom in dayâahead, so it can cycle in other markets later, such as intraday and the Balancing Mechanism in GB.
Stateâofâcharge limits
Each tranche runs between 5% and 95% of its energy capacity:
\[0.05\,E^{\max}_k \leq E_{k,t} \leq 0.95\,E^{\max}_k.\]Fleet power caps
Total charge and total discharge of all tranches at a bidding zone are each capped at 80% of fleet power:
\[\sum_k P^{\text{exp}}_{k,t} \leq 0.8\,P^{\max}_s, \quad \sum_k P^{\text{imp}}_{k,t} \leq 0.8\,P^{\max}_s.\]Behavioural interpretation
At fleet level, tranches mean:
- Lowâcost tranches trade on small spreads. Highâcost tranches wait for wider ones.
- Different parts of the fleet sit at different charge levels and cycle on different days.
- On a typical day only part of the fleet cycles, as in highâpenetration markets such as CAISO.
This structure models competition within the storage fleet, different owners face different economics, without requiring explicit bidding strategies for each.
Why this is a good proxy for highâpenetration storage markets
Real markets with large storage fleets show several common patterns:
- Batteries increasingly set prices during ramps and scarcity events.
- Price shapes change, but they rarely become perfectly flat plateaus.
- Different parts of the fleet behave differently depending on contracts, risk appetite and operational constraints.
Our representation captures these features by:
- Allowing fleets to materially shift prices through energy arbitrage and reserves.
- Enforcing trancheâlevel cycling costs, stateâofâcharge limits and fleet power caps that prevent unrealistically coordinated behaviour.
- Embedding storage into a global system cost minimisation where behaviour is emergent rather than handâcoded.
This makes the model a strong tool for exploring questions such as:
- How quickly do additional GW of 4âhour batteries erode peak prices?
- How do spreads evolve as storage penetration increases?
- What is the relative value of adding more duration vs more power in a given bidding zone?
Prosumer batteries
Prosumer batteries represent behindâtheâmeter storage installed by households and small/medium businesses. They increase selfâconsumption of solar, provide backup during outages and, increasingly, participate in flexibility markets.
From a systemâmodelling perspective, they are very different from a single merchant battery connected directly to the transmission system. Aggregators, network operators and endâusers all influence how much of this capacity actually shows up in the wholesale market at any given time.
What counts as a prosumer battery?
In the input data we distinguish:
- Gridâscale batteries: gridâconnected assets designed primarily for wholesale markets.
- Prosumer batteries: home and commercial/industrial batteries (âresiâbatteryâ) located behind the meter.
For modelling purposes:
- Prosumer batteries are aggregated into fleets by country and duration, so the optimisation sees a small number of representative units rather than millions of installations.
- These fleets share many of the same physical characteristics as gridâscale batteries (power capacity, duration, roundâtrip efficiency) but they are subject to different operational rules.
Design goals
When modelling prosumer batteries, our goals are to:
- Capture their contribution to system flexibility and price formation.
- Reflect that a large share of the capacity is not available for wholesale arbitrage all the time â some is used for backup, some for selfâconsumption, some is idle.
- Avoid treating the entire prosumer fleet as a perfectly coordinated trader with the same capabilities as a large gridâscale battery.
To achieve this, we focus on two key constraints:
- A minimum state of charge to preserve backup capability.
- A limit on how much of the fleet can act in a coordinated way at once, which evolves over time.
Minimum state of charge for backup
Prosumer batteries are often installed and operated with resilience in mind. Even when they participate in markets, users typically want some energy left for outages or local reliability.
We represent this by enforcing a minimum state of charge:
\[E_{s,t} \geq \underline{\text{SoC}}_{\text{prosumer}} \cdot E^{\max}_s,\]for each prosumer fleet \(s\) and time \(t\), where \(\underline{\text{SoC}}_{\text{prosumer}}\) is a fixed fraction of the energy capacity (for example, 25%).
Interpretation:
- The bottom slice of the battery is reserved for backup and local needs.
- Only the remaining portion is available to take wholesale price signals.
- The model can still cycle this asset, but it will never fully drain it in the optimisation.
This assumption better reflects the way many prosumers actually use their batteries today.
Limited simultaneous fleet operation
An important feature of the prosumer representation is that only part of the fleet can act together like a merchant trader at any given time.
We introduce a timeâvarying simultaneous operation fraction \(\alpha_t \in [0,1]\) that specifies what share of the prosumer fleet can be actively coordinated in year \(t\). This captures several realities:
- Not all prosumers sign up to aggregation contracts.
- Aggregators have different levels of sophistication and different portfolios.
- Distribution network constraints and tariffs limit how aggressively fleets can be used.
In the model, we cap both charging and discharging of a prosumer fleet:
\[P^{\text{imp}}_{s,t} \leq \alpha_t P^{\max}_s, \quad P^{\text{exp}}_{s,t} \leq \alpha_t P^{\max}_s,\]with \(\alpha_t\) evolving over time according to a schedule derived from deployment and aggregation scenarios:
| Year | \(\alpha_t\) | Interpretation |
|---|---|---|
| 2026 | 0.30 | Early stage â only ~30% of prosumer capacity actively coordinated |
| 2035 | 0.60 | Mid-term â virtual power plants and aggregation mature |
| 2050 | 1.00 | Long-run â most prosumer batteries can be coordinated when needed |
Values are linearly interpolated between these anchor points.
This simple constraint has powerful implications:
- It prevents the prosumer fleet from instantly arbitraging every spread it sees.
- It naturally limits the impact of prosumers on wholesale prices in the near term, while allowing a bigger role later in the horizon.
- It creates a smooth transition from todayâs fragmented landscape to a future with highly coordinated prosumer flexibility.
Interaction with gridâscale batteries
Prosumer batteries share the same zonal power balance as gridâscale batteries and generators. When they charge, they add to zonal demand; when they discharge, they offset load or compete with other generation.
However, there are important differences:
| Â | Gridâscale | Prosumer |
|---|---|---|
| Power limit | Fleet cap at 80% of rated power | Coordination cap \(\alpha_t\) |
| SoC limit | 5% to 95% per tranche | Minimum backup SoC |
| Cycling cost | âŹ10/MWh to âŹ200/MWh across tranches | Assetâ and timeâvarying |
| Price role | Tend to lead in shaping peaks | Quietly reshape demand profile |
The combined effect is that:
- Gridâscale batteries tend to lead in shaping peaks.
- Prosumer batteries quietly reshape the demand profile, reducing net load during some hours and increasing it during others, without dominating price formation on their own.
Prosumer economics in the systemâcost framework
Even though we do not encode explicit retail tariffs or bill savings in the objective, prosumer batteries still behave in an economically meaningful way.
Within the systemâcost minimisation:
- Prosumer fleets charge when it is cheap for the system to do so, subject to the minimum SoC constraint, the simultaneous operation cap, and the interaction with other generation and storage.
- They discharge when they can displace expensive marginal generation or help avoid loss of load.
As a result:
- The model treats prosumer storage as part of the broader flexibility stack, even though the microâeconomics at the household level sit outside the model.
- The implied zonal prices include the effect of prosumer behaviour in the same way they include the effect of utilityâscale storage and generation.
Why this representation is useful
This prosumer design strikes a balance between:
- Realism â acknowledging that most behindâtheâmeter batteries are not fully available to the wholesale market all the time.
- Simplicity â avoiding the need to model millions of individual customers or detailed retail contracts.
- Flexibility â allowing different future paths by adjusting the minimum SoC and simultaneous operation schedule.
It is particularly useful for questions such as:
- How much do prosumer batteries reduce peak net load over time?
- How do they interact with big battery fleets in shaping evening ramps?
- How sensitive are longâterm price and revenue projections to assumptions about aggregation and coordination?
Planned figures
We plan to add figures to make these concepts more tangible:
Gridâscale battery figures:
- Dispatch example for a tranched fleet â state of charge by tranche over a week, showing that only part of the fleet cycles each day
- Price impact of tranches â comparison of two runs on the same day (tranches on vs off) to show how tranches avoid squareâwave prices and reduce extreme ramping
- Cycling cost heterogeneity â histogram of \(\lambda_{k,t}^{\text{cycle}}\) across tranches for a representative hour, illustrating that some tranches are cheaper to cycle than others
Prosumer battery figures:
- Simultaneous operation fraction over time â line chart of \(\alpha_t\) by year, showing how the coordinated share of the fleet grows from todayâs levels towards full participation
- Impact on net load â comparison of hourly net load profiles with and without prosumer batteries for a representative winter and summer week, highlighting how prosumers reshape demand
- Prosumer vs utilityâscale contribution â stacked area chart showing the relative contribution of prosumer batteries and big battery fleets to total storage exports during a highâprice event
- Backup buffer illustration â schematic showing the minimum SoC band reserved for backup versus the actively traded portion of the prosumer battery
Systemâlevel figures:
- Example day â prices alongside net storage position by fleet type, highlighting how storage smooths peaks without creating a perfect square wave