Voltmasters Platform
Energy price calculation
How the EMS converts the EPEX spot price into the net injection and consumption prices that drive PV curtailment and cost optimization.
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 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.
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.
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 = consumption scaling factor
- B = injection scaling factor
- The costs are your fixed per-MWh contract components.
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.
Contract parameters
You configure the following parameters for your project. They correspond one-to-one with the terms in the formulas above:
| Parameter | Symbol | Effect |
|---|---|---|
| Consumption scaling factor | A | Multiplies EPEX in the consumption price |
| Consumption cost | , | Added to the consumption price |
| Consumption distribution cost | , | Added to the consumption price |
| Injection scaling factor | B | Multiplies EPEX in the injection price |
| Injection cost | , | Subtracted from the injection price |
| Injection distribution cost | , | Subtracted from the injection price |
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.
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.
The −1.99 in this example is not a setting or a threshold, it is the net injection price at that moment's EPEX. The value that price-based decisions compare against is the injection price crossing zero, which for this contract corresponds exactly to EPEX crossing 6 €/MWh.
Where these prices are used
- PV curtailment: PV production is limited when the net injection price is negative.
- Cost optimization: the battery is charged and discharged based on the net consumption and injection prices across the forecast.
- Energy cost on the energy meter dashboard: measured energy is valued at these net prices to give an indicative cost per meter. That figure is an indication, not a settlement.