Electricity arbitrage with storage: revenue, costs and risks
Markets and business models

Electricity arbitrage with storage: revenue, costs and risks

How to check cycle margin, costs and schedule feasibility using actual historical prices as an example.

8 min read

Read articleBack to catalogue
Graphite storage container, white cabinet, clock and yellow arrow on a white background.

In this article

Electricity arbitrage with storage means charging at a lower price and selling stored energy at a higher price. The result depends on losses, transaction costs and the ability to execute the schedule. The difference between the cheapest and most expensive hour alone is not enough to establish project profitability.

This article distinguishes trading margin from business savings, describes an energy balance and identifies inputs to check. It uses an educational calculation with actual historical prices and assumed cycle parameters, and considers constraints to assess before selecting equipment.

How price arbitrage works

Storage shifts energy between periods; it does not create additional physical energy. After conversion and auxiliary consumption, less can be delivered than was received. A commercial result arises when the value of available delivery covers energy purchases and related costs.

Market sales and reduced business purchases are different scenarios. The first calculates sales revenue; the second assesses avoided consumption costs under the actual supply contract. A public market price is not automatically the price of every kilowatt-hour on a business bill.

Energy charged from an owned solar plant also has alternatives: direct consumption, possible sale or curtailment. Set its cost according to the scenario. The same energy cannot be counted simultaneously as both a sale and full self-consumption savings.

First define what is being compared: a market transaction, bill reduction or combined tasks. Prices, contracts and cost items follow from that choice. The same battery can produce different results under different uses.

Calculating a cycle result

At one metering boundary, define energy received E_in, energy delivered E_out and round-trip efficiency η: E_out = E_in × η. Compare a cycle with the same starting and ending state of charge. Account for auxiliaries and standby under the agreed method.

Energy margin is sales revenue minus the cost of energy received. With constant prices in two selected periods: E_out × sale price - E_in × purchase price. Then deduct additional transaction costs. This is not yet net profit for the entire investment project.

For multiple periods, sum price times volume for each purchase and sale separately. A simple average price without volumes can distort the result. Review losses and delivered energy cost so nominal battery capacity is not compared with usable energy at a different boundary.

There is no universal minimum spread percentage. The required price difference depends on efficiency, costs, battery life and operating conditions. A parameter from one model scenario is not a rule for all installations.

Example using prices from 20 October 2026

Consider historical hourly day-ahead market prices for 20 October 2026: UAH 2,300/MWh was published for period 1 and UAH 7,000/MWh for period 19. Period numbers follow the hourly table and are not independently converted to local time.

For an educational cycle, assume 0.1 MWh, or 100 kWh, is purchased. Assume whole-installation round-trip efficiency of 86% at an agreed boundary including auxiliaries. Delivery is then 0.086 MWh. This is an example assumption, not a confirmed product specification.

MeasureCalculationResult
Energy purchased0.1 × 2,300UAH 230
Energy delivered0.1 × 0.860.086 MWh
Delivery revenue0.086 × 7,000UAH 602
Energy margin602 - 230UAH 372

The UAH 372 result is before trading, network, operating and other applicable costs. Taxes are not calculated. The UAH 4,700/MWh price difference is not the margin per purchased MWh, because the sale volume is smaller than the purchase volume.

The example prices exclude VAT. Without losses, the payment difference would be UAH 470: 0.1 × 7,000 - 230. The difference from UAH 372 shows why equal purchase and sale volumes cannot be assumed automatically.

For sensitivity, assume a sale price of UAH 3,000/MWh with other parameters unchanged. The result is 0.086 × 3,000 - 230 = UAH 28 before other costs. The 3,000 price is an assumption, not a second historical observation or forecast.

The selected historical periods do not prove a participant knew prices in advance, held the required charge or executed trades. One example cannot replace analysis of a complete data series and is not an annual-revenue forecast.

Costs to check

Include applicable trading commissions, commercial management charges, network payments, costs from deviations from the agreed schedule and battery resource use. Establish rates and calculation bases under current rules and project contracts. Do not automatically apply a consumer bill to a market storage installation.

Record the relevant volume, rate and charging period for each payment. Purchased energy, transaction commission and a fixed service fee have different bases. One unexplained general uplift conceals these differences and makes verification harder.

The decision to run an individual cycle depends on incremental revenue, incremental costs and alternative use of the resource. Assessment of the entire investment separately covers the complete storage budget: equipment, connection, construction, fixed costs, performance maintenance and other agreed items.

Levelised cost of storage (LCOS) may already include some service, replacement and energy costs. Check the method before adding separate lines. Double counting losses or capacity maintenance overstates cost; omitting them improves the result only on paper.

Positive margins on individual transactions do not prove recovery of initial investment. Assess cash flows and payback over the operating period, with payment timing, financing and taxes under the chosen model.

What limits a trading schedule?

The cheapest period may be too short to restore the required charge. The most expensive period may require more power or longer delivery than the installation permits. Alongside prices, check available power, usable capacity, charging windows and storage duration.

One resource cannot be fully reserved for incompatible simultaneous tasks. Charge held for a business outage reduces trading volume. Power already used for one operation is not available again for another.

Storage energy-flow control manages state of charge, limits and command execution. A trader's forecast or command must match the equipment's actual condition. Software alone does not guarantee a profitable schedule.

Model unavailability, temperature limits, maintenance and changing usable capacity. More cycles do not always improve results if extra margin fails to cover costs and resource use.

What to agree for market participation

The technical ability to store energy does not itself establish trading readiness. Define the participant's role, connection and commercial metering conditions, contracts and schedule responsibility. Assess separately when an energy storage licence is needed; one licence does not replace all other prerequisites.

The day-ahead market establishes positions in advance; the intraday market permits adjustment closer to delivery. The balancing market serves a different purpose: payment for an action depends on system needs and participation terms. Maximum results from these segments cannot simply be added for the same hours.

A historical price describes a market period but does not prove a participant's order was executed. Actual results need confirmed trades, volumes and measured energy flows. A forecast strategy and a report of completed trading are assessed separately.

For a specific system such as Sungrow PowerTitan 2.0 ESS, request documentation for the supplied version. A family name does not establish operating mode, connection-point power or guaranteed return. Select equipment after defining the scenario.

How to check a model before deciding

Use a continuous time series, not a selection of the best days. Retain price, available volumes, charge, limits and costs for each interval. Separately check time zone, interval length, daylight-saving transitions, units and tax basis.

  1. Set conditions. Agree data, technical limits, contracts and cost scope.
  2. Reproduce the schedule. Check energy, power, charge and feasibility of each transaction.
  3. Compare outcomes. Assess actual costs, alternatives and several future scenarios.
  • Separate historical data from forecasts and assumptions.
  • Do not use future information unavailable when a decision was made.
  • Count losses and payments once at the agreed boundary.
  • Align reserve, downtime and degradation with the operating scenario.
  • Test annual results against adverse price and cost changes.

A useful model explains when to skip a cycle, not only maximum possible revenue. Investment decisions require reproducible data and resilient results, not one favourable price spread.

After commissioning, compare plan and actual results at the same boundaries and intervals. Explain deviations separately: price changes, unexecuted volume, lost availability or other costs. This identifies the cause and supports adjustment of the next schedule.

Frequently asked questions about electricity arbitrage