Voltmasters Platform
Energy price calculation
How the EMS turns the EPEX price into a net consumption price and a net injection price with your contract parameters, with the break-even point and the supported countries.
The EMS never bases its decisions on the raw EPEX spot price directly. It first converts EPEX into the net injection price and the net consumption price using the contract parameters you configured. These net prices drive every price-based decision in the system, including PV curtailment and cost optimization. The energy meter dashboard values the measured energy with them, see energy cost.
The formulas below apply to a dynamic contract. Fixed, flexible and Spanish time-of-use contracts set the net prices differently, see Energy contracts for how each contract type is priced.
The formulas
Both prices are expressed in €/MWh:
Injection price = (B × EPEX) − injection cost − injection distribution cost
Consumption price = (A × EPEX) + consumption cost + consumption distribution cost
Where:
- A: the consumption scaling factor.
- B: the injection scaling factor.
- The costs: the consumption cost and consumption distribution cost for consumption, the injection cost and injection distribution cost for injection. See the fields of a dynamic contract.
The injection price is what you actually earn (or pay) per MWh when you inject: it is the EPEX price minus the costs that come with injecting. Because those costs are subtracted, the injection price turns negative before EPEX itself does. The consumption price is what you actually pay per MWh imported: the EPEX price plus your consumption costs.
The break-even point
The injection and consumption costs are already included in the net prices, you do not set a separate threshold anywhere. The break-even EPEX price for injection is simply the sum of your injection costs:
Break-even EPEX = injection cost + injection distribution cost
Above that EPEX price the net injection price is positive (injecting pays); below it the net injection price is negative.
%%{init: {"xyChart": {"height": 300}, "themeVariables": {"xyChart": {"plotColorPalette": "#f8b81e, #a3a3a3"}}}}%%
xychart-beta
x-axis "EPEX (€/MWh)" ["0", "2", "4", "6", "8", "10", "12"]
y-axis "Net injection price (€/MWh)" -8 --> 8
line [-6, -4, -2, 0, 2, 4, 6]
line [0, 0, 0, 0, 0, 0, 0]
Worked example
With an injection scaling factor B = 1, injection cost €5/MWh and injection distribution cost €1/MWh:
Injection price = (1 × EPEX) − 5 − 1 = EPEX − 6
- The break-even EPEX price is 6 €/MWh (5 + 1). At exactly EPEX 6 the net injection price is 0.
- At an EPEX price of 4.01 €/MWh, the net injection price is
4.01 − 6 = −1.99 €/MWh. This is negative, injecting would cost you €1.99 per MWh. - The injection price only becomes positive once EPEX rises above 6 €/MWh.
Supported countries and price source
Day-ahead spot prices are sourced from the ENTSO-E Transparency Platform for the project's bidding zone. The zone is derived automatically from the project's location. Coverage spans 22 European bidding zones across the following countries:
| Country | Bidding zone | Local time |
|---|---|---|
| Belgium | BE | Europe/Brussels |
| Netherlands | NL | Europe/Amsterdam |
| Luxembourg | LU | Europe/Brussels |
| France | FR | Europe/Paris |
| Germany | DE | Europe/Berlin |
| Austria | AT | Europe/Vienna |
| Switzerland | CH | Europe/Zurich |
| Great Britain | GB | Europe/London |
| Poland | PL | Europe/Warsaw |
| Spain | ES | Europe/Madrid |
| Italy | Seven zones (see below) | Europe/Rome |
| Denmark | Per project location | Europe/Copenhagen |
| Sweden | Per project location | Europe/Stockholm |
| Norway | Per project location | Europe/Oslo |
| Ukraine | UA | Europe/Kyiv |
Countries with several bidding zones
Some countries are not a single price area. Italy is split into its seven bidding zones (North, Centre-North, Centre-South, South, Calabria, Sicily and Sardinia), and Denmark, Sweden and Norway each have several zones as well. For these countries the correct zone follows from the project's location, and the day-ahead prices shown for the project are the prices of that zone, not a national average.
Prices are retrieved in 15-minute resolution, and one year of historical prices is available for the supported zones. If a project's country is not covered, the EMS falls back to the Belgian bidding zone for its day-ahead prices.