docs: arbitráž — sell strana marginální cena vs strop exportu (proč baterie nedrží na špičku)
Zrcadlo sekce 3 (buy: min(buy) != cena zásoby) na prodejní straně: baterie se nevyprodá do jednoho slotu (strop 13.5 kW = 3.4 kWh/15min), rozloží se přes více slotů s klesající cenou. Rozhodnutí drzet vs vybit = proti MARGINÁLNÍ ceně (nejnizsi pouzity slot), ne spicce. Konkrétní příklad večer 2026-06-14 + caveat terminal value za horizontem (jeden skalár, ne marginální). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,51 @@ Použití `min(buy)` jako „acquisition cost“ pro večerní export:
|
||||
|
||||
---
|
||||
|
||||
## 3b. Výprodejní strana: marginální cena, ne špička (proč baterie nedrží jen na nejdražší slot)
|
||||
|
||||
Zrcadlo sekce 3 na **prodejní** straně. Častá intuice: „baterie drží, protože večer
|
||||
je jeden drahý slot (sell 2,76 Kč) — prodá se za něj“. **Ne.** Stejně jako se 64 kWh
|
||||
**nenabije** v jedné čtvrthodině, tak se ani **nevyprodá** do jednoho slotu — strop
|
||||
exportu (home-01 **13,5 kW**) pustí jen ~**3,4 kWh / 15 min**. Vybití celé baterie do
|
||||
sítě tedy zabere **hodiny** a rozloží se přes **více** prodejních slotů s **klesající**
|
||||
cenou.
|
||||
|
||||
**Klíčový princip — MILP je marginální:** účelová funkce `Σ (ge[t] × sell[t])` přes
|
||||
**všechny** sloty s **per-slot stropem** `ge[t] ≤ max_export` znamená, že solver
|
||||
prodává **nejdřív nejdražší sloty** a každou další kWh až za **nižší** dosažitelnou
|
||||
cenu. Rozhodnutí **„držet baterii vs. vybít teď“** se tedy poměřuje proti
|
||||
**MARGINÁLNÍ ceně** = nejnižší z **reálně využitých** prodejních slotů, **ne** proti
|
||||
špičce. Baterie drží jen tolik, dokud i ta **marginální** vyvezená kWh (prodaná v tom
|
||||
nejlevnějším z použitých oken) bije alternativu (krytí loadu / další držení); nad to
|
||||
prodá / spotřebuje dřív.
|
||||
|
||||
**Konkrétní příklad (home-01, večer 2026-06-14, plán):** baterie nabitá za odpolední
|
||||
**záporné** ceny (SoC ~100 %) se vyváží na **stropu 13,5 kW napříč 20:30–23:00**, ne jen
|
||||
do špičky 22:00:
|
||||
|
||||
| slot | sell Kč/kWh | export | pozn. |
|
||||
|------|-------------|--------|-------|
|
||||
| 20:30 | 2,21 | 13,5 kW | |
|
||||
| 21:00 | 2,20 | 13,5 kW | marginální (nejnižší použitý) |
|
||||
| 21:30 | 2,25 | 13,5 kW | |
|
||||
| **22:00** | **2,76** | 13,5 kW | **špička — jen jeden slot** |
|
||||
| 22:30 | 2,47 | 13,5 kW | |
|
||||
| 23:00 | 2,32 | 13,5 kW | |
|
||||
|
||||
SoC klesne 92 → 32 % (~38 kWh) za **6** slotů. Do špičky 2,76 jde jen **jeden** slot;
|
||||
marginální kWh se prodá za **~2,2**. Kdyby solver oceňoval **celou** baterii špičkou
|
||||
2,76, **držel by víc**, než je optimální. Že vyváží napříč oknem = důkaz, že počítá
|
||||
**marginálně se stropem**, ne naivně na špičku.
|
||||
|
||||
**Caveat — kde to marginální NENÍ:** platí jen pro sloty **uvnitř horizontu** (viditelná
|
||||
prodejní okna). Energie zbylá **za horizontem** (`soc[T−1]`) se ocení **jedním skalárem**
|
||||
(`terminal_soc_value` = průměr buy prvních 24 h × faktor, pravidlo §16), **ne** pořádnou
|
||||
marginální budoucí prodejní křivkou. Pro „dnešní večer v horizontu“ je to správně
|
||||
marginální; zpřesnění terminal value (počasím/cenou vážené, „fáze 3e“) je
|
||||
v `docs/06-open-questions.md` a `docs/04-modules/planning-extended-horizon.md`.
|
||||
|
||||
---
|
||||
|
||||
## 4. Co používat místo toho (směr návrhu)
|
||||
|
||||
| Pojem | Význam | Poznámka |
|
||||
|
||||
Reference in New Issue
Block a user