Skip to content

Changelog

Every release of Spot Forecast, newest first. The same notes are on GitHub, and Home Assistant shows them in the update dialog when HACS offers a new version. New forecast models are published separately every month and reach an install without a release; see model updates.

Version Released Headline
v0.2.2 2026-11-02
v0.2.1 2026-10-26
v0.2.0 2026-10-26
v0.1.2 2026-10-23
v0.1.1 2026-10-23
v0.1.0 2026-10-23

v0.2.2

Released 2026-11-02 · on GitHub

A maintenance release from the HACS review. Forecasts and models are unchanged.

Changed

  • Time zone: the bidding zone's time zone is loaded once at setup, in the background. Before, Home Assistant could read the time-zone database from disk on its event loop, which blocks it and logs a warning.
  • NO2: the check of the hydro history for gaps runs in the background, and so does that step of the backfill. Before, it ran on Home Assistant's event loop.

Update

Update in HACS and restart Home Assistant. Entities, settings and statistics are kept.

v0.2.1

Released 2026-10-26 · on GitHub

A maintenance release in preparation for the HACS default catalog. Forecasts and models are unchanged.

Changed

  • Brand images: the logo now has the size the Home Assistant brands specification asks for (667×128, 1334×256 for high-DPI screens). Logo and icon are trimmed to their content. Home Assistant shows them from 2026.3 on.
  • HACS: the integration is now listed for all supported countries (Germany, Luxembourg, the Netherlands, Denmark, Norway). Before, HACS's country filter showed it only in Germany and Luxembourg.
  • README: the screenshots now also show in the HACS frontend.
  • Long-term statistics: on Home Assistant 2025.4 and newer, the forecast statistics no longer send the deprecated has_mean field. Existing statistics are kept.
  • Docs: the VAT default is the zone's rate: 19 % for DE-LU, 21 % for NL, 25 % for DK1, DK2 and NO2. The cards page explains how to use the example dashboards for a zone other than DE-LU.

Update

Update in HACS and restart Home Assistant. Entities, settings and statistics are kept.

v0.2.0

Released 2026-10-26 · on GitHub

New: four more bidding zones

Besides Germany/Luxembourg (DE-LU), Spot Forecast now covers NL (Netherlands), DK1 (Denmark West), DK2 (Denmark East) and NO2 (Southern Norway). Like DE-LU, all of them run on free data only: day-ahead prices from Energy-Charts (Bundesnetzagentur | SMARD.de, CC BY 4.0) and weather forecasts from Open-Meteo, with no API key.

  • Choose the zone when you add the integration. Several zones can run side by side, one entry each. Entity IDs carry the zone, e.g. sensor.spot_forecast_nl_price.
  • VAT defaults to the zone's standard rate: 21 % for NL, 25 % for DK1, DK2 and NO2.
  • Holidays: each zone uses its own national calendar; Denmark and Norway also count 24 and 31 December.
  • DK1 and DK2 follow the German price closely. Their forecast is the average of their own model and the DE-LU model, which is better than either alone. A DK run therefore also fetches the DE-LU prices, and takes about twice as long as a DE-LU run.
  • NO2 is mostly hydropower. Its model also uses the precipitation and temperature of the last 14 to 90 days in the catchments, which takes one extra Open-Meteo request per run.
  • Accuracy (mean absolute error D+1 … D+6, out of sample, issue days from October 2025):
zone ct/kWh
NL 2.13
DK1 2.14
DK2 2.33
NO2 1.77

The project page has a map of the supported zones and the error per horizon.

Changed: a more accurate DE-LU model

  • The model now reads the recent price levels relative to the 7-day mean instead of as absolute EUR values. It follows a rising or falling price level better and underestimates less. Bundled model, all horizons: 2.02 instead of 2.10 ct/kWh, last three months 2.48 instead of 2.79.
  • On the two daylight-saving switches, the price of "the same hour yesterday / last week" now means the same clock hour.
  • This is a new feature schema (2). A model downloaded by an earlier version no longer fits; it is deleted automatically, and the bundled one is used until the next monthly model.

Update

Update in HACS and restart Home Assistant. Your DE-LU entry keeps its entities and settings. To add another zone, add the integration again and pick the zone.

Versions 0.1.x receive no further monthly model updates, because the new models use the new feature schema.

v0.1.2

Released 2026-10-23 · on GitHub

Changed: the total price now includes VAT on the exchange price

  • New option VAT (percent, 19 by default). The total price is now exchange price × (1 + VAT) + surcharge, for sensor.spot_forecast_de_lu_total_price, its prices attribute (price, p90, p10) and the forecast card's "mit Abgaben" view. The surcharge keeps its meaning: what you pay per kWh on top of the exchange price, VAT included.
  • If you have a surcharge set, your total price goes up after this update by 19 % of the exchange price. In Germany that is what you pay. If your rate differs (Luxembourg, a business that deducts input tax) or you had already folded the VAT into the surcharge, set the VAT option accordingly.
  • Surcharge, VAT and peak threshold now apply at once, without reloading the integration or fetching anything. The surcharge is kept to 4 decimals.

