Ceny godzinowe day-ahead [EUR/MWh]
🔔 Alerty cenowe
Średnie ceny dobowe i trend (SMA)
Statystyki rynków (cały okres)
Profil godzinowy — średnia cena wg godziny
Dzień tygodnia — średnia cena
Mapa cieplna: (EUR/MWh)
🟩 tanio · 🟥 drogo — szukaj powtarzalnych pasm: to Twoje okna zakupu/sprzedaży.
Spready między rynkami (potencjał arbitrażu)
Średni spread godzinowy pary rynków. Stabilny, wysoki spread = strukturalna różnica cen. Realizacja wymaga zdolności przesyłowych (PTR/FTR) — traktuj jako sygnał kierunkowy.
Przegląd OZE — wszystkie rynki
Generacja OZE (wiatr+PV) a cena —
Fundament rynku spot: więcej OZE w systemie → niższa cena krańcowa (merit order). Współczynnik z regresji poniżej jest estymowany z Twoich danych — to element „uczenia się" fundamentów.
Prognoza OZE na jutro (day-ahead, MW)
Porównanie rynków bilansujących
Rynek bilansujący PSE vs day-ahead [PLN/MWh] — ostatnie 7 dni
CEB — cena energii bilansującej (po niej PSE rozlicza niezbilansowanie), CEN — cena niezbilansowania. Day-ahead przeliczony po średnim kursie NBP. Gdy CEB > DA, niedokontraktowanie (kupno na RB) jest droższe niż zakup z wyprzedzeniem — to miara ryzyka BRP. Dla Polski dane pochodzą z PSE (CEB/CEN w PLN); dla pozostałych rynków — ceny niezbilansowania z ENTSO-E Transparency w EUR (kategorie: A04 nadwyżka / A05 niedobór; wymaga tokenu ENTSOE_TOKEN w Netlify).
Ceny mocy bilansujących PSE — usługi systemowe [PLN/MW·h]
Ceny marginalne zakupu mocy bilansującej przez PSE: FCR (regulacja pierwotna), aFRR (wtórna automatyczna), mFRR (wtórna manualna); „g" = w górę, „d" = w dół. To przychody „za gotowość" — drugi strumień dla elastycznych aktywów obok arbitrażu energii (model Entrix/suena). Do tego RCE — rynkowa cena energii (rozliczenie prosumentów) — dorysowana na wykresie głównym.
💰 Stack przychodów magazynu: FCR / aFRR / mFRR / arbitraż DA (PL)
Założenia: moce z cen marginalnych cmbp-tp (PLN/MW·h) przy pełnej dyspozycyjności mocy magazynu przez dobę; dla aFRR/mFRR liczymy korzystniejszy kierunek w każdej godzinie (jedna usługa naraz, bez przychodów/kosztów energii aktywacji); arbitraż = ideał przy pełnej znajomości cen DA (× kurs NBP). Wartości brutto — bez opłat, degradacji i prekwalifikacji. Parametry magazynu z zakładki Prognoza.
Kapitał portfela wirtualnego [EUR]
Zasady i działania
Portfel działa w pełni automatycznie: przy każdym wczytaniu danych aplikacja zapisuje rekomendację modelu dla KAŻDEGO załadowanego rynku na najbliższą dobę bez opublikowanych cen (jedna pozycja na rynek i dobę, wyłącznie na podstawie prognozy — każdy rynek ma własny portfel z parametrami swojego modelu). Po publikacji cen aukcji pozycja rozlicza się sama: rekomendacja → realny rezultat → porównanie z ideałem przy pełnej wiedzy. Parametry magazynu pochodzą z zakładki Prognoza. Po przerwie (np. tygodniu bez wejścia) aplikacja odtwarza brakujące dni (oznaczone 🔁): model jest deterministyczny i liczy prognozę wyłącznie z danych sprzed danej doby, więc odtworzone pozycje są tak samo uczciwe jak zapisane na żywo. Dodatkowo serwer Netlify codziennie o ~11:00 zapisuje rekomendację modelu do niezależnego dziennika (panel Netlify → Forms → „dziennik") ze stemplem czasu — dowód, że powstała przed publikacją cen, nawet gdy nikt nie otwiera strony.
Wyniki per rynek
Dziennik transakcji
Parametry profilu
Rekomendacje dla Twojego profilu
Struktura rynków energii (horyzont czasowy)
| Rynek | Horyzont | Do czego służy traderowi |
|---|---|---|
| Terminowy (forward/futures) | lata → dni | Zabezpieczanie ceny (hedging) dużych wolumenów; większość energii odbiorców końcowych kontraktowana jest tutaj. |
| Dnia Następnego (DAM) | D-1, aukcja ~12:00-13:00 | Główny rynek spot — cena krańcowa SMP wyznaczana przez najdroższą przyjętą ofertę (merit order). To ceny z tej aplikacji. |
| Dnia Bieżącego (intraday) | ten sam dzień, do ~h przed dostawą | Korekta pozycji po aktualizacji prognoz OZE/zapotrzebowania; kluczowy dla ograniczania ryzyka bilansowania. |
| Bilansujący | czas rzeczywisty | OSP (PSE) rozlicza odchylenia od kontraktów; ceny potrafią być skrajne — niezbilansowanie to główne ryzyko krótkoterminowe. |
| Rynek mocy | lata | W Polsce od 2019: wynagrodzenie za dyspozycyjność mocy, dodatkowy strumień przychodu dla elastycznych aktywów. |
Instytucje rynku polskiego
| Podmiot | Rola |
|---|---|
| PSE | Operator Systemu Przesyłowego (OSP/TSO) — bilansowanie systemu, rynek bilansujący, połączenia transgraniczne. |
| TGE | Towarowa Giełda Energii — rynek dnia następnego i bieżącego, rynek terminowy, gaz, prawa majątkowe. |
| URE | Regulator — koncesje na obrót energią (~450 wydanych), taryfy, nadzór rynku. |
| OSD | PGE, Tauron, Enea, Energa, E.ON (Stoen) — dystrybucja; zasada TPA umożliwia zmianę sprzedawcy od 2007 r. |
Role handlowe
| BRP (Podmiot Odpowiedzialny za Bilansowanie) | Odpowiada finansowo za zbilansowanie portfela (produkcja = zużycie). Mniejszi gracze handlują przez BRP. |
| BSP (Dostawca Usług Bilansujących) | Składa oferty regulacyjne do OSP — elastyczne wytwarzanie, magazyny, DSR. Dodatkowy przychód dla baterii. |
Checklista wejścia na rynek
1) Koncesja URE na obrót energią elektryczną → 2) członkostwo TGE (bezpośrednie lub przez dom maklerski / BRP) → 3) rejestracja REMIT (ACER) → 4) umowa o bilansowanie z PSE lub BRP → 5) zabezpieczenia finansowe i limity ryzyka.
Prognoza cen —
Parametry aktywa / strategii
Skumulowany wynik strategii [EUR]
Uczenie modelu (optymalizacja parametrów)
Model prognozy uczy się na Twoich danych: przeszukuje kombinacje pamięci (half-life), wagi dnia tygodnia i mieszania trendu, minimalizując błąd MAE na historycznym walk-forward. Najlepsze parametry są zapamiętywane osobno dla każdego rynku.
Wydłuża okres walidacji: trening i backtest liczą się wtedy na całej pobranej historii (prognoza nadal waży ostatnie 60 dni — celowo, rynek się zmienia). Głęboka historia przeżywa auto-odświeżanie. Źródło: Energy-Charts, awaryjnie ENTSO-E.
Trenuje model każdego załadowanego rynku po kolei (skrócona siatka 48 kombinacji + doładowanie OZE i pogody per rynek) i zapisuje parametry — od tej pory każdy portfel paper tradingu liczy się własnym modelem. Z głęboką historią może potrwać kilka minut; postęp w liczniku i w Logu.
Zgłoś opinię, sugestię lub błąd
Do zgłoszenia automatycznie dołączany jest kontekst techniczny (wersja aplikacji, przeglądarka, wybrane rynki i ostatnie błędy z logu) — ułatwia diagnozę.
Jak trafiają do Ciebie zgłoszenia
Formularz korzysta z wbudowanego mechanizmu Netlify Forms. Zgłoszenia znajdziesz w panelu Netlify: Twój site → Forms → opinie.
Aby dostawać je od razu na skrzynkę, ustaw powiadomienie: Site configuration → Forms → Form notifications → Add notification → Email notification i podaj swój adres.
Darmowy plan Netlify obejmuje 100 zgłoszeń miesięcznie. Jeśli formularz nie może się połączyć (np. aplikacja otwarta jako plik lokalny), zgłoszenie otworzy się jako gotowy e-mail.
Pełny log zdarzeń (połączenia, dane, ML)
Historia wersji
| Wersja | Zmiany funkcjonalne | Zmiany niefunkcjonalne |
|---|---|---|
| v11.28 | Osobisty panel subskrybenta /moj (dostęp kluczem z maila): PRYWATNA krzywa kapitału liczona w locie i deterministycznie — dla każdej doby prognoza wyłącznie z danych sprzed niej, parametrami modelu z TAMTEGO dnia (archiwum w commits), więc panel co do grosza zgadza się z historią maili; KPI (wynik, % dni zyskownych, capture, EUR/dobę), wykres model vs ideał, tabela ostatnich dób, zmiana konfiguracji przez ponowny zapis; link „Twój panel" w każdym mailu | Subskrybent = profil + konfiguracja (decyzja architektoniczna 20.07): żadnych danych wynikowych per użytkownik — wszystko funkcją (parametry × baza), pełna odtwarzalność |
| v11.27 | NORTH STAR (A3): spersonalizowane plany dzienne — zapis z parametrami baterii (rynek + MW/MWh, tabela subscribers w Neon, honeypot, wypis jednym kliknięciem), codzienny mail 06:30 (Brevo): plan wykonawczy na dziś z cen aukcyjnych, rozliczenie wczorajszego planu, sprawdzian modelu (prognoza sprzed aukcji vs ideał) i prognoza na jutro do jutrzejszej weryfikacji | Funkcje subscribe (/api/subscribe) i send-plans (harmonogram 04:30 UTC, ?dry=1); wymaga env BREVO_API_KEY + REPORT_SENDER; schema-subscribers.sql; USER-STORIES.md z mapą historyjek |
| v11.26 | Nowa architektura wejścia (decyzja UX 20.07): strona główna to LANDING dla inwestora magazynowego — hero „Ile zarobiłaby Twoja bateria?", kalkulator liczony na prawdziwych cenach PL z 30 dni (potencjał + ile model realnie chwyta), pasek track recordu na żywo, „jak to działa" w 3 krokach z akcentem na dowód, top spready dnia, CTA subskrypcji; kokpit ekspercki przeniesiony pod /app | Nowe endpointy /api/db: what=landing (pakiet wejściowy) i what=battsim (kalkulator); routing /app w netlify.toml |
| v11.25 | ETAP A trybu gościa (P1-12): publiczny raport dzienny online pod /raport (renderowany z bazy: ranking spreadów, plany magazynowe, aFRR z wnioskiem gotowość vs arbitraż, wyniki modelu, druk=PDF) + kafel publicznego track recordu na zakładce Rynki + CTA subskrypcji codziennych raportów (formularz Netlify „subskrypcja", zapisy z aplikacji i ze strony raportu) + przycisk „📄 Raport dzienny" w nagłówku | Lejek wartość→zachęta→kontakt wg koncepcji z 20.07; wysyłka e-mail (Resend) i pełne konta — etap B/C |
| v11.24 | Korekta reguły wyboru DAM po weryfikacji dwuźródłowej: cls=1 to day-ahead także w OMIE (potwierdzone zgodnością z EC co do grosza) — cls=1 ma pierwszeństwo zawsze; seria bez klasyfikacji (prawdopodobnie cena produktu godzinowego) tylko awaryjnie do czasu publikacji cls=1; IDA (cls≥2) zawsze odrzucane | Trzecia iteracja filtra — każda wymuszona przez v_price_mismatch, żadna przez przypadek; wymagany ponowny backfill |
| v11.23 | Adaptacyjny wybór aukcji day-ahead: semantyka klasyfikacji serii RÓŻNI SIĘ między OSP (DE: DAM=cls1; Hiszpania/OMIE: DAM=bez klasyfikacji, cls1-3=aukcje intraday) — filtr działa per doba: serie bez klasyfikacji mają pierwszeństwo, inaczej cls=1; wykryte przez v_price_mismatch (ES zawyżone 4-15 EUR przez zmieszanie DAM z IDA1) | Po deployu wymagany ponowny backfill (ingest?days=90) — nadpisze skażoną historię ES i podobnych stref |
| v11.22 | ETAP 3 „wszystko z bazy": serwer archiwizuje co godzinę OZE (generacja A75 + prognoza A69 — nowy kind=res, P1-14b ✅), niezbilansowanie (EUR po NBP przy zapisie) i ceny mocy 17.1.B&C — rotacja 4 stref/h, PL w każdym przebiegu; aplikacja czyta OZE/RB/ceny mocy NAJPIERW z bazy (odpowiedź natychmiastowa, bez limitów EC), żywe API tylko fallback | Parser ENTSO-E rozumie serie wolumenowe (quantity) obok cenowych; tabele res_hourly/imbalance/capacity (schema-etap3.sql); nowe what=res|imbalance|capacity w /api/db |
| v11.21 | Zakładka OZE jak RB: przegląd wszystkich rynków na GÓRZE i ładowany AUTOMATYCZNIE (raz na sesję, ~30 s/rynek — limity EC), przycisk uzupełnia tylko braki; dane OZE PRZEŻYWAJĄ auto-odświeżenia (wcześniej każde kasowało cały crawl), rynek główny zawsze świeży (prognoza OZE) | Zmiana po uwadze użytkownika — spójny wzorzec obu zakładek porównawczych |
| v11.20 | Karta cen mocy: unieważnienie wpisów cache przeglądarki sprzed kalibracji (nowy wariant adresu) + zasada „negatywnych werdyktów nie utrwalamy" — odpowiedź o braku publikacji nie jest zapamiętywana, kolejna próba pyta na świeżo | Domknięcie serii cache: CDN (Netlify-Vary) + localStorage |
| v11.19 | Ceny mocy 17.1.C DZIAŁAJĄ (pierwszy rynek: Austria — aFRR/mFRR up+down, FCR symetryczny, z dobą jutrzejszą = gotowa forward curve): finalna kalibracja zapytania wg dokumentacji (A81 + businessType=B95 stałe + processType per produkt + wymagany typ kontraktu), po 3 iteracjach na żywym API | KRYTYCZNA naprawa cache CDN: Netlify domyślnie ignorował parametry zapytań funkcji i serwował jedną odpowiedź dla wszystkich wariantów (nagłówek Netlify-Vary: query w entsoe i db); zapasowy alias /api/entsoe2; błędy bez cache |
| v11.18 | P1-8 (etap ENTSO-E): ceny zakontraktowanych mocy bilansujących [17.1.C, dokument A89] dla KAŻDEGO rynku — nowy kind=capacity (produkty FCR/aFRR/mFRR/RR, kierunki up/down, waluty krajowe przeliczane na EUR po NBP); w zakładce RB każdy rynek ma teraz kartę cen mocy (odpowiednik polskich cmbp-tp), z uczciwą adnotacją gdy OSP nie publikuje | Kandydackie EIC obszarów regulacyjnych także dla capacity; tryb debug=1 z metadanymi serii; kraje niepublikujące w 17.1.C → źródła krajowe pozostają w P1-8 |
| v11.17 | Rozróżnienie „awaria" od „źródło wygaszone": gdy ENTSO-E odpowiada „No matching data" dla wszystkich kandydackich obszarów (DE, Bałtowie po migracji 17.1.G), aplikacja pokazuje w tabeli porównawczej rzetelną informację ℹ️ o przeniesionej publikacji zamiast HTTP 502, bez zbędnych ponowień | Funkcja entsoe zwraca no_data (status 200) dla wygaszonych kanałów — koniec mylących błędów w Logu |
| v11.16 | Naprawa błędu „wiecznego pobierania" RB i OZE przy pierwszym otwarciu strony: warunki startu pobrań (RB PSE, OZE/pogoda/outages rynku głównego) sprawdzały STARY stan danych zamiast świeżo pobranego bufora — przy pustej pamięci nigdy nie startowały i działały dopiero od drugiego cyklu auto-odświeżania (~30 min); błąd ukryty od refaktoru v10.4 | Diagnoza: symulacja dokładnego zapytania aplikacji do PSE (dane były, zapytanie poprawne — nigdy nie wychodziło) |
| v11.15 | Porównanie rynków bilansujących przeniesione na GÓRĘ zakładki RB i ładowane AUTOMATYCZNIE po każdym pobraniu danych (przycisk został jako ręczne odświeżenie); kandydacki EIC bloku bałtyckiego dla Litwy | Zmiana po uwadze użytkownika (UX); ochrona przed równoległym uruchomieniem ładowania porównania |
| v11.14 | Niezbilansowanie DE/SE naprawione: ENTSO-E przeniósł publikację między obszarami regulacyjnymi (TenneT DE przestał publikować pod 17.1.G) — funkcja próbuje listy kandydackich EIC po kolei (DE: 4 OSP + strefa, SE: obszar kraju) i zwraca użyty obszar (eic_used); rozdzielone pobrania CRB i kursu NBP (awaria jednego nie zabija drugiego) + błędy RB głośno w Logu zamiast cichej konsoli | Odpowiedź 502 zawiera teraz listę próbowanych obszarów (tried) |
| v11.13 | Naprawa walut niezbilansowania: ENTSO-E publikuje ceny w walutach KRAJOWYCH (CZ→CZK, HU→HUF, SE4→SEK…), a aplikacja traktowała je jako EUR — tabela porównawcza RB zawyżała te rynki nawet ~25×; teraz funkcja zwraca walutę z dokumentu, a aplikacja przelicza na EUR po pełnej tabeli kursów NBP (z mnożnikami, np. HUF za 100) | Wykryte przy weryfikacji zakładki RB (CZ ~4400 „EUR" = 4400 CZK ≈ 178 EUR) |
| v11.12 | Czytanie z własnej bazy jako pierwsze źródło (aplikacja: /api/db, raporty: 1 zapytanie SQL; żywe API tylko fallback); migracja dziennika przeglądarki do serwerowej tabeli commits (przycisk ☁️, klucz MIGRATE_KEY, pochodzenie wierszy jawnie oznaczone); nocny retrening wszystkich rynków na GitHub Actions (02:30, siatka 48, walk-forward 60 dób → model_params) — parametry sezonowości płyną do daily-commit i aplikacji, wagi OZE/pogody pozostają lokalne | Nowe funkcje: db.mjs (prices/params/track), migrate-commits.mjs; paczka github-retrain/ (workflow + skrypt + README); schema-etap2.sql |
| v11.11 | Serwerowy dziennik paper tradingu w bazie (backend etap 1): daily-commit liczy rekomendacje dla WSZYSTKICH 17 rynków z własnej historii cen w Neon (1 zapytanie SQL zamiast 17 wywołań API) i zapisuje je do tabeli commits (pierwsza rekomendacja wiąże — bez nadpisywania); ingest co godzinę rozlicza commity po publikacji cen (real/pnl/ideał) i ma tryb backfillu historii ?days=N (do 370); widok v_track_record w bazie | Netlify Forms pozostaje kanałem powiadomień (3 rynki, 1 wpis/dzień — limit 100/mies.); schema-etap1.sql |
| v11.10 | Jednorazowa jawna korekta rozliczeń paper tradingu z dostaw 17–20.07: przeliczenie na poprawnych cenach day-ahead po naprawie parsera ENTSO-E (v11.9); stare wartości (kup/sprz., wynik, ideał) i powód korekty zapisane w metryce audytowej pozycji, oznaczenie ⚠ KOREKTA w szczegółach rozliczenia i wpis w Logu | Zasada track recordu: żadnych cichych zmian w dzienniku — każda korekta z pełnym śladem: co, kiedy i dlaczego |
| v11.9 | Kontrola jakości dwuźródłowa (backend etap 0) wykryła i naprawiła błąd cen ENTSO-E: dokument A44 zawiera oprócz day-ahead także aukcje intraday (IDA) — parser mieszał je w „cenę godzinową" (rozjazd do 23 EUR/MWh w dolinie solarnej DE-LU); teraz wybierana jest wyłącznie aukcja day-ahead, a przy podwójnej rozdzielczości kwadranse (metodyka uśredniania jak w EC) | Serwerowa baza Neon + funkcja ingest co godzinę (ceny 17 rynków dwuźródłowo, PSE raw, prognoza OZE, NBP) — widok v_price_mismatch; tryb debug=1 w /api/entsoe (metadane serii) |
| v11.8 | ENTSO-E źródłem PODSTAWOWYM cen day-ahead (aplikacja + report-data + daily-commit), Energy-Charts zdegradowane do rezerwy; ładowanie OZE wszystkich rynków w tempie zgodnym z limitami EC (~30 s/rynek, tabela rośnie na bieżąco) | Wg odpowiedzi Fraunhofer ISE (17.07): limit /price to 2 zapyt./min/IP (burst 2), IP funkcji Netlify współdzielone, wiszące połączenia to ich błąd (kolejka bez timeoutu); ⚠ CC BY 4.0 nie obejmuje wszystkich stref /price — nota licencyjna w backlogu (P1-12) |
| v11.7 | Naprawa CICHEJ utraty pozycji portfela: przepełniona pamięć przeglądarki (archiwa logów z dni awarii + duże odpowiedzi cache ENTSO-E) blokowała zapis nowych pozycji bez żadnego komunikatu — zapis automatycznie czyści cache/stare logi i ponawia, a niepowodzenie jest głośno logowane | Sprzątacz localStorage (cache odtwarzalny, logi 3 dni zamiast 7, limit wpisu cache 150 KB); etapy paper tradingu (backfill/auto/rozliczenie) chronione osobno — błąd jednego nie blokuje pozostałych |
| v11.6 | Backfill uzupełnia KAŻDĄ brakującą dobę portfela, także dziurę PRZED najnowszą pozycją (awaria danych rano + zapis na pojutrze po aukcji blokowały odtworzenie dnia bieżącego); kolejność źródeł cen: najpierw bezpośrednio z przeglądarki, proxy Netlify jako rezerwa (EC zwraca 429 dla IP chmurowych) | Fallback ENTSO-E w report-data w partiach po 4 z priorytetem PL/DE-LU — koniec timeoutów przy 11 równoległych zapytaniach |
| v11.5 | Naprawa ładowania rynków: Energy-Charts od pewnego czasu przetrzymuje nadmiarowe połączenia zamiast je odrzucać (stąd tylko ~5 rynków) — zapytania mają teraz twardy timeout 15 s, a ceny day-ahead automatycznie przełączają się na awaryjne źródło ENTSO-E (własny token); to samo w funkcjach serwerowych report-data i daily-commit (timeout + pobieranie równoległe + fallback ENTSO-E) | AbortSignal.timeout we wszystkich fetchach; diagnoza: API EC niedostępne z IP chmurowych, monitoring zewn. 70% błędów public_power w 30 dni |
| v11.4 | Tabele „wszystkie rynki" (OZE i RB) zawsze listują komplet rynków — te bez danych z adnotacją jak je doładować; wybór rynku w selektorze u góry dokłada go do tabeli porównawczej po pobraniu danych | Poprawka po zgłoszeniu: tabela porównawcza pokazywała tylko rynek główny, niezależnie od wyboru |
| v11.3 | Metryka audytowa rozliczeń paper tradingu: każda rozliczona pozycja zapisuje kiedy, z jakiego źródła i po jakich cenach godzinowych została rozliczona — klik na status „rozliczona" pokazuje pełny rachunek z linkiem weryfikacyjnym do API; kolumny settled_at / price_source / hourly_prices w eksporcie CSV | Dowód pochodzenia cen (audit trail) — wymóg wiarygodności track recordu |
| v11.2 | Raporty automatyczne dla wszystkich 17 rynków z rankingiem po SPREADZIE dobowym (kluczowa metryka baterii, nie średnia), sekcją spreadów cross-market i sekcją aFRR PL: dzienne min/max/śr osobno dla kierunków up i down (podstawa forward curve gotowości) z porównaniem „gotowość vs arbitraż" | Endpoint report-data: 17 rynków sekwencyjnie (limit API), pole afrr_pl z cmbp-tp, zestaw rynków konfigurowalny (env MARKETS_REPORT) |
| v11.1 | Kalibracja outages na realnych danych PL: alarmem są NAGŁE ubytki mocy (start <36 h, próg 300 MW), sezon remontowy (~10 GW planowych rewizji) pokazywany informacyjnie w GW | Deduplikacja rewizji dokumentów ENTSO-E (per jednostka MAX zamiast sumy nakładających się wpisów) |
| v11 | Realizm baterii: DoD (pojemność użyteczna = MWh × DoD) i ułamkowy limit cykli/dobę — przy limicie <1 portfel cykluje tylko w najlepsze dni (próg z kwantyla zysków 30 dni); parametry w zakładce Prognoza i w daily-commit (env STORAGE_DOD). Outages (P0-5): niedyspozycyjności mocy wytwórczych z ENTSO-E (A80) — alert przy >500 MW z listą największych zdarzeń | Nowy kind=outages w funkcji ENTSO-E z tolerancyjnym parserem dokumentów Unavailability; dane ładowane dla rynku głównego przy każdym odświeżeniu |
| v10.5 | Serwerowy dziennik wielorynkowy (P0-4): codzienny commit dla rynków z konfiguracji (domyślnie PL+DE-LU+CZ) jako JEDEN zbiorczy wpis dziennie (~31/mies., w limicie Forms); parametry magazynu ze zmiennych środowiskowych; tryb testowy ?dry=1 bez zapisu | Konfiguracja przez env: MARKETS, STORAGE_MW/MWH/EFF |
| v10.4 | Dzienne archiwum logu: zapis per dzień (7 dni wstecz), wybór dnia i pobieranie pliku .txt | Naprawa wyścigu trening ↔ auto-odświeżanie (blokada wzajemna: odświeżanie wstrzymane na czas treningu, wznowienie po); atomowa podmiana danych przy odświeżeniu — czytelnicy nigdy nie widzą pustego stanu |
| v10.3 | Opcja pełnej siatki 540 kombinacji w treningu zbiorczym (checkbox); czas treningu w podsumowaniu | Trening w pełni asynchroniczny z licznikiem postępu — interfejs nie zamiera przy długich obliczeniach; wspólny silnik siatki dla treningu pojedynczego i zbiorczego |
| v10.2 | Trening zbiorczy wszystkich rynków: jeden przycisk trenuje model każdego załadowanego rynku (opcjonalnie z głęboką historią 365 dni per rynek) i zapisuje parametry — każdy portfel paper tradingu działa na własnym wytrenowanym modelu; zbiorcza tabela MAE/capture per rynek | Skrócona siatka 48 kombinacji, sekwencyjnie z oddawaniem wątku UI, postęp w liczniku i Logu |
| v10.1 | Głęboka historia treningu (P0-3): pobranie 180/365 dni cen dla rynku głównego — trening i backtest walidują się na całym okresie (prognoza celowo waży ostatnie 60 dni); dane przeżywają auto-odświeżanie | Źródło Energy-Charts z awaryjnym ENTSO-E (limit dayahead podniesiony do 370 dni); scalanie historii bez duplikatów |
| v10 | Pogoda jako cechy modelu (P0-2): temperatura (kanał popytowy, zawsze) oraz wiatr 100 m i nasłonecznienie (zastępczo, gdy prognoza OZE nieaktywna — np. doba D+2); regresje i korelacje uczone z danych, waga pogody w treningu walk-forward per rynek; opis aktywnych kanałów w prognozie | Źródło open-meteo (ICON/ECMWF, do 90 dni historii + 3 dni prognozy), proxy /api/wx, cache 60 min, ogranicznik korekty ±40 EUR/MWh |
| v9.4 | Audyt kontekstu rynku po zgłoszeniu użytkownika: rekomendacja arbitrażu w „Prognozie" (i raporcie dziennym) filtrowana do par wybranego rynku | Stabilna kolejność rynków we wszystkich widokach (wg listy rynków, nie kolejności pobrania) — deterministyczne KPI zakładki „Rynki", domyślne rynki selektorów i kolumny eksportu CSV |
| v9.3 | Poprawka profilu Spread Trader: rekomendacje filtrowane do par z udziałem wybranego rynku, opis z jego perspektywy (tańsza/droższa strona pary) | — |
| v9.2 | Stack przychodów magazynu (PL): dzienne porównanie FCR / aFRR / mFRR / arbitraż DA — średnie, projekcja roczna, odsetek wygranych dni, wykres skumulowany, automatyczny wniosek „gdzie kierować aktywo" | Analiza na danych cmbp-tp + DA×NBP; jawnie opisane założenia metodyczne |
| v9.1 | Historia wersji w aplikacji (ta tabela — kliknięcie w znaczek wersji) | — |
| v9 | Profile użytkownika: Magazyn / Odbiorca / Producent / Spread Trader — dedykowane parametry i rekomendacje (oszczędności z przesunięcia zużycia, przychody producenta i ryzyko curtailmentu, wartość magazynu przy farmie, pary spreadowe) | Parametry profili zapamiętywane per profil |
| v8.3 | RCE (rynkowa cena energii) na wykresie RB; ceny mocy bilansujących PSE (FCR/aFRR/mFRR, w górę/w dół) — usługi systemowe; rachunek transakcji (konfiguracja → koszt → przychód → wynik) w dzienniku serwerowym i rekomendacjach | Generyczny klient raportów PSE z paginacją |
| v8.2 | Pod-zakładki portfeli: Σ Razem + osobny widok i dziennik każdego rynku; eksport CSV per widok | — |
| v8.1 | Rozszerzenia na wszystkie rynki: wybór rynku mapy cieplnej, tabela porównawcza OZE (beta/korelacja/sygnał), tabela porównawcza rynków bilansujących | Hurtowe doładowanie danych partiami z licznikiem |
| v8 | Portfel paper tradingu dla każdego rynku osobno; tabela wyników per rynek; łączna krzywa kapitału | — |
| v7.2 | Domyślnie wszystkie 17 rynków; przycisk „Wszystkie"; wybór rynków zapamiętywany | — |
| v7.1 | Automatyczne odświeżanie danych: co 30 min, po 13:00 co 10 min do publikacji aukcji, odświeżenie przy powrocie do karty; status z czasem aktualizacji | Ochrona przed równoległym ładowaniem; krótszy cache cen |
| v7 | Ceny niezbilansowania ENTSO-E dla wszystkich rynków (kategorie A04/A05) w zakładce RB z wyborem rynku | Integracja ENTSO-E przez funkcję serwerową (token tylko w zmiennych środowiskowych); parser XML + obsługa archiwów ZIP (w tym strumieniowych); tryb diagnostyczny |
| v6 | Paper trading: wirtualny portfel z automatycznym zapisem rekomendacji i rozliczaniem po publikacji cen, benchmark ideału, dziennik z eksportem; odtwarzanie zaległych dni po przerwie (🔁); serwerowy dziennik commitów (codzienny zapis rekomendacji przed aukcją, stemplowany czasem) | Funkcje serwerowe Netlify: /api/report-data (stały endpoint dla raportów automatycznych), daily-commit (harmonogram); naprawa raportów automatycznych |
| v5 | Pełna dwujęzyczność PL/EN (interfejs, rekomendacje, raporty, wiedza) | Słownik ~70 kluczy + tłumaczenia dynamiczne; wybór zapamiętywany |
| v4.1 | Formularz opinii/błędów z automatycznym kontekstem technicznym | Netlify Forms (bez backendu), zabezpieczenie antyspamowe, awaryjna wysyłka e-mail |
| v4 | Pełny log zdarzeń (połączenia, dane, ML) z eksportem; okno czasowe analizy wzorców (7/14/30 dni/własne); OZE dla wszystkich rynków (doładowanie na żądanie); parametry modelu uczone osobno per rynek | Rejestrowanie każdego zapytania: URL, czas, próba, wynik |
| v3.1 | — | Pobieranie partiami po 3 rynki, automatyczne ponowienia przy limitach API (429/5xx), cache odpowiedzi w przeglądarce, licznik postępu |
| v3 | Rynek bilansujący PSE (CEB/CEN w PLN, porównanie z DA po kursie NBP); prognoza ML łącząca sezonowość z korektą OZE; generator raportu dziennego (e-mail/schowek) | Wdrożenie na Netlify z proxy API (eliminacja CORS); podwójny kanał połączeń z fallbackiem |
| v2 | Moduł OZE: generacja wiatr+PV vs cena, regresja beta, prognoza OZE na jutro, sygnał fundamentalny w rekomendacjach; zakładka wiedzy o rynku (DAM/intraday/RB, PSE/TGE/URE, BRP/BSP, checklista wejścia) | Treści oparte o wiki projektowe IEOP (Notion) |
| v1 | Dashboard cen day-ahead 17 rynków europejskich; analiza wzorców (profile godzinowe, dni tygodnia, mapa cieplna, spready); prognoza cen na jutro; rekomendacje magazynowe kup/sprzedaj; backtest walk-forward; trening modelu (przeszukiwanie parametrów) | Aplikacja jednoplikowa HTML/JS, Chart.js; dane Energy-Charts; parametry w localStorage |