How we model 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 fixed power limits unrelated to state of charge, 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 |
|---|---|---|
| Cârate tapering | Gridâscale batteries | Fleets are most agile at midâSoC, less so at extremes |
| 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 Cârate taper; 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). Subject to Cârate tapering and heterogeneous cycling costs 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 is no Cârate taper or 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 becomes a single modelled unit with rated power \(P^{\max}_s\) (MW), energy capacity \(E^{\max}_s\) (MWh) and roundâtrip efficiency \(\eta_s\).
- 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 and Cârate taper.
- 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.
Cârate tapering: 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 introduce Cârate tapering: the maximum power depends on state of charge (SoC). Intuitively:
- when the fleet is almost empty, it cannot discharge at full power for long;
- when it is almost full, it cannot absorb at full power indefinitely;
- the midâSoC region is where the fleet is most nimble.
Three SoC segments
For each fleet unit \(s\) and time \(t\), we partition the state of charge into three segments:
\[E_{s,t} = E^{\text{low}}_{s,t} + E^{\text{mid}}_{s,t} + E^{\text{high}}_{s,t},\]with caps
\[E^{\text{low}}_{s,t} \leq f_{\text{low}} E^{\max}_s, \quad E^{\text{mid}}_{s,t} \leq f_{\text{mid}} E^{\max}_s, \quad E^{\text{high}}_{s,t} \leq f_{\text{high}} E^{\max}_s,\]and \(f_{\text{low}} + f_{\text{mid}} + f_{\text{high}} = 1\).
We also define the headroom \(H_{s,t} = E^{\max}_s - E_{s,t}\), partitioned similarly into:
\[H_{s,t} = H^{\text{low}}_{s,t} + H^{\text{mid}}_{s,t} + H^{\text{high}}_{s,t},\]with caps mirroring the SoC segments. These segments are continuous variables; there are no additional binaries, so the system remains a linear programme.
Tapered discharge and charge limits
We define a rated Cârate:
\[C_s = \frac{P^{\max}_s}{E^{\max}_s} \quad [\text{h}^{-1}],\]and assign taper factors \(r_{\text{low}}\), \(r_{\text{mid}}\), \(r_{\text{high}}\) to the three segments. The discharge and charge constraints become:
- Discharge taper
- Charge taper
The taper factors are chosen so that:
- the midâSoC segment is the most flexible;
- nearâempty and nearâfull segments are more constrained;
- the overall fleet can still deliver rated power for realistic durations, but not as a perfectly flat block across all hours.
Behavioural interpretation
At fleet level, tapering means:
- The first MWhs of discharge come from the most flexible midâsegment.
- As the fleet empties, remaining energy is less able to move quickly, so prices do not collapse to the same degree.
- Similarly, when charging from empty, early MWhs can be absorbed quickly, but it becomes harder to keep charging at full power as the fleet fills up.
This structure is one of the main reasons the model avoids unrealistic âall batteries attack the same hour at maximum powerâ solutions.
Cycling costs and competition within the fleet
To capture the idea that not all batteries are identical, we introduce assetâ and timeâvarying cycling costs. In the objective, the storage cycling term becomes:
\[\sum_{s,t} \lambda_{s,t}^{\text{cycle}} \bigl(P^{\text{imp}}_{s,t} + P^{\text{exp}}_{s,t}\bigr),\]where \(\lambda_{s,t}^{\text{cycle}}\) varies smoothly across assets and time.
In practice, older assets or those with higher degradation rates tend to have higher cycling costs than newer installations. This means newer, cheaper-to-cycle fleets dispatch first, while older or more constrained assets only cycle when spreads are wide enough to justify it. The model avoids perfectly flat marginal costs for storage, which would otherwise lead to knifeâedge price responses.
This heterogeneity 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 SoCâdependent power limits and cycling costs 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 | Cârate tapering (SoCâdependent) | Coordination cap \(\alpha_t\) |
| SoC limit | None | Minimum backup SoC |
| Cycling cost | Assetâ and timeâvarying | 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:
- SoC vs max power curve â stylised plot comparing a flat Cârate limit with the tapered limit used in the model, highlighting the low/mid/high segments
- Dispatch example for a single fleet â stacked area chart of \(E^{\text{low}}, E^{\text{mid}}, E^{\text{high}}\) over a week, overlaid with charge/discharge power, showing how the mid segment does most of the work
- Price impact of tapering â comparison of two runs on the same day (tapering on vs off) to show how tapering avoids squareâwave prices and reduces extreme ramping
- Cycling cost heterogeneity â histogram or violin plot of \(\lambda_{s,t}^{\text{cycle}}\) across fleets for a representative hour, illustrating that some fleets 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