Home/Blog/BESS

Revenue Stacking a Co-Located Battery: Arbitrage, Imbalance & Capacity in One Asset

A battery rarely pays back on one revenue line. How energy arbitrage, imbalance correction, and capacity stack on the same asset — why they compete for one shared state of charge, and the dispatch layer that arbitrates between them every hour.

Revenue Stacking a Co-Located Battery: Arbitrage, Imbalance & Capacity in One Asset

A battery on a solar site is the most expensive idle asset you can build if you only use it for one thing. The economics of utility-scale storage almost never close on a single revenue stream — energy arbitrage alone rarely pays back a modern lithium system inside its warranty. The systems that pencil out do so because the same battery, the same megawatt-hours of throughput, are sold into several markets at once: shifting energy from cheap hours to expensive ones, correcting imbalance against a day-ahead position, and getting paid to stand ready as capacity. This is revenue stacking, and it is the difference between a battery that is a cost centre and one that is an asset.

The catch is that these streams are not free to combine. They compete for the same finite resource — your state of charge and your cycle budget — and they are governed by different markets, settlement windows, and penalties. A megawatt-hour you commit to evening arbitrage is a megawatt-hour you cannot also offer for imbalance correction at the same instant. Stacking is therefore not "do all of them"; it is an optimisation over a shared, constrained battery, every hour, under uncertainty.

This article breaks down the main streams, how they conflict, and the control architecture that actually arbitrates between them on a co-located solar-plus-storage site.

KEY TAKEAWAYS
  • A single battery rarely pays back on one revenue stream — the business case depends on stacking arbitrage, imbalance correction, and capacity/availability on the same asset.
  • The streams compete for one shared resource: state of charge and cycle budget. Every MWh promised to one market is unavailable to another at that instant.
  • Energy arbitrage is the base layer — charge cheap (often the negative-price solar midday), discharge into the evening peak — but it is the lowest-value-per-MWh use on its own.
  • Imbalance correction monetises the battery's speed: closing the gap between a day-ahead position and realised output, often the highest-value use per cycle.
  • Stacking is an optimisation, not a checklist: a dispatch layer must arbitrate between streams every hour under price and production uncertainty, inside hard cycle, SOC, transformer, and PV-headroom limits.
A vertical stacked bar chart showing battery revenue split into three segments per bar — energy arbitrage in yellow, imbalance in teal, and capacity in slate-blue — with a euro value axis and a legend
The stack, illustratively. No single layer carries the business case; the height of the combined bar — not any one segment — is what closes the economics.

The Base Layer: Energy Arbitrage

Energy arbitrage is the stream everyone understands: buy (or absorb) energy when it is cheap, sell it when it is dear. On a co-located solar site the "buy" side is often free or better than free — the battery charges from the plant's own midday surplus precisely when the day-ahead price has collapsed toward, or below, zero. It then discharges into the evening peak hours when the plant produces little and the price is high.

This is the layer that justifies co-location specifically. A standalone merchant battery pays the spread between two market prices; a solar-co-located battery captures the spread and rescues energy that would otherwise have been curtailed at a zero or negative price. The same cycle does two jobs.

But on its own, arbitrage is the lowest value-per-megawatt-hour use of the asset. Day-ahead spreads are wide but not infinite, and every player with a battery is chasing the same evening peak, compressing it over time. A battery run only as an arbitrage machine is a battery leaving money on the table.

The High-Value Layer: Imbalance Correction

Here is where the battery's defining property — it can change output in seconds — turns into money. A solar plant sells a day-ahead forecast and is settled against the gap between that forecast and what it actually produced. That gap, imbalance, is penalised, and the penalty is largest exactly when the forecast was most wrong: the partly-cloudy afternoon where realised output swings far from the bid.

A co-located battery can absorb or fill that gap in real time. When the plant under-produces against its position, the battery discharges to cover it; when it over-produces, the battery soaks the excess. The plant's net delivery tracks its day-ahead commitment far more tightly, and the imbalance penalty shrinks.

Per cycle, this is frequently the highest-value use of the battery — not because the energy quantities are large, but because avoiding an imbalance penalty is worth far more per megawatt-hour than a day-ahead arbitrage spread. The battery is being paid for its speed and certainty, not its capacity.

The Standby Layer: Capacity and Availability

The third stream pays the battery to exist and be ready rather than to move energy. Depending on the market, this shows up as capacity payments, availability-based ancillary products, or reserve obligations — the system operator pays for the option on the battery's power, exercised only sometimes.

This layer is attractive because it is largely passive revenue that does not consume cycles, but it comes with an obligation: to be paid for availability you must actually be available, which means reserving headroom and SOC you then cannot fully commit to arbitrage or imbalance. It trades cycle-spend for a reservation constraint.

Why Stacking Is an Optimisation, Not a Checklist

Lay the three layers on top of each other and the conflict is obvious: they all draw on one battery, one state of charge, one cycle budget, in one set of hours. Promise everything to arbitrage and you have no headroom for the imbalance correction that pays best per cycle. Reserve everything for capacity and the battery sits idle through a wide arbitrage spread. The right answer changes every day with the price shape, the production forecast, and the battery's current state.

That is why dispatch cannot be a fixed schedule. It has to be a rolling optimisation that, each hour, allocates the shared resource across streams to maximise total value — while respecting a stack of hard physical and contractual limits:

  • Cycle budget — lithium degradation is paid for in cycles; over-cycling for a marginal arbitrage spread destroys warranty value.
  • State-of-charge envelope — minimum and maximum SOC bounds, plus whatever reserve the capacity obligation requires.
  • Transformer capacity — the combined PV-plus-battery export cannot exceed the grid connection limit, so battery discharge is clamped against live PV output.
  • PV headroom — on the charge side, the battery competes with export for the same transformer; on the discharge side, with the plant's own production.
A 24-hour dispatch timeline showing a yellow solar production curve peaking at midday, a teal day-ahead price curve low at midday and peaking in the evening, and a shaded state-of-charge area rising while charging at midday and falling while discharging in the evening, labelled CHARGE and DISCHARGE
A day of stacked dispatch. The battery charges through the low-price midday surplus and discharges into the evening peak — while holding back enough headroom to correct intraday imbalance.

What Actually Runs the Stack

On a DYNVOLT solar-plus-storage site the dispatch layer sits between the market signals and the battery, and every instruction passes through multi-layer clamping before it reaches the hardware: the optimiser proposes, the cycle/SOC/policy/envelope/PV-headroom/transformer gates dispose. A recommendation that would over-cycle the battery, breach the SOC reserve, or push the transformer past its limit is reduced or rejected before it ever becomes a setpoint.

The takeaway for an owner evaluating storage: do not underwrite a battery on one revenue line, and do not assume the streams simply add. Underwrite the stack, net of the constraints that make the streams compete — and make sure the control layer you buy is actually capable of arbitrating between them, not just running a fixed daily charge/discharge schedule.

Operating a single energy-storage asset across multiple revenue streams at once — typically energy arbitrage, imbalance correction, and capacity/availability — so the same battery and the same cycles earn from several markets rather than one.

See it on your plant.

30-minute walkthrough on your real assets. Bring an inverter brand and a country — we'll show SCADA, AI forecasting, and ENTSO-E market routing wired together.

Request a demoSee the forecasting module →