Tools › Battery storage valuation
Battery storage valuation on power forward curves
Value a battery on EOX power forward curves: the best daily charge and discharge schedule within its power, energy, efficiency and cycle limits, a backtest on the hub's actual day-ahead prices, and regulation and reserves where the market runs a day-ahead market for them.
What goes in, what comes out
The battery
- The hub, the term and the power in MW
- Duration in hours at full power, and round-trip efficiency
- The most full cycles a day, from the warranty
- A cost per MWh delivered for degradation and operations
- Whether to add regulation and reserves, where available
The results
- Value and $/kW-month for each forward month
- Average charge and discharge prices, cycles a day and energy throughput
- A day-ahead backtest: the same battery on each actual day of the last 12 months, in $/kW-year
- With reserves, the value split between energy and each service
How it is valued
- Forward value. EOX on- and off-peak forward prices are shaped hour by hour from the hub's day-ahead history, and the battery's schedule is optimised for each kind of day in each month. This is intrinsic value: what the battery earns on the expected price shape.
- Backtest. The same optimisation on each actual day of day-ahead prices shows what day-to-day price swings added over the last year.
- Regulation and reserves. Energy and reserves are co-optimised hour by hour. Each award needs room to move and enough stored energy to sustain it, and is paid the day-ahead clearing price for the capacity held. Forward months use EOX's reserve forward curves.
Capacity payments and the energy used when reserves are deployed are not included, and prices are taken as given, so treat the result as a guide to the value rather than a forecast of revenue.
Example
A 100 MW, 4-hour battery at HUB1, 85% round-trip efficiency, one cycle a day, a 12-month term:
HUB1 is a placeholder and values are illustrative.
Use it from
Excel
=EOX.BATTERY("ISO1","HUB1",100,4,"2027-01","2027-12") value and backtest
=EOX.BATTERY("ISO1","HUB1",100,4,"2027-01","2027-12",0.85,1,TRUE) with regulation and reserves
Python
from eoxlive import EOX
eox = EOX("YOUR_KEY")
res = eox.battery("ISO1", "HUB1", mw=100, hours=4, start="2027-01", end="2027-12", ancillary=True)
res["total"]["per_kw_month"], res["total"]["backtest"]["per_kw_year"]
res["months"] # month by month, as a DataFrame
Or in the browser, on the Valuation page, signed in with your EOX account.
Questions
- Why is the backtest higher than the forward value?
- The forward value optimises one expected day per day type; real days swing, and a battery earns from the swings. The backtest shows how much that added last year.
- Which markets include regulation and reserves?
- Those that run a day-ahead market for them and for which EOX publishes reserve forward curves. Elsewhere the battery is valued on energy alone.
- Can I change the battery's limits?
- Yes: power, duration, efficiency, cycles a day and a cost per MWh delivered. Durations from 30 minutes to 12 hours.
- Is this a revenue forecast?
- No. It is the battery's value on EOX forward curves and on past day-ahead prices, for your own analysis.
Included with your subscription. The tools use the curves, vols and correlations your subscription already covers, under the same entitlements, and are never charged for separately. Results are for information only; values shown on this page are illustrative.