Hallo zusammen,
ich habe mir eine Vorwarnung vor teuren Strom-Tagen gebaut und würde die Methodik gern von euch prüfen lassen. Weil ich etwas schreibfaul bin habe ich den nachfolgenden Text zum großen Teil mit Hilfe von AI schreibe lassen...
Das Skript läuft, ich habe es gegen 45 Tage Ist-Daten validiert — und weiß jetzt ziemlich genau, wo die Schwachstellen liegen. Bei den offenen Punkten (siehe unten) hätte ich gern euren Rat.
Warum das Ganze?
Mein Energiemanagementsystem (EOS) optimiert Day-Ahead, sieht die Preise also erst ~24–48 h vorher. Für die richtig interessanten Entscheidungen ist das zu spät: Wenn übermorgen eine Dunkelflaute ansteht, will ich heute schon wissen, dass ich das Auto noch mit PV-Überschuss vollladen und den Hausspeicher vollhalten sollte. Die Warnung sitzt deshalb eine Ebene über dem EOS. Sie steuert (noch) nichts, sie sagt nur: „Bereite dich vor.“
Mein Setup: 12,75 kWp PV (Ost/West), E3/DC S10E 19,66 kWh, VW ID.3 (55 kWh) an 11-kW-Wallbox, Tibber-Tarif.
Wie das Modell rechnet
Die zentrale Kenngröße ist die Residuallast (Last minus Erneuerbare), nicht der Erneuerbaren-Anteil an der installierten Leistung. Das Modell rechnet alle 6 Stunden wie folgt:
-
Wetterdaten (Open-Meteo): 5-Tages-Prognose an 6 Knotenpunkten in DE (Nord/Küste, Ostsee, Hannover, NRW, Frankfurt, München). Genutzt werden
shortwave_radiationundwind_speed_100mmit festen Gewichten (Summe je 1,0). -
Kapazitätsfaktoren (CF):
- Solar: linear aus der Globalstrahlung, gedeckelt bei 850 W/m².
- Wind: über eine vereinfachte Leistungskurve (unter 3 m/s null, ab 12 m/s Volllast, dazwischen kubisch, Cut-out ab 25 m/s).
-
Hochrechnung auf DE: 128 GW PV (DC), 70,6 GW Wind Onshore + 10,9 GW Offshore, plus 6,5 GW Sockel (Biomasse/Wasser/Müll). Werte stammen aus
api.energy-charts.info/installed_power. Der Sockel ist die gemessene mittlere Erzeugung, nicht die installierte Leistung. Wichtig: Dazu kommen Flottenfaktoren von 0,46 für Solar und 0,44 für Wind (dazu unten mehr – das war mein größter Fehler). -
Lastprofil: Ein Stundenprofil, rollierend gebildet aus der gemessenen Last der letzten 30 Tage (Energy-Charts
public_power, ReiheLoad), getrennt nach Werktag und Wochenende. So passt es sich der Jahreszeit automatisch an. -
Kalibrierung: Abgleich gegen
ren_share_forecastvon Energy-Charts, damit der Erneuerbaren-Anteil der ersten 24 Stunden zur Realität passt. -
Preiskorridore: Bänder für die Tages-Spitzenresiduallast, gefittet gegen Ist-Preise:
- < 33 GW = günstig
- 33–42 GW = normal
- 42–46 GW = erhöht
- > 46 GW = hoch
Erkenntnisse aus der Validierung (45 Tage)
Geprüft habe ich gegen gemessene Residuallast und Ist-Börsenpreise.
Ergebnis 1: Das Grundkonzept trägt.
Korrelation der gemessenen Residuallast mit dem Preis:
- Spitze vs. Tages-Höchstpreis: r = +0,56
- Spitze vs. Tages-Mittelpreis: r = +0,79
- Mittel vs. Tages-Mittelpreis: r = +0,86
Ergebnis 2: Das Modell schlägt die Messwerte.
Das Modell sagt den Preis sogar etwas besser voraus als die gemessene Residuallast (r = +0,62 beim Höchstpreis, r = +0,89 beim Mittelpreis). Klingt paradox, ist aber physikalisch plausibel: Das Modell glättet lokale Extreme, und geglättete Größen korrelieren oft besser mit dem überregionalen Strompreis als verrauschte Ist-Reihen.
Warnung vor zwei Fehlern, die sich gegenseitig verstecken
Beim Nachrechnen fiel ein Versatz auf. Die Suche förderte zwei grobe Schnitzer zutage, die sich fatalerweise im Verhältnis fast exakt aufhoben:
-
Das Lastprofil war 8–10 GW zu hoch (stundenabhängig: nachts nur −2,3, abends bis −13,4 GW Abweichung zur gemessenen Last).
-
Die Erzeugungs-Obergrenzen lagen bei rund dem Doppelten der Realität:
- Solar: Modell-Max 108,8 GW vs. gemessen 58,5 GW (Faktor 1,86×)
- Wind: Modell-Max 81,5 GW vs. gemessen 35,6 GW (Faktor 2,29×)
Warum? Bei Solar erreicht min(GHI/850, 1) im Sommer im Modell regelmäßig 100 %. Eine reale DE-weite Anlage liefert aber nie ihre DC-Nennleistung (Temperatur, Anstellwinkel, Wechselrichter-Kappung). Gemessene Spitze / installierte DC-Leistung = 58,5 / 128 = 0,46. Bei Wind bedeuten sechs Stützpunkte auf Volllast im Modell gleich Volllast der ganzen deutschen Flotte. Real glättet die räumliche Verteilung das massiv weg (35,6 / 81,5 = 0,44).
Weil beide Fehler in dieselbe Richtung wirkten, stimmte das Verhältnis Last/Erneuerbare und die Residuallast sah auf den ersten Blick brauchbar aus. Aufgeflogen ist das erst, als ich das Lastprofil allein korrigiert habe. Tipp an alle Bastler: Prüft eure Obergrenzen immer gegen die echten Maxima aus public_power!
Wo ich euren Rat bräuchte
- Lastprognose: Mein rollierendes 30-Tage-Profil ist besser als ein statisches, bleibt aber ein Mittelwert ohne Kenntnis von Temperatur oder Feiertagen. Die modellierte Tagesspitze liegt dadurch systematisch zu niedrig. Kennt jemand eine freie Lastprognose für DE mit mehr als 24 h Horizont? ENTSO-E hat Day-Ahead, für längere Zeiträume habe ich nichts gefunden.
- Kalibrierung über den Horizont: Mein Kalibrier-Anker stammt aus den ersten 24h und wird dann auf alle 5 Tage angewendet. Getestet habe ich drei Regeln, am besten funktionierte es, den (gut bekannten) Sockel unskaliert zu lassen. Trotzdem wird der Anker für Tag 3–5 relativ dünn. Wie würdet ihr das skalieren?
- Spitze vs. Mittelwert: Ich bande aktuell auf die Tagesspitze, obwohl das Tagesmittel (r = +0,89) eigentlich der bessere Prognostiker ist. Das Problem: Die Prognosewerte des Mittels liegen derzeit über dem Bereich, auf dem ich fitten konnte. Das Modell sagt dann pauschal „hoch“ und trennt nicht mehr sauber. Die Spitze bleibt im belegten Bereich. Würdet ihr trotzdem auf das Mittel gehen und die Unsicherheit/Extrapolation in Kauf nehmen?
- Winter-Dunkelflaute fehlt in den Daten: Die Warnschwelle (42 GW) sticht gut heraus. ABER: Der Fit sitzt aktuell auf 45 Sommertagen. Mein echter Zielfall (die Winter-Dunkelflaute) kam im Datensatz kein einziges Mal vor. Hat jemand von euch schon mal die Residuallast gegen Day-Ahead-Preise über ein volles Jahr gelegt?
- Kuppelstellen & Must-Run: Im-/Export, Must-run konventionell und Pumpspeicher ignoriere ich derzeit komplett. Für eine grobe Ampel-Funktion vertretbar, oder unterschätze ich den Impact massiv?
- Die Grundsatzfrage (EpexPredictor): Es gibt mit dem EpexPrediktor bereits eine offene, KI-basierte (LightGBM) Mehrtages-Preisprognose. MAE 1,73 ct/kWh für DE, 5 Tage im 15-Min-Raster. Lohnt sich mein rein physikalischer Ansatz da überhaupt noch? Meine Hoffnung: Da mein Modell physikalische Ursachen abbildet statt Muster zu lernen, könnte es bei untypischen Wetterlagen (außerhalb der Trainingsdaten) robuster sein. Hat jemand die beiden Ansätze (KI vs. Physik) über einen Winter verglichen?
(Das Skript ist ein einzelnes, schlankes Python-File ohne große Fremdbibliotheken. Bei Interesse stelle ich es gern hier rein!)
Ich freue mich auf euren Input!
Viele Grüße