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.
One optimisation core, rebuilt every settlement period, tuned to the physics of each asset and the volatility of Europe’s 15-minute imbalance markets.
Nothing here is interactive. Two scheduled blocks run every day without anyone present: one settles and scores the day that just ended, the other builds the plan for the day that has not started. All times UTC.
The TSO’s settlement prices for the previous day are fetched. These are the real numbers the day is judged against, not the forecast it was planned on.
Imbalance cost is computed for every settlement period from the live plan, the delivered volume and the settlement price. What the plan actually cost, rather than what it was expected to cost.
The delivered side of the ledger is put together for the last three complete days, so a night the stack is down repairs itself the next night rather than leaving a hole.
Until an operator’s telemetry is connected, the plant response at this step is modelled rather than measured, and labelled as such everywhere it surfaces. Prices and decisions are real; this is the one leg a pilot supplies.Revenue captured, imbalance paid and delivery accuracy are scored separately for each planner and written to the ledger, one row per decision. This is the record an operator audits against their own settlement statements.
The cleared day-ahead curve, plus the TSO imbalance prices already on the books.
A 51-member ensemble, carried forward as scenarios rather than collapsed into one number.
Solar and wind scenarios built from the ensemble through each plant’s own physics, then read out as P10 / P50 / P90.
Grid limit, battery power and energy, round-trip efficiency, cycle wear, plus the state of charge carried across midnight.
A fourth pass at 14:15 re-solves the expected-value plan at 15-minute resolution, and an intraday planner re-runs every four hours as fresher prices and forecasts arrive. The staggering is deliberate: each planner gets the solver and the database to itself.
Yesterday’s ledger closes at 03:20; tomorrow’s plan is written at 14:00. Every plan comes from a system that already knows, in settled numbers, how the last one performed.
All three planners run every day on the same prices, the same scenarios and the same plant. That is what makes the comparison in the dashboard an honest one rather than a demo.
The dashboard is a read-out of decisions already taken, not a cockpit. An operator reviews the reasoning afterwards; they never have to be at a desk for the run itself.
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.
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.
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.
A transparent rule-based planner as the safety floor, so there is always a sound decision even when data or models are degraded.
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.
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 three legs: a controlled simulation experiment that shows how the method behaves; 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; and, new in v3, a 29-day standalone-battery measurement on real day-ahead prices, reported as an upper bound because it prices energy only. What the tail insurance is worth in volatile windows is what pilots settle.
Read the preprint on SSRNThe planner is only as good as what it sees. Powerlys feeds it a full spread of futures, not one point forecast.
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.
Each weather member is converted to power through the asset's own physics and turbine curves, panel geometry not a fitted black box.
Generation and price scenarios feed the CVaR planner directly, so the dispatch decision already accounts for the spread of outcomes.
The same optimisation core handles every asset shape natively and no bolt-on models, no per-asset rewrites.
Irradiance-driven generation with curtailment and inverter limits.
Turbine power curves with ramping and availability constraints.
Co-located generation plus storage, co-optimised as one asset.
State-of-charge, cycle budgets and degradation priced into every cycle.
Where the engine is on the path from prototype to production, stated honestly.
MILP + CVaR planner and forecast front-end implemented across four topologies.
Running on real Dutch market data with TenneT imbalance, ENTSO-E day-ahead, weather feeds.
Results to date are backtests on real market data, documented in the CVaR whitepaper.
Pilot conversations with Dutch operators are underway: no-cost, on their own data. The next step from shadow to live.
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.
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.
Negative-price hours and intraday spreads keep setting records. Every trend widens exactly the gap our tail-risk engine is built to close.
Every renewable operator today sits in one of three boxes, and each one leaves the same gap open.
They sell you a better guess at tomorrow’s prices. But the decision (and the risk) stays on your desk. A forecast alone doesn’t earn; acting on it does.
They trade on your behalf, and your control, your data, and your decision history leave the building with them. You see the outcome, not the reasoning.
Spreadsheets and fixed rules, tuned to the average day. The tail (the worst 15-minute periods, where portfolios actually bleed) goes unmanaged.
Not a forecast you still have to act on. Not a desk you hand your keys to. Software that produces the dispatch decision itself (day-ahead bid, charge/discharge plan, imbalance position, every 15 minutes) while three things stay true: control stays with the operator, risk is priced explicitly on an auditable CVaR dial, and the result is measured: +14.1% revenue over rule-based dispatch across 109 days of real Dutch market prices, method published on SSRN.
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 live Dutch market data since April 2026, the strictest 15-minute imbalance regime in Europe); live pilots with operators are the next step. The company is in formation, with headquarters planned in Zurich.
We run a no-cost pilot on your data. You keep everything, clean exit and show the dispatch value first-hand.
Book a demo