The Powerlys engine

The engine behind the +14.0%.

Weather ensembles and live market data in, risk-aware dispatch out — a MILP planner for the optimal plan, a CVaR planner that prices the worst hour before it happens, recomputed every 15 minutes. Proven on real Dutch market data, built for Europe’s merchant era.

Weather ensemble51 members Market dataTenneT · ENTSO-E Asset constraints4 topologies MILP plannerglobally optimal CVaR plannerprices the tail Rule-based flooralways safe Dispatchevery 15 min
Engine at a glance

What the planner runs on.

One optimisation core, rebuilt every settlement period, tuned to the physics of each asset and the volatility of Europe’s 15-minute imbalance markets.

Cadence
Every 15 min
Optimisation
MILP + CVaR
Risk model
Worst 5% tail
Topologies
4 native
Forecast front-end
51-member ensemble
Market data
TenneT · ENTSO-E
Horizon
Day-ahead → intraday
Maturity
TRL 6 · shadow mode
Core architecture

Three planners in parallel. Never a single blind spot.

Every 15 minutes Powerlys runs three planners and picks the best, so the system is optimal when it can be, and safe when it can't.

Optimise

MILP planner

A mixed-integer optimiser finds the globally optimal dispatch across the portfolio, given the forecast and every physical constraint, ramp limits, state-of-charge, cycle budgets.

Protect

CVaR tail-risk planner

An explicit risk dial aggressive, balanced, or conservative that prices the worst 5% of outcomes directly. Risk committees and lenders read it natively; a black box doesn't.

Fall back

Rule-based floor

A transparent rule-based planner as the safety floor, so there is always a sound decision even when data or models are degraded.

Deep dive

Pricing the worst hour, not the average one.

Operators settle imbalance every 15 minutes against prices that can swing by thousands of euros per MWh within a single day. Optimising the average outcome leaves the tail unmanaged and the tail is where portfolios bleed.

  • Conditional Value-at-Risk targets the mean of the worst-case scenarios, not just their probability.
  • Linearised via the Rockafellar–Uryasev formulation, so it stays a single, solvable MILP at settlement cadence.
  • One risk dial moves the whole portfolio from aggressive to conservative and is auditable, not a hidden hyper-parameter.
  • In a controlled simulation experiment the three planners separate exactly as designed: the CVaR planner trades a slice of planned revenue for a large cut in worst-period imbalance exposure. That is designed behaviour, not field skill.
  • On real Dutch market data the engine holds ~99.99% scheduled-delivery reliability across the backtested window.
  • In a 79-day backtest on real Dutch day-ahead and TenneT imbalance settlement prices (v2 of the paper), the expected-value optimiser captured +14.0% revenue over rule-based dispatch. The simulation’s imbalance-cost separation did not reproduce in that benign spring–summer window — the CVaR planner’s tail-insurance value is a pilot measurement, not a claim.
  • Re-cut on 12 August 2026 over the full 109-day real-price window (24 Apr – 10 Aug): the uplift held at +14.1% — the same figure as the window grew through summer volatility. The CVaR planner’s zero-imbalance profile was measured on real prices for the first time (€0.00 over 109 days, 100.0% delivery accuracy) at a measured premium of ~27% of revenue versus the expected-value planner — insurance paid for in a window whose tail never arrived. Which of the two you want is a risk decision, and it is the operator’s.
  • Where the optimiser’s edge concentrates: on the window’s worst day the rule-based baseline kept €178 of revenue while the optimisers kept ≈€1,000, and at the 5th-percentile day the advantage is +52% — against +14% on the mean day. Optimisation matters most on the days that hurt.
Whitepaper

Pricing the Worst Hour: Toward CVaR-Optimized Dispatch for Renewable Portfolios under Imbalance-Price Tail Risk

Omer Bumin · ORCID 0009-0007-3605-2127 · v2 — revised 4 August 2026 · SSRN preprint · doi:10.2139/ssrn.7147659