Fixed

  • A damaged downloaded backfill file no longer stops the integration from starting; the bundled one is used instead, and downloads are checked completely before they are stored.
  • After a failed run the forecast is tried again after 20 minutes instead of at the next regular run (up to 6 hours later). Further failures in a row double the wait, up to 3 hours, and only the first failure of an outage is logged as a warning.
  • The peak-risk and negative-price sensors are unknown instead of off when there is no price or forecast for the next 48 hours.
  • Long-term statistics that the recorder lost (for example after restoring a database) are written again on the next start.
  • A run that is still going when the integration is unloaded no longer writes its data afterwards.
  • An unexpected error in a run keeps the last forecast and the entities available (shown as stale) instead of making them unavailable.

Model updates

  • The model manifest can now withdraw a published model; the integration then deletes it and switches to the next usable one.
  • A model whose training cutoff lies more than 7 days in the future is refused, and reported as a repair issue.
  • Model and backfill files are size-limited when unpacked, and the data sources' responses are size-limited too. Retry-After from the APIs is honoured.
  • Monthly training: the quality gate now fails when it cannot compare with the published model, and compares with the best of the last three. The training job runs with hash-pinned dependencies and a read-only token; publishing happens in a separate job that installs nothing.

Other

  • Prices show 4 decimals by default.
  • Documentation updates; the release ZIP now includes the license.

Update

Update in HACS and restart Home Assistant. Check the new VAT option if you use a surcharge. To get the VAT in the card's "mit Abgaben" view, copy the updated examples/plotly_forecast.yaml into your card.

v0.1.1

Released 2026-10-23 · on GitHub

New

  • Grid fees and taxes: an optional surcharge in EUR/kWh, set in the integration's options (0 by default). While it is set:
    • sensor.spot_forecast_de_lu_total_price shows the current exchange price plus the surcharge. Its prices attribute is the price sensor's with the surcharge added to price, p90 and p10, so Smart Battery Pilot can read it the same way. If you point Smart Battery Pilot at it, set Smart Battery Pilot's own price offset to 0 so the fees are not counted twice.
    • The forecast card shows two buttons, "Börse" and "mit Abgaben", to switch between the exchange price and the price with the surcharge.
    • Setting the surcharge back to 0 removes the total-price sensor.

The price sensor, the long-term statistics, the look-back, the error figures and the peak-risk and negative-price sensors stay on the exchange price.

Changed

  • The forecast card shortens its day headers ("Mo 26." / "27 ct" / "⚠ 25") when a day gets less than about 62 px, so they no longer run into each other on mid-sized cards.

Update

Update in HACS and restart Home Assistant. To use the new buttons, copy the updated examples/plotly_forecast.yaml into your card.

v0.1.0

Released 2026-10-23 · on GitHub

First release of Spot Forecast: a Home Assistant integration that forecasts German day-ahead electricity prices (DE-LU) up to a week ahead, using only open data and no API key.

What you get

  • sensor.spot_forecast_de_lu_price: the current exchange price. Its prices attribute lists the known quarter-hour prices followed by the hourly forecast, with a P90 (peak risk) and P10 (low-price chance) for each forecast hour. Smart Battery Pilot reads this list directly through its ENTSO-E adapter.
  • binary_sensor.spot_forecast_de_lu_peak_risk and binary_sensor.spot_forecast_de_lu_negative_price for the next 48 hours.
  • Diagnostic sensors for the last run, the model version, the forecast error over the last 30 days and the backfill status. There are also day sensors for automations, disabled by default.
  • Long-term statistics of every forecast per horizon (D+1 … D+6). The first 60 days are backfilled on install, so the look-back card has data from day one.
  • Two Plotly Graph Card dashboards (forecast and look-back) in examples/. They need lovelace-plotly-graph-card v4.0.2 or later.
  • Monthly model updates from the models release. Each download is checked for feature schema, SHA-256 and a sample prediction before it is used, and the option can be turned off.

Accuracy

Measured out of sample, walk-forward, from April 2025 to September 2026. The mean absolute error is 1.79 ct/kWh for D+1 and 2.48 ct/kWh for D+6, about 47–27 % better than repeating last week's price. Price peaks come out too low; the P90 band is the tool for those. See the README for the full table and its caveats.

Data

Prices come from Energy-Charts (Bundesnetzagentur | SMARD.de, CC BY 4.0) and weather from Open-Meteo (ECMWF IFS, CC BY 4.0).

Install

Add https://github.com/cygnusb/ha-spot-forecast in HACS as a custom repository (category Integration), install it, restart Home Assistant, and add Spot Forecast. Home Assistant 2024.11 or newer is required.