No. I tested one across four configurations, and every variant lost to a constant forecast predicting zero price change.

Every attempt to add physical structure made the forecasts worse, and assembling clean historical data proved much more difficult than fitting the models.

What the question is asking

Electricity for a given quarter-hour of delivery trades multiple times before delivery. The Germany-Luxembourg bidding zone runs two intraday auctions on the day ahead, closing at 15:00 and 22:00.1 The trade is straightforward: if I expect the second auction price to be higher than the first, I buy in the first and sell in the second; if lower, the reverse.

This setup offers a clean test for time-series forecasting: the target is a single scalar per interval with a consistent history, and orders must be committed by 14:30 before either auction clears. That timing constraint is critical when comparing results to published literature, because most intraday papers forecast using order-book data minutes before delivery, which is an easier problem.

Performance across four configurations

I evaluated TimesFM 3, a zero-shot foundation model for multivariate forecasting,2 on 83 summer days across four input setups.

InputsMedian absolute error, €/MWh
Spread history only6.680
Plus an indicator for missing observations6.543
Plus calendar information and day-ahead prices6.523
Plus weather6.536
Predict zero spread6.173

Every model variant had higher median absolute error than predicting zero, and all four lost money under the simulated trading rule.

Removing weather shifted median error by only 0.013 €/MWh, showing that the model was not extracting meaningful signal from the meteorological data provided.

That lack of weather sensitivity ended this line of work. The core hypothesis was that better numerical weather predictions would improve renewable generation estimates and therefore predict auction spreads, with WeatherNext in mind as a future input.

Comparison against gradient-boosted trees

A baseline gradient-boosted tree model beat the zero constant by a small margin, it outperformed a foundation model because its seventeen engineered inputs provided domain structure that a zero-shot model could not infer from 83 days of a single target series.

Adding physical detail degraded forecasts

The same pattern recurred when refining the physical generation models.

My initial wind feature averaged wind speed across Germany and passed that average through a turbine power curve. Because the power curve is nonlinear, averaging speeds first distorts the physical estimate: a calm region and a stormy region average to moderate wind, which predicts power output that neither region actually produces. Evaluating the curve cell by cell across the grid before averaging reduced onshore wind forecast error from 4,028 MW to 2,582 MW.

Generation accuracy did not translate to trading returns

Those are generation forecast numbers. A trade targets a price spread, and a better wind forecast only helps if it correlates with the price difference between the 15:00 and 22:00 auctions.

Holding the trading rule and rolling window constant, I evaluated each input set over June through August. The cell-level wind power variable added roughly €28 in cumulative gross return. The capacity-weighted regional wind and solar inputs produced −€27. The updated 06:00 UTC forecast, which delivered the largest drop in solar error, added only €4.

Data acquisition was harder than modeling

Before predicting prices, I needed historical price series. Czech auction results are published cleanly by OTE. A usable German historical series is not directly available: public web requests hit rate limits, and no historical feed is provided. JAO publishes cross-border market information including price differences, allowing the German price to be reconstructed from the Czech price plus the German-Czech spread.

The generation side showed similar constraints. A commercial day-ahead reference was twice as accurate than cell-level curve adjustment and the learned residual correction.

Even ground-truth asset data has gaps: the public registry can redact coordinates for small solar installations,3 making local rooftop generation difficult to pinpoint, and registry snapshots reflect current assets rather than historical capacity.

Economic viability and market access costs

Over 83 days, the tree model selected 209 quarter-hours and traded one megawatt in each: 52.25 megawatt-hours, €41.28 gross return, or seventy-nine cents per megawatt-hour.

The exchange fees and access overhead must be considered when evaluating viability. Germany’s intraday auctions cleared 11,652 GWh in 2025 across all three auctions, or roughly 130 megawatt-hours per auction per quarter-hour.

A 10-megawatt position grosses under two thousand euros per year. Technical market access, regulatory reporting, and clearing member services carry fixed monthly fees regardless of trading volume, in addition to initial setup costs. The annual overhead exceeds what this strategy grossed across its development window. Covering those fixed costs would require positions around one hundred megawatts per quarter-hour, or roughly a fifth of the entire auction volume, where trading impact would erode a 79-cent edge.4 Even capturing the entire auction volume across every traded interval would gross roughly €242,000 annually, compared to 94 TWh annual volume in continuous intraday trading and 291 TWh in the day-ahead auction.

Footnotes

  1. Nord Pool: SIDC intraday-auction schedule ↩

  2. TimesFM 3: a zero-shot foundation model for multivariate forecasting ↩

  3. MaStR: data coverage and privacy FAQ ↩

  4. Optimal bidding in German electricity auctions ↩