The method paper behind this section: the CVaR planner, its Rockafellar–Uryasev linearisation, and how it sits alongside the expected-value MILP and the rule-based fallback across four asset topologies. The evidence has two legs: a controlled simulation experiment that shows how the method behaves, and a 79-day backtest on real Dutch day-ahead and TenneT imbalance settlement prices, in which the expected-value planner’s +14.0% revenue uplift reproduced — and the simulation’s imbalance-cost separation did not. What the tail insurance is worth in volatile windows is what pilots settle.

Read the preprint on SSRN
Forecast front-end

Uncertainty in, not a single guess.

The planner is only as good as what it sees. Powerlys feeds it a full spread of futures, not one point forecast.

Ensemble

51-member weather

A full weather ensemble captures the range of what wind and irradiance could do. This is the raw material for honest risk, not false precision.

Physics

Physics-based generation

Each weather member is converted to power through the asset's own physics and turbine curves, panel geometry not a fitted black box.

Scenarios

Scenario generation

Generation and price scenarios feed the CVaR planner directly, so the dispatch decision already accounts for the spread of outcomes.

Asset coverage

Four topologies, one engine.

The same optimisation core handles every asset shape natively and no bolt-on models, no per-asset rewrites.

Solar

Irradiance-driven generation with curtailment and inverter limits.

Wind

Turbine power curves with ramping and availability constraints.

Hybrid

Co-located generation plus storage, co-optimised as one asset.

Standalone battery

State-of-charge, cycle budgets and degradation priced into every cycle.

Validation

Built, and validating on real data.

Where the engine is on the path from prototype to production, stated honestly.

Engine

Core built

MILP + CVaR planner and forecast front-end implemented across four topologies.

Now

Shadow mode

Running on real Dutch market data with TenneT imbalance, ENTSO-E day-ahead, weather feeds.

Evidence

Backtested

Results to date are backtests on real market data, documented in the CVaR whitepaper.

Why now

The market is moving exactly toward our edge.

Subsidies → market risk

The Dutch SDE++ era is giving way to merchant exposure — support already stops during negative-price hours, and new capacity increasingly runs fully merchant — so dispatch quality lands straight on the P&L.

Batteries scaling fast

Grid congestion and a volatile imbalance market are pulling utility-scale batteries onto the Dutch grid at record pace — and batteries are where dispatch value and tail risk concentrate.

Rising volatility

Negative-price hours and intraday spreads keep setting records. Every trend widens exactly the gap our tail-risk engine is built to close.

Common questions

Facts about the engine.

Is the dispatch a black box?
No. The CVaR risk dial is explicit and auditable. Aggressive, balanced or conservative and the rule-based floor is fully transparent. Risk committees and lenders can read why a decision was made, which a neural black box can't offer.
What does "every 15 minutes" mean?
Dutch and German imbalance both settle per 15-minute period (PTU / Viertelstunde). Powerlys recomputes the optimal dispatch each period against the latest forecast and market signals, rather than fixing a plan once a day.
What is CVaR, in one line?
Conditional Value-at-Risk is the average outcome across the worst tail of scenarios (here, the worst 5%). Optimising it directly means the plan is chosen to limit how bad the bad hours get and not just the expected case.
Do you need our data on your servers?
Pilots run on your data with a clean exit and you keep everything. The engine ingests standard market and telemetry feeds; nothing is locked in.
How mature is it? (TRL)
TRL 6: the full engine runs on real Dutch market data in shadow mode across four topologies. Results to date are backtests on real market data; live operator pilots are the next step. Powerlys is an EIC Accelerator applicant.
Where we are, honestly

No overclaiming.

Powerlys is TRL 6 today, running on real market data in shadow mode across four asset topologies. Results to date are backtests on real market data (validated on the Dutch market, the strictest 15-minute imbalance regime in Europe); live pilots with operators — in the Netherlands first, then the wider EU — are the next step. We are an EIC Accelerator applicant; our European base is being established in Tallinn, Estonia.

MILP + CVaR engine Real market data Pre-pilot Validating EIC applicant Tallinn
Get in touch

See what Powerlys would have done
with your portfolio.

We run a no-cost pilot on your data. You keep everything, clean exit and show the dispatch value first-hand.

Book a demo