Skip to content

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]
With B = 1 and 6 €/MWh of injection costs: the injection price (yellow) crosses zero (grey) at an EPEX price of 6 €/MWh.

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.