BirdCurve — forward price curves

Forward power price curves, 20 years ahead

BirdCurve turns market fundamentals into forward price curves at 15-minute resolution, for every market a battery earns in: day-ahead, intraday, imbalance, aFRR and FCR. One internally consistent scenario set behind every revenue assumption in your business case.

20-year horizon at 15-minute resolution Day-ahead, intraday, imbalance, aFRR & FCR Plugs straight into BESSview
BirdCurve Price Shape Explorer: average hourly day-ahead price by month, seasonal P10/P50/P90 profiles and a month-by-hour price heatmap

The Price Shape Explorer: hourly profiles, seasonal P10/P50/P90 bands and a month-by-hour heatmap, straight from the forward curve

How BirdCurve builds a forward curve

A forward curve is only as good as the fundamentals behind it. BirdCurve learns from real prices where the data supports it, falls back on physical modelling where it does not, projects the drivers you choose, then shapes the result down to 15 minutes.

Step 1 · Train on real prices

Trained on real prices, grounded in physical modelling

BirdCurve trains gradient-boosted models on years of historical day-ahead and balancing prices, learning how gas, CO2, renewables, demand and cross-border flows actually set the price. That is the right tool for a market that looks like the one we have measured.

The future energy system does not. So where the data runs out of evidence, at deep negative prices, in hours of heavy curtailment, at scarcity peaks and under battery saturation, BirdCurve falls back on explicit physical modelling of the merit order and the system balance. The curve stays realistic in a 2040 market no historical dataset has ever seen, instead of extrapolating today's price patterns 20 years forward. Every driver stays on the table, so it is a forecast you can defend, not a black box.

  • Learned from data where the evidence is strong
  • Physically modelled where it is thin, so future prices stay realistic
  • Transparent feature importance, never a black box
BirdCurve feature importance treemap: gas price and residual load dominate, with CO2, demand, weather and renewables contributing smaller shares

Feature importance: the curve is driven by fundamentals, gas and residual load first, with CO2, demand, weather and renewables all fully visible

How a BirdCurve forward curve is built Market data feeds a machine-learning ensemble trained on historical prices. Scenario assumptions and market data feed a projection of supply and demand to 2050, which feeds explicit physical modelling of battery dispatch and curtailment. Both the trained model and the physical modelling feed the day-ahead price forecast, from which ID3, imbalance, aFRR and FCR prices and finally BESS revenue and capture rates are derived. Retrieve market data live market and weather feeds Scenario assumptions capacity, demand, gas, CO2 Train the model on years of real prices Project supply and demand to 2050 at 15-minute resolution Physical modelling of BESS and curtailment dispatch, saturation, spill Forecast day-ahead prices out to 20+ years Derive ID3, imbalance, aFRR and FCR 15-minute resolution BESS revenue and capture rates Inputs Learned from historical prices Physically modelled Price curves out

Statistics and physics side by side: the model learns the price from years of real market data, while battery dispatch and curtailment are modelled from first principles. A fleet of batteries the size the 2040s will hold appears nowhere in the price history, so its effect on the price has to be modelled rather than learned.

Step 2 · Choose the scenario

One consistent scenario set, every market

You set the world: renewable build-out, demand growth, gas and CO2 paths, all anchored to published references like TYNDP, TenneT, NEP and ENTSO-E. Historic actuals come straight from the harvested data, and every scenario is built on the physical capacity that has to be installed, not on a price trend. BirdCurve keeps every market internally consistent, so day-ahead, intraday and balancing all sit behind the same assumptions instead of a patchwork of conflicting sources.

  • Anchored to TYNDP, TenneT, NEP and ENTSO-E
  • Renewables, demand, gas and CO2 you control
  • Internally consistent across every market
BirdCurve Scenario Explorer: solar PV capacity build-out to 2050 against published scenarios TYNDP, NEP, TenneT and ENTSO-E, with a fast/slow band

Scenario Explorer: solar PV build-out to 2050 against published references, with your own fast/slow band around it

Step 3 · Shape it to 15 minutes

Forward curves, shaped down to 15 minutes

BirdCurve projects the price out to 20 years and shapes it to 15-minute resolution, capturing the daily and seasonal pattern a battery actually trades against. The result is a capture-ready price shape for every market, ready to stack straight into a BESSview business case.

  • 20-year horizon at 15-minute resolution
  • Daily and seasonal price shape per market
  • Capture-ready for BESSview revenue stacking
BirdCurve month-by-hour day-ahead price heatmap: low midday prices in summer, high evening and winter prices

Month-by-hour price shape: where a battery captures value across the day and the year

BirdCurve average hourly day-ahead price by month, 2025-2040, showing morning and evening peaks per month

Average hourly day-ahead price by month, 2025–2040: the shape behind every capture-rate assumption

Validated on prices it never saw

A price model you can't verify is just an opinion. BirdCurve is scored on out-of-sample prices and reports the error in plain euros.

Trust, verified

Backtested, with the error in euros

Every trained model is scored on a held-out validation set and reported in euros per MWh, not hidden behind a single number. The active model was trained on data up to 30 June 2026, on 248.164 training and 49.728 validation hours, and lands at €15.72 validation MAE against €14.69 on the training set. A gap of just €1.03 (7%) means it generalises to prices it never saw rather than memorising the ones it did.

The error is broken down by price band, so you know exactly where the curve is strong and where it is uncertain: around €10 per MWh in normal hours, wider in the scarcity peaks and deep negative hours where the physical modelling takes over from the statistics.

And because each model is versioned with its training window and metrics, you can compare vintages side by side and watch the curve improve over time.

BirdCurve model card: training and validation MAE in euros per MWh, R-squared, and mean absolute error broken down by actual-price bin

The model card: train and validation MAE in euros, R², and error by actual-price bin, reported per model vintage

€15.72
Validation MAE / MWh
0.908
Validation R²
298k
Hourly price samples scored
20+ yr
Forward horizon
BirdCurve Curve Forecast: multi-year projection of power, gas, CO2, PV, wind and demand from 2018 out to 2050 for the Netherlands

The Curve Forecast: power, gas, CO2 and the full renewable build-out projected out to 2050, per scenario

Built for decisions that ride on the price

If your business case, PPA or credit rests on where power prices go, BirdCurve gives you a forward curve you can defend.

BESS developers & investors

Underpin your capture-rate and revenue-stacking assumptions with a forward curve that stays consistent across every market, so your BESSview business case rests on one scenario, not a patchwork of sources.

Traders & PPA providers

Price multi-year PPAs, tolling deals and structured products against a transparent 15-minute price shape, with the scenario band that frames your upside and your downside.

Lenders & investment committees

A price deck you can interrogate: fundamentals-driven, backtested in euros and anchored to published scenarios. Diligence that stands up in the data room.

What will power prices do at your project?

Ask us for a BirdCurve forward curve for your markets and horizon, or let us walk you through the model on a live demo.