Links:
Volue white paper: https://t.co/80vYW0i51A
Timera Energy on positive correlation between gas price, wholesale spreads, and battery revenues: https://t.co/YGhvuDssdw
Modo Energy on German BESS outlook 2040: https://t.co/tWJKQc446P
Modo Energy, April 2026 German forecast update: revised revenues and sensitivity to gas and carbon prices: https://t.co/xdjwOnXGWD
In their new white paper, Volue argue that competitive advantage in BESS increasingly depends on algorithmic optimization and trading.
Building optimizers myself, I am probably biased. But in my opinion both this white paper and the market trends below paint this as an exciting field to work in.
Volue argue that:
- BESS hardware has become increasingly commoditized: turnkey storage equipment prices fell approximately 81% between 2017 and 2025, excluding EPC and grid connection costs.
- Alongside grid and market access, trading skill is an increasingly important source of repeatable advantage.
- The hard part is earning a profit repeatedly while adapting to changes in market rules, revenue streams, and asset makeup.
- Trading decisions are interconnected. A commitment now changes the opportunities available later. Degradation also means higher revenue today can reduce lifetime value.
Volue identify three reasons behind this shift in importance from hardware to algorithm:
- Greater granularity, including 15-minute day-ahead products, creates more intervals to forecast and optimize. Continuous intraday trading also demands timely reactions.
- Shallow frequency-response markets saturate. Great Britain’s experience shows why wholesale trading, particularly continuous intraday, becomes increasingly important as the BESS fleet scales.
- More BESS can also compress wholesale spreads. Adaptable algorithms help capture remaining opportunities, but cannot prevent market-wide cannibalization.
Algorithms also need to accommodate co-located assets and mixed portfolios, where shared grid connections add constraints.
Volue conclude that forecasting, optimization, and execution increasingly drive competitive advantage.
I would add that several trends support the longer-term opportunity for BESS with some interesting figures from Modo Energy's Q1 2026 German outlook:
- Renewable generation is projected to grow by 150%, from 280 TWh in 2026 to 695 TWh in 2040. More solar deepens the midday price trough, creating opportunities to shift energy into the evening.
- Electricity demand is projected to grow by 70%, from 605 to 1,035 TWh, as transport, heating, and industry electrify. This can strengthen evening peaks, although flexible consumption can also help flatten them.
- Higher gas and carbon allowance prices can widen spreads between renewable-rich hours and gas-dependent evening peaks.
Taken together, Modo project a German market supporting 40 GW of BESS by 2040 (13x 2026 capacity). Despite that expansion, their forecast has two-hour battery revenues settling at around 115,000 EUR/MW/year by 2030. Against projected declines in CAPEX, Modo find BESS to continue operating above required investor returns.
So overall, an exciting and promising space to work in!
Capture rate is the ratio between generation-weighted and time-weighted average prices.
Usually you compute the capture rate over a specified amount of time, e.g. a certain week, month, or year.
You start with the generation-weighted average price your generator captured on the market:
Capture price = sum(generation(t) x market price(t)) / sum(generation(t))
This is the average market price weighted by your generator’s output at the time of generation. For instance, your PV-weighted capture price was 56 Euro / MWh over the past year.
Averaging market clearing prices over the same time frame gives you the baseload average price. For instance, the DA baseload price over the year was 80 Euro / MWh.
Now capture rate looks at what fraction of the baseload average price you captured with your generation-weighted average price.
Capture rate = capture price / baseload average price
In our example, your PV capture rate = (56 Euro / MWh) / (80 Euro / MWh) = 70%
This says: the average MWh of PV was produced in hours where the market price was only 70% of the average baseload price.
Just read the new Volue white paper where they point out that in the more BESS-saturated GB market you get greater abundance of colocation - out of necessity if I got the argument. So I reckon we’re headed there (colocation and higher grid connection point utilization) also in Europe.
@hackteck@dhh I’m completely sold on exploring new ideas and less major side projects. Been great eg for one off data science projects just to test some hypothesis. The freedom to try out ideas is amazing. Mission critical systems I’m not convinced yet.
Beyond the easy money in European BESS: As ancillary markets get crowded, battery operators are hiring optimizers for multi-market trading. A new white paper argues that who controls that trading strategy… https://t.co/PDp3S2m0KB #energystorage#BatteryStorage#SmartEnergy
@janrosenow Very interesting optimization problem: heat in tanks is the state across time (akin battery SoC). I imagine one would want to weigh value of wind participation in wholesale or negative aFRR vs that of heat.
With robust optimization we look for the highest-profit asset dispatch under the worst price realization allowed by our uncertainty set:
max_{sell volume, buy volume} min_{prices ∈ uncertainty set} profit(dispatch, prices)
Vidan et al. look into robust optimization both for a thermal generator and for a battery.
Their assets are always price takers. This does not mean that prices are fixed before the auction. It means that prices are external: The assets assume that their own orders do not affect the clearing price.
So the exercise here is to find the best-performing dispatch schedule or, for the generator, price-dependent offering curves under the worst price realization allowed by the uncertainty set. The authors then check how the resulting schedules or market orders would have performed under historically cleared prices.
The issue with robust optimization, in particular for batteries, is that it does not care about the probability of different price realizations. In fact, their inner adversary (the inner problem) does not select one of the historical price trajectories. It can construct a damaging combination of hourly price deviations within the uncertainty set and the robustness budget Gamma.
Assume the uncertainty set permits low prices during the morning and evening peaks and high prices during the PV peak. The robust model must protect against this inverted price shape even if it has negligible probability and does not resemble any historically observed day. A battery schedule shaped by such an uncertainty set can then charge and discharge in the wrong hours when normal market prices materialize - potentially buying high and selling low.
Vidan et al. therefore conclude that pure robust optimization should be avoided for daily bidding when the objective is expected profit. They recommend a scenario-based approach and consider stochastic optimization more suitable: Here we assign probabilities to possible price trajectories and maximize probability-weighted expected profit instead of optimizing only against the worst admissible price realization.
Robust optimization still has a place when protecting against the worst case is itself the objective - for example in investment decisions where one adverse realization could jeopardize the project.
@rasbt What I don’t understand is: the 1568 prompts they ran their public RL training on, were those the only prompts at all for getting to this model update?
There's a direct link between gas prices and wholesale electricity prices.
The marginal cost of thermal generators (CCGT, CHP) is directly linked to how much they pay for their fuel. So when wholesale gas prices go up, the same generator will increase their electricity auction offer price. And when these gas-fired generators are marginal in the merit order stack the market clearing price goes up for everyone.
Holding all else constant, how does a 1 Euro/MWh gas price increase affect the average daily electricity price? And how does this differ between the European bidding zones?
The frontier economics report "The Fundamental Drivers Of Wholesale Electricity Prices in Europe" delivers some interesting figures.
Gas price impact on electricity prices in Italy > Germany > France, while some of the Nordics are inversely correlated.
The latter is interesting and I should dig into how hydro probably plays a role here.
What is also interesting is that there are in fact differences in the impact between neighbouring bidding zones, which likely points to congestion.
With the release of GPT-6, GPT-6 Sol xhigh seems like a good tradeoff between price and performance when compared with Astra and Fable. Will for sure give it a try going forward.