scripts/harness/hu1_realistic_eval.py — realistická simulace BESS 128 kWh/36 kW na spotu místo perfect hindsight: D−1 plán přes solve_dispatch_v2 (informační množina = ceny zítřka z OTE D−1 13:30), SoC řetězené mezi dny, parametry baterie/grid z DB site 5 (fn_planning_site_context). Scénáře fix/spot × bez/s baterií, Kč/den po měsících a sezónách, roční projekce, citlivosti (degradace 0.15/0.5/1.0, spread compression −30 %), GAP vs 7denní hindsight. Varianty běží paralelně (ProcessPoolExecutor). HU1 nemá telemetrii → parametrizovaný průmyslový odběr (konstanty v hlavičce, přepsat čísly od majitele); fixní cena = proxy BA81 (--fix-buy). Výsledky (788 dní 2024-04-14…2026-06-12, 2 zimy): D−B (přechod na spot s baterií) −163,6 tis. Kč/rok base, konzervativně −110,1 tis.; léto −629, zima −254 Kč/den, nejhorší měsíc (12/2024) −41 Kč/den — stále úspora. GAP realistic vs hindsight ≈ 0 (ceny jsou D−1 známé) → dřívější horní mez byla nadhodnocená sezónností, ne neznalostí budoucnosti. Doc: docs/studies/hu1-spot-realistic.md (generuje skript, opakovatelné); README harness doplněn. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
155 lines
8.0 KiB
Markdown
155 lines
8.0 KiB
Markdown
# HU1 (hulin-bess) — přechod na spot: realistická studie
|
||
|
||
*Generováno skriptem `scripts/harness/hu1_realistic_eval.py` (2026-06-12).*
|
||
*Opakovatelně spustitelné — viz hlavička skriptu.*
|
||
|
||
## Otázka
|
||
|
||
Majitel HU1 (128 kWh / 36 kW BESS, průmyslový odběr, bez FVE/EV/TČ) rozhoduje
|
||
o přechodu z fixní nákupní ceny na **spotovou smlouvu**. Dřívější
|
||
perfect-hindsight studie (`hu1_bess_study.py`) dala horní mez; tady je
|
||
**realistické** roční číslo — simulace den po dni tak, jak by jel plánovač.
|
||
|
||
## Metodika
|
||
|
||
- **D−1 plán**: `solve_dispatch_v2` (produkční čisté jádro v2) s informační
|
||
množinou OTE D−1 13:30 = ceny celého zítřka, nic za půlnoc. Terminal SoC
|
||
shadow price (faktor 0.9 z DB) oceňuje energii na konci dne.
|
||
- **SoC řetězené mezi dny** (konec dne N = start dne N+1); start 50 %.
|
||
- **Žádný perfect hindsight** v hlavních číslech; hindsight (7denní okna,
|
||
plná znalost) běží zvlášť jen kvůli GAPu.
|
||
- Parametry **přesně z DB site 5**: baterie 128 kWh,
|
||
36 kW nabíjení/vybíjení, η 0.95/0.95,
|
||
SoC 10–95 %,
|
||
degradace 0.15 Kč/kWh; grid import 43 kW /
|
||
**export 42 kW povolen** (`no_export=false`),
|
||
`block_export_on_negative_sell=true` (při záporné výkupní ceně se neexportuje).
|
||
- Náklady **včetně degradace** (0.5 × throughput × Kč/kWh) a **SoC-adjusted**
|
||
(změna SoC dne oceněna průměrnou denní nákupní cenou).
|
||
- Spot ceny: raw OTE + marže z `site_market_config` site 5
|
||
(buy +0.05, sell -0.02 Kč/kWh; poplatky 0.00).
|
||
|
||
### Předpoklady (nahradit reálnými čísly!)
|
||
|
||
- **Fixní nákupní cena 3.38 Kč/kWh** — site 5 má v DB režim spot/spot,
|
||
skutečná dnešní fixní smluvní cena NENÍ v DB (default = proxy z BA81 fixu).
|
||
Přepsat přes `--fix-buy`.
|
||
- **Odběrový profil parametrizovaný** — HU1 nemá telemetrii (0 řádků
|
||
v `telemetry_inverter`): bazál 4 kW 24/7 + špička +16 kW
|
||
6–18 h po–pá (konstanty v hlavičce skriptu).
|
||
- Scénáře s fixem prodávají přebytek na spotu (jako BA81) — ověřit, zda to
|
||
dnešní fixní smlouva vůbec umožňuje.
|
||
- Svátky modelovány jako pracovní dny.
|
||
|
||
## Data
|
||
|
||
- OTE 15min raw ceny (`market_interval_price`, `OTE_CZ`): **2024-04-14 … 2026-06-12**,
|
||
788 kompletních pražských dní; díry: 2025-03-30, 2025-07-04.
|
||
Pokrývá **2 zimy** (2024/25, 2025/26) — hlavní riziko arbitráže.
|
||
- HU1 telemetrie/audit: žádná skutečná spotřeba ani provoz (site v MANUAL,
|
||
bez sběru dat).
|
||
|
||
## Výsledky
|
||
|
||
Scénáře (Kč/den, kladné = náklad): **A** fix bez baterie · **B** fix + baterie
|
||
(dnešní stav) · **C** spot bez baterie · **D** spot + baterie (návrh).
|
||
|
||
## Kč/den po sezónách
|
||
|
||
| období | dní | A fix bez bat | B fix+bat | C spot bez bat | D spot+bat | D−A | D−B |
|
||
|--------|-----|---------------|-----------|----------------|------------|-----|-----|
|
||
| léto (4–9) | 425 | 789 | 760 | 460 | 131 | -658 | -629 |
|
||
| zima (10–3) | 363 | 789 | 744 | 736 | 490 | -300 | -254 |
|
||
|
||
## Kč/den po měsících (SoC-adjusted, vč. degradace)
|
||
|
||
| období | dní | A fix bez bat | B fix+bat | C spot bez bat | D spot+bat | D−A | D−B |
|
||
|--------|-----|---------------|-----------|----------------|------------|-----|-----|
|
||
| 2024-04 | 17 | 783 | 780 | 458 | 226 | -556 | -553 |
|
||
| 2024-05 | 31 | 806 | 804 | 394 | 130 | -676 | -673 |
|
||
| 2024-06 | 30 | 757 | 734 | 448 | 147 | -610 | -587 |
|
||
| 2024-07 | 31 | 806 | 788 | 425 | 135 | -671 | -653 |
|
||
| 2024-08 | 31 | 785 | 739 | 498 | 159 | -626 | -580 |
|
||
| 2024-09 | 30 | 779 | 736 | 493 | 181 | -598 | -555 |
|
||
| 2024-10 | 31 | 806 | 778 | 581 | 290 | -516 | -488 |
|
||
| 2024-11 | 30 | 779 | 692 | 839 | 594 | -185 | -98 |
|
||
| 2024-12 | 31 | 785 | 687 | 904 | 647 | -138 | -41 |
|
||
| 2025-01 | 31 | 806 | 754 | 851 | 635 | -171 | -119 |
|
||
| 2025-02 | 28 | 788 | 750 | 833 | 635 | -153 | -115 |
|
||
| 2025-03 | 30 | 779 | 753 | 585 | 277 | -502 | -476 |
|
||
| 2025-04 | 30 | 800 | 791 | 457 | 110 | -690 | -680 |
|
||
| 2025-05 | 31 | 785 | 773 | 385 | 36 | -749 | -737 |
|
||
| 2025-06 | 30 | 779 | 743 | 395 | 16 | -763 | -728 |
|
||
| 2025-07 | 30 | 800 | 771 | 527 | 312 | -489 | -459 |
|
||
| 2025-08 | 31 | 764 | 743 | 402 | 100 | -664 | -643 |
|
||
| 2025-09 | 30 | 800 | 719 | 558 | 136 | -664 | -583 |
|
||
| 2025-10 | 31 | 806 | 746 | 636 | 300 | -506 | -445 |
|
||
| 2025-11 | 30 | 757 | 723 | 717 | 506 | -251 | -216 |
|
||
| 2025-12 | 31 | 806 | 797 | 701 | 577 | -229 | -220 |
|
||
| 2026-01 | 31 | 785 | 739 | 878 | 669 | -116 | -70 |
|
||
| 2026-02 | 28 | 788 | 785 | 689 | 546 | -242 | -240 |
|
||
| 2026-03 | 31 | 785 | 728 | 622 | 218 | -566 | -510 |
|
||
| 2026-04 | 30 | 800 | 782 | 449 | 29 | -772 | -753 |
|
||
| 2026-05 | 31 | 764 | 717 | 485 | 75 | -689 | -641 |
|
||
| 2026-06 | 12 | 865 | 823 | 631 | 344 | -521 | -479 |
|
||
|
||
## Roční projekce (posledních 365 simulovaných dní)
|
||
|
||
| metrika | Kč/rok |
|
||
|---------|--------|
|
||
| A fix bez baterie | 287615 |
|
||
| B fix + baterie (dnešní stav) | 273979 |
|
||
| C spot bez baterie | 218077 |
|
||
| D spot + baterie (návrh) | 110392 |
|
||
| **D−B: přechod na spot (s baterií)** | **-163587** |
|
||
| D−A: spot+baterie vs fix bez baterie | -177223 |
|
||
| C−A: jen změna smlouvy, bez baterie | -69538 |
|
||
| C−D: hodnota baterie na spotu | +107685 |
|
||
|
||
**Interval nejistoty D−B: -163587 … -110069 Kč/rok**
|
||
(konzervativní = spready −30 % + degradace 0.50 Kč/kWh na obou stranách).
|
||
|
||
## GAP realistic vs perfect hindsight (scénář D)
|
||
|
||
realistic 296.2 vs hindsight 296.2 Kč/den; GAP -0.1 Kč/den (-51 Kč za 788 dní)
|
||
|
||
## Citlivosti (roční projekce, Kč/rok)
|
||
|
||
| varianta | Kč/rok |
|
||
|----------|--------|
|
||
| D deg 0.15 | 110392 |
|
||
| D deg 0.50 | 130657 |
|
||
| D deg 1.00 | 153008 |
|
||
| D compress −30 % | 153358 |
|
||
| D compress −30 % + deg 0.50 | 170648 |
|
||
| B compress −30 % | 280717 |
|
||
| C compress −30 % | 220469 |
|
||
|
||
## Interpretace a doporučení
|
||
|
||
- **GAP realistic − hindsight ≈ 0**: OTE ceny jsou D−1 známé a odběr je
|
||
v modelu deterministický → reálný D−1 plánovač o (téměř) nic nepřichází
|
||
proti dokonalému vícedennímu výhledu. Rozdíl proti dřívější hindsight
|
||
studii tedy dělá hlavně **sezónnost** (jarní spready), ne neznalost
|
||
budoucnosti. V reálu přibude chyba predikce odběru — s reálným diagramem
|
||
studii přegenerovat.
|
||
- **Zima je slabší, ale zůstává kladná**: sezónní rozpad D−B —
|
||
léto (4–9): -629 Kč/den; zima (10–3): -254 Kč/den.
|
||
Nejslabší měsíc v datech (2024-12): D−B -41 Kč/den —
|
||
ani v zimě s malými spready nebyl přechod na spot ztrátový.
|
||
- **Doporučení (za předpokladů výše)**: přechod na spot dává base úsporu
|
||
**-163587 Kč/rok** (D−B), konzervativně -110069 Kč/rok.
|
||
Před podpisem smlouvy doplnit data od majitele (níže) a studii
|
||
přegenerovat — čísla škálují s odběrovým profilem a fixní cenou.
|
||
|
||
## Co chybí od majitele (zpřesnění)
|
||
|
||
1. **Skutečný odběrový diagram** (ideálně 15min/hodinová data z fakturačního
|
||
elektroměru za 12 měsíců) → nahradit parametrický profil.
|
||
2. **Dnešní fixní cena** (Kč/kWh bez DPH, vč. případného VT/NT rozlišení)
|
||
a regulované složky (distribuce, POZE) — zde modelována jen silová energie.
|
||
3. **Návrh spotové smlouvy**: marže dodavatele na nákup i výkup (zde
|
||
+0.05/-0.02 Kč/kWh), měsíční platy.
|
||
4. **Smí dnešní fixní smlouva exportovat?** (scénář B předpokládá spot výkup).
|
||
5. Rezervovaná kapacita / penalizace za překročení — ovlivní peak shaving.
|