From 0de875ce362d7758453264e17f37fcd6e20d37ab Mon Sep 17 00:00:00 2001 From: Tang Piseth Date: Mon, 12 Oct 2026 16:22:54 +1030 Subject: [PATCH 1/2] Add day-ahead price forecasting walk-forward backtest - forecasting/: AEMO NEMWeb SA1 history (2019-2026, 30-min AEST) cached to data/sa1_prices.parquet; naive, LightGBM and PyTorch LSTM day-ahead models; validation-then-frozen walk-forward test (365 days, retrain every 30 days) scored by feeding forecasts into the unchanged LP and settling at actual prices - results/: backtest.json, REPORT.md, typical-day chart, per-day JSON (LSTM 61.8%, LightGBM 49.5%, naive 27.2% of perfect-foresight revenue) - tests: leakage tests (features and fit+predict) and realised-profit tests - API: GET /api/v1/backtest/days and /api/v1/backtest/day/{date} - React: Backtest page (#/backtest) with synced price/SoC/profit charts, capture-rate bars and best/worst/spike day pickers; live page unchanged apart from a link - forecasting deps in an optional "forecast" extra (CPU torch); CI installs it Co-Authored-By: Claude Opus 5.5 --- .github/workflows/backend-tests.yml | 2 +- .gitignore | 4 +- README.md | 24 + data/sa1_prices.parquet | Bin 0 -> 2771602 bytes forecasting/__init__.py | 0 forecasting/backtest.py | 278 +++ forecasting/config.py | 30 + forecasting/data.py | 133 ++ forecasting/economics.py | 30 + forecasting/features.py | 86 + forecasting/models.py | 196 ++ forecasting/report.py | 161 ++ frontend/src/App.tsx | 1 + frontend/src/Backtest.tsx | 286 +++ frontend/src/Router.tsx | 14 + frontend/src/main.tsx | 4 +- frontend/src/types.ts | 58 +- main.py | 35 +- pyproject.toml | 20 +- results/REPORT.md | 87 + results/backtest.json | 328 ++++ results/daily/2025-10-12.json | 1 + results/daily/2025-10-13.json | 1 + results/daily/2025-10-14.json | 1 + results/daily/2025-10-15.json | 1 + results/daily/2025-10-16.json | 1 + results/daily/2025-10-17.json | 1 + results/daily/2025-10-18.json | 1 + results/daily/2025-10-19.json | 1 + results/daily/2025-10-20.json | 1 + results/daily/2025-10-21.json | 1 + results/daily/2025-10-22.json | 1 + results/daily/2025-10-23.json | 1 + results/daily/2025-10-24.json | 1 + results/daily/2025-10-25.json | 1 + results/daily/2025-10-26.json | 1 + results/daily/2025-10-27.json | 1 + results/daily/2025-10-28.json | 1 + results/daily/2025-10-29.json | 1 + results/daily/2025-10-30.json | 1 + results/daily/2025-10-31.json | 1 + results/daily/2025-11-01.json | 1 + results/daily/2025-11-02.json | 1 + results/daily/2025-11-03.json | 1 + results/daily/2025-11-04.json | 1 + results/daily/2025-11-05.json | 1 + results/daily/2025-11-06.json | 1 + results/daily/2025-11-07.json | 1 + results/daily/2025-11-08.json | 1 + results/daily/2025-11-09.json | 1 + results/daily/2025-11-10.json | 1 + results/daily/2025-11-11.json | 1 + results/daily/2025-11-12.json | 1 + results/daily/2025-11-13.json | 1 + results/daily/2025-11-14.json | 1 + results/daily/2025-11-15.json | 1 + results/daily/2025-11-16.json | 1 + results/daily/2025-11-17.json | 1 + results/daily/2025-11-18.json | 1 + results/daily/2025-11-19.json | 1 + results/daily/2025-11-20.json | 1 + results/daily/2025-11-21.json | 1 + results/daily/2025-11-22.json | 1 + results/daily/2025-11-23.json | 1 + results/daily/2025-11-24.json | 1 + results/daily/2025-11-25.json | 1 + results/daily/2025-11-26.json | 1 + results/daily/2025-11-27.json | 1 + results/daily/2025-11-28.json | 1 + results/daily/2025-11-29.json | 1 + results/daily/2025-11-30.json | 1 + results/daily/2025-12-01.json | 1 + results/daily/2025-12-02.json | 1 + results/daily/2025-12-03.json | 1 + results/daily/2025-12-04.json | 1 + results/daily/2025-12-05.json | 1 + results/daily/2025-12-06.json | 1 + results/daily/2025-12-07.json | 1 + results/daily/2025-12-08.json | 1 + results/daily/2025-12-09.json | 1 + results/daily/2025-12-10.json | 1 + results/daily/2025-12-11.json | 1 + results/daily/2025-12-12.json | 1 + results/daily/2025-12-13.json | 1 + results/daily/2025-12-14.json | 1 + results/daily/2025-12-15.json | 1 + results/daily/2025-12-16.json | 1 + results/daily/2025-12-17.json | 1 + results/daily/2025-12-18.json | 1 + results/daily/2025-12-19.json | 1 + results/daily/2025-12-20.json | 1 + results/daily/2025-12-21.json | 1 + results/daily/2025-12-22.json | 1 + results/daily/2025-12-23.json | 1 + results/daily/2025-12-24.json | 1 + results/daily/2025-12-25.json | 1 + results/daily/2025-12-26.json | 1 + results/daily/2025-12-27.json | 1 + results/daily/2025-12-28.json | 1 + results/daily/2025-12-29.json | 1 + results/daily/2025-12-30.json | 1 + results/daily/2025-12-31.json | 1 + results/daily/2026-01-01.json | 1 + results/daily/2026-01-02.json | 1 + results/daily/2026-01-03.json | 1 + results/daily/2026-01-04.json | 1 + results/daily/2026-01-05.json | 1 + results/daily/2026-01-06.json | 1 + results/daily/2026-01-07.json | 1 + results/daily/2026-01-08.json | 1 + results/daily/2026-01-09.json | 1 + results/daily/2026-01-10.json | 1 + results/daily/2026-01-11.json | 1 + results/daily/2026-01-12.json | 1 + results/daily/2026-01-13.json | 1 + results/daily/2026-01-14.json | 1 + results/daily/2026-01-15.json | 1 + results/daily/2026-01-16.json | 1 + results/daily/2026-01-17.json | 1 + results/daily/2026-01-18.json | 1 + results/daily/2026-01-19.json | 1 + results/daily/2026-01-20.json | 1 + results/daily/2026-01-21.json | 1 + results/daily/2026-01-22.json | 1 + results/daily/2026-01-23.json | 1 + results/daily/2026-01-24.json | 1 + results/daily/2026-01-25.json | 1 + results/daily/2026-01-26.json | 1 + results/daily/2026-01-27.json | 1 + results/daily/2026-01-28.json | 1 + results/daily/2026-01-29.json | 1 + results/daily/2026-01-30.json | 1 + results/daily/2026-01-31.json | 1 + results/daily/2026-02-01.json | 1 + results/daily/2026-02-02.json | 1 + results/daily/2026-02-03.json | 1 + results/daily/2026-02-04.json | 1 + results/daily/2026-02-05.json | 1 + results/daily/2026-02-06.json | 1 + results/daily/2026-02-07.json | 1 + results/daily/2026-02-08.json | 1 + results/daily/2026-02-09.json | 1 + results/daily/2026-02-10.json | 1 + results/daily/2026-02-11.json | 1 + results/daily/2026-02-12.json | 1 + results/daily/2026-02-13.json | 1 + results/daily/2026-02-14.json | 1 + results/daily/2026-02-15.json | 1 + results/daily/2026-02-16.json | 1 + results/daily/2026-02-17.json | 1 + results/daily/2026-02-18.json | 1 + results/daily/2026-02-19.json | 1 + results/daily/2026-02-20.json | 1 + results/daily/2026-02-21.json | 1 + results/daily/2026-02-22.json | 1 + results/daily/2026-02-23.json | 1 + results/daily/2026-02-24.json | 1 + results/daily/2026-02-25.json | 1 + results/daily/2026-02-26.json | 1 + results/daily/2026-02-27.json | 1 + results/daily/2026-02-28.json | 1 + results/daily/2026-03-01.json | 1 + results/daily/2026-03-02.json | 1 + results/daily/2026-03-03.json | 1 + results/daily/2026-03-04.json | 1 + results/daily/2026-03-05.json | 1 + results/daily/2026-03-06.json | 1 + results/daily/2026-03-07.json | 1 + results/daily/2026-03-08.json | 1 + results/daily/2026-03-09.json | 1 + results/daily/2026-03-10.json | 1 + results/daily/2026-03-11.json | 1 + results/daily/2026-03-12.json | 1 + results/daily/2026-03-13.json | 1 + results/daily/2026-03-14.json | 1 + results/daily/2026-03-15.json | 1 + results/daily/2026-03-16.json | 1 + results/daily/2026-03-17.json | 1 + results/daily/2026-03-18.json | 1 + results/daily/2026-03-19.json | 1 + results/daily/2026-03-20.json | 1 + results/daily/2026-03-21.json | 1 + results/daily/2026-03-22.json | 1 + results/daily/2026-03-23.json | 1 + results/daily/2026-03-24.json | 1 + results/daily/2026-03-25.json | 1 + results/daily/2026-03-26.json | 1 + results/daily/2026-03-27.json | 1 + results/daily/2026-03-28.json | 1 + results/daily/2026-03-29.json | 1 + results/daily/2026-03-30.json | 1 + results/daily/2026-03-31.json | 1 + results/daily/2026-04-01.json | 1 + results/daily/2026-04-02.json | 1 + results/daily/2026-04-03.json | 1 + results/daily/2026-04-04.json | 1 + results/daily/2026-04-05.json | 1 + results/daily/2026-04-06.json | 1 + results/daily/2026-04-07.json | 1 + results/daily/2026-04-08.json | 1 + results/daily/2026-04-09.json | 1 + results/daily/2026-04-10.json | 1 + results/daily/2026-04-11.json | 1 + results/daily/2026-04-12.json | 1 + results/daily/2026-04-13.json | 1 + results/daily/2026-04-14.json | 1 + results/daily/2026-04-15.json | 1 + results/daily/2026-04-16.json | 1 + results/daily/2026-04-17.json | 1 + results/daily/2026-04-18.json | 1 + results/daily/2026-04-19.json | 1 + results/daily/2026-04-20.json | 1 + results/daily/2026-04-21.json | 1 + results/daily/2026-04-22.json | 1 + results/daily/2026-04-23.json | 1 + results/daily/2026-04-24.json | 1 + results/daily/2026-04-25.json | 1 + results/daily/2026-04-26.json | 1 + results/daily/2026-04-27.json | 1 + results/daily/2026-04-28.json | 1 + results/daily/2026-04-29.json | 1 + results/daily/2026-04-30.json | 1 + results/daily/2026-05-01.json | 1 + results/daily/2026-05-02.json | 1 + results/daily/2026-05-03.json | 1 + results/daily/2026-05-04.json | 1 + results/daily/2026-05-05.json | 1 + results/daily/2026-05-06.json | 1 + results/daily/2026-05-07.json | 1 + results/daily/2026-05-08.json | 1 + results/daily/2026-05-09.json | 1 + results/daily/2026-05-10.json | 1 + results/daily/2026-05-11.json | 1 + results/daily/2026-05-12.json | 1 + results/daily/2026-05-13.json | 1 + results/daily/2026-05-14.json | 1 + results/daily/2026-05-15.json | 1 + results/daily/2026-05-16.json | 1 + results/daily/2026-05-17.json | 1 + results/daily/2026-05-18.json | 1 + results/daily/2026-05-19.json | 1 + results/daily/2026-05-20.json | 1 + results/daily/2026-05-21.json | 1 + results/daily/2026-05-22.json | 1 + results/daily/2026-05-23.json | 1 + results/daily/2026-05-24.json | 1 + results/daily/2026-05-25.json | 1 + results/daily/2026-05-26.json | 1 + results/daily/2026-05-27.json | 1 + results/daily/2026-05-28.json | 1 + results/daily/2026-05-29.json | 1 + results/daily/2026-05-30.json | 1 + results/daily/2026-05-31.json | 1 + results/daily/2026-06-01.json | 1 + results/daily/2026-06-02.json | 1 + results/daily/2026-06-03.json | 1 + results/daily/2026-06-04.json | 1 + results/daily/2026-06-05.json | 1 + results/daily/2026-06-06.json | 1 + results/daily/2026-06-07.json | 1 + results/daily/2026-06-08.json | 1 + results/daily/2026-06-09.json | 1 + results/daily/2026-06-10.json | 1 + results/daily/2026-06-11.json | 1 + results/daily/2026-06-12.json | 1 + results/daily/2026-06-13.json | 1 + results/daily/2026-06-14.json | 1 + results/daily/2026-06-15.json | 1 + results/daily/2026-06-16.json | 1 + results/daily/2026-06-17.json | 1 + results/daily/2026-06-18.json | 1 + results/daily/2026-06-19.json | 1 + results/daily/2026-06-20.json | 1 + results/daily/2026-06-21.json | 1 + results/daily/2026-06-22.json | 1 + results/daily/2026-06-23.json | 1 + results/daily/2026-06-24.json | 1 + results/daily/2026-06-25.json | 1 + results/daily/2026-06-26.json | 1 + results/daily/2026-06-27.json | 1 + results/daily/2026-06-28.json | 1 + results/daily/2026-06-29.json | 1 + results/daily/2026-06-30.json | 1 + results/daily/2026-07-01.json | 1 + results/daily/2026-07-02.json | 1 + results/daily/2026-07-03.json | 1 + results/daily/2026-07-04.json | 1 + results/daily/2026-07-05.json | 1 + results/daily/2026-07-06.json | 1 + results/daily/2026-07-07.json | 1 + results/daily/2026-07-08.json | 1 + results/daily/2026-07-09.json | 1 + results/daily/2026-07-10.json | 1 + results/daily/2026-07-11.json | 1 + results/daily/2026-07-12.json | 1 + results/daily/2026-07-13.json | 1 + results/daily/2026-07-14.json | 1 + results/daily/2026-07-15.json | 1 + results/daily/2026-07-16.json | 1 + results/daily/2026-07-17.json | 1 + results/daily/2026-07-18.json | 1 + results/daily/2026-07-19.json | 1 + results/daily/2026-07-20.json | 1 + results/daily/2026-07-21.json | 1 + results/daily/2026-07-22.json | 1 + results/daily/2026-07-23.json | 1 + results/daily/2026-07-24.json | 1 + results/daily/2026-07-25.json | 1 + results/daily/2026-07-26.json | 1 + results/daily/2026-07-27.json | 1 + results/daily/2026-07-28.json | 1 + results/daily/2026-07-29.json | 1 + results/daily/2026-07-30.json | 1 + results/daily/2026-07-31.json | 1 + results/daily/2026-08-01.json | 1 + results/daily/2026-08-02.json | 1 + results/daily/2026-08-03.json | 1 + results/daily/2026-08-04.json | 1 + results/daily/2026-08-05.json | 1 + results/daily/2026-08-06.json | 1 + results/daily/2026-08-07.json | 1 + results/daily/2026-08-08.json | 1 + results/daily/2026-08-09.json | 1 + results/daily/2026-08-10.json | 1 + results/daily/2026-08-11.json | 1 + results/daily/2026-08-12.json | 1 + results/daily/2026-08-13.json | 1 + results/daily/2026-08-14.json | 1 + results/daily/2026-08-15.json | 1 + results/daily/2026-08-16.json | 1 + results/daily/2026-08-17.json | 1 + results/daily/2026-08-18.json | 1 + results/daily/2026-08-19.json | 1 + results/daily/2026-08-20.json | 1 + results/daily/2026-08-21.json | 1 + results/daily/2026-08-22.json | 1 + results/daily/2026-08-23.json | 1 + results/daily/2026-08-24.json | 1 + results/daily/2026-08-25.json | 1 + results/daily/2026-08-26.json | 1 + results/daily/2026-08-27.json | 1 + results/daily/2026-08-28.json | 1 + results/daily/2026-08-29.json | 1 + results/daily/2026-08-30.json | 1 + results/daily/2026-08-31.json | 1 + results/daily/2026-09-01.json | 1 + results/daily/2026-09-02.json | 1 + results/daily/2026-09-03.json | 1 + results/daily/2026-09-04.json | 1 + results/daily/2026-09-05.json | 1 + results/daily/2026-09-06.json | 1 + results/daily/2026-09-07.json | 1 + results/daily/2026-09-08.json | 1 + results/daily/2026-09-09.json | 1 + results/daily/2026-09-10.json | 1 + results/daily/2026-09-11.json | 1 + results/daily/2026-09-12.json | 1 + results/daily/2026-09-13.json | 1 + results/daily/2026-09-14.json | 1 + results/daily/2026-09-15.json | 1 + results/daily/2026-09-16.json | 1 + results/daily/2026-09-17.json | 1 + results/daily/2026-09-18.json | 1 + results/daily/2026-09-19.json | 1 + results/daily/2026-09-20.json | 1 + results/daily/2026-09-21.json | 1 + results/daily/2026-09-22.json | 1 + results/daily/2026-09-23.json | 1 + results/daily/2026-09-24.json | 1 + results/daily/2026-09-25.json | 1 + results/daily/2026-09-26.json | 1 + results/daily/2026-09-27.json | 1 + results/daily/2026-09-28.json | 1 + results/daily/2026-09-29.json | 1 + results/daily/2026-09-30.json | 1 + results/daily/2026-10-01.json | 1 + results/daily/2026-10-02.json | 1 + results/daily/2026-10-03.json | 1 + results/daily/2026-10-04.json | 1 + results/daily/2026-10-05.json | 1 + results/daily/2026-10-06.json | 1 + results/daily/2026-10-07.json | 1 + results/daily/2026-10-08.json | 1 + results/daily/2026-10-09.json | 1 + results/daily/2026-10-10.json | 1 + results/daily/2026-10-11.json | 1 + results/daily/index.json | 1 + results/typical_day.png | Bin 0 -> 120501 bytes results/validation.json | 270 +++ tests/test_forecasting.py | 104 + uv.lock | 2714 +++++++++++++++++---------- 391 files changed, 4258 insertions(+), 973 deletions(-) create mode 100644 data/sa1_prices.parquet create mode 100644 forecasting/__init__.py create mode 100644 forecasting/backtest.py create mode 100644 forecasting/config.py create mode 100644 forecasting/data.py create mode 100644 forecasting/economics.py create mode 100644 forecasting/features.py create mode 100644 forecasting/models.py create mode 100644 forecasting/report.py create mode 100644 frontend/src/Backtest.tsx create mode 100644 frontend/src/Router.tsx create mode 100644 results/REPORT.md create mode 100644 results/backtest.json create mode 100644 results/daily/2025-10-12.json create mode 100644 results/daily/2025-10-13.json create mode 100644 results/daily/2025-10-14.json create mode 100644 results/daily/2025-10-15.json create mode 100644 results/daily/2025-10-16.json create mode 100644 results/daily/2025-10-17.json create mode 100644 results/daily/2025-10-18.json create mode 100644 results/daily/2025-10-19.json create mode 100644 results/daily/2025-10-20.json create mode 100644 results/daily/2025-10-21.json create mode 100644 results/daily/2025-10-22.json create mode 100644 results/daily/2025-10-23.json create mode 100644 results/daily/2025-10-24.json create mode 100644 results/daily/2025-10-25.json create mode 100644 results/daily/2025-10-26.json create mode 100644 results/daily/2025-10-27.json create mode 100644 results/daily/2025-10-28.json create mode 100644 results/daily/2025-10-29.json create mode 100644 results/daily/2025-10-30.json create mode 100644 results/daily/2025-10-31.json create mode 100644 results/daily/2025-11-01.json create mode 100644 results/daily/2025-11-02.json create mode 100644 results/daily/2025-11-03.json create mode 100644 results/daily/2025-11-04.json create mode 100644 results/daily/2025-11-05.json create mode 100644 results/daily/2025-11-06.json create mode 100644 results/daily/2025-11-07.json create mode 100644 results/daily/2025-11-08.json create mode 100644 results/daily/2025-11-09.json create mode 100644 results/daily/2025-11-10.json create mode 100644 results/daily/2025-11-11.json create mode 100644 results/daily/2025-11-12.json create mode 100644 results/daily/2025-11-13.json create mode 100644 results/daily/2025-11-14.json create mode 100644 results/daily/2025-11-15.json create mode 100644 results/daily/2025-11-16.json create mode 100644 results/daily/2025-11-17.json create mode 100644 results/daily/2025-11-18.json create mode 100644 results/daily/2025-11-19.json create mode 100644 results/daily/2025-11-20.json create mode 100644 results/daily/2025-11-21.json create mode 100644 results/daily/2025-11-22.json create mode 100644 results/daily/2025-11-23.json create mode 100644 results/daily/2025-11-24.json create mode 100644 results/daily/2025-11-25.json create mode 100644 results/daily/2025-11-26.json create mode 100644 results/daily/2025-11-27.json create mode 100644 results/daily/2025-11-28.json create mode 100644 results/daily/2025-11-29.json create mode 100644 results/daily/2025-11-30.json create mode 100644 results/daily/2025-12-01.json create mode 100644 results/daily/2025-12-02.json create mode 100644 results/daily/2025-12-03.json create mode 100644 results/daily/2025-12-04.json create mode 100644 results/daily/2025-12-05.json create mode 100644 results/daily/2025-12-06.json create mode 100644 results/daily/2025-12-07.json create mode 100644 results/daily/2025-12-08.json create mode 100644 results/daily/2025-12-09.json create mode 100644 results/daily/2025-12-10.json create mode 100644 results/daily/2025-12-11.json create mode 100644 results/daily/2025-12-12.json create mode 100644 results/daily/2025-12-13.json create mode 100644 results/daily/2025-12-14.json create mode 100644 results/daily/2025-12-15.json create mode 100644 results/daily/2025-12-16.json create mode 100644 results/daily/2025-12-17.json create mode 100644 results/daily/2025-12-18.json create mode 100644 results/daily/2025-12-19.json create mode 100644 results/daily/2025-12-20.json create mode 100644 results/daily/2025-12-21.json create mode 100644 results/daily/2025-12-22.json create mode 100644 results/daily/2025-12-23.json create mode 100644 results/daily/2025-12-24.json create mode 100644 results/daily/2025-12-25.json create mode 100644 results/daily/2025-12-26.json create mode 100644 results/daily/2025-12-27.json create mode 100644 results/daily/2025-12-28.json create mode 100644 results/daily/2025-12-29.json create mode 100644 results/daily/2025-12-30.json create mode 100644 results/daily/2025-12-31.json create mode 100644 results/daily/2026-01-01.json create mode 100644 results/daily/2026-01-02.json create mode 100644 results/daily/2026-01-03.json create mode 100644 results/daily/2026-01-04.json create mode 100644 results/daily/2026-01-05.json create mode 100644 results/daily/2026-01-06.json create mode 100644 results/daily/2026-01-07.json create mode 100644 results/daily/2026-01-08.json create mode 100644 results/daily/2026-01-09.json create mode 100644 results/daily/2026-01-10.json create mode 100644 results/daily/2026-01-11.json create mode 100644 results/daily/2026-01-12.json create mode 100644 results/daily/2026-01-13.json create mode 100644 results/daily/2026-01-14.json create mode 100644 results/daily/2026-01-15.json create mode 100644 results/daily/2026-01-16.json create mode 100644 results/daily/2026-01-17.json create mode 100644 results/daily/2026-01-18.json create mode 100644 results/daily/2026-01-19.json create mode 100644 results/daily/2026-01-20.json create mode 100644 results/daily/2026-01-21.json create mode 100644 results/daily/2026-01-22.json create mode 100644 results/daily/2026-01-23.json create mode 100644 results/daily/2026-01-24.json create mode 100644 results/daily/2026-01-25.json create mode 100644 results/daily/2026-01-26.json create mode 100644 results/daily/2026-01-27.json create mode 100644 results/daily/2026-01-28.json create mode 100644 results/daily/2026-01-29.json create mode 100644 results/daily/2026-01-30.json create mode 100644 results/daily/2026-01-31.json create mode 100644 results/daily/2026-02-01.json create mode 100644 results/daily/2026-02-02.json create mode 100644 results/daily/2026-02-03.json create mode 100644 results/daily/2026-02-04.json create mode 100644 results/daily/2026-02-05.json create mode 100644 results/daily/2026-02-06.json create mode 100644 results/daily/2026-02-07.json create mode 100644 results/daily/2026-02-08.json create mode 100644 results/daily/2026-02-09.json create mode 100644 results/daily/2026-02-10.json create mode 100644 results/daily/2026-02-11.json create mode 100644 results/daily/2026-02-12.json create mode 100644 results/daily/2026-02-13.json create mode 100644 results/daily/2026-02-14.json create mode 100644 results/daily/2026-02-15.json create mode 100644 results/daily/2026-02-16.json create mode 100644 results/daily/2026-02-17.json create mode 100644 results/daily/2026-02-18.json create mode 100644 results/daily/2026-02-19.json create mode 100644 results/daily/2026-02-20.json create mode 100644 results/daily/2026-02-21.json create mode 100644 results/daily/2026-02-22.json create mode 100644 results/daily/2026-02-23.json create mode 100644 results/daily/2026-02-24.json create mode 100644 results/daily/2026-02-25.json create mode 100644 results/daily/2026-02-26.json create mode 100644 results/daily/2026-02-27.json create mode 100644 results/daily/2026-02-28.json create mode 100644 results/daily/2026-03-01.json create mode 100644 results/daily/2026-03-02.json create mode 100644 results/daily/2026-03-03.json create mode 100644 results/daily/2026-03-04.json create mode 100644 results/daily/2026-03-05.json create mode 100644 results/daily/2026-03-06.json create mode 100644 results/daily/2026-03-07.json create mode 100644 results/daily/2026-03-08.json create mode 100644 results/daily/2026-03-09.json create mode 100644 results/daily/2026-03-10.json create mode 100644 results/daily/2026-03-11.json create mode 100644 results/daily/2026-03-12.json create mode 100644 results/daily/2026-03-13.json create mode 100644 results/daily/2026-03-14.json create mode 100644 results/daily/2026-03-15.json create mode 100644 results/daily/2026-03-16.json create mode 100644 results/daily/2026-03-17.json create mode 100644 results/daily/2026-03-18.json create mode 100644 results/daily/2026-03-19.json create mode 100644 results/daily/2026-03-20.json create mode 100644 results/daily/2026-03-21.json create mode 100644 results/daily/2026-03-22.json create mode 100644 results/daily/2026-03-23.json create mode 100644 results/daily/2026-03-24.json create mode 100644 results/daily/2026-03-25.json create mode 100644 results/daily/2026-03-26.json create mode 100644 results/daily/2026-03-27.json create mode 100644 results/daily/2026-03-28.json create mode 100644 results/daily/2026-03-29.json create mode 100644 results/daily/2026-03-30.json create mode 100644 results/daily/2026-03-31.json create mode 100644 results/daily/2026-04-01.json create mode 100644 results/daily/2026-04-02.json create mode 100644 results/daily/2026-04-03.json create mode 100644 results/daily/2026-04-04.json create mode 100644 results/daily/2026-04-05.json create mode 100644 results/daily/2026-04-06.json create mode 100644 results/daily/2026-04-07.json create mode 100644 results/daily/2026-04-08.json create mode 100644 results/daily/2026-04-09.json create mode 100644 results/daily/2026-04-10.json create mode 100644 results/daily/2026-04-11.json create mode 100644 results/daily/2026-04-12.json create mode 100644 results/daily/2026-04-13.json create mode 100644 results/daily/2026-04-14.json create mode 100644 results/daily/2026-04-15.json create mode 100644 results/daily/2026-04-16.json create mode 100644 results/daily/2026-04-17.json create mode 100644 results/daily/2026-04-18.json create mode 100644 results/daily/2026-04-19.json create mode 100644 results/daily/2026-04-20.json create mode 100644 results/daily/2026-04-21.json create mode 100644 results/daily/2026-04-22.json create mode 100644 results/daily/2026-04-23.json create mode 100644 results/daily/2026-04-24.json create mode 100644 results/daily/2026-04-25.json create mode 100644 results/daily/2026-04-26.json create mode 100644 results/daily/2026-04-27.json create mode 100644 results/daily/2026-04-28.json create mode 100644 results/daily/2026-04-29.json create mode 100644 results/daily/2026-04-30.json create mode 100644 results/daily/2026-05-01.json create mode 100644 results/daily/2026-05-02.json create mode 100644 results/daily/2026-05-03.json create mode 100644 results/daily/2026-05-04.json create mode 100644 results/daily/2026-05-05.json create mode 100644 results/daily/2026-05-06.json create mode 100644 results/daily/2026-05-07.json create mode 100644 results/daily/2026-05-08.json create mode 100644 results/daily/2026-05-09.json create mode 100644 results/daily/2026-05-10.json create mode 100644 results/daily/2026-05-11.json create mode 100644 results/daily/2026-05-12.json create mode 100644 results/daily/2026-05-13.json create mode 100644 results/daily/2026-05-14.json create mode 100644 results/daily/2026-05-15.json create mode 100644 results/daily/2026-05-16.json create mode 100644 results/daily/2026-05-17.json create mode 100644 results/daily/2026-05-18.json create mode 100644 results/daily/2026-05-19.json create mode 100644 results/daily/2026-05-20.json create mode 100644 results/daily/2026-05-21.json create mode 100644 results/daily/2026-05-22.json create mode 100644 results/daily/2026-05-23.json create mode 100644 results/daily/2026-05-24.json create mode 100644 results/daily/2026-05-25.json create mode 100644 results/daily/2026-05-26.json create mode 100644 results/daily/2026-05-27.json create mode 100644 results/daily/2026-05-28.json create mode 100644 results/daily/2026-05-29.json create mode 100644 results/daily/2026-05-30.json create mode 100644 results/daily/2026-05-31.json create mode 100644 results/daily/2026-06-01.json create mode 100644 results/daily/2026-06-02.json create mode 100644 results/daily/2026-06-03.json create mode 100644 results/daily/2026-06-04.json create mode 100644 results/daily/2026-06-05.json create mode 100644 results/daily/2026-06-06.json create mode 100644 results/daily/2026-06-07.json create mode 100644 results/daily/2026-06-08.json create mode 100644 results/daily/2026-06-09.json create mode 100644 results/daily/2026-06-10.json create mode 100644 results/daily/2026-06-11.json create mode 100644 results/daily/2026-06-12.json create mode 100644 results/daily/2026-06-13.json create mode 100644 results/daily/2026-06-14.json create mode 100644 results/daily/2026-06-15.json create mode 100644 results/daily/2026-06-16.json create mode 100644 results/daily/2026-06-17.json create mode 100644 results/daily/2026-06-18.json create mode 100644 results/daily/2026-06-19.json create mode 100644 results/daily/2026-06-20.json create mode 100644 results/daily/2026-06-21.json create mode 100644 results/daily/2026-06-22.json create mode 100644 results/daily/2026-06-23.json create mode 100644 results/daily/2026-06-24.json create mode 100644 results/daily/2026-06-25.json create mode 100644 results/daily/2026-06-26.json create mode 100644 results/daily/2026-06-27.json create mode 100644 results/daily/2026-06-28.json create mode 100644 results/daily/2026-06-29.json create mode 100644 results/daily/2026-06-30.json create mode 100644 results/daily/2026-07-01.json create mode 100644 results/daily/2026-07-02.json create mode 100644 results/daily/2026-07-03.json create mode 100644 results/daily/2026-07-04.json create mode 100644 results/daily/2026-07-05.json create mode 100644 results/daily/2026-07-06.json create mode 100644 results/daily/2026-07-07.json create mode 100644 results/daily/2026-07-08.json create mode 100644 results/daily/2026-07-09.json create mode 100644 results/daily/2026-07-10.json create mode 100644 results/daily/2026-07-11.json create mode 100644 results/daily/2026-07-12.json create mode 100644 results/daily/2026-07-13.json create mode 100644 results/daily/2026-07-14.json create mode 100644 results/daily/2026-07-15.json create mode 100644 results/daily/2026-07-16.json create mode 100644 results/daily/2026-07-17.json create mode 100644 results/daily/2026-07-18.json create mode 100644 results/daily/2026-07-19.json create mode 100644 results/daily/2026-07-20.json create mode 100644 results/daily/2026-07-21.json create mode 100644 results/daily/2026-07-22.json create mode 100644 results/daily/2026-07-23.json create mode 100644 results/daily/2026-07-24.json create mode 100644 results/daily/2026-07-25.json create mode 100644 results/daily/2026-07-26.json create mode 100644 results/daily/2026-07-27.json create mode 100644 results/daily/2026-07-28.json create mode 100644 results/daily/2026-07-29.json create mode 100644 results/daily/2026-07-30.json create mode 100644 results/daily/2026-07-31.json create mode 100644 results/daily/2026-08-01.json create mode 100644 results/daily/2026-08-02.json create mode 100644 results/daily/2026-08-03.json create mode 100644 results/daily/2026-08-04.json create mode 100644 results/daily/2026-08-05.json create mode 100644 results/daily/2026-08-06.json create mode 100644 results/daily/2026-08-07.json create mode 100644 results/daily/2026-08-08.json create mode 100644 results/daily/2026-08-09.json create mode 100644 results/daily/2026-08-10.json create mode 100644 results/daily/2026-08-11.json create mode 100644 results/daily/2026-08-12.json create mode 100644 results/daily/2026-08-13.json create mode 100644 results/daily/2026-08-14.json create mode 100644 results/daily/2026-08-15.json create mode 100644 results/daily/2026-08-16.json create mode 100644 results/daily/2026-08-17.json create mode 100644 results/daily/2026-08-18.json create mode 100644 results/daily/2026-08-19.json create mode 100644 results/daily/2026-08-20.json create mode 100644 results/daily/2026-08-21.json create mode 100644 results/daily/2026-08-22.json create mode 100644 results/daily/2026-08-23.json create mode 100644 results/daily/2026-08-24.json create mode 100644 results/daily/2026-08-25.json create mode 100644 results/daily/2026-08-26.json create mode 100644 results/daily/2026-08-27.json create mode 100644 results/daily/2026-08-28.json create mode 100644 results/daily/2026-08-29.json create mode 100644 results/daily/2026-08-30.json create mode 100644 results/daily/2026-08-31.json create mode 100644 results/daily/2026-09-01.json create mode 100644 results/daily/2026-09-02.json create mode 100644 results/daily/2026-09-03.json create mode 100644 results/daily/2026-09-04.json create mode 100644 results/daily/2026-09-05.json create mode 100644 results/daily/2026-09-06.json create mode 100644 results/daily/2026-09-07.json create mode 100644 results/daily/2026-09-08.json create mode 100644 results/daily/2026-09-09.json create mode 100644 results/daily/2026-09-10.json create mode 100644 results/daily/2026-09-11.json create mode 100644 results/daily/2026-09-12.json create mode 100644 results/daily/2026-09-13.json create mode 100644 results/daily/2026-09-14.json create mode 100644 results/daily/2026-09-15.json create mode 100644 results/daily/2026-09-16.json create mode 100644 results/daily/2026-09-17.json create mode 100644 results/daily/2026-09-18.json create mode 100644 results/daily/2026-09-19.json create mode 100644 results/daily/2026-09-20.json create mode 100644 results/daily/2026-09-21.json create mode 100644 results/daily/2026-09-22.json create mode 100644 results/daily/2026-09-23.json create mode 100644 results/daily/2026-09-24.json create mode 100644 results/daily/2026-09-25.json create mode 100644 results/daily/2026-09-26.json create mode 100644 results/daily/2026-09-27.json create mode 100644 results/daily/2026-09-28.json create mode 100644 results/daily/2026-09-29.json create mode 100644 results/daily/2026-09-30.json create mode 100644 results/daily/2026-10-01.json create mode 100644 results/daily/2026-10-02.json create mode 100644 results/daily/2026-10-03.json create mode 100644 results/daily/2026-10-04.json create mode 100644 results/daily/2026-10-05.json create mode 100644 results/daily/2026-10-06.json create mode 100644 results/daily/2026-10-07.json create mode 100644 results/daily/2026-10-08.json create mode 100644 results/daily/2026-10-09.json create mode 100644 results/daily/2026-10-10.json create mode 100644 results/daily/2026-10-11.json create mode 100644 results/daily/index.json create mode 100644 results/typical_day.png create mode 100644 results/validation.json create mode 100644 tests/test_forecasting.py diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index e7be352..ac1d5f4 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -32,4 +32,4 @@ jobs: env: # This securely pulls the encrypted key from GitHub Settings OPENELECTRICITY_API_KEY: ${{ secrets.OPENELECTRICITY_API_KEY }} - run: uv run pytest \ No newline at end of file + run: uv run --extra forecast pytest \ No newline at end of file diff --git a/.gitignore b/.gitignore index 789ba23..5972878 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ /**/.pytest_cache .venv/ .env -*.svg \ No newline at end of file +*.svg +# forecasting: raw NEMWeb downloads are re-fetchable; the processed parquet is committed +data/raw/ diff --git a/README.md b/README.md index 6631199..bf5e36d 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,30 @@ Live spot prices are fetched from AEMO via the Open Electricity API: Implementation: [main.py](main.py) - `run_live_simulation()` +## Day-Ahead Forecasting Backtest + +The live optimizer schedules against prices that have already happened (perfect foresight). The [forecasting/](forecasting/) package measures how much of that revenue a real operator could capture by scheduling on **forecast** prices instead. + +- **Data:** SA1 prices from AEMO NEMWeb from 2019 onwards, averaged to 30 minutes in AEST and cached in `data/sa1_prices.parquet`. +- **Models:** a naive baseline (same half-hour yesterday), LightGBM (lagged prices and calendar features) and a PyTorch LSTM (the past 7 days of prices plus calendar features). Each model forecasts all 48 prices of day D using only data up to the end of D-1. A pytest test checks for leakage. +- **Evaluation:** walk-forward. Hyperparameters are chosen on a 3-month validation window. The final 12 months are the test period, with models retrained every 30 days. Each day, the unchanged LP is run on the forecast, and the resulting schedule is scored at actual prices. + +| Model | Share of perfect-foresight revenue (365 test days) | +|---|---:| +| Naive (yesterday) | 27% | +| LightGBM | 49% | +| LSTM | 62% | + +To reproduce (results go to `results/`, see [results/REPORT.md](results/REPORT.md)): + +```bash +uv sync --extra forecast +uv run python -m forecasting.data # optional: refresh the AEMO price cache +uv run python -m forecasting.backtest # validation -> freeze -> walk-forward test -> report +``` + +The API serves the results at `GET /api/v1/backtest/days` and `GET /api/v1/backtest/day/{date}`. The React app shows them on the **Backtest** page (`#/backtest`). + ## Current Limitations ### Single Market Region diff --git a/data/sa1_prices.parquet b/data/sa1_prices.parquet new file mode 100644 index 0000000000000000000000000000000000000000..9b93116bdf285d9db5c57e93bb2acfbb0661dfe4 GIT binary patch literal 2771602 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 z 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

Az;IS|haFgp67!R>2La$`w>ZI! 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

762Z^S7(Oz9{xQ@?$9WCv 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

|Ht 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�I|SCz#(-KFd2vg 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%0A6?co%09fLx$!k85UKid{uMf> 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 z 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%0AFGVTQ?*xp;g(aHAUko*;rcYei= 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 zⅆ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�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 z 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

  • RdzEsb>GHHK>5{q+|&ub=mO6L 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 zƐv0FK*+nlNa`RNO4kw^4U1&)R?Zva|hRDp0cRZuhDmXkVl%R_+QO^vt6&Hqvb z3X2EV13Dw9f}&cgAX;h3JCt4AvjDm|;~S8R3G$)UFYU%DcDqYfz=e9M&!yn zF9Le<#6JK^g?&+uv-pUUd#pth$_7nTfu#E6kI0*LM2 zZbP}+J`<3VGLDnlx05O`)9b=XK6pJRb;mQRpm2;fCw0`u3jpV9VjTdTU%OEjUGM>? zx={1)D5qCZ1p)GtI+0ttL?BnnqzbzKICD~$EUE;=9-qfa?e>}~(4Q#v6Ckl|Kgx~S zR6&-2H79kj=>vdGl-e)ks`aMmn8_+I3@gMR6 zn{ecjiBN%xQ=5}OIwrNYb_EI|0dqO2Yai1EX(J^C0siaup>1)QE>Qfwl9Rei_dcLF zNL2`VO!+B*tIU8w06j-Hl*Q9t;neWcP#ERR`RRb5BVz_5w|+qvsEq5tsn>ZeCv{l{ zT@c?pV+e8&qjLbma1l{}R1ICwJmDQqIa^JKq8xhb7QpVGf*5l3C1J<~PX5BFvd)o{ zI!U=4;O#L-9Jxs@T_7tYF&xmgY%j|Br|E)-_bVh&cAR<-ptVb71ajf~bU}^CKb%r6 zT{)@!;$8yGn+--HSI|fUbnY3=NnP|GT@XF29VeI7YdEQOFVF>IU#3eVuh%*Y$nX~) z4G1iu3#=sH;-qY6B7<_zCAy&Wn>;6V+?-J4?gxM3Wbo91lUj0g8KB8w_E_ZEsdPa| z*DyJNt^OXA)k5fk{^!fbpvVzfZ@NHcp$jKd zO&91i$Z=AOs`91P?fijL`aOG2>VUy~X_hNyaZ)Rtr3<>7hE4&LsP9HO)~69Cx58zr zDC>*e0Z3RYO-0^#o-WAxOcw;tbmpYC+4mfv`bdwHx=(^Ht=x8`Iv^p5F7Rxp3ygGD zaZ*bM(giI~rfMM19d#NIwq9@s!2Swdpz(t)5S(YEiE>piU65QMI}^E&EMJr(zeizCjTN-ex&0IPg<+MJ!z~5L=2f0NAU7%P? z7j#W@;-oI#_6!hnTUQsk>i|A9y`>}O0>n?z1r7CdL8i(|PU;}fe1LV{lzGTigiir_ zmka0v%Fb*>IsOA(;4#f`KFWr>uK}bU$QU4R7Ue_BvHFHnXuK^awOtEcpsqQ?5V?R~ z9H8>y;Dvys;X6_GUQ>^g$;Bl`D9e7O3)-|579r0MpbH{O=>kV7M^0)j`=-F0G*p;uNPZNAB(x3oytYWC4&A*nx7>k~*BS zPcB}8a>!e{z;?1cC$-v+Bgp%6>4FL&2Ttll^CtkW7;R2!<3_qbMs3(CK z1>r-MTchl-G8dqEZqjPxLZ9e@YK=aeQhYaaQu`Ls1!m&uwDqW!ea~&tO#QevA#ta5E1fMB_yjsP2HZ+NpUX)dW^x%|A1S#RpixH^2rBcTRc*K8q)xtbAK)`^ z>K5dt%c22trw6zK+8d~X0@WIvBE1%FMcFAo9iS~D>xNv!@(}Xcvs6La$F-c){?qx; zEcR%+BUk*7D(Dg$vK>%t?S*no!aJN?TTMMs*3-%ci2G02fxO`nRggKN2dAL58$FR* zUn&Qve4Dcqd9ThTKv|%K7a+cjD)5lzLo;-++=a4KDpk<@L&Y0;&b%n(p@;wBWcS>a zlUjXjH9%m~0w3g+=~O{d&uC6+Z^MHqn}oIFBwM|Ple%p@A6otvjlIYtZc+t~e}(-3 zT8lkV7Cu20)YO{nLpfC`3*hHI-XFPn4ppEa*o{-?(hZ!{MW?8O=y$UNkh@IbL(|XvXxV;kIE56i=A^cj;6qchRS!Yle~~Jv_$qV+kT}}|Wv>HNf$La^ilJmA19w)SbPG zle$EJ4=vVI?G$piD5^leUN9OUq2i8mxVQ3a;jb2+Ky0;q!a$0HH|1ta&N9J#IqC#TCRIjOb3Qw1V(RTGid22llR zOUkmYw#maL=-n#L;UAv*e!AYjynv=S9aUme@#Iy&Md(gE>_70#CT45gWNR_DiG5X7N`S= zTWm$S;Y>A7nI9IsMLB5NHGuVQnR?_Z52%7((Qi1FS=n+@$H!9z9xWOT$PG2)08)N~ z-vgQ-QUy7~>v0NQv!oGayNgtT`q%LvkPFN{io7zQ8>ghw4V={8QcnRU_BtPt%cf8T zZQsS40r_)%QI0r76*xY#_=K|7m^^^+#>p+nYtpEK)NZQ4&tMBDwRtF2pinix6?x~l ztAL`-(wx-MH>d)aKU9J4A{$O>vEx)heU188mnLV~fm8e0wVc!iAL)X~>6&85 zo%WmqX#XcN3?MSh3*}ntcQ~abn2Mw9-%1x)XiXT7T+u%adDkPlpm@YaPU@JoGz8KGnPqfAkhJAUl&u}^0aQ{|q>%UipbN_8{lh8#uq!9E$8);C zaO?tUtgcAV_O)^Jj*SJMRo3L0aOS8h2ANV+L33-JEC17(xN zZ*h`6VKNrwwpzL%UunD?@(A}(LXftKI~PHJJZGC<9#+49I!-_ZqrQ^dyu%y;fV zS>YaC&?#)8fO3(=T|jiK@&x2AO(&4+s{h4F%*Tb3y8Z!OkTG=rMC5_1QUO-yM{!as zf2Iq1G}~}0^;^wJ9al^jxJ#%jBR8-;1CUG-nha?Ax*g^0*>7+PIbf`Uvh9-_0JTx$ zIH~*XLy%Xb&;^N|_MFsSdZhs4;8~p1G8J?|>liULK;FjPD2HF83mkqen})LHf;#}A zqe|+?tE-M9Pm%wFldp?2C$(ATbAWuG9w&9jq7*>k@sTqCQLpI&=ZSo2I@?xpQj6ZE z3+e>aW+G2FJq-wm64U}%*3$(_Dz9&ZaWqHrkK^|N{7ubl3&H<=e?LxWl99>ZUX{j#C2{Ud3JohTjMQ-$vE|4Dn8>bc< zCr;|z#Akr8HeF6?du={6jersQ0KrnaplT!^TJpM;oYX#-=>pU5Q#h&R=AHty2MH_y z6qM5ikutAva&j~@L|HqHE)eOKS%|!Leh~7sBj0fHe__i>Z844yO>y&#Maa7{=z`+j z!N!0Xqn#+bhSLRlHA@zwEUtJ9(6Cj(1bOByx*+HuU0}V$k&{~GBwf&3r(=q|OqmZY z-edSufJZJ}U?{|gCS|_D4CUt2bV1Jh$;*(3PCbd-ZdX4}>i4&BQVR@u38=I*SdKg? zjxO+Smgb~3(cnXq_5F%d+kZBk)cM2s&>~h(w?yuEfiBScGH4}0c-9V-Yy9bg)RM(k zDEmp?1en{&b5biL(*>R1=z^j-4xH4{2k8Qrr`nvB7%$-FWP;M2x0mw6x{-DTDdYd{+$J1TZ^G707?23Odx6IipFv@96n3CKN46@=!`me>u59N>qt)6!2kX`iz6L0RM-RZy!kWe@T+&nV>nc~pUg@K#Q0MT=@c z*O>)-kr#iU3Sy?o_yJsZA4FO20aYMA)RvRF!RjF(GhV|Vc~A>gV68cLKS0IL6Xo8A zR6*JBB>^bMugL;@Nb;Q^bP+0-bwM zuAKW3r=&v`hfwx@MirQhnH-EMj|;21hT1i4lfRUj-c%}HIe z`2fnPH>d)?KdU*Z%@_R#P&lrB6nSUO89Q9d2 zq|SIt6$DQ1!pUmKdQNKPyHr7skTxfEsrdy!T#VQWfO{iVV4%i_Ch2V+iE`8ZJAmvV zlTIQJSs8)c_8e89_Q{!(x?iIbP~kg|lRB}8D)17QiUt_l>_=H9kt%5YvWk;BZx$a~ z_Q-`6t190I^lewYguMI?Rgf@nKr+B{ znH$PRr>O$z_lB2IZc$AKmXlgAjw-17I3pE#^7L~6pFJX1 z0jB>^1#-jQ;nZ$znuc;g0#y*%s&EatlU5jVZU0|5iIg~|Bd;A%4oF)&=Q?u#OH_fy zx8WH8#W{OX?h2#|ipy5qKsiSG9>CQ>B@?+`DperfMHMv6bLFJYJWLe?JvYcgZap>) zpt5N+Cv|T+RZ!ML6~r5^;iUEmqY4bGr{6{{rEnI|yhS(%kaLqN2>nYH*ey1>gR=Sw zszBh4JSTOf5+7QU`%j#_a~wFSO$5sTvSzdMkhh(p3i96#y9bDvvIk|yolQ7t-CLfI zvhd)$fEo+s`^ZycsRF+ys=!>`g_Byr=LMkif&K&JMML?}qF0ULq;@$^73hAZ3dClv z=A^FoD+FW|Pb)$mC~*d0Wh?X$pqxY%^n9fXN@p7vqa1gDDsX=y$4PB4iVsb4{STa) zQtUaYvpcDR5WQKP)V9G?fm+4TQb7Nh-6&UVY{V(?+Oj7od;Ovcj29@CA(uHy6|`1S z1$pw$oYdhi&jAjZdYsgneN=&v@yKU@>f=;F%4@2?cj78eYO`$x0QuWfpCj)OI1MN? z6|4kAMNtLL^;Ch5iqQ*{MLn+r>h8)`Ax|H~hZeB>J5H8o>^P~FK2QbSYBQ^mmw3km zVhe`60=S9pLRsIc0Vj$0r8OuwexeGpW+=W!9=!J$a+`-#f$DH4PU=3JXMplV-8aY+ z+Nc6g?GbeVqX4Qvx|Awt8M%^^I(J<@Anfv#dgS)sp#m|DxdQJ1f`_)ETvbjLB+D2! zpzPy#4Pcrk^B%ceH&xI+{~JyPM{GH%BVSMjPUB{LK(4(x4j^)4a1)@m*AwM5qk5eD z!(TcK)c^;tm^yDwd%ic#KkDuC)lgF+toYaQ*sRF4X249gkTV4g^#7T2fhc;6M zb{b!CQunptq!uWm3Mz+9??9fkIu_u4VbFJg$rlflWoOml)aJjq6XpDpOhAOBJSVlI z-4Wzk$y9-G$9hicnmJDZsRy+=sr{Z(1?HoNbpsSO_@LaGN);4!ng2pLT0a-y5;Ca= zxo%|yaxu9+oa#4i=A_QJUI_^NJ&%*xYT*@t@-eADfSziqpj6=tPI0c*oYd}FRDnUi z+F#_7CNY4f69fAJ*>9+VkV&;T*=}F-4`sDG8JN`lf^q^GnA8VI3#6 zu_|AhjF%QCb?ZI4AaC%{fq?K8-Y7eqr3*AanhBvSG(87U?K5!@@{~flz*npnCo}6! zoYe9O6@ZS*?UNJ%I6tBbbVl%{iLSNcq^?V%3)0(FMUe;SL<1}X2Mh%$ zmC*&=qiS#}S-(&W<=889f!mKU!;tIGJA_=~a0gC}6>G(jXUX!V1v_aDM{bi&7pV4# zNC5g4c%fW=lrBhkX*vRB&+*v+qb(C8kxSpC3tIZC94X`)N_=U8 z?h>N_Rk!Ja(zOE6j254I>7=v6S zmM*CMFq)G(Z5m&i|L%62EFP@kq*fftm)2#aA&0y;o-T-K5grF{)$~MJ&+jcx;>9NN zC^rnx0%WckKOT9|MY_QHD_x*6djltRZvb6TRyunE@^~q}G!J`mMSx)nT_Dv-7c|ec zn22)DA-W*+nX(dcyD^c-)i?gdN#L3bCv{~vU65ojUm3Y~C|zJuHHwp3R-P}dZF3t= z`8QT`Qb+uu3mg}zPeHDAoGuW4Eu;#lQS?AL)$I*Ve%Z!TQ8pLI1Spt}Q$yZ)k}fEE zOBX~>Ue8JGvZEBBdv_Kmwb&rOw0d)~>41zFx*)KTF0fKF*Fag>`wpPzzS0cjr9&c+ z$F2N>llwVmPHKZsbb;iId7RWuzA1q0qLEsF5b^ye+uF3^q?Wjfle+&4T~IMgO&fXQ ze!9TxvEXcg@kn=+W!AmMsWsV12j#pDx*%M4>>T6{L3Dv;Ib9$mvyPLxdP4~y;x}Z;Wj4|?ZuOQ?J`E-G&$XZTnBg_plA zKe|9;n5iksf~#)Nvl{O_jfpn+#;1OQ0&^mN!>N?C7}4QfhF>o=X8PV*wLKS zdYb}K7QapxH1ybTQfC?#0fNG&uR?BJ9ScxV5Vi*NZrOoy+08nf;{PsQjk3q$n*hTT z@|@ICZ|H(%rJp$ExI1uChvv`)c7n4xsnyLA0Rqv()&eTu(FI9U_|Uv}F1JJ3eN*MDEpnK3(P-Tb5bkJ zPGaqgoKUWxeFKnjK#r3-@Cj95HR=aW%Iobp zse4kWg3?YcPU<+l1b}<+P#1tf1yvv^%ZJvqaoHA>v#(JFA-^WNBDY;|9J$)jUYz=? zHgQr{$Ug@py6Cwf_sXOSjQb?F0c4E*QEoj>7396P;-n6r$cN^zZR&R9nzyL}p#g#( zfNIliD5peG1-|tQcc5&havdP=DeH;6<1STDIOsc0QOoT(sh!VI1v(!zy^xDeiwD$s z57`AsFQ5tnMETGxt(JPDtQ1cbbbp$#8+pl$W5{Fo_Tc39a3d$R{_tl2i8Z==kT)h$ z1zBwpzJOqDKa_0(r~=he%e^S~jm!s>ubbkBJmE4`;Q5^@Fq*rSlUn)^RnSttz#n<8 z%r!umqs)GQeHvAu(M=Ty8rX7DR~?}Wl3!>XK<+ax4q&=@a3DbL2364BOBECtEjfsC zWH?peR5LyZxwax7nuuFBPPMl-a8jrJqYC_&=maCTI7t;Kz7;r*7e-4%$@(u)aV4C~}n{d}zIv(qVwIII1ANnJVzm zu;HXO^!*PYRiqw{ym?qGAZPWUATxd9MdYnM;mGp}se*8^O`OyY))fHFgt?s5 zLakIm^-RfRK+3*-DEmI53d}}WaZ<~#y$|R}QcXc#*iIEh=?u66aK=|r_<&YM6^KeN zOhvhFeL5ih%9yLj1Ab5imh(DrQaZdg4S9D3RZt?Uc@252(>Z`!x=1=ezh@`P5{B<^ zYCLLs9p$W-R6+3g2^q+3wuB*9y-5}H^*M40HrBp$tlz0Ik$bJvX)+tnhO6T$iDEH323n)9J zT!=jW*$LzxWB%e~xY31^TI$*hKy$Z#5%L^^R6uCxC{Aj-Dyl$Tz6~b8RS?~{tQ=(*wL1V^Z>49*#R{l``XPUC%2?^l zNga6ZIl$_Z9w)W(3_i3T-;tGo(juxLPMiHHk+i_CM$nc@HZkYKRdEQm3ApGZ$ zT7bj+T_|fFp$ddvEPaD=wcKq$inC%Ja^DQ9z^s=lkT-JTr0zII6%@YGtw$a;fe+1j z>xg#%om*6a=s&8U&SWJgb$TRK5KuSeJ#tIsQvf9ofkr_0ovkRB419%C>@vd-D7&4e z3iRL0G$EIm%7@nI^$n-2d|OWHU=cnv8_OBZ$W`O0g1(P~KLN_8??gFaPd!ea|1D`j z*=X1;fb?pG&&XR6sDj*9svu0uk(1iq|0zJDMCS`~K}kNesReCAbk>fq(eVWPN`csskOVP0ugWlVoYW>hR{*kwQvHCop?qlhtG?hAao(Df+VL|~prSQ%n!pWA zYT>4 zMT?WVzLPG<&>JcY2n?nRtSaaNW!YteQSRB811P;VQ3QG1FS@{eK`%}QM>la&OTMHF zn&kC3sk2=!141$-hXQQ-_Mxn1{28bI<5ry16|d=n#EDafA@|xA4KThvKpY@5U>nM< zrZqU_MJ*hTa(F#m;GiNafn3w`5OSeBx}bWH9Vd0l@<#yQGn$gf%|4t1$WI$G642r8 zg>qp5T@WR@R0?Hht89Qy{De`+MO)~Cx*0tPYHh2hVIifKhdG3p|fUt3c6#({|JyF)U@fIh+KPD4Ut}@C3 zB!`bzMD9~V7nmw`<0R*{fs?xZ7F|&AZ?+Qh$R!s6PAA1D0kq%J1tOFA(rP^{lu=I0 zy$kRcnmie~g?S`$#hAZ1b-j1tq%NLX1&G--e+qKf`*eZc5NS?o@s$TqZiu4`GMiU( zQU_`9rCIx`t07k@q6>P54VnfhTkU~z{Dn6-d3-TeN7-;zCO~TcI8N&361pHqvJ0nB zyY-yZcFA;sddDnIY60B~fXahnnt-IIbb2y-F9fbt!2f&)1JY9ue{f zC&x->PHHW=N`SEQJWlGG>vTct?~$_sehc@bY<`R`Pm=7&`g_!}$A!q3V+mDJ1kgH7(N8a!A8>fmwCr;`_u?m2f^;}MB z;{>`urgel7pmpXxl=Jqr;1vF7B`3ARi2DG|wW`L*g)Y$r)$Ia{0Vz6eDEkJ|1!iT2 zCMe5Grvp0Hk6D7e@CscJ^@A>Op0}2hTIVobAo_g9Qsi~A=K$$WB4&Vqbh^N@hb~Yu zG+l;r_ffi_wlq^G!YQnz@%1mxx!tU?|poCdJB7|lto5la^c zHqixD)7EfOC+{u-_&k_ygWPoJS%BOs;WdEvc)FmVg)WHHG_gh5$?qmWyI7u+T10{m zt#-{%oYF2ja8mn!r3)-(&*r37JU|z8l@7B96ie+vImW&TC)bqa>rvM0qzlCLlsTyz z4$%df&**}nF)p0c)*D{{RIceeBJb^{3(5>eaZ<;J(ghw>bb+D#YEEh?mqI}EjcJ>Z z=lr1xLKg`+1MH4d1?sP<0)dIfn^CTGy8%ebmgA)M7T`lOG5vv)Y?M7Gb=zC2Ab;{K zPU?sq2>{2tL$?C72JJ>!czGjEH8IQFP)=>63jEZRwjnq7K8{?WfGX%5;><~1wDLJ1 z`kWpowaX`}KzGJS4}jQSf0XNssDcdfRh-m;HU$8y#HpUhmD{L-o>_uB0j2w?g1E<2 zf%`}!FO&_|T?a^BmfeNCse>xW*8PrCNRS;TwQV_7pe8eOH}d`s@qmh}Lwo>U-U40aJUjkK7-nxO4Izj6xz|&vn2y&wmsz6$DcqpJ{tuM;Cm#BiUZx%;Uwx5#+ z&^S0b47uRbNaR)0{Wv8%Y~iH#Nv#5ycFhk*E~kGL(0*8&le*wJRS-G$D^5{++=19Kz852 z^MJNusvuvY7N-c?MF}W7CQ$`i?PEEqg>?=iuQ||(Q|gm-oYa1!9s|tRYjIL5T%ig& zJ4KTKMS9*SM+Z{{E)`~%P}Y^r0f;$GOh#URjVj3aMHK`t*u+U~b(AVlemR$ux<{T5 zt<**G3Lq|%Dsb`IH@HgsDh@~s#lR`PmBhHY#WdUu)R$cs12yWso!+rHIyr& zsDi}$G3m&?RQS-0Jv(rc$y>`w-8zU5EpNGI2J-MTRDr_>ksAQbX8z2+28dpu3hLUZf^==mTPOzvPz9EyDmloNq@s{_ult8n$t71#>e%m8f!o{# zxybboQ3VpuMsrd(%J89OIkw{zoVJFO+NPT-P&LrFi@fhJRZ#vyI3JKO&J$(N&2Mos zx^8k0W$8auL5tCNPU_rnsvxX}DzI1Fz)7v)Rt6Bvo?VE%>K|2*yhQu~z~=;2VEUFS zkeh5#gmSyb9Y8^@@Uw~9pl1DEz(F8)J~oM2zlDBRDl1zQ6&J2A$(|x zE8B4Did)S|UEE9+#Av9OB6syY4bUqRdIAs^_dvN}^&6Zr&l{Ja9Q1`Mu%0!JlUijz zRnS{P6_iP?=cJCeD+PEY&*G#u?4Syybn)wp@d?^NsvzenRS-Jb{5i^Y8*T&CuP9X_ z7x+mPROgoC0XOHu5DP|F=KN5er*!ay+_3YZuDO`BXvAV6%FZOIO?i#GO%mhur<+QRD{Gf8!*%$BC1= zsgNqj7MsgS9b%mfuuT}z2vBSFL%Dw@A6mt}m7LUxkMaRtBUGD^8?QYHkhv)E5zyMc z73DmgS2%?S8aAWsP<9odDLv*Bav_Hxd_h^q@FqYsOrZ^V-OD4$)5rh9DPW5uC$;5`rvRnDI_=22jgtT+ z5yQU$Vr!`aHzhtaefJd|C`;tz0U8IWd`F(O^aS$Yll?f^yxYP_tvcl;pwH9b2lDc~ zD}V&y(VWzt7J(=m#eT&}y2*x|0Tsq-Cz)a zc4p`ooPw&XIjODX`O;KerVT{idz~&Q`!i4o5Wi?U${xq)0>jsf2B9o9@j9T{O^%Z~ zCz~z^75IUZovA%1wR#j?AW*L*g1mAvUs}?Rp+f-Pcjy9>L40Yl%a@6w+!jL@jf^0eKVrP!8Yv2`7h}mU1X-{-Xe3iFy zQk!{H1LSiTj7Q!v@G78inG7d&)G4~a`8{2rGu4)pT6EV#KwZ9uBJy0P7+;$H>TaAQ&TrtPZfvCsvb1z2BM`l8&o_9IT^7cHisobZh<@SHPQ6}iztxO`Qu}Or05H9#J{`H-Z@Qq}aF7O|AdD`EtfmW`6c*1wS=%)e zAd)qXle+dVU68i83n%~M>p7_{-p~b#le9UhyWGzMigUzf0b&GwPDVIf^0C1%Y@ z-Ms2PAm^N#9`ex7bb;N>f%5?B``l3$ctjUeN-WYxImtEy;GHyfK5~o}?NpU?#nqqI1w9oL@&Xk8XH1PK4wg>sGFdz?~(%@(5US3wt;%T6>xuHY1oyz?qu zQ1r`*lRA1q1;FLVTuy4;mvn*Hc*(_pdY64DXJpa^fqg4EsjZCf0hA+Dmmu$XeG*VQ zaeyfxZkrp*?ziXyg8>VdqAa;I9ncgt#teCOJzWr@(t(q$=UPr`wLH3@e~_j*@`~kW z0g0zYmIJ&#>_pjk+B=+NcAHwD+*)uGkS97}1@dsKFys#Lbb)4zqa|`7&2m8X-Z?9g zr#z$!e1}U|0nFCyMOpp=UC`0CVin4T+IIm_0V>wWol8$3*OB^%lc>EbCw1MWmw@!| z1~$k8=B5EG4~^!eR(eJkbj!5kRN}aXlR7qyE^zCfz81N@!5M%=sIVQN@daIwHSR4= z!JAFip=@*g20-j8t z6*vuP!%2JPYEEjAvs6KC^E4OaX&R>i{=Pz602W15fui^uoVr#UyP{lto+^m>BF9PX zI*SiYZ~qUR#2?#pQa4EQp=H|5;-n5rrV6Y(hPne(ba$iNdypz9d%A2p%JHLb13We; zc_25uLKR5;qzan#ojIvg0RkCRLFI3%AZg($PHOL?RDsE> zsk@NNPB;ZQ^Z4L!NPlDhT{Y6JJsWqlD_0H%Dz2RftjH~D02BQs-WW~RZuwIk&`-V%Ts{!4V^ILI)AAG(Z$1$ z0_q~Dg7jLdAV6tFILempc>txH$;Xg)4>*CmWNAN6u_w21QoFsQ3iPKK97is(^9rCb zPnwfDOPCKW*y1ZrHnBFG)T&KXLEp6LQOL`8#{v@W4>}3(9J&K#qg8b{NuOIBjdDv1 zRgkMG&q*ETcNn>SF;$=;;lN2PX!`_EbwQhxI{7PA;4^zzEWq>tRUr3-DrlEleg@?N z`&>X|%A`2tPMuVNwq74jBEg$EscWB61!-gSIjQ|OUItiPl{yDd{IwtDE`u*P6^B}L zQpZ$L1+Mbb&Lh`zi2;ab4on0z{BcJ)b5Si$LB|$dK-u~=RiH9aj+46A?LXvY*;GNi zfITO*hv{R0VU!jpwN(8%K=b6GmjF3CyipFlLlxK!T9$&c`tlrr!0CyXkykc`BTrK6 z#mU=y6DPGv0aYL?s>ey)w(=4n|Ey#hAmYjLz7L49^hDV? z?k!F_%_fB?i)v&6>h_F(fIR&HRS+<&8z;-v8#t+z&X)nYTW3E+UZTZ^7V9rw3~(!< z3iKuU&?M|E9--WLkt)dgrd)zNcupj8n}dIGQhn;eN!=%11t@ozUy3{-l`8P;8pTO% zq<;Wq>5w*@TAr`wq|P17hZeR;{V8($YgB>8Z=rI4;6e|StHP*)p7_-k5dIsZ)R~)Yfs`s6WK2I0#KVn6{HFBq4}GcSD|bXO%*6M zD7{49H6;Rh@y|5laNmPMdJ5`{rvyPKm zAdo7kd@}PL@}yDc0N(3G8vrJksRG#_R6(1b*?W}pgQ2vuPIa>Pe~!uWkCce=FTRFt`rlRCPODsVAY{e)aMf+`TJ6=(s} zPjo{$W7{j70&f|9M%ijWIzV~pm{#OHQB*-`Jyj5=vX+zD-Ln{AkT;_Zxuoz}K+|%O zuYl~+R6)oGs=#)dX*BQN|; z6-3P)%}MQih$_%|Miq#TS;I+P=U4SDVDKuq#bF@S4_H_CdtjW~%1EgOb%!_yo<=4d5x01$d~>PX~v zuc86!69lCI0$aDCT$xpaQ&RuJQ7C(xTmzUy%1R@bt)mOtCVj^#f4dzgb;NDDz;WPA z8RS~a;sL^^hKvE!G|&a9s(fjFUQ1w+{j7oGW{7q zcaQEkL#=mM)&%kd~HYvlua_DxYhUit_w5Q`fjFahAcb}PyT z7prlS{I)<5 zxB-Eo?Zc-D2qi{U&uyE*Qgy7P(Ps9>D1;U7-DoE)ZE@%}HGw zN*AP6sm(|3FCPQ2a2aR-P|TzYy8h4w#fug#Ksn|ZUEun9EGMq_&Qt3smYw7Xf-Fd!t;o<2_FCcg&1Y_861{FkC)yF>WWFqe~BU6c<^z)I2-PsjImHc~KBu5M3@} z32>3|LRr`G9Zq6trYljd|4A2Q%%5O|Jn%4GVD*A7P#(9Dle)*b98j7u#~OKDFJ0hn zB(WM`5Kb3J*3bn_6D(~|&fa<#5OPyx4RYImbb;EEe>n9=x^hxi)X@cr$_v&a_wq;s z80U`Wq?QrlLu*~uj#J*LHJsGp@96@EsT%gkHFuo>2;CE252zOLL^;LsEl$31CJrc@ zHPZ$18sj%0@7NQHyzl{C5H)NAC$;nHGJwwc*&C6IexVEMw8WhN>Hd3A4k&>O#4IH( zHleI!cL&gYQP~-J$v3JXcFtd%+zz^MQtLmZ3M59)cR}9hkP6639mPo<+(i}G=(pjd z8nT*`y6-tvP(D_DEAoU*rvaYVgxml|zqg|-z3>fAEn&vnP|mHU3c?h|aZ=m6h9K9- zq6!52?K!Ed7MB8&kI&+y_IX1Um`)Pg0g&6i8|C&Ks-Qs7+!N(Uv)cftXr-OVwHuBh z7g7C#Q|(S?PU^I~RDu8Cd7RW1D^dW8XGVGhx|;k^E>`D5i}6{-N$pxl73hhn`5+g! zJ_TqvC%6ZY`FR`4K{H?DWWCSG7iE=4*8sf|WA`F2vkgWbpF|aSwA*n~8|st*qylH| zL*D!(9*{Fi)E^MKeizDim#G5vA4~V6EHLjDpfXr70C`fyQRLpTzi~2ga^j?xO@9Vx z`=!fCoxdO%5OHM0L4e~+sz7TzADZx%m7LTynfZX!zA1;0`x&1Em`4Z%0~Bhhg3gJr za4Onn_#evAx2^(Q28;z#2}9X^+D(ALZiS=BCGS%OO`^YW%C>Ukqz;LH3b1X_Ifh(KlMk(b@9+pf z#Y3tfaX25E*P0c_Q8vCn707&@9ErSD`vmg5fPS39OSf=RJ4n3*XxbY@As0%a3aYu{WY3VC4~RS?xZC&D#x zq;Hnzqz<@F69z?jqNBW`_|&*Q?w`y=HM)OtUu0`d8JoYV~=R6%B?0CLEaY~PRDpUORUn{j$4One{ShGPwq`bR?}70E zlVwA00c1~61#JyfLB8tJ9F!xxvH_0y6K*5d5;=-o*s=$wnll?YsZ&2v1%A_Y?;tnd za}l8MKq3#&DdvZAk@Y8>q7y9dqU_R273gYB$ww~cABDXB5mk^eVk;+g;M!_{)x`w` z$d$iQ1wA@4_W`AWR6$%BRp2gd%SmnE@DL!Gs__7M(+{d3d*0w8K*)bof$ejuKyB=j zhbZ?uWdSPE#}^|{?4b(047+hM4%@&-#sX6F8+v< z&~b}Wl&fp0f)u66Pmue%M@V$~~4&JrC%+AXW`1|GFFHgxMc(@;qSv3T2}ww*k_lCeufe2o+S7W^H`wTm(UX~)JkAoqVw6vV4yhIgfeV_3Sx$xYxfSMqY4nS%- zRp2M{4kvR*)9)xNq)`Q(KNUKW7tIet9)0*1PA)GTIjMEWl>@{!&*?&5pFtI5^bY?C z2sGM@vQ;=$pj@+}8|9t}cLAkaRem9lyGa$e|Dy^Fmbh|KOP-(#n(7RGBhOY&1B7^t z=A^dGr3%!9+HvY%wuY0s;uKYo_>|M8%y!Ph3_`xCpm`hkN$7H%oS%J5NqSI-`Rk79P7LXiJ5Oc2nawFm7& ze+nV0Wcfh+|D7f80Cen>g^-ITQwVk6D1`JmF5J}t2Pp*0r~1Okl}7WqbvumWt}aQX z5MsM11ULQF+|~La6oN$Mv?0hF$DRgcZ4wd%1Ye^NY<^P+stb*WqTCloA(U6kaaSiO z@VR-q{=ms7%bvShx}QR5Sv-roI`=q*5cX#1aDe@!-6(5pZ^TLP_A&{Ss|0TYlFgJx zAoq!;5KJ2=1UXe_?&|iP&jAH@^|-4e2lKf(tr#f<&^|*Uh&zUBTqTe~=zTIo4p25~7s~PL8*uWtymTDOhCe6-sd$eV*Hgq#WrAyn3hyV}m_ z89+TM0;DUS}F|_ZAAlKy$b{ zK+?|_<)()eLiX?#(@_ptlLxT9Fj)h++E)spU%MZtihwQL)rqAPf|rzmCURr@D*%}k zY3}OQ?-WAb+^;x=AF|=Dc6df1XpWga3%St7SU`2!AZ$$6S7Cixo9@FNouB)LC(iMlz1q8VHplq2u6{mC8W7L8h*a(x#Wp&V9}0k9XB|ypZ!|g)uxXr1i6tzO#tn7-Y6F&QwWhAW=l|Z(#-*A2Te3Zj<2{PuN~cs zQ`&}2+|~Y9DgYKg=WI#6wJ4`1PzZjlDt5@twW5$K`2WMH^N}lebQV6==Msrt-%{hp2ePBCI8D(p@s{^I^(5xIZHXv6{r4V|42s;8w=Xs(W_aB5H z=KkDdBgzJ2vjCEt#ycTzN~a65d*A}G5W@}J)wW?&fm-!!XXO3k`Oqr1h;IfY-k=J+ z{!#_Ti!EGGmN`xpwALzbL7t}+i9Fo>FHR0QF5K0cf>i(^v-w+*SD&N`Qr?Z?uJ)b6 zhi1034JY}#tGTN?g!#}4E!5qSN5xVF&P_tw0Xpg)D2w{M!Kv=Pu?NcOLo)#ZtHyCx zTb`o|ls;1h-J0vUt4sV!0kOrixU1bH_|Wui#k>F#NmN1OSE?Xuw)rlUgAY&zHcyni zk*ki1K;CEn2dDBBXYT5RPO89DZytBGQ7}~?T`_VGpk>T{lyf(>;uLmu6?e7$FRDOe zf!bc=f=8%=swzQ0K(f3$%04cyaWc&`+J~}SA63x4Xskc-f@4%c@CJ9J%ZA-#F==cH*uU z|3DQqsLkcB&h$8T#;}< zTM$){UrrT7$e12O+0pSPKr2ll0=aNERZuhk7fz{%9gidTdqEYLkDC*TTw!w(pfh9m z2|!V=FUrwI%{aM)uZTifw}vXfpU_F<^;=IM&$vky1peE?U2V1GB|!Ov!71cDbyPvA z@@VerIFCS--E*k|1EDqC)sp5#fTmN^W07aSj|GHG6+Q#7-L(T{wR==Szlcd3$`zJ3 z0Euz(+|^#qRDrR^Pn=|Y9k{DoA5aB(!)9|=hp$cqIGi7r0MPv6gR;;pKD288<>ygO zDai%+N-8HJH?upATt1m9==ipoySi}B3qaIC{UqehPpJZ((WAJlMK=VXT$f4}q<2|! zR|n`90xUzOT|%x@83X7ZE0h8#*|Z(y*lV>ox&2;r8D;&2*8vhoDxJg7D1(J$aBq(ArFi0 z#mT;56L+T`ggmmYU@)m^F}dGN?gfX@nllugf21#%y)xU1XM`Ope{re-0JETjsY z!~|~ww5_+HERs-zQ|;%4*(j&Yyaw>!CwmLI#UrXfam06=x@_&ZtBaGUf|z#A+sIvY z;sJVrLvjJ)WmG}KC_c2z^-J%d9CVo~u>LV254p;`qsV)MdvGeN*vMTSFZ&GO;iQ|7 z+%TOgkm`}R2WVd4hjPvlsvz{GWdX`|94ETnV<5FAhYORx0f$%$xV&pX{ae!3M!H)obc~pV9a6L{6 z7E4M{?mSHu6nz-~7dT0BL$ba);hZq4L!{0ihDQhaE(_R`$dYAIAf z|97gOVy+E$b>bna!0Va%3*^RQVgWK62UP)D)2M>HZmJ;MVDU?o9YU!B&8l(S)k5-o zXw{p$a7wwpp1a!j4^?2cNSnJ_{uouzQ6u&mP^jpGa+KQ#oSd`GYf;t_$OVX+PI`m9 z?gUkk{+22Tn7o<0+HyxFKYMYV>*yG^iu_yCLK5hMXvph+`5h`P*K+GMBcmoETHVR$PYmLKrfU% zmc7Ht@RVs6%2MyCf@akTKauBng&_~krwZ&uHgZ?1Tb2U^;^zE9UipzKNSZFu1MuFn z7iE(NRDtX;%ik!sS>FZZC#duyk7%U|9JT)8q~-6*T`gQf71WGa(1$#AZ5qJu;%M$_ z^KVpv!kl)TIs@1Aqg+%*6+}yG{6p^Ia0X*qH&s~RCdRZ_*ABGn=e9akQVyubE1@(QKDI3>Efa8i5a&;`bV^M@dpF-rxso*X3#$a_Z@gimS1$zkVe zPHN4&bb-)dbur}C7N-Fzu|mTDzD?UvHdB9tle~|yILaOOuLBB)j^m_`S`~ua`5axK z^Vy!0T688~TAkl4PU`exx*$M8OcG#eyBlStB)Xvc>#~t3m(0Emh&`Yrh1~7QG35HA z{@^6B-kFoSG37ZRt5c7YI#@3SU=uuYG(fe2F6bM>msY-U6(@DVRl30Q*VHk{jTW2& zNFNcD1+-Mr1-bICaSC%W8jG@h<~4vupR62mLE~WLRmZ;Ll>FL`liFt@Uz+K*nexcx zZqWtp0;1yq1*W@Dj*OxUoa&bOO%bhr>ElxiJD1OkL zh`dXUFRj>ngc2a8fG%(q;UraR%Sqilk}oZ1-HfToLod+1X^ZN4KXb^c+xAmW9N26D%7d}&&nhtB{AU#AOd zdg+2xqZOJc`-Rg5<~5UNB3Dp6fxL5TKTbtAw{TKN|Dy|BmKe-Ju6u$m5PK`lNnNkZ zmzLr26{o;l8%}B~A-*(a^XWRsdrr{>rSAvL0mMz+fwKFqI-CsdE!IU@a>xxplchW- zb#@$G5YkK+*lIX%Qmgqs0rWr6=A^C|#)p=;dYC@I>pWdx{Dm%%nYDaA%B}u%L0-uu zPU>*UR8vu z0JkhHPHO#rxeXG z8|VTfRXt8>X|GFwmb;P`fZW0UD2J{1jFbHtD^6;Sk92|H^r@D}t9+sX$%O+}0(``_ zp=@ehgOgmsLMxQpKhp&TGi6sHkKA_%xzi)MKzoE8C$-4hM}XQS&DF@$+UWv+ogp>= zi$J%mFP zSpebK@tcv?e4q+ar*-4xw|fI8wfTLjKw+rP7UZ2)7XU@^;;w+`mOUuDX!4=y`dMs6 z8DkGnKYX$q@{Bc+$OA7>1y)~OIH{FqR{?qg=DQ;=Eu{+Lq@+2i-R%#cY>+|~NOrE~ zq;8t~0FZr1eFyT8XQu(SV+MHw)HZsc+@JOar;2XlohT<7WCFZG$8k~{S5XBr@?AK! zZeGtxop-$y5dLQtC$+<(^8n3bV!HuCuc?A+MLx6?H*+79eY0-^%mgOwK`w6^fxP3y zADjx`I&)G-O|Aqu@0iC)t#gMe5FI4t2dFdOk8*lUD^3B8t2n7G)%ehqyw&`Xci*E5 zN`?&F4~Sjqjzhmhsbe2!)>Y{bKpCi zf|i*^qHKMNDo}Z^Z~}R+Y8dh|uU|OD=R0yzdx(?+3@zuJL@pIa6*PYw9u3Huz8B@t zJxHW%Xfq0RpR4VvtuRPz6b?RDrjaD<`#y|4V>ui9sy#wh?K7{I#PwsUt2@ z1&-gS0Q-l6+}Om=cINS z8;V?a(@&hlt~qd0*Y{8b8HTetsRP5P0;}p_7XZo%dr5MX?F zS}Jmx!KVSO7D875d9hSMcoS9Npl+OovZl{JGmIKw+OefS^-tyFS_yp$`)4n0LAzzMaa88K?P#PGXx$2V)kxD+4Uh+pf}vG7-jJ_R{;%) zGLMjFwowH^+TU=p4zT5Gl$*<` zf*cuzGUTC-N08g4Q3dMV8#t*244wii59^d8PkKQWc#j+Y3}CX^7iHP&R6$#>MFq{1?dmmRtdtpOEIHR(MMlbSi(vsmQ~I zlR7$=DsT~+UX5JWJQg4pGw2nd{ykNYF|`h-z+H=LP`0|42~Zv)&q>{5c^G+V990n4 zyq=TVUE>MBz*n1-TC#{LXc{)G4v@Xt2j!6SRDtam^S3Cg&B_Jz`%kJzUQt37Bue(- zPFQq!zkD6;yYreL$X~9|Q0W z8Q26ctE39#{AoQhT1E3XDFgb|9CY9t~*m8SovDTSygziPhj_Z@sV+ zWsL-?K(KYp59C!d`OuR0b>QUlXe}qT=?FeFxwV=U;|B%N=Km{ruwW9^HF{ure z_|l}@+fit~wT6>AX8>PX=u!rL5+pR_>$= zdgiJRM_zh}E{J<3BmrA4(?2)~MLBa) zSHGnTQYO#ir1ssB0x-KXQWhXTXg|sw=B+pt#;oF`j%uU}oYmCikn4D#0*Dp}jsw&U zaYs3Q)G5pa&_&qCTq3rP>4`4VJ!MD6DWh6)-BxBp;|8icK!xB$kj`(00bmQb5mEY z4MaKVB4yzH&4!!WWKI!4_Tcon$lJQ+s4E)Ca#L0Y<12?t8wI_hi9&K*wBEv*Lbl9*30GDdYKv#h;P0V$=XQHNCUurp}(i zmlm>fnhA2-yOe?2V4)>|ev9oWSH#xhl-RV$6lE{<>i}aPxuwWu3Mqrup+9iSTV>Bp z9e$27aQLjnO|3bTFHLCQP;)?aF=dbN+J?0@C&TQ4R>E3@j_GxT%$7`O>;KPF;n(Tj!AUT0BR6%`pl5*O<+|L|KBp-I z(+?630J&*?D7Slm!l|IZas$edqWJ(Pt0|7iwc{xRkrv9JcE(n2>a@Mp0RM*zoRC`# zzY0)XBeMz6l}Hy9x6uVL+P2)(t^ss`Ua7`rzPv=z^f{bbb4$=i`9h0_JzHFSZA;udadS+^=c+s*kqkmvuS3nG?Cb5lE>pbNC#(gnhk zZMdmxJRSg2bJe|&`w7JY%*_Yw0w~1L1)cBdf}*L5y-|+dl?iaUH;$WHcL*Pv*vc-P z>f_dPQ)e{O1%Vpc+|*XS=K;z^V!nW$VLm9AuKs{i+-S z=?@G9gon@t4wZC)rre@~C<{4f0IIKz4MLvsn=0^K*ol+b(RJL^@~^0Z4h1c4>O$9Z zfT%3d{{YVYyHM6Kd5@E5q*(~cb#JJG^hpyBBM;afj@VgIF~^Zhw^9WyGdpm~-M5yTI_wcuU_V0h1aghFX90p2MWO&z?K@FU)_I4M zPoU{ZlugTS0_3D8L?drsABMc(GF1@y!|@byr+MW7?f>S)AQyQ~71YW~oCc&h?M2x? zohq>CSrLn}qTyXY*AbO7$ctZ|Kpr#xA5N}YT)CwhL zDzH{+$4SL~4L5b~EvlewfCe{p{L(W3kCVdZ0fz6W0;wr)accH7Nklm(?*<@Lcsw_? zokb{e_1K>{2{buyQ&&za10?O9eG$3$eX77@sCY6!cGVt~+v2H${FddHP>#^N190?H zPC>3!Oce-A{KctejSDw*>V+2ozpwhK$jxW-p(z{~#ZBE=N);4Iwc!+PznYucC50-` z?VNTMIlemrP=81$9gy*iDhM3&1}CeH#@A3*zDgDJbjxv5ml}j1j|=^QlY5mtH?@I0 zADX1gEN<$i>r_GZpP@GZA&YjSYB3*~;r+kgr;rJKkTv#A0vfj>AIn>uq- z%S2HHt#9?Xsq-fDp@r`lnFDaRLltNa;zJW!zKWZ=I)*ApX`Gsi+*j=sz|33l4nV$u zD(D#U8mGdQMtLYlouvw#Kgr%jt}}xVO?2;foa&0~xT({{`OpGvW^z+oCQ=1TZ9@tG z-LrO~T(X}kh<&{DKFV$*ZvphzDHbA^xI`5+c2EUbx=!5G!9i4kO}TCna#a~Vw7v}^ z9sFvp_f&!6R7Y;=F0ZG6;(VRw$YVtK&|EEtR|53nr~>h3s-R)|iWewn z?#TlLJ(ygD+mXhQ{YhL>mr<{v6 z+|;4pr~2p)pyI%%maT&KQ9E z-GQF~27|YwEV-f59NEhuLW&^Ca~K5vv;i>ZPlpZ&= z+4@TW`OA{u0Ue$DP%hN_j8jyw6*skW1y!IUJM{;0QKx7?-PHkIfb?H(C5(m$)249-B!Oxb>~&rq(xp1dxc(>_Oi6`Ya%8;*j5f;B8(g+uWiG zR0k~WMY+#38&DoK;SchJ`Y`04Dm^$Ed2Z}OE}cgev<%Yyi#&JvML^hTiGG0nhrK9k zOyffn+->;}<*I_a*wo3QQv_~dQ~Ov&pZUoHyMnw>)b4W z-l6d#$i<)01r0LYIAuC+7=k<~tqfq@JzEsHiopdy?_u$wfU*~KLHszrG>^>|VkjG4 zzXOo^qdW|Gvr#1SobbOmh1R%mQ`;$40o2{*4@WMLO&3)D8^ukXwB!KF-Y42{GI_h2 zn_6}Lb+yYCLnd!IBsgcdvt;MkS?4Q zR<7r!?u?@gikfF}Q%7s?rMdWu$pCbV=mIfuzO?$)=3`LKI8PS@eo>M|ZZ#_cx$^!$ zIQ5h`b5oZ}Rs!Pe=5bTIC({K69V5p9Bz5oL=j+a%Bhs;zWE-^{g~)aCn%0SS+0%s}or;w->ut%xQ-`XXJ>(oPrT z>X^<%IV_MaurE{4LarelhFs9$7fw}|9XY9!f6xU!^X6zHH~o(;kb6FSHlSU0FUkc@ z%{WD-uh2o+sfRAmHdL8|9KSaTdF@NOAZ@%WC$;~UmjH_!26K@s{-q1Lj7M`)7e~+q zF|~AotI`@yYCZQNfOyVyedG-T&Hyr(3eN`woumt_-_ZpsQ%np{?)AI@D9e-Qq>dNn zL-VlsiIZWh11Ggq6J5|eZ8j%$&hA7&=>1_v0K1`kP*z{ngp|RY@rL1G?k5! zd;1+nZcYHXIc`xSPVUE+S)y$4nl6x>sI(G!liM-m+1YeKh=4OEwXNxM zfLfFuCw2c@x}ak6NNYgi4u6!r?$8CsgH~};%PcPdw8l)eL7vwb4G32gTmx|M-iESf z0bL*@YGjLY^~!62l(VvHk^6q43(RJG$4P##9Vc~15nWIyK64%ND4TeIbK($tfKHni z%A(qQXm$ISu17ijaW)`eq#`G^<+`KDl`hc*-5nb_sY`U90b+x69g(}0(*^o6BQ^pg z9Q{ykyh0ab{j_vKIe30Pz~=CjO~_SWL;?Eb1e^io&RbDV$f(B2vvQjKoE}iYjYxAjsG?C#R0Dntglr7?@0>x&F9VmBA z&jS?ine2%?<^fgUI;iw^gM0u|PpN`t={lTp92W0EIW(0ju!kh2g|n!Fn!i** z>f+6u)PBdQ0`oWXIH?sTT?TZzO9cXoa;So6!7n(um|1gD>qb)r_&)C-cx02w<6 z9s&g3r3$PD*W#qSVo@;4J+V|lY13Fv>Ns^iGq#3M`E^qme5`PzBwuMNR=qCVHV9yX_rLZnsQh zP}U!i4Ukwm;WYBbD5@Z<+&6{%udEX#DwDRQ=ae#!=RDtIQs=#QP zJ{h^iA*w*} z8CB3Fvw@Sk*s%-{lQugAxobC7pl2X{86X}?6*Rn{3Npu8q@obNYxO_2Kf2zM%lcGDo_wNzlCz=>f3;#^GZ3$qrXrEF0=mNq`TjllUnRCRZuTE zFBf@+T?!yDdE^~{Rfj*y%DSyM^&DKqNnQGsDu^4cb{Dz(hEo88D}wm|$)DR$Zqk2^ zQ+9~aJ(NQ#sRCQMv7FRu&cVq0uTcdRzwJ1w6Bm{MypGN+L~i^l9w0M8^Z}sNbr;Hc zSq(Ua_b)9%*}>!%Kr>SDA#$O*qsXf#{l+O}yAvn1?`^8UY~Wl@YWZc!fR5-9C4j;P zsvt_056#(YB`38`em+1{M70!o-HMZd^fLla00AGjqHH<+6;4Wf49igNF1!jT5gYRq zd8~C1a<>GkK)=$ z3VeDdzd~+mcmlaxSU*nfFSl?~7mR-ih}>fE8oASrD*)}k(zO7Q#epc-MtsF7t=5K< z+Fywe&BA?p9dgASs-SCt@LNFf(j6$roTLg|-z~03S#Qb>fcQ>%PU?m{svuMNCr&{Y z4xH51u}=UhP1>B)z0>&6%61QH1jOH`3Ot7Lp&71P{sCpFb5ucd%cLgcIhx0jhx+y5 zWLLbIlUiNk1wg=7zZrSu1*#zFs}v`-_v`?aO%8m)N%n~~Cv}??A6mZsw9m*RQm6vQ z&Vj7}Exqk13kOpLHP04(K{<8Ib%5VSIZkTxt5ku)FRGx^z@C%3D3mIQuF~S9c9Bm2 z=(-I31`x}n3hMt*1sRK$b)X!0j4H5tJ@Gqo<%!3T_qg@qRGPhslR8e|Il$dikCWOU ziYkz-m+S&GP4-7Qd&g&-Lhe{`QriwH0H`gW+Ks$FhAOCN9PkT}sJ0DdFYg+hj0+a_ zpe!SL4bZw$_BZmpvs6L&C#t|0gvP_EQCgk0>FNsPU{a?C(FFnJ5(Ch-l<`Ab z$?+3T-B&CH(JuK(7sSq=G7!1jVY)#71zjL9ZYw8sqjNPND`UYRJh$J8@F0=~Mvv56tDHu6RNhB#x4t z2Jl+H4`t)abb-u|mFg(B>fHn61>-9n_zbP$B)~y-fCfO*$qi+p^jA1l|1z9`a>{~q zfbWqpn#j#w(gpJ4J84G!#22}6Qa6Ot1(`MaOOXdD@}XI~jpC$M$)*c>|Ir0yOICAI$Dg1JJl;+-M{YRz zG(c*H&~iX?E?tl#^aiI;b7KpX?PBNx^+q{PY5_Gqw8~vSa7wyo&q?h)gb&SR!z7@{G}^0D&6>?EqF+=mO=RbU}~4 z(K?h%L+FCIN?Cj4?s9x+2F~AclFYEoXEh;m{-UEpP+xDmN=BwZj=M;EkCa^j@U+x`p?ep`1Fa)*I@XqwALI0J-EQ3cfv zR6&aBN=|BDuY7=6{uCGF@**bz9V-O301D4+MLFstRp30`&=qB!Jy!vu4`j9?uM^`# zOaGsuGm54{4TGp8Ns=TXBIiu-*5^@u;rw-Y^4g6v}SBW-n}mlQ1WQ7J0Nz%PL$o& z*5jmqamjX+CB9JwjXDY*$g={eg5WZ$z((4UlUmi`DWLDNjwkZ+A5=lYyx}_mo`1HYc@S6ICFtJ}dyxu-gaa%==V9(9q=vP_|x`3s5;X zDG+&Y3sq32*@siS-)2r~k7BC8P(q)RTFUk^p!tH-e}J5?`%w;^{RJnx1J<0>>QATw zfl<>AA+NNL0VJgi3;}p|x}$8OSBsNu@S?*gw>_f@^2f+=Qb%k&gxv8eRiO229VfN$ zg2#ZGP%TdC)T(m;Kl!0Y0p>2=C@W-A1)YD)!ci_-lmm!9Ht`s8m)GIQbtm@XB(`l6 zCv|-`RgfW|$4MP%dI?|^B^e1&uBQrmCi9_{?y%ydj=OUY;67+-6mo;*(E!QQ15N^( z8mWS8wHlm4ycb5JY+H~HP!p9sg}i^|f5{cQ`q;nVvyeQ#%_V6fhwUdG%weAZ26^PQL3la#EXJDhJ4apA(O~L-!(} zFi7GYAgY`yaF*di({Z#+Kv^`6DyaLZavpj5{3zrBhyUSZ`NEZxT4`K0pxb%D1>_|e zR6%U-XijQ3qk|~xhqvP-QL~1Vx^V&@TGm#LWaPm&sREmS!j}N5OFU8Ti=+z5>r7Hm zPEgJQczTS#jNB-fDv%cH#;Il522SeSQ&d6N``K5J+fU^~)7T}R1`xbQ6;z4vp(R^d zTt(R@jwR!&DQrxA&~ea~N<3Ldy{Qb!J}0ywRnpMhNaJXIj_WfUiMtrj0zntvNk z{w1q9sVyY=&=l>|Zy@iwNEH-+6UqX_%<(|k^&nNC_tf|%%HpFl0Syl0IH@yJse+&` zs=!)*JtwtF2vyMgd=@8l*;qcb_)TKB0Up<=0>j@_fz(3tT$G!`sDhkor8~$&6(W$^ zx&FaPJx3}Wdma~eJI$w|vEy7HVliD$w zD$r^Wyblmobw{~o=WCo&?-~`N>^C?AV7_AP1LO*4sDjQWs-Q@H9Vd0PPYJ-KaOOkg zx?<-5V%DO?fckS(LB?mQAaJJHBb2T7-2x~-QY=BJ+_?d6r6)M`Jdf_^>Kr^qXUse;4`fpUPCtQ*S4POos1 zNjH3ka_cXuAaB8#3gqEOr~-$VRDtIBwVc#KTZ#eInKLSpr}R+;zQ!Ui0A>+XfqX4h z&@s`p3gyCWHvv(%6kZ~C9uS6HXX!7TL{B<$QrFc}1?ehtULgN{1CJohI~KL0szQky=b3gpJj=A>?SOav694f_a)?Dj#~$)E`*?a<}TDC4_40JYpy|b*jMP&t^_)#YHawUE%tlkr&rc1u=@FIH_IT0#Me=rV7LbR&!D}EGYzJ zo|x8#Jm_r_{8#Yn}QffbNYTjkfNu6_# zDhM4ii<8=JWdcC`?9fhtz$b5%D>eAgl6;r_K-s$}2Vf$u)P-Eu<{0v}^Hf3pmrb11 z5wo5H9QW&SQfob?3WP_F`~|47^G7)~nJVz>u;QdP*DU}j1Wo;oyz^-^plGyUFCcou zHk4hi)ZnE1bKxJ9#pYiF)Q8CSA^wWQHJ@e?S*>h<(GU(At)hIx2xKaBkHYid;u44j}43SPW42h%QJUQIAu= z+9ktKw!BCeD193*j=Wpv2=bD^Zk%GvHgHnANk0YXJLpItmq?`x8h?n70A$VcMLGBo zU10OvLK0=wv3Y<#r^zFcm#5PO2|aXyr{NY(YNIf^K)QPVDC8~UuK;qlNOMw$-JlEX z|I!5-i)}cm1&`AORki9e$di>~0Y2`7#sExn=mI&xI-J^ORr6xDrD?%MqUr{eqO<57+onhS7UHAw-v z-Z{EJ{4-t9pt+foI@7Nb5L7&mliFH>FHOZ(Y9gTb0$ot{l`e>%ZOuvTaeyu`e4;i9 zxzwl_K(qZoWk5~}T@czy7ue}7nvAk~FkK)}F_x3MatvQu(#B4lysxg~q&E3Q7sxKq z;-qd1r3><_M5h8G%CX2e=oEnT6aylrK%vsspE{vuio2vp>-VAu}{*Be&gq7NGV}L?uBxN z%{!bD6HVu!?A1mW7;8_^MJ^LS7qmX63-U&8 zFI^B|)Q*#7_!>@Xr5d`RdxC}$@{+A*0I@fP7XjS@+*n5!WGRnd zj6B#Q6uC_Rq50YBQsQ~`B9wIa$o3zcC9v?3j9}dQb(51 z1x}LcE0Am3od)0=qbvcn-?pQiHs=ja{s)a$qHOW>IzVysI8N#=hY;k&sdPb1mpv!7 zt9~g!FJu-cwRk06&@fhPH6U}-Zj^(r(FNAOm)W4KvhX&bH%w^_^0Mk<$m13M;N;=z z%t>vS^&BA8ug6KCIH?70(*>1+YWB#J%uWHkqXpLk zOd99{S=HA#we2)=Kso>JH9*ARu^W&(t_Vi1b>=%x!XNE8scY2v&{BP7Zba@^NEeuk zi8=uktaqW@c@8cREBd^26UxyuZvkBPDLNz9eMA+AjrfgIy{!``bw<)NKw!HrC$*JM zGC(Ej z@kCij=_a6ho5D`yDYvKs-vPgHGF$4%NiBbpD(I-!*@e7Ng%2&tbGSFaIgcvP5#~b^ zwOFwm<+{^ULHdWuKF9;6oj`86yB{Z|`&&4vyG36DN~{cgk;leU1#T_UoYeZ7d}tDW zUvX-DXv0aJHJlGEc+K>E$ZalA1*%^M`2+g2cc5GzKoumEF5Zu_r_>FAk-a=8wR8$q z(DI!s$eruJNgehdRbc;2o0D2&3?G`{#$g8mRcTZ~ayM1rW3W63Wz$fqK(1=if5_X% z9Yzg^Lo&Hb-+KcoLAs0DD71Y*9aZ;x#@}c>=eZk2h+nSSFQGgGvYss`w zn4=58*@eSUEHTV0e})korUwG;1t7j&hD~4j{B>VkB}q@nguBFBlOCMhBR6tV8`Mz+lFGX0kvDC>2*|!Ikq8JG z=!dfHvQIdvowB@ua(@F=P@y^{33;Md6mqY8s=!!eD<`##Wi_Dn%z|X(c^|2Q@aZy_ z01kT&qOAFVDi9iG%Sl~r{Sc6npm7pa8pm4;JD=0^;%>p=I z9G`|<=NnZZI;R__y1)&b)ahkZL4dSQI&w>g3jn25@oRwYAA3+PnfDQ=*h3Z>D7!tU z3iQWLzK&dCQzY`nbgCe$$AyzR*suy<6E^<_a@A_8pl`f1Cw2Lj11Kllpb9+yuI8jR zTKoVYeOx^oc}wkSK(5lDTYxZk50ve5r~(ba#W^Sonq>m2PLAWGPJTxf_)O`-$#my> zPHMTkR6)D2HYas~#d$zvtXLkvscARL+Uk60B0lDKQLepz8;~}1Qa*D3RT0Q7&QS%5 zpPf0WyEH2S#eVZRsbh+%0#^yC`v5)L{V0nkQ3VZOS8-Bj&b|)_I-vFdx%HD%0F_Y# zivYd$?kJa~yv8ZM)94|}9(ox7!{D*S$fYW%g61)uIOS|y$4MP}l`63NHItKCeZe_^ zz!A~MfXXVWAW5DN&D+JS6lIglTL9TU#V5$y7KJ0vKlU4^h}TY>)Q%G?09xDTK1D8k ziz=uQkSqtJn(jl{FN!KKuV2YYt)Oxb(78jk0(sFLsvvsMfad_0Xs*ayQ( zlf0U6$7ULX%FpbD%+J8)9ATFXh@bCxP7{WRkx^0*mi0q%Q6ssRQMsRGI2?{I3e zF@1${b|O^}(xy;@+*Ugbxmv(4ocbR-a#B}}EC(d6n^TM2>k?I9{C)TvfXv*zD7OYt z1$pHw>QD}sxeIV`RC$YBGmR<`>ZS^+=eu%JryQmVd|w#6LvA)M4IsaHG$(aO231hl zOBF;Jt>L704yOuqYNj_L7gan1sM{+10g!%^DhT*T6<97YX+l})1Xa*oC(lV;qRfXD z>+usOw_FEKYJH(HfQ0$%PskfjQ3YA=hqVBLr|v=7W>*tVs`r+EM!8Sq4xrppxfOXr z997`iOcfYuxNuTS`@R6QJkW1Lo;!>WEo}9uuK@e=RDs49sz7koYEJ4Zf2tt4WZF06 zK9Z*arglOd0J&tUp#2+FP%y{%JIavcEKyRVaFXZA!se*=TsvuLrnUgxm^*O*g zOOKOUrJpM3T|BZEPg*i zbQv+^l09@m(}Hg}WgoHSqz-vW7ub%UA&y*aOB|p-bMSCLMV}|iiN^Ifc||OdK-svK zE|5`D7=gTX+Y#h>x9EcK0gjy14ojZ`G*9Y`L@xA>E~r)+E(J*O^hMb>k1jA1UNH(~ zd5b(i$LYz^$O}J2B9EHZkCXH6Eu7Rk_vr%Bp$0O@>#VK-(&ME$sRLT*0!z)WI4Swr za8h?aqzg)hPalgsc1bFgycA>i_H%qkBRBT$+dAEC$*j$Uz)hL)->b| z_vnJmAw$&xK`XscwmwT2sC+V;j&iR?4xr3;q6YH#BD%msycZ`!n@yb5Qi&CS<}Y(O zsdHxWrG@U7oC&adOc$t+Ta0>FJmKW76cbw?mwP*^tG40)6^ADXj+_%eV_DqSGjMHke~voJ?F{SaLc@LYL0 za?7!i$dxwz#i={pg_F9Zhc1XUoWBCOTNquSUpGy-&e9jUNAHQdE}};I60kj=A_pC zOc#jEoX1IB>z4vZD;~KX;4iTsWeeL@oD`E*aZ-1Er3;E@t8G9YbAT>zeIn=x&>Q8B zviSPfI5nggZA3YtkvDTeIn?DAz%Em93v%^7szAW_H%^tuoH(hIUQ-3$6X$YLn`}!4$le;^ z251x5hjPAY3r-PHD>!|`Q6;*fS!k#AqHFpHI15yXMq3pN(6;9@-4Lwj+_&^nO zs*Tx!yvREUd2|6);3B$~lUmoR7=S-ky%Tx;C#oQ0hKLs+aPLl(tsYVZ%EL`}q1#9Dv0{GI1pv$B{u*%C*(P)Mc+~db;>_+ zO80Q!qz=e^0Z>1$yzc>3P(ExFCw0Q=0F*t?f5FM;^ejHK7XN8Sk>{3B z1!0mx;Q)KP?I>#`*Wx7DvFI4eRdcQbk`KypQu{om3QR};z)5a{JtuX0DpgR>rNv1d zshu?8s=)vE#FNM^79K;cc(fO%uIf#k)Wr(V0Wq$6 zoYbyaRDoWhAL41sCf>#!1Q=PrO%KAKvE%9;4Q|7 zW@5ecJj${OR6*P435m$_XC6f!v9AXw$4474AlDl43?RH#Hwk%75>=4eE^!gyr{jmR zc_3AwP-dBoa_6XgK+*asmykzarV3nsPzAd4wsKO79ij^AD;8Wvo*{b`5a=Y63b0D2 z3Y2@Of}RDooYbX9sDikc8fnPg$HxH-whX=ski0<^H1$yh*~UxKQ4Wcq3T$h~Uqh~@ z#D~_utsAF`TN^m369+s6crDerj@>!*6(6pGG zgDyaTI6{Jkt!b$DBy9!`-e||P{`JsGh9ahqu)P?a>K~xJ>;H+uGNv-4e03ced zej9n+@K`|lnnAgMfD2TC8^u4Zh*XGmEH#An{F{)Ydi?0F}hKoYcKvsDiRtlFtG0 z`>6tt$5esgNGncisde`N&B>}Skmqzz1);hFssMIDRDpUqRUja<@FmKX8`1$uSH@H$ z_x?#0n9T3MN%rtsPU^NwsvuuZvj%yD^I3pnhRADxR_{)fg^k|fRCCm{7Uk4eRDs`w z32%^_Zw*7PaFZ(N?04j(E;1_xf$HdT-@(DEJ1fy?d! ztWK#kAXk2W0(p<>Kb%UvTsf)Z@~HxMkp+#&4J^|Dl5wLsshd7h1=-WvaSGY9hLhU% z0ac(jOyeW+e(N)UiUi?iKw|3-l)bdx;$-Y^@(E>`k{f{55#u?j^VWtU55GtiIDB*9 zq}H5M1`s+pyA^qL8C8%XE&c`I>#zr9vs9`;zH50K${q9W016K&e?=bk{5W#wv43&W z+2q1WEqd(*psq*%8}f9+R6s!3C{Ak2YN|jhb@MU0Am_F25agi~`O@sRjSvN>-=Yfy z2Jod-ny%!ePKu%nyz8fkAvaMu36S*^7zSv&vlZq1L9cL%SZ*kevg2vGKkhvO5L=@l zg}gqIF34!33j(zrIjOAz=mOCx*+j|G$*y!IKDLF&0lenxo*Qr-P%hR zkpj) z@Cl&{Oe^UEIk{z;D7SCQ0Tf)DI1_o~Z@R!~VJ}YFM>la&i@c%>Y8CW2snc990sONh zwE-6W`%qRi`HWN7aVt*h;x}|b%%rJ0$X&Nb1N3eWm;(?WxDDk7vl^T-qZjI;9MnJ; zSgXp;MXuuYAM)P2bV1o*J5K8O6^{TOXEf&_H~e@OAT@o6KA_ph3+0?bx*$|+>3o#! ztg`{?2@^P}1zPEX%9%YlCGFeDN$vfJE-)FPYlvKS?L|OalEgwle*0dOBXmCDvy-XMQ{cz=^HlJ4wP&l+;G4jp|x}Zo_hLbwl=^)B3>2!f^ z&l*l@eD4mR{)mPt@{E^f0DhTOfDE-+B) z#!1qB11ELUExI6kfX;H{Axkd+Y)^_?0My>m1^p^~Xce9oD^O0%y94kNo@|NS*dh|S zOzdBrT0gjOQs+&p0)+3LZ-w09K3$+WRGO1oXw?CftK;c{l$O<;)V`X0Xl8!utC7nW z(*+&F2iX7$*La{Db>R(8&R>n!psX`H6CiqE94B>MDP52*)rC`l{d!Jn%M`jmsdE-5 zb@$x!fRg{j)&XLl(FJZ}_|Wt>n%ko+ag{D;>{eQjJj);gd2r|-oNTI`IjL3UD*=6* z=W$Y(U#ANa{)}`4crMzHve7ZRK>GD6PU;p#KD1mnH7Dd@*>HiFy}-at01Z=jlm(-x zf~vPh&L}5O&H(uA7`qv{=^d&-Zcryq?dIz^sS9GLg2=|1TaY`codalli@E|t3aEnG zA$(|QE6ui|?0=Rju=u3thFoz*IPxyv-#8T)IdM|Qh*tnyZRWZo*Gr@d#M?$}2Qr{6j?@gu($~pu*0r9$SD0>7^1%~B@J5iRBNe47<7~_RJ z=L%I2`jaZKo4=NmTKzCpAn;;_H}Xokvw$RLk=+3A464ASmnx7oGW9{Z?I=}{|4LyG z@`wpx$Q`%-!b$6OB zUf-w!<2kcAsbvmQ1+8Vn4g>O}_n;i^(1epi>he&OHM^(+A${c|$g2-g1u4&|0^hMN zoYZEUUI65;=^sVj(L)s!8jcDFM1@fW&ec?bj>2kAYEjohK;4aL5y;d3QUw8vg^mL( zk5dIoZ>WN9CF4kxOWdymVsqp;soezm(DcoI;3N@k&q>|*jw;BSGK-TscxM8@=I+pF zfa>7gDEC=3;#3~H>=eogO;mxWx>5{sBcEf)r3 zjywYp+~<#SRWVhNEU}7{+Q+s4V45`bEONPas-S(gU_7AU096qAgeq_vWpoZ@?e*6H zB9~=3scSo_f;7GFIQa+LaZ+1UPz8#zGZT?_ZHxyLUmbD*5cA6mW!D7_IO!c(nuN0W zORAtjUhyLGOqZj`gEFZC>%NVg)GEf$0KLa_FCi~`O%=pX9FYR>*ye|_;Vr5_YQW0N zC^wtt19GCKq#_Tkj{?}K2wVZEdu~NpAdf1j9Aub=a?SCN~1pbBKCeZ#5E z+m@3$zkn);5S?)ixuaDaKr4Q520*yQ6Xlv2^*E*OU2+{|zlT`>^Wh4a$Q9NcLEf22 z6%@5?;G~Y$ehP32(8)rsTS^s(Ne#aVs9)!ca>ga9An?0IHp*6W^8m{KO}>S^r#upQ zsZ2jkagJL!som4600!OjZzGp9xB_T8EX_%s{emh88TS<@+s!td)N0qMg8p9hJmeKd zv4F(zL3aUOHB^DIVjWI0Zj19#ZoQca$on^rlRA9KVdM@cx^U8byPlI;Xz~+4wTCt* zbxJN(;43t&5MXBRgR*=KRnYO?`~k{^Q*!}PyCxMOcfLmz=nUz@Np$6APU^b2N*EQQpcXB3f#V^Jw~oSD+VC3e_$z~v4kqflB~rk z*ly7ilx>o!0@aSOWyt&H970}xuoI_*r|USWJxBAQ8Ew!iM=pJZDro5veFn(Y_eMD^ zgetJFG^;>aLoNp(=sfW`@~Uf8LGo{^z-QqmPHNMmRDs;9xt!GP3Vdhz)3uREhlxuU_P|W6`F652c4k`tUrp>0aT`Yq1@~94yUq0)3+$ci)8~mtS8hX zH%y=kq*|$h=9wEgsdM&~1419o;iR@3!H1^4R^mNC;38E}*-jNC=~y>WrIn3Sn} zKrSmCg}iP3Kb-O}yK+)T{GbXP=Pme%TXokysGqL;#-0ny_QV)^2FV#0I&O_IH`??@}bGBYQw2Del;g`UJF$auBrYLxr5(nfM&5!H$X_j z1Lf*9Z*WSvVEhYZ->+1G+3azg)ba^gYtD*|@<>zryOSq(9Qa4^7 zDUgRro%P2b?chbNDA*iZ#YwIDnl9*5R1-wI-0c(~AzN@Dz*E2-Wh2wqI7vqt38CEb zmM+MhJa!QBupPn3?eEY98iUqxQVT9G0aV4z9E?1Fk!_>GguUMEiK+9J9jO?<8xa(|m-fJNenVF1N8Ka{&>@ud~- zU&%=w^Ee;iI#P8wa=mpY0pgbgBmfN^TT#x`eT7p{kl_fFt;^{G6`3)T$a^;gAuqc^ z7sUUx<)rqQUkorjJVOe()QdPkvz*8%K#ucHltVM>akA@OB8{@T(M^CrxWZ`Um9LH< zPnz%xC-1F}oYW>a=>pk*I%ANxnIr-7BZtcZBIewJV4Dr6*=Uo z%T6HoJJpYq`TH%L)CyBy0y@16lTe3KY3t&ND935t0J!_hb5a|W&;^o`KXGbW>%d8!eenq( zuU6ZCDm(f3ty!B8YPI=Eab5e(o zeF1RTq(2q8<~6!N=(m&_pxQ71<&>~5IQdpvb5ffr@TJMSPE$wTaf2=>{5x);-vFtkp{}5ldc2m+~qi_({t#80Kp$PS(@2%QY%H%1>NtoIH^mf@TJA>9I6Fy zyGs}759UjgSg~vt%8jvfK~~d5ZREk~$B^6j^x~vixQUaxZ|HMC`6@k5>V$K2f#+w* zIRK-X{wPcD`;1ddu@xtEt^^-inC;ZL$nBHp0*&?odH_M4Z75eApbL_pES!h3&!}qv z)Ah3Y$mK561?`=5L4lqfCv{{nUEoxq$w{p(8xIh18nOUTdzCIo`$ZS{FIZ}bvc(a) zK=I{-g~+?)k0LL2>A@)`b0a6UYad;pXRNyjxp)L!(C}Kq7?3&959Oe3pK!9iWw{t- zl>zyHUehTi$jhSWg7|v6z(Zv#C$*txH9#tFfhqFlL017e%Vm}VLQm5Lb|2^h^=YFS%w$KG_GnOnzIe%{!AmZV83*?T&`Ovi1bmJs^ zVFM?1O&eX1s;y&*+%JGGFfSEf2~d#oMY(g`N1Tc-Sy-VQ{hcmwnLBwEa^3&v0Nb1a!pBBZtQrE4%4@f_+wi$WA7plN=)<744(tfI-yM!tzkzBL| z^=Rvyv(>lAE|4xwLaQ@|J5t6C^zWRj&I`PR^nV zeEL^%Qk$CG1IR_HdLeIra}rQ6X}~T(;($ctB;1;m`eZrH=$llUIfy(l*n-UMWdP4Gh= zWF3awI)N%sX?5hJ?wwfL7ONT&)M zd!`2?*D^c<5DpVQ1gLpQ6{L=Ti<93LlMs~6Z`=SV{FUdV?lcZXUKH^Yr|4P-PHGpW zGJvl8>?6qWJ=K8v0pekRjHP=}4m?Q}SiM_*6lLWpcK|(}%HhaM^QeM2;lDV!Texsi z8^pcf=K)#SR6(%7Yn*IMjS^8-jiL(r z-pXD;UOt%*En&xZoILN?aZ(!%;zN^OKJy~-mKdraw{b`^AWUr+%J$w3IB66ty@ax$ z=q*6iO2ri9$!DnopHEbQ=?o`MYPr470PRJ(smKe&`OqS5MqB|nB~k_2ZB&7X_DW9b z+Wk~P+T$r#k^7H439wivkPcA1v=!y94yvG7*YFz3F+o&;Yq?AYay=P7G;zmoI5k|c z<)qI1NfiXmpOJ~&`Y=_X@?!7}K(E|Rl*^p!af;7al7+HIFI8Y@q;M0tR5(@8{E8~b znc&Dt9lG@?!0x8bE#&I|r~-i{!*c+YkyJra9aZ41yy7;>CLVbJ+1$yw$lC^ zAE$^@TR5p5-%|xzQw{Qv3-7uDsL7YU3rNNPBf|$Y%da?@$JuaFD>PFDozth^LteBe z77+blPyxVY*bbC+SJ&Yrc7E}FlrI)9=Hn|IlVm>Wb%7LE>0_ zPHL}BmjTAtq)GuYzxSiuYWM}GyfAA{>hNl+z(HYJ8FEe67=TdLz^8!fzwRifEUv}L z_xPf6l+E5y1@e>RIH^0_4ZS~>1f=iuMmgXv zRbV-I*$b4FR^$M>V<%Q2FKG%#9;@Dqlbg>bPHO!^sz5?akCVD_)g?gIImuUm;LrO| zwwcL?rn=9Hle(|?9-v%e>TBc)w$T93qye=6qjooxrFCj>YB{j*4a&Js(g9(kWb2UI zum2CZ#$~EN@W)zC>MFfQfaGA!dgMM8X91?NL*4=8oV-wOzxocRf?uW$C`T^H1~?s= z@E*DL%P{03<9l$bb=k;Cot9Y+@b8=R0l9_oMSx<2L=&LvHC0eNkq<3qo8?E8U2ok5 z=na_Cj9h$a6!M0se>i225asyO?KpXSSi?ze zIE@cYYPZH0y0`KA7IGL>3 zz)3B8p$yR0HoF6PzBV6PM1c5rfMY3Dpe4nJCTwrfiE_;)svz~d@(<*Gb0d+P|MwRs zg=a3D)SWU_fFj5FKaoeLQ3WpDqd2K`4Gy3z7TShW{fpI{)EVRW&;mEB_aL{rP8BHs z5&8}2G4epUG@L4kt1<3H*v9heS~TQ+7C^7d%D zprC;+h*Vw6N$uoS4A9P>F&epu$XP(`3K1DV+8MgQ|07*sG2L_w%8Gk#0=fznWRVw( zg&~iz{)Llkf+HujUMpQ7t~EyvdBeUWK<1<2;{ZV;_M&XPwizdti!0<&?roUHLl>AB3Qq#ahS3FWFX@8(@g~YBM{KzPaJ(VUNv-vlE)ZV)6Q`O82TtnLTDrhb zX*MUdxqBi&A!nE>pmV?;l#7-&;S_yx`Bao$-q8iRQKf-8^uXox;p^nxchX0`_R>#)CQ{x0g~sY%|PDNLKkFf3TXmD{I;WP zTTBo6WKX5WWV9!Y{^Mo#Fm72v#ooAl_2u~S08{p9C zjk2a*BThoW%XCn#enuChj8U3{+;`(KLa&&9Su;LC^#R`?Y0f&l5DylR=~&rWjE7n0R1T0 z1;{1p>4L_|-*L*?VaG`we1|Tu88mYta@FPWfWDX^Mu750x*$P~56#ni=^~Vk3bFyx zqKd}ITUH)Lo_m%q2>Y~=liGg9Gl0fkT@&Pj59xv`@exY^$u@o{`y|o@rfrs{D9dT* z1KRgbS&F>iFVA_x>o^dK{DpZ{mbbB3z=^?DLUG6 zQg>aU3yObgSRjv?9|v$fJa`2_?}aDI;^XRZYH(g+iE?HJT@cheekF2iqa(;w!n<+m zeYJs;x@^KzK>SvnRmeSV(glY9#H|5ROMFpoj-(56>MT~H9IBiLu=AK~gIql~61jj- zKTeg)ws2A>ouUi8-_N&2ZZh=>Kz5fjCv{ssU63#G6{iSG8%}D+IJ!WqS$!RHVU1Wo z&7MK_fYb+cf#0w?oXl4*UXQZE`Ak4(>o`v8A}v0&X#XypTuRn+QtL`S0f^aYb5hq| zqzf{>iERV~&hbIn>L6X9{M6hDhGbgoVNF|`@`8-bQ z?6G`kA)BOJ0Jhht0=3^%LBF9jCv`;_RghS%=8D`)AqHUVI&dpMCW|U){Yw?(Eneh? za`0)a@?ifP&092arehQ3X!M5`h5i2&zD&mMW;7Xn7Fjv~70*{P2(_f zmEC6my#>OdfHF}}l;f@5;^Yx;as*|=7OFr>b9@-`=DnfFa~@I!p~E+DQroR51E^n^ z9gbY!D^*abEq)A;6hIYtmr?~LQWg;?%i7-ov|Um@jy(T6RS+@vFHVmCxo}czJ);VQ z$IL&0yv8vVkeW7%liIJFDlj)_!$~1@H79lF3#y=KoO(3!=*_1AF4u)l0d)UtM_Fvq z8=UIHjbl*GsG$l16~}Q>Te*cGSI(vidj8pSQkO0%1;m}0#Yye{mMSoqEEWfl+_4+w zrd+BZTgdz@$|2^r0k$zp@yOL0k0I}$`Uj_qUCx};iT9`iuOag|sf|~r0A$XNJP&AX z_D4BSqZOxc-&LH{4norbh`;9K5EdTf#phI$O zGV(&ZVB}HBRDpAc9VfMpZV5m%Xl4rXx~K7g^wFZ10RbC!p=^1DDp2~lG!^A;{ab*N z5XCFVV=Ip$ca!^#lfJVPC$&VzGeF~ST~6w(g~@>6qa)G*Hm|4x)d_rPeXc7xsmrtS z0SWz6GLU_oZXOg&DKAD7%h*=hPsfc74R9ONPosDfItUpS>% zJ91L{Cp-mMwCdy{SJdJ|>)JQ`4xsoERS+|R56yM$iaeC{E>Z>J-zMKh-k@^=d1hcg zPC;c`IH|3rUjkGd4DKQCy-XF9{gCFQj-MBZvd5vXI2k^-;iQ%t%ZJwNG`$dcPC8W( z+B4_@z|L?7%IaZMfk5@*B9tq~-vA_Sk>{lLzCjh3{G|$H7dvoLw?$9|`L)`d)DcR2 zXpZi~N&s3pRDrM{A6m`Q<&RNLJxLY#y_-~u+7&`~nbdpk=d{go;RnQhNWZF_(!P5ShgM-f^d%rMg(~psqza7n zmQ|xH6HFDfKAZRodES^~$ip}G;^c636DPIiFRDOjfgUGybtqMkQYBdn@Rj#R+05lL zPV$*noYWnEsDi>pQ|pjN9is}IUk`W-(3!XmWzlUlIMrn@tVcOr;2I#nRQ4Tm%P6Wq zsh%q6o@~cSU9#g5Aoh;td*p6|;sN^0hcp5tPE!SqjZ{IF+R_gw2YY7&YzihcAy*YW zio9=S4^HK0H*!)Ze4+|GXXrK~H`;p9!58Fm->HIjU70pOK@e3CSxyx=$=GsIYdby!h@|0% zKlo|QPpTko{@`x_|HD*)#S5xHaomy)l)Id>0L2;Ozax+7r3ze)x^dDA-@r*NUPBc$ zOwjp(Jag*>K+sL`E`asFJt(Uz`G`|*q{UB^%j&3tc;(66$UQtFksIbx1yVv=IH{YL zRRMBN&F?`T`kpGVn<~vot-k93$^!SOf=Uq^PUnok2{H3szo+V*&$ zod19-h#0o`FUpRqGXYxX$8k~%f1wI$w7PIg^4Ly6XHIG>{Yrpx$UIK!p67Hy z=~yXYK-{MND7#;y3k-g*;-r>bcpuOdrY3?syZRI$L}B0%fUT=L%4%7!aq9nTB#Lsy z;tW9I@v%dZd%d9xj3;&CB(r@TCv|HMU63cJ#Yr7*b`IbWEh-MsY@iE-RQb}XcbW}H zIpyvxfbZam63ER~gd>+f^Bbp*CMQnnLiGwjl+RpFYUe__Ku1h+BtX=9AIf#-=z{dm zD>?o%CwT$OX2>G%(>n_&4;C2dHwia*{5ntv66Yo~Dup@b?_eNo|ow7bpt1 zU8kJ^=? zJky_nTy_j!TASl2PU`$Lx*(#PE^sth%}K2lN*4%MP18bNGww7Xb+gbcfZuhx!2Azg zps>hT8|BV$x}c~=j*~iCF$B4b+Yg*{v+X&l#RTxu#OjyK;-t=>pBivPQ^- zM)ILm+kM9=CE1RX+P8x)Fw>oBj9fm5F6ekVWHF#{^e&X6HZnhW3f9O?_Z&ek_kb>F7jxvK zF0g(Ih)mG2LGIK_7ien@Ujq>F_eHt(5nYfrVudZr{%i9978fV4MXvabF6h$f$Ei4Q z3nz6<8C~EiZLkixp2HP@c&aofb;A$3AamYVoPrM7a8g@8rwdfZPUocVb&3U)r4QNw zi0|=0*~737C&RGCjwnl2(*@1re zm@~lJ-3Mip9I8N8aQSAG+m_}6@=s23K_2lg0=eUqKAg06Zsw#GzDpI<2Jy!)LvIB0LH)Oa#G7IxCCeomGlARRZ#`u@_c9x zE>@h>nwj?iLVc>f$g3Ac15%C+*bDG|O%<3;tiefs+d@B-JF?ROg#xnskVl#Rhuk@; z11FvOwVc$VDtu^lJ2dwrPrpMI1PmGy0I*!{g|gD=cQ|!7njS#8L@gT->pdY5xmy8M zpfB2klZ4eqPU^<9<$$bDbApfu&)`F|*(>oMK=mP2&?nA^R&HY%jB-LERp8mCatOJR zb`)~yfPXl(Ja*-z&K+3|2wS({Fmn4#RDs6#(VWzRa}T0i71WMXa`_rgY9ARsG*d^7 zFywM+R6+Ys;iG_p`JO089;OPMUYLZVtUWFZAhLPl4EATdwmHlQ(>D#)s!3W8-#b5XW&x(QHCSGa?`?-x~2zTg*52}c|` zsXbp(1xDlN+(jcg+)0B%PU=X{K$M;Gr~+-_HJsEU7Da&C)6*X!Px}xH@Si4J z46xX}17*egR6&=h$s?4Dt!@Bf;^jH1U0bLEJwIn1$am)KSge6e;m0~3RTejeKRL@&fFJ((Es$GA-8)* z6{wFH#Yru&F#zStG^!w}+nSTw+n^9&5<0CCxolMoplzJc3qbzn?I=fFuf@sn&!Q@n zwH93m2p^N)wP7}JZBRpTa3YGt+OfSz4?oYbZFsDij5Bi{ntSNfxDaF!~N z{A9&R-K4>XmhC(B9rBPOs=!uUumPZEvkm3`^EEhCd|CJ&<-}Rn0ABlL8<877rV3<6 ze#fcR&W@8hFPSO`@6c>Q?w}hF&9dJD^!8m&k3K9%g;ZG zyd$Isr^3pOoYYZr&j8NOx}TBjWKad7y%Mc}x`loyryr#X0$y2uLD_ObK0s;fls4qu zSyVwuKUENGvXztCEs`qGuUpWLTtfLOpmDp*H$c{HsvvmaH=Jyi*>X~=o}vo+8Z^Em zFISBNBzO((1bF6C1x6zEI7wSB`GIoF8LA-nektN1T~sg^Iwa{eE2YJX(WgL1)$JV4~y$-j|1U8D-MzflDubGC3&*9KAr zX=U^OAorK%L$h#@=A>3kr3$)!PzA;FY&fZ74p9ZJ&(-^p>y3>Ch;JJ7573ZK6=e26 z1u8*?iv{jsQd@`71uE6!IH`Nb^QDz->B1@g#(GX_kH2(*;bLu0YN_LNL36E`5Fkg% z2jx)r4>;N7m=8i(T`(6QU^Yn@dF4sEAn6@l;5}tCC$-7WN`UO$d7RX3!hC7@7E(h1 z5wUcEV-sDVrEbkhE$nk2P;*~xDDu>yF#x|+1H}O5=jZ~3&vZej=AvOJ7x`rXqKn6h zBX^PDOVhRO#7Qh^9Vd1DSGpi$wiYLK-~qb8>WSzGfbuABlzZ&o<5ZerCW&%fCtcvK zH*q9#gJ8NqvVtyX8ncO$I(uUUAmr*?PHNjTX9l*x!eO7 zXR68|m+7MmS{Dr%1IRl@7lgm23mhgclto!{TRK4K)|j!#s|EPdQcOE=@{L-{No`h7 z7s#t zm8{AE-Dl@0A}{$w7sSqxnD{?MXB12Y8wO!Xk|arzBuSDaNs=TACGVwFIr< zq|Pm;3&LbHRFT^|o&{*62~PzGcJDyBYW_Q%l8>0Eq3rXLE-)Q8ej0MQ&7sKKGw6bX zUI$LdgP>f}p8wI9cyn%}K3tpDySXQJ;;x%<>E% zK2Asn;L*GtWkZd(I7#^$&q2BQ;SE5}uyLH!p{qlX+g+dw)W6tsQVY!DL#yTip>L<*zHDHHkmGH`?gFU<@`B!01*e3<|B7}b{x6Z=s!3KZ*bUDPzD^go{GMurTzBDVfY>p?MS%Khx*$X04Nifs zM#d;xWnBj-_scFu-m^FudFhGoIK{oSJKt1ySuXR>+-o zf{^P3e#1$$%$Ae7ZWJF{`uZ8x$OEp>1(rVsuLda1+lg{_FkMhmvBU=DSlL?uHz$QP z$o13d0*M~FpmBjCCw10Qx*+(K&RXO)okZTUtske{+gmuP!v?$p*e^A3K(29$E)aY#%}HIQ!iSdZ`4uOhJR44GQ(-bA1vO4vdGYzfLbegPU^IHs=&X6DzMOW;G|ac zdkW}!q|HfPJe&_LX3elI0N0CDf!fY~ELD^h=PU`qWRDs8HDR+S37(O(qjbCtTPP68u&grHKLJg*QAh!#p3e>9x?f?kL zZ%4Uub1hCuHx_xK?EQx-Fj*wWNiBPvDrl>r3i1{0IjJMuo&X%PwK%D@1o+T|O^12| zYEDuGsqd%)zsbvXqint-2cU3wq7U*;q2tJl%zJT)j@iUX?b1jU=&I>)Qj2+C2Grk| z+zZGU;*WCR%Fj4iowMSkR{lg4^k_`ohrHA`8W2}Bz#rf)z71sqn;M)X6Bq7Bx#0m$<5L^(L0DzFh*asp*l%Pc_O+3}Ic%Rf>D3DdiA z^4zn5liKJZRUkb~CklCs^+iB#g7_&wSnD2??X~#OH2f{1Q5Gz@3#b|~`84w6wUNku zE>Q)h-&{DU<>piY+5_jGL0(Ws6+}u)b5c7w96(t+l`0VFTFpsaJMSSN?XY?ra{m`+ z02X5hodYOt@<6#O{Vh(#J;w1U#~5Y;T*Jn3QtMSy1>y=_I5lip&qd+~b0K1*@ zIH}d|Q3V2nr7i<1E%u|F6iXF&H?88NHc{t8ll4)%g1qekRggb)U@9PDl{?Cg=ilI@ z_1Wku%EB`<05yJN(~zeYQw4q!oj94>uH&RuNTLclzs^iYUNrkWAo_slb%4uLsz7%X zADY;Dvka8$Q>cQBPQ@F@1NFj@TLu5dNx8y_le%Y21)y}}Tu$n^YgB>zuMt@Qg9ZCg zmOM%oG*zwSq|TPV4+wEl%|>pUNfoH|3ET$sFLFb<;y6{1_{J~?Wv_|p0OM_A?jV=B zO%=2Xbl{X{x|WkVJc=rCsGo5cxu(iFfRLw19-#UzRgg01Jx;#MP4A&>c7`gD|DceM zyhAMvd7<|&oT3UGIjNmR%K6|~GZDMdN=2vrdFQl69AejFc~#^#?m3Eptvq^|0v z3X+Xxb5i?+Qw63q!^#12ihEFQ-`a#z!L8-bQI7ma6*w(Xu0XDRk}42+M-|j6yKqvc zdAtPp=jvA?w-Dk(Q#2pNN!@jtDk%PsDu|i7nv>dfS0O;}{qq2q2LFA!ZE6#vzjU>QZQ;lIokC)z$Hue zBXZq-szA)-J5Kc{>^P}2-ckjDlV*NGZnZrgpnPXY3!q1E7s{n(4LHR`Fa3jq zA0U%3+DZATKVBKprF2hm))QW=?9oluCej z=R8j8hPhV&nTMpr071{`0_!nfa8lW5%}L#xMi-QItBE6zH;4gvgbo}IFsz~rq~vRH zYTmp^0_B_=8Gz6~V>zkq79B>ee!LSWfj8?osVf!v(vsY?IH|p}=>ijhp;7=@Q*V^p zPSOSW@61M_95Fcu;J9O=G;*!Gbb;`oUYu&oH*r#@##8|O8s~CSo2&7qDR@hc0d(G{ z3yOyDrA4o_;-q#tM;GXRQXPw2Y(_Mo-gkf;Aft#b2o$fu$;xKoIFywW>4KgwW8{&S z&f-gp+uwnc`;)bt)CME@(j?buDj;u4rVFw=L?!@2biGiv4WbLw%1sqf?jM~EsMs)J zBJ#wmbb;4Ty1;n;Mowy(BXmJ)<(x^#^W^x_!ks0Q0S*~-fo3mVAY^1Y8RhC@bV15% z6&2*Z6QYotZT*Ln{4G~b>W+T8pwMK2D)OjEy1=<^G$*x=GGCggM>|e+ch+!Hrw`;y z3s|Nx4Y}oMx11ELx zo-%;V!`Yh1RfqAV^;wJ01e7Px1qrQmfv1**7RpBccLCBR%CnHSjEF>@yY??mVV7Ju zsqMef1sZea&qgkIkS?ey8^uYTEX|kZtZnj zfZhqZK>RIT(4b_#0Od^gJAj}ZB}3%af)U77%>Llid&-%Uy6in&5Id+>-z)oFlF>-aE(*S`&K@&jbPCCxNLF5FHR)XWxL21q?X7x+D;3(QBEnWL<* z{x+a9MR7UuqE5OXTJJYbF2PQm)VdXPftc)EPU`xN$$*S&BP;=dzx+_PTF`=%^3j!? z)IC*nL8-i|74kTjQvml&fmHy5zO5)r8o$P=>A0aa%Gqz|f{=-0RwK9F7KB{wHeJv! zu$Gg$!n7EW7&T)Ja4LmLrfX3SUw#YVa7Munx#owX$c3i; z!l~NZk&`;5fG+SAonw#O%qj^WA3uCOpyQJ-%7rud(4zLPa6sAlQ64~NxXK3PqH9hf zuS=v0(%ZIhQU_?i0$2tZY(%b9dKJ(;ax^D($+|$4V=u!6Vs77UIH~pL76BvVVuDX>ANd7m;9l6hv6Ua?Z_TeP=ZZju!yYfpw zfrq{a^2l7Oz)5HnC$+YD0LmgUUvR4Z&zh4uZ7Ls{|E_5}kz3rS3KWM3c>%gCx1(Gf zSBq0j^P*iSyK3A3==sWVQi~T+1r5V~;FP)Ao|8K00##uBMT?VKWfmV=um8|JfU*** zAYPIW&BJb)FUp3=RDo2-#J$Ly=Nw0#bFdeu&}W-CsqIF;0H|-!C#Rbbvv6)2e4aZ-1lpbCoKY92x!Jt-dGvVBM}K=%$+AU2Q>t=??uVU#nXse-_U z2_eX>RF5H7_Ugf@=iWw6>e9i_0dXsILy^0mr3wr_N*o19PWMB($>$SJ*@c#2D2IsU z18l9Q97C>_Ko#_VrV1)%Zsnv-+*b|odc5E`a^n%#05WT3A^@#PR6$-lRS>RY%Sr7J zNEK+7X+$Cyl8ysZuOEC8kaC48@cls*n9W-fg|hr%s-UA{{3+yxvV3S!PTe>;r*Gh- z*6E=NL=AOLBd za8gUSR{cXiiemy63atl@9qp8hFZR&RcAXhAQ z3D7>=2jzk_A8?AiXr7F+(^slMd-kNu$VCoN1+}GAL7LQNPHKPqN`OVmJWguGPO6}5 zu2d?Z_z+bP^PDPh9b?T&t+(+3K>V6o8uEs2svy%~;59%{C{5zMoCKoGZlYZI zjw(o+JTVKo_l|JnCU>a<*+H8)soTse0QoU7f=N?L##Nd zQ&-*x_?=U|gWUWRRiH3qKrW!u*A3;OBB~%-eBoV`U2M_;x`|`*kc+iZ1@*H!aLU-f zmXkX02~}V9H{XWdDODA z0O!-fWdNQ3r~=Wc?{KQ~GI@q_dj3s7fXH}GYD>#d1E@MI^ahapf-3MC`xYnD zO~$n-%U!1m+I!?UsS6B4kVl67z{#oFo|9Tzfe%f@brvUe?MjCWRqzi^dS=d?)Z)=pLBo4JPU_4ld}u*CM}7cU-=hjt z2J@lyTCC!vE{mlK;+v*^MDC$}8er%n*bI;=qzamczQHMHmC+}ZL(fwMcAsTikgLz+ zLlfBd9jD4-J5K5(2|hG$+nKG%O_Hbr+4dn{0By5(p`3q!Du{Txv<+p)QMUnF>lMEu z7rsIj)O1n>sd`TB$o+z;0`m&pZ^#v7`OrEyj_3dsU84%3e^CW43s!Pc>mH>F#9mG5 zL|!j{3XtI<@BIhj z4=||<+vtKQZG!?{%ZH*Y?UoB@xiv`)dG0^DAZ$q=PWC4^b5d)(qYDHl>vK|9d0YV` z=SmF+_z3Z(nVNsWNiN2kle+ysx}ad{v=PW7cf|ml?hlj%Xb;(rvdGF>oND71jYK)E znJ)0xkmIDb@I8!Nv4}3{8fMQ)UA+1UAm)M=C$;MrxZ+t1pt)-w$~pR5gEbiTA6A4^q~OAGG-;>4y*Mec4L zh1?*4E|6?><)m(!Sq;eEw_qCbkjH5N+YvIH)M{%FqTHWE7gV&b;iOK~c?9qZ)X+d~ zTy_>9BRzNqpmn_`%6V7b;S~PEL=$C)d07C>!{cWn7kWV#RLgebl;X63liD}E3}DtX zdlqte!;659qvG0t!dG-b)Ofx$=PeeqQP#P67a;mqSqFKYaU}Beh`%@m)Vgp|TPjrn zl-%d*BJaLU7nBT;=A@2YdH`j&Q*AiuzhBKsEir`;tFT8w#?$B4%6gAv-cBQ2+$~| z3j`(j(5lv$8=;(hkuLE0sFfyPatHq4)L!b$NnIdS35c|x$4Tv!LKkRvjx+&? z=eUDrpOhq(FI-If=dC#2JR@wgwh4BRYqng>&a&T#9hWN zL*8(MF39{t7X&R@XO7(ZI9;IfX6AC_y^7}nWp1JtfcR{>z(ar!&Ct|r1lSZ7r4)#vjMrm5xPL~<#0zpliXgEvz?o93dvZp5oOz6xZ+H318fblH@XXG;fsDf6L(U{aad69veDU0yBul%Vd;Gn$5g$GTKBD92Zr*FZp zR1Z80NLeQA3h+HmA(;I~A;?cP*^1Ba@VW^o%$Mh|juPQ>bGH16lTMrihqY)kg-|zr zHivck9)9%-csOi3z;f6gl$BOD;nbb5+ymv3Rth0jOL+%!H~$mJ^-CxO2}u_Y>&CS& z0a=&ycOnn|Mj_bD8O33(dXPfsE29v~rB`!UCphq{muKoUZ{$W@6oRzA&~8A>VG1Gl z1%(hc*4PJS`%O0h8rS7GtOb8l2vvqZa7qrd=dkvvrVvaOW^q`{xh4SGZw~bX6#Vr@ zIdU<-dO4j~whv|Pw-kcNBqe|3weH7}r{z!x{({aN))rPAm7gGp15;H@PhuX#i?2?8Y0jRfop)8=&fK%mxrJ*P%JGAEJOzo8H^CVs;yaGNcM zwbgA3L3zN8Q^J6OCh*?q!4tcTb7_Kw&xz8zEI@}@(i&k zTi*Ed!7N5h8PFUv;s+q7ktzsP<3qFaUddstUXTwE z5LNw&ymI9!K+-vZZh-fvttgw!c#V_nUc+A~w-sFjJzHKZ=}c{fcd(eC@Wm9$EmYpNgv8Zy0-w)K?;A7yObYAt}F8kCoxAy z4(s}>&j1-eb^aj_oS%eAZFOY0Kq0;qDZiu(dgS=hN}X2>KszpjE^zOiEQq#&(MjZz z;r%!@z23rMoju_dAY`k75OUjFR{?7Oq&cknO#)G_i2RCEVx0|#wU;tqnz6_9!N_HD z>4MgQ!XkjYWjjy~KTQ`n{I_@r%9>Me0)%$Sb68jB(*-FaKXLN4bl|Wyi+c)?Z`S6p z?wHP(R=8)_FhJBpy1;oDUz*P9<>DxdUZ4x=S|<%hp00HQd4PW(PL?H`Ijof=Ujn+< z>W@HPa)~a8{U*g>?KUR>W&ML+aFTdt&0*ar&6k$tFii@1a4KD3(=~7uKvjP`%6*6F zg7O!Oq)|>7djsIPNshzX=sH~>{hKamF|_Bf&JCjr!m716tnC%}(llI$$^rzl=z^-h zbV2gsWn)qHIYAegzMUwCTyD~F^h)fm8=r- z%=2_X&}X{9dZrzRwaUK7fZk$FW#nZN@ql>SA(H_fNpyi>J6#~9vs4A;<^yy=&eI7~ zkcW;shTLv_4^HY=HgZ@C{Gbae^>n8qPYR|ByelNs04B12D9bv1!l~_=ADZ|H)eiMAZp(c2yY zTyAU3M6Np^4j{I4uoj>`iY~~grwamAmdrxg$}IK`dWz+vtF zfi5tZrlW&ga`#0*Q-Sy#K(?qa${|)Cak7oK&_!9Tg)ZoyF?lZXioKD@6Ccq9Uc*;Cn=eK=wuUZnQ=DXiT;DAMxkNTy(D=`p!#Zn8B_R0ZJPvD{cXWa3 zWT~ZqK9Bt(22}0H!)}H1M07fxt%aBVqo(8l`9cT{7-Q|vQ*nPUde#oNbC~K_D z00^ENYk|C~nJ!4y=)}p#cO8edX%Sr@C$7a|-M;!fpx}b&N@HJf^HK7Bi zX4kbG);U>pL1_Ps^~mi^&H>aTMH~PEb#y`Hr1v-_Z8zP3viF@^0F!|e9FfZ|3q#%( z{R^l321gF-2-R|cqt_fKKCW;^*?jsvfWjV?&B!|o zse&T0e>g>3ySgBENq7a&Z8g|}TudtsP`__9Cw0bSsvvMgJ5E+>*KkrRU!n?n+NZlA zFV#5K<3Jj#*;Uwu`;*N6D6{;Znhdd{B$h=VGwugV>r1rvrle%BF3{c@T zdk6BwbgICsXP76z*l-WZGGSCf>#OBEQO+BG7ZAQh*$cVDO{zfiFI6D4*oBk2I)W-l zsnz#J?yJOyX68PMlUhE9D(D!{hEw6v)tuB(r>Fww_tW+u*O_t#Ai7h?7f_c+6{HKl z#VNqTcrVJ9u~dOllN={?_cT7VlHEUWihW?uN$ob24^4m7EKX{P^Hf1&%h3IREY000 z2m3YRWK+B>0A*E)JAl45N(YdaU!)2WzETCAvz;=sz5_;6(_Y|FjY|Xd}=WATMyzxQ&~RZ1fVyDDky8D3gXpPa#DME=K~B2 zrkq4BC3*_byiyg+nIAVhikCFHgqu>iH)LCJvr zfjdyHSXPHq;_1bgQTFj?7Je5xQ%#DSAK-0~^FAx@icE=-w=Q>-_4R9Uk_cIpg>vHy zsvv8u94B?~ro+f>u2Ti7zt?e6_ZdC`l!s|?QYTcO2Y4zB%>fv>dZR3zMHRICHM@gy z?&2Ik*old`$nD>TBiESJi<98?O`OzKIaEQipdKf+kJ)8_X|&`$fLsGr&_0C^tzf4W zCw1h#`v9lGQ|}|!UJ(rtIXj>LP}}5&a+-P#PX0a%AE0bem<~`BlPyHvwdxS^;`3BN z%;&Y7)UGr6(De3c79kgZOcgXp40!~|wDm$cDCs>;*6pUnD68mX19}fkc#OR4X&CbO zQ9U?$tl!8|AoXL;6XeZ$mjF4z5~YC93aY?PmJdzc$?_@60_jvio^E1-`5q+aMsU3|EqO29sj+1ch8cyn(iF|0O+caJv z_q$CMm=73S2~b$-iE?KYRZvuK@)G4}l`MdZ=lCk*x_MNAm~b~v^~*PKQfHhg0|b7U zU5(so8XubSZt>TEo&u_%RFn@b&dQ<&W%qchz@SC>4RT4%NaRg>|KgPW$c2+SWOx<8 zcFp{^$ki@V1^sQKIH@bN`Op#r+HmqJUCl{tEX9W=W3OJ1y!A3wkoR5aJs^Cp2g(kI zr~=LB#tkS7jmZR5JC5U|PD!H*e7mUvGlTV<)bgQJLC4EkoYaNm_|T#@i!}k9Z%_p~ zf2ab{Mdlw-t_!CM(rc8Okq0P7Ah&e;gOgIWGbeTTKdPW)$vjT#*ppO&+q;pU0s52o zqb#wb6{p7BRh-mWLVRe!=4xM%+r&@>s*QqefWE2jD3|YggHytNqpv7?4#@x*tsL8q zT>2bU(9%p5~f0oWJK>_Dy|ejXrbBl;asb%82K{z4V_%rfgl*>pcuAooP^ z2l95waO4Gczj2C8cH*RV>Yxg=b?0(Yiv&>xwa-R$1JXwCL)m{r3r-eSS8`G-{-g@J z^i_M17l%*W#K$~<<8+ll$hG#IL@xZ0 zE~pW6<)luveg*JLFc^&7yp=9c&>GE2-MKFi<)X)QLG*|j)18WCYR$fn{|#SxK9Sp{(q16VP)-o|C%t2VD?1?~haEVn4PMX%l4ECcQa3pz z0xm3ge#5Wq;_x*Kv^?~E)Wu2%}HIov=ESTYT9VzzVBlIW>bV@0P;Jxquh~47ZeH` zk3l)g;s(GuR*sWer-?2QRsVrg-EMnM>huS6LBP;ioYa=95&%l)hmHeuw|JvmqRE#Q z>$glEWw+uSfWCy%c;phc$B{Q)qzkgXZsMd4p8Wz~b3l)iTJo~ner<#{w9cZ}d9K-k7@DBEAF!AaxSLS>W%7hDHah00Dwo?Jy2 z_{e|9$<)P;lUgp5E@=OwIR$yaqIf{$@gb@Jr#Ezg_C&rkk!?$-qFkGu4M-DER737> zdJMTmR1Z#y^&2^#RE^r+*Vmd%?xgW~nXXt{4MoSHpGu83|LEckl zAh#}n3&d1J1vCM@E4QLtcCH$y_)iOFqULs-1?Dd;=Ao=GE)US@JXs%kQ3hQQ-Afm^7;WLC z)(xi%#A@bqQrAzo3dq(mz_k5i5XxO)sT0vP1d z1(HH_I5jO>ya?s&({w?|f8#i*ZKv{~sqN~*sXu=`Cv}C$Q$V7nHYc@L99>}CEVcw7 zqv3;c>z)rdV5z^z5@n?jx}f{T zSWfDav3zK;n>ulFyS|Q-TK_j)AhA%3le#gCF374DwFU$$c%y9N`X5fJS!SzI?)ys@ zlrNrWgFN8`UEukaE-;$3iIZA-dj+5+XD%mot{@*;n3?2SfPFMwpwU1V2&!6fQdjM~ z4@kbJx(>O|;Anv9iUIZjxwCXZdlOwypuTWD%8@?l0H?w+oYdN4d}t!p9XQpVU&~3I z_L(m5pQ-7H++yE3fZ}73jesr*FO-XI-{TaMWa@;nYdc&Zrl&Ju6LRrDs-WR1RggJq zqcifL_2mHTD|0p@SNTB|^y*2t0Lp@?g7^xmz(dw@3(AI0_W)AqDz3_ta3y8Qa z>;Z5b;EA%<(swuspEB8ja!ox|kg77?6S<#fD01^Wsz5<_11ELo@-jftnb}^*qd!mu zF4M$!0d#loL0RkpRZuT#;f->J)m=bfyz*}3RxMP4vgTi$diJ_-QkOoW3gU*(--FzJ zO)9|P;wVmP$*)vFlXe?U*#WCLsY6Ps0$V9{KjdomX8`?|h4uj|zHdi4aqe53ybc-r zqip<~Dv%j7j+468F$8&D8dVV9ZO=*VU{DIs44uVEEmTDnRF4x21f*=Q)4MT3TG8nn) zIjW$q*^ZOCT!RlS!FOgja?c{Fz(`#5I6&HF7s@RcsDj)tOCwMYn{^vtzhChLa*Zcc zf#AsBI91s>aZ)EIKL_}9=yFn<>Lvr^f<{CE+MiJc1*7@UA~&q$q;|SW6=?sQ5{+DB z{wY9hh`?z;S|wHBFZUWJ3unU^lod0mg09~(XOI^!3_>1r>>Ez5uWdQ0^(OG4iEo{8 z7I{M!Rgl>~I1UhGvJ++NNUA`kZpk^6dnerjlxTPG z1|3f7992HFP_N+^0CxFQfw~AEntei7HU|Hs}hVQ)dUt zMS)a7blKumlwG860(2eZIjO}`se<|+R6)i(2Ttn1!&HIQ3vEtn<*|HdJx;^Y0j23w zL0k`2;BL75I?4uNRDopmqzvRu<4+*Z-qMFt$j!~1)V6=A0=32ZnaKMisDg@GDNgD{ zB|bDS_b)gZ=U8)6%LwwJwJx1@3whotsv!LRz-)lSlM?ySX0=-#5+C|3*L0Hj#R zaZ>xnQUzvBRDry@JtuX??k9l42U?ueQA7FAoL3FK3(z@F6^MSO3hFeM<)NJJmjehW zo_G(rrNnXMO18Z?bzj`XNnP@lDu|t}$4TvWfGW^`D#=MLG0Gq1M*Gh=Wu;hgQU`ZZ z1vYw93z4e^Qw4p`2RsCnkJ*ND!p0h$Jg+S*LfPmSRUo}U_7U=yP^uueiYf?`w<|_& z@A4R+k*WC@xnLhvP_<}C2_X46Rp9f6Dlnb6^a;vx+p+=e*%L~U7YH0f9%V= zuK-d3R6+9-svu|Nl4_Jg*JT0hE{}hWT>U#$ATYNZr^=uWoYYC>RDrjQ&Ku+=ju!#4 zY2vkjwx4@Y&Y%Agr-&mKZ&7x9Nfl^~n_P!ncylE3nhdHSwbzA{+Rvy8U>-id9=Spd zRnR#>nv=R{>j9LbZ&3v<|5kHS>n?c+5Id>@bss!Zu&*P*HFQEz?B&FH_ns)n97D}cH zs=uw`q)wUh0N{I2tsS}9v(o_i(F4B$Ivm_lE=+xcQ&g8x2g=U+833J-vEPx4R#F9Z zV>@w5-?WaCI^a50VEKC{C$-YT^MLL!(JnwqHB}I+z=!7MYW5Rl{jA#niGIayje8&zOGXK7~|)saOY2a@K1(soT#(1u6xf zX9yHwQb*1_hsbH4$N;ppAJYXQBi`dwYilZqc3Ki$;NPw=5V?g;7;?qHUpRF=b>yTj z9#syASwCkGa@Q+#f!>ed!T|Akdr@u(rVBDFRt!ctNcJAU+DSzOxk@@+(EE!nC|lsl zNgaRm6~N<_fhcmr@o505Eu%T9n=|QxoIbiB)OZaiwOs^Vpk6zD7;*unvw+HN!s39W z+jN2VfOj~VEHxR9vg|3kpsik>lR968FD=6JCr*xe4xH3l!eszqi`kOMYtGOGsUL=o z1o%zcgR=SVCY%%=ESEyLQ}iyN$Vzz>^5}TFz@>#Q(A9L|q!#mg38;UhKN@+)aK5y_ zHKRDGtuE39%3tY%9_`hf)TIG*L0suHS>*0gX8;EFLSq4vDRe>8ce)^ZuCW}-A&2M! z+vjqe)M{h+()t~L;8c-j&q%;Kar4y6lZs)i~6TF321Id5|#PT@C}O+eY< z4_%O#nQF+heB%MZMMI_mY{Yk=tZLJMQ{RQ9>L{0gp$igbDNaZ3xt}gDdO{aS zk96XsZn1j~$W7Lrfjq2(F0j`fp$X6kq6-Ae>4K`!D>ro-Lfz>JRAxfnf#< zkylz@1tcX%b5eV^(gh}3UvZN4x8bC2drTMPkC<+ZJYsDu!12sb!e}KWTYRYIBDp$Q4rQg3cf7IjM{0Jq1J`*5;&kc|jNGjvZzO5ZmN~a(y~o zkkMnl4CO$>T!2;BBy;4-)e*>h#`ob=x@9vbb==KLfcxKhoYV%3uK*-ZNUZ=g)zSso zN?&jaaku8Aw#}gn)C8xkMBcwN22gQopcNqTJzd~6r4}dSor_kXEORdd&?+p)Nu6hL z7o}=3)%nnbe6%>Js~^w>DMN>@0r;-+M%nB40P4QZ<)luZeHjpNK++yy`IIhD8pVg!ZEwX%U6Mi<#CEE3 zQoHFz1N4IjYye19&;^ZSYH-ThxX=;h;A?b&&95;Vk*h8^guE}b1E=z;wVc!m@_cBX zE}EN=8)Z@j(tRS%fR;sGDCZuh3c}u)ZbsRDVm3fy+XNTng14!HDuEuHl1(>qQu{&EXw?s1taF#JvxNX^~AN!=Vo737r9-ik)@S&AjiX8&P#Zd+B%~XMbhIuf`lD>BU zO%Ih0BhMZdfjngOADnD2ICD~~eW42awdQeBSNKx}i6tXL0bY{(Q8u<~#YrZ46(@D; zH>x0Sj#?P<@Pkx=!!yBS0L{_vC<|?PgHv^?Q8>yeT~vXu{@CNl%|fUG`AVvwW9&Lk z>cUMWfT-&;Pat>xO%>=Y6paLk9-|8Cs;Po>1+$YV2e{q_SY|0kAy?|B3c45n#;N3l z6DM`-TdKfq(p*kz{q4yBi8~`s0~!VQp`2ybf>UtxN=|B<2C6_+RrL(=zMZE4<@W?) z0SSZMQ1)E$8YiQ(hG$Wh{zw(HsE>(5p6e5YJgkr^uoqj)Nv&aB3=mA15s$p;GgXj0 zQ{+6rXWvegO&?PQawAL=P;R%q1t>^TxPUyeohoqB`Gu2qpd%->NEua7J8I5FJPHI_;L_ph_VK)HzAAC@bn8t_Z zxO;gf%32R{0m4I-Zz8X;I)OYjo+|Kb+0038uK5z6;HQ5JdFP`mfTH1}IH{x81fcA4 zkt)#rYRyS4Hk%KvK44l7@{H0LK%kV+9e|bnc9fMoCsq++H0K(n$IH?`7sRB)bkq-evrv4~bpZttd$~!AgYTwCxXl6U6 zK0+>kmn!HG5-bK3nr}lnDy9Y}=f;JPQPxqr4iNR0EkRy)pDIWn@*Ssum3ExemglGf zrB9lr$h$S-0VTdeo&sWvr~)@}J~VxsrDZ5fBvJ*9UnV?5o;B+j^5FeFIN3be$Vsg_ z@;RW-PWL(T@?@$Yp+lkq;Hm3}vQZFKAYE?x0_B#``GDLFQ!0^%U8M@_e^Lb+^S5$R z3m%~gswx*$Ay1aO2Jmr~c?B@dpbF%Ase<-}ww%-j$EbqH*BY;pJ57iKXm1@{0}#1I z71Z`q1!*Qr-k|IsNflVsjju(nsLY4fwY?js;yW8SsbdB{1Gp~JsY9-Jnko?gPy8LA zLDd)KOs|hP1?5}Rqiijb2T-w`{2qDlS*oDyBUKPTeG4bG$DS&H;lug=A(tA)ht_N@ z%}Je;Kox|xQU!KeHk{Pz{tp2HCF)JcD@VivlGYCT2=Kl{6_|XZ3S{RjZbrE+kSfS8 z8^=i9pr4o>Fb6z|0z`s<1)nch{0Ob=@K~F7JP^x6jNge0@ z0N|dZ_8qx_U<^RgY+xs#=@eCv{hlfanX>2y%C=Pyjc&*nxClxp_vnZBd_)gN1jql75GYQ z;-ogStpLa;&E=%-_(~NN&X(*0L>-_CoS#w!I-{&OsYTb{2h^pg_9IX4qzVG`2K)n9 z22%w}6;Odn_n3tOk1(lAHm0Kxdu_}B6x@E%1^Np*aFRH>mXo@%iY~~K*BppE*yS9+ zCR0QRpxU<+<-SGlaVkGMmW7JjhZMWuN8u0H$YDh9Z~ya1wdD+CQ8Myj?k|BMayPC(#AN zkZW6|0Yu_Qivwyu(FJKU+HvyVyM~k6;t^e-I9x*ld6&&uKyjk*2tZ8R4wPNB-{GVe zU?PdKcR~({Wxw1T0CS;noYV^D zA;>#V|G=r}KYLE<=&5{ZF1u!NQtRHQ3&e(qO$5|i?nXHyjxGpnUZ#YymBt-_vaix4 z)%t`Hj;RV3piykMnVP*thD2#7Lwyj ztKKwoI`Wk3bb;^hAsPU)g}YFeKSmdHR4<)@a-qU)K$NSZCUWO2x;V!hGaaNpwMSJ6+(TVz65zt1YKZVJIEBEqO=3$-feX_mEB&v6y^8< zHvt|?4M4+bV1UzT^e6nyAkJW@9l$-5E-xHzIe~5e?A1 zJHQDbG-w;j)#f!grNk`UgtBiVRbZwj>x^99`w;Su`&2>U5IaulsFjZa&gV2;kn4P+ z3PfiN*#fBZ^+Gwlh$;vWU+RjorA;#$*Y1Kvu_Il!J9Y;baqJxgBNIa;l(j^b`-|$21p-S z;EBAYk}AlRli{Qeb3TZ&eFjya(YuC|TF~ebpz4^$F67Ct&jNfV4E6??ZuLZ2?iN+h z-fyxS)^u5sul;fsk0Ni(ujYMv6k1CKH+=)|@#X3&v>{zNG zq-kapa$EKD05u=cQ-J;lR6)g1KD5MDX3;2nou>+nKP#R_E;BP6d8^-VobrmDIH|)W zDgX|)b2+Islc)lr_7Smw>e>5HPB}mo_ No_XjK0toGY8>*86sn-GQ{WsRO3w{t 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

    yWWakms!oMjn2SE^zp4 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 zƘ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%0A?pGN%ASjspIG>ML7OPWed{_|7-n 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

    *-xm2I32(izb(yD~~gaI>jb494ohtq5k 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 z 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

    rTD-JbK-WtnZ>02B| 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

    YFQ7V5Ss2duGBKOPvq!Txyjl3mz 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 literal 0 HcmV?d00001 diff --git a/forecasting/__init__.py b/forecasting/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/forecasting/backtest.py b/forecasting/backtest.py new file mode 100644 index 0000000..b78b425 --- /dev/null +++ b/forecasting/backtest.py @@ -0,0 +1,278 @@ +"""Walk-forward backtest of day-ahead price forecasts fed into the battery LP. + + python -m forecasting.backtest # full run: validation -> freeze -> test -> report + python -m forecasting.backtest --reuse-validation # skip tuning, reuse results/validation.json + +Stages +1. Split by time: train = start .. val_start-1, validation = 3 months before the test period, + test = final TEST_DAYS days. During tuning the price matrix is truncated at the test start, + so the test period is not merely unused but physically absent. +2. Validation: every candidate config runs the same walk-forward procedure as the test + (expanding window, retrain every RETRAIN_EVERY_DAYS) over the validation months; the config + with the best validation capture rate is frozen and written to results/validation.json. +3. Test: frozen configs, expanding-window retrain every RETRAIN_EVERY_DAYS days on all data before + the retrain date, then forecast each day of that block one day ahead. +4. Each day: LP on actual prices (perfect foresight) and on each forecast; forecast schedules + are scored at actual prices. Capture rate = sum(realised) / sum(perfect foresight). +""" + +import argparse +import json +import time + +import numpy as np +import pandas as pd + +from forecasting import config as C +from forecasting.data import daily_matrix, gap_report, load_prices +from forecasting.economics import capture_rate, realised_profit, schedule +from forecasting.models import build + +LGBM_GRID = [ + {"transform": t, "objective": o, "num_leaves": nl, "train_start": ts} + for (t, o) in [("identity", "l2"), ("identity", "huber"), ("asinh", "l2")] + for nl in (15, 63) + for ts in ("2019-01-01", "2021-10-01") # all history vs. five-minute-settlement era only +] +LSTM_GRID = [ + {"transform": t, "loss": l, "hidden": h} + for (t, l) in [("identity", "mse"), ("identity", "huber"), ("asinh", "mse")] + for h in (32, 64) +] +GRIDS = {"naive": [{}], "lightgbm": LGBM_GRID, "lstm": LSTM_GRID} +ML_MODELS = ["lightgbm", "lstm"] +FORECAST_MODELS = ["naive", *ML_MODELS] + + +def split(P: pd.DataFrame) -> dict[str, pd.Timestamp]: + last = P.index[-1] + test_start = last - pd.Timedelta(days=C.TEST_DAYS - 1) + val_start = test_start - pd.DateOffset(months=C.VALIDATION_MONTHS) + return {"data_start": P.index[0], "val_start": val_start, "test_start": test_start, "test_end": last} + + +def complete_days(P: pd.DataFrame, start, end) -> pd.DatetimeIndex: + days = P.index[(P.index >= start) & (P.index <= end)] + return days[P.loc[days].notna().all(axis=1).to_numpy()] + + +def walk_forward(name: str, cfg: dict, P: pd.DataFrame, days: pd.DatetimeIndex) -> tuple[dict, list]: + """Expanding-window retrain every RETRAIN_EVERY_DAYS; forecast each day one day ahead.""" + forecasts, fits = {}, [] + block_start = days[0] + while block_start <= days[-1]: + block_end = block_start + pd.Timedelta(days=C.RETRAIN_EVERY_DAYS) + block = days[(days >= block_start) & (days < block_end)] + model = build(name, cfg).fit(P, cutoff=block_start) + trained_through = getattr(model, "trained_through", None) + assert trained_through is None or trained_through < block_start, "training saw a forecast day" + preds = model.predict(P, block) + forecasts.update(zip(block, preds)) + fits.append({ + "retrain_date": block_start.strftime("%Y-%m-%d"), + "trained_through": trained_through.strftime("%Y-%m-%d") if trained_through is not None else None, + "rounds_or_epochs": getattr(model, "num_rounds", getattr(model, "num_epochs", None)), + }) + block_start = block_end + return forecasts, fits + + +def score(P: pd.DataFrame, days, forecasts: dict, pf_cache: dict) -> dict: + realised, perfect, errors = [], [], [] + for d in days: + actual = P.loc[d].to_numpy() + if d not in pf_cache: + s = schedule(actual) + pf_cache[d] = (s, realised_profit(s["charge_mw"], s["discharge_mw"], actual).sum()) + s = schedule(forecasts[d]) + realised.append(realised_profit(s["charge_mw"], s["discharge_mw"], actual).sum()) + perfect.append(pf_cache[d][1]) + errors.append(forecasts[d] - actual) + e = np.concatenate(errors) + return { + "capture_rate": capture_rate(sum(realised), sum(perfect)), + "realised_aud": float(sum(realised)), + "perfect_foresight_aud": float(sum(perfect)), + "mae": float(np.abs(e).mean()), + "rmse": float(np.sqrt((e ** 2).mean())), + } + + +def validate(P: pd.DataFrame, s: dict) -> dict: + P_tune = P[P.index < s["test_start"]] # the test period does not exist during tuning + val_days = complete_days(P_tune, s["val_start"], s["test_start"] - pd.Timedelta(days=1)) + pf_cache, out = {}, {} + for name in FORECAST_MODELS: + candidates = [] + for cfg in GRIDS[name]: + t0 = time.time() + forecasts, _ = walk_forward(name, cfg, P_tune, val_days) + m = score(P_tune, val_days, forecasts, pf_cache) + candidates.append({"config": cfg, **m}) + print(f" [val] {name:8s} {json.dumps(cfg):95s} capture={m['capture_rate']:.3f} " + f"mae={m['mae']:.1f} rmse={m['rmse']:.1f} ({time.time() - t0:.0f}s)") + best = max(candidates, key=lambda c: c["capture_rate"]) + out[name] = {"chosen": best["config"], "candidates": candidates} + return { + "selection_metric": "validation capture rate (aggregate realised / perfect foresight)", + "validation_days": len(val_days), + "validation_period": [val_days[0].strftime("%Y-%m-%d"), val_days[-1].strftime("%Y-%m-%d")], + "models": out, + } + + +def run_test(P: pd.DataFrame, s: dict, chosen: dict) -> tuple[dict, dict, dict]: + test_days = complete_days(P, s["test_start"], s["test_end"]) + forecasts, fits = {}, {} + for name in FORECAST_MODELS: + t0 = time.time() + forecasts[name], fits[name] = walk_forward(name, chosen[name], P, test_days) + print(f" [test] {name} forecasts done ({time.time() - t0:.0f}s)") + + C.DAILY_DIR.mkdir(parents=True, exist_ok=True) + rows = [] + slots = [f"{h:02d}:{m:02d}" for h in range(24) for m in (0, 30)] + for i, d in enumerate(test_days): + actual = P.loc[d].to_numpy() + price_inputs = {"perfect_foresight": actual, **{n: forecasts[n][d] for n in FORECAST_MODELS}} + methods, row = {}, {"date": d.strftime("%Y-%m-%d"), "price_max": float(actual.max()), "price_min": float(actual.min())} + for method, prices in price_inputs.items(): + sch = schedule(prices) + profit = realised_profit(sch["charge_mw"], sch["discharge_mw"], actual) + methods[method] = { + "charge_mw": sch["charge_mw"].tolist(), + "discharge_mw": sch["discharge_mw"].tolist(), + "soc_mwh": sch["soc_mwh"].tolist(), + "cumulative_profit_aud": np.round(np.cumsum(profit), 2).tolist(), + "profit_aud": round(float(profit.sum()), 2), + } + row[f"{method}_aud"] = float(profit.sum()) + if method != "perfect_foresight": + row[f"{method}_abs_err"] = float(np.abs(prices - actual).sum()) + row[f"{method}_sq_err"] = float(((prices - actual) ** 2).sum()) + day_json = { + "date": row["date"], + "intervals": slots, + "actual_price": np.round(actual, 2).tolist(), + "forecast_price": {n: np.round(forecasts[n][d], 2).tolist() for n in FORECAST_MODELS}, + "methods": methods, + } + (C.DAILY_DIR / f"{row['date']}.json").write_text(json.dumps(day_json)) + rows.append(row) + if (i + 1) % 50 == 0: + print(f" [test] scored {i + 1}/{len(test_days)} days") + return pd.DataFrame(rows), forecasts, fits + + +def summarise(daily: pd.DataFrame) -> dict: + n_intervals = len(daily) * C.INTERVALS_PER_DAY + pf = daily["perfect_foresight_aud"].sum() + models = {} + for n in FORECAST_MODELS: + models[n] = { + "capture_rate": float(daily[f"{n}_aud"].sum() / pf), + "realised_aud": float(daily[f"{n}_aud"].sum()), + "mae": float(daily[f"{n}_abs_err"].sum() / n_intervals), + "rmse": float(np.sqrt(daily[f"{n}_sq_err"].sum() / n_intervals)), + "days_with_loss": int((daily[f"{n}_aud"] < 0).sum()), + } + q = pd.PeriodIndex(pd.to_datetime(daily["date"]), freq="Q").astype(str) + quarterly = [] + for quarter, g in daily.groupby(q): + entry = {"quarter": quarter, "days": len(g), "perfect_foresight_aud": float(g["perfect_foresight_aud"].sum())} + for n in FORECAST_MODELS: + entry[f"{n}_capture_rate"] = float(g[f"{n}_aud"].sum() / g["perfect_foresight_aud"].sum()) + quarterly.append(entry) + best_ml = max(ML_MODELS, key=lambda n: models[n]["capture_rate"]) + return {"perfect_foresight_aud": float(pf), "models": models, "quarterly": quarterly, "best_ml_model": best_ml} + + +def day_index(daily: pd.DataFrame, best: str) -> dict: + """Small index for the API/React picker; 'best'/'worst' use the best ML model's daily capture + on days where perfect foresight earned at least $100 (ratios on near-zero days are meaningless).""" + d = daily.copy() + d["best_model_capture"] = d[f"{best}_aud"] / d["perfect_foresight_aud"] + eligible = d[d["perfect_foresight_aud"] >= 100] + cols = ["date", "price_max", "price_min", "perfect_foresight_aud", *[f"{n}_aud" for n in FORECAST_MODELS]] + return { + "best_model": best, + "best_day": eligible.loc[eligible["best_model_capture"].idxmax(), "date"], + "worst_day": eligible.loc[eligible["best_model_capture"].idxmin(), "date"], + "biggest_spike_day": d.loc[d["price_max"].idxmax(), "date"], + "definitions": { + "best_day": f"highest {best} capture rate among days where perfect foresight earned >= $100", + "worst_day": f"lowest {best} capture rate among days where perfect foresight earned >= $100", + "biggest_spike_day": "highest actual 30-minute price", + }, + "days": d[cols].round(2).to_dict(orient="records"), + } + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--reuse-validation", action="store_true", help="reuse results/validation.json instead of re-tuning") + args = parser.parse_args() + np.random.seed(C.SEED) + t_start = time.time() + + df = load_prices() + P = daily_matrix(df) + s = split(P) + print("split:", {k: v.strftime("%Y-%m-%d") for k, v in s.items()}) + + C.RESULTS_DIR.mkdir(parents=True, exist_ok=True) + val_path = C.RESULTS_DIR / "validation.json" + if args.reuse_validation and val_path.exists(): + validation = json.loads(val_path.read_text()) + print("reusing", val_path) + else: + print("validation (test period excluded from the data)...") + validation = validate(P, s) + val_path.write_text(json.dumps(validation, indent=2)) + chosen = {n: validation["models"][n]["chosen"] for n in FORECAST_MODELS} + print("frozen configs:", chosen) + + print("test...") + daily, forecasts, fits = run_test(P, s, chosen) + summary = summarise(daily) + index = day_index(daily, summary["best_ml_model"]) + (C.DAILY_DIR / "index.json").write_text(json.dumps(index)) + + gaps = gap_report(df) + result = { + "generated_at": pd.Timestamp.now().strftime("%Y-%m-%d %H:%M"), + "data": { + "source": "AEMO NEMWeb aggregated price and demand, SA1 (5-min RRP averaged to 30-min; pre-Oct-2021 native 30-min)", + "timezone": "NEM market time (AEST, UTC+10, no daylight saving); intervals labelled by start", + **{k: v for k, v in gaps.items() if k != "days_with_missing_intervals"}, + "n_days_with_missing_intervals": len(gaps["days_with_missing_intervals"]), + }, + "battery": {"capacity_mwh": C.BATTERY_CAPACITY_MWH, "max_mw": C.BATTERY_MAX_MW, + "efficiency": C.BATTERY_EFFICIENCY, "efficiency_applied_to": "charging only (unchanged app LP)", + "start_soc_mwh": 0.0, "interval_hours": C.DT_HOURS}, + "split": { + "train": [s["data_start"].strftime("%Y-%m-%d"), (s["val_start"] - pd.Timedelta(days=1)).strftime("%Y-%m-%d")], + "validation": validation["validation_period"], + "test": [daily["date"].iloc[0], daily["date"].iloc[-1]], + "retrain_every_days": C.RETRAIN_EVERY_DAYS, + }, + "Z_test_days": int(len(daily)), + "chosen_configs": chosen, + "retrains": fits, + **summary, + "X_best_model_capture_pct": round(100 * summary["models"][summary["best_ml_model"]]["capture_rate"]), + "Y_naive_capture_pct": round(100 * summary["models"]["naive"]["capture_rate"]), + "runtime_seconds": round(time.time() - t_start), + } + (C.RESULTS_DIR / "backtest.json").write_text(json.dumps(result, indent=2)) + + from forecasting.report import write_report + write_report(result, validation, daily, forecasts, P) + + print(json.dumps({k: result[k] for k in ("Z_test_days", "best_ml_model", "X_best_model_capture_pct", "Y_naive_capture_pct")})) + for n, m in summary["models"].items(): + print(f" {n:8s} capture={m['capture_rate']:.3f} mae={m['mae']:.1f} rmse={m['rmse']:.1f}") + + +if __name__ == "__main__": + main() diff --git a/forecasting/config.py b/forecasting/config.py new file mode 100644 index 0000000..16e2b44 --- /dev/null +++ b/forecasting/config.py @@ -0,0 +1,30 @@ +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +DATA_DIR = ROOT / "data" +RAW_DIR = DATA_DIR / "raw" +PRICES_PATH = DATA_DIR / "sa1_prices.parquet" +RESULTS_DIR = ROOT / "results" +DAILY_DIR = RESULTS_DIR / "daily" +MODELS_DIR = RESULTS_DIR / "models" + +REGION = "SA1" +# first month of history to download from AEMO NEMWeb +HISTORY_START = "2019-01" + +INTERVALS_PER_DAY = 48 +DT_HOURS = 0.5 + +# battery used for every backtest day: the React app's default sliders + the API's default efficiency +BATTERY_CAPACITY_MWH = 5.0 +BATTERY_MAX_MW = 2.5 +BATTERY_EFFICIENCY = 0.9 + +# walk-forward split (all in NEM market time, AEST) +TEST_DAYS = 365 +VALIDATION_MONTHS = 3 +RETRAIN_EVERY_DAYS = 30 + +SEED = 42 + +METHODS = ["perfect_foresight", "naive", "lightgbm", "lstm"] diff --git a/forecasting/data.py b/forecasting/data.py new file mode 100644 index 0000000..75223ce --- /dev/null +++ b/forecasting/data.py @@ -0,0 +1,133 @@ +"""Historical SA1 spot prices from AEMO NEMWeb, resampled to 30-minute means. + +Why NEMWeb and not Open Electricity: the OE free plan only serves the last 730 days and caps +each 5-minute request to a few days, while the AEMO "Aggregated price and demand" monthly CSVs +go back decades. Both carry the same AEMO dispatch prices (spot-checked: 5-minute values match). + +Conventions +- AEMO SETTLEMENTDATE is the END of the interval, in NEM market time (AEST, UTC+10, no DST). + We relabel every row to its interval START so a day D covers 00:00..23:30 AEST of D. +- 5-minute rows (from 1 Oct 2021, five-minute settlement) are averaged into 30-minute buckets, + the same mean-resample the live pipeline uses. Older files are already 30-minute. + +Run: python -m forecasting.data (downloads missing months, writes data/sa1_prices.parquet) +""" + +import io +import json +import time +from datetime import date + +import pandas as pd +import requests + +from forecasting.config import HISTORY_START, PRICES_PATH, RAW_DIR, REGION + +URL = "https://www.aemo.com.au/aemo/data/nem/priceanddemand/PRICE_AND_DEMAND_{ym}_{region}.csv" + + +def _months(start: str, end: date) -> list[str]: + return [p.strftime("%Y%m") for p in pd.period_range(start, end.strftime("%Y-%m"), freq="M")] + + +def download_month(ym: str, force: bool = False) -> pd.DataFrame | None: + RAW_DIR.mkdir(parents=True, exist_ok=True) + path = RAW_DIR / f"PRICE_AND_DEMAND_{ym}_{REGION}.csv" + if force or not path.exists(): + r = requests.get(URL.format(ym=ym, region=REGION), headers={"User-Agent": "Mozilla/5.0"}, timeout=120) + if r.status_code != 200 or not r.text.startswith("REGION"): + print(f" {ym}: not available (HTTP {r.status_code})") + return None + path.write_text(r.text) + time.sleep(0.5) # be polite to NEMWeb + return pd.read_csv(path) + + +def to_30min(raw: pd.DataFrame) -> pd.DataFrame: + df = raw.rename(columns={"SETTLEMENTDATE": "end", "RRP": "price", "TOTALDEMAND": "demand"}) + df["end"] = pd.to_datetime(df["end"], format="%Y/%m/%d %H:%M:%S") + df = df.sort_values("end").drop_duplicates("end") + + # interval length from the gap to the previous row: 5 min after 5MS, 30 min before it + length = df["end"].diff().dt.total_seconds().div(60) + length = length.where(length.isin([5, 30])).bfill().fillna(5) + df["start"] = df["end"] - pd.to_timedelta(length, unit="min") + + out = ( + df.set_index("start")[["price", "demand"]] + .resample("30min") + .agg(["mean", "count"]) + ) + return pd.DataFrame({ + "price": out[("price", "mean")], + "demand": out[("demand", "mean")], + "n_obs": out[("price", "count")], + }) + + +def build(force_current_month: bool = True) -> pd.DataFrame: + today = date.today() + frames = [] + for ym in _months(HISTORY_START, today): + is_current = ym == today.strftime("%Y%m") + raw = download_month(ym, force=force_current_month and is_current) + if raw is not None: + frames.append(raw) + + df = to_30min(pd.concat(frames, ignore_index=True)) + + # keep whole AEST days only, and drop today's (still incomplete) day + first_day = df.index.min().ceil("D") + last_day = min((df.index.max() + pd.Timedelta(minutes=30)).floor("D") - pd.Timedelta(days=1), + pd.Timestamp(today) - pd.Timedelta(days=1)) + full_index = pd.date_range(first_day, last_day + pd.Timedelta(hours=23, minutes=30), freq="30min", name="interval_start") + df = df.reindex(full_index) + df["n_obs"] = df["n_obs"].fillna(0).astype(int) + # buckets with no observations at all stay NaN (mean of nothing); they are reported, never invented + df.loc[df["n_obs"] == 0, ["price", "demand"]] = float("nan") + return df + + +def gap_report(df: pd.DataFrame) -> dict: + missing = df["price"].isna() + expected_obs = pd.Series(6, index=df.index).where(df.index >= pd.Timestamp("2021-10-01 04:00"), 1) + partial = (df["n_obs"] > 0) & (df["n_obs"] < expected_obs) + days_with_missing = sorted({d.strftime("%Y-%m-%d") for d in df.index[missing].normalize()}) + return { + "start": df.index.min().strftime("%Y-%m-%d %H:%M"), + "end": df.index.max().strftime("%Y-%m-%d %H:%M"), + "rows": int(len(df)), + "days": int(len(df) // 48), + "missing_30min_intervals": int(missing.sum()), + "partial_30min_intervals": int(partial.sum()), + "days_with_missing_intervals": days_with_missing, + "price_min": float(df["price"].min()), + "price_max": float(df["price"].max()), + "gap_handling": ( + "30-min buckets are the mean of whatever 5-min observations exist (partial buckets counted above). " + "Buckets with no observations stay NaN and are never filled in the stored data. Days with any NaN " + "price are excluded as backtest target days; as model inputs, LightGBM takes NaN natively and the " + "LSTM forward-fills." + ), + } + + +def load_prices() -> pd.DataFrame: + return pd.read_parquet(PRICES_PATH) + + +def daily_matrix(df: pd.DataFrame, column: str = "price") -> pd.DataFrame: + """Rows = AEST calendar days, columns = 48 half-hour intervals (0 = 00:00-00:30).""" + s = df[column] + out = pd.DataFrame({"day": s.index.normalize(), "slot": s.index.hour * 2 + s.index.minute // 30, "v": s.values}) + return out.pivot(index="day", columns="slot", values="v") + + +if __name__ == "__main__": + df = build() + PRICES_PATH.parent.mkdir(parents=True, exist_ok=True) + df.to_parquet(PRICES_PATH) + report = gap_report(df) + shown = {k: (v if k != "days_with_missing_intervals" else f"{len(v)} days: {v[:10]}{' ...' if len(v) > 10 else ''}") for k, v in report.items()} + print(json.dumps(shown, indent=2)) + print(f"saved {PRICES_PATH}") diff --git a/forecasting/economics.py b/forecasting/economics.py new file mode 100644 index 0000000..8ddfc60 --- /dev/null +++ b/forecasting/economics.py @@ -0,0 +1,30 @@ +"""Turn a price vector into a battery schedule with the app's own LP, then score it on actual prices.""" + +from datetime import datetime, timedelta + +import numpy as np + +from forecasting.config import BATTERY_CAPACITY_MWH, BATTERY_EFFICIENCY, BATTERY_MAX_MW, DT_HOURS +from main import BatterySpecs, MarketInterval, calculate_optimal_dispatch + +BATTERY = BatterySpecs(capacity_mwh=BATTERY_CAPACITY_MWH, max_mw=BATTERY_MAX_MW, efficiency=BATTERY_EFFICIENCY) + + +def schedule(prices, battery: BatterySpecs = BATTERY) -> dict[str, np.ndarray]: + """Run the unchanged LP from main.py on `prices` (forecast or actual).""" + t0 = datetime(2000, 1, 1) + market = [MarketInterval(timestamp=t0 + timedelta(minutes=30 * i), price_aud_mwh=float(p)) for i, p in enumerate(prices)] + result = calculate_optimal_dispatch(battery, market) + if result["optimization_status"] != "Optimal": + raise RuntimeError(f"LP status {result['optimization_status']}") + rows = result["schedule"] + return {k: np.array([r[k] for r in rows]) for k in ("charge_mw", "discharge_mw", "soc_mwh")} + + +def realised_profit(charge, discharge, actual_prices) -> np.ndarray: + """Per-interval AUD earned by executing (charge, discharge) at the ACTUAL prices.""" + return (np.asarray(discharge) - np.asarray(charge)) * np.asarray(actual_prices) * DT_HOURS + + +def capture_rate(realised_total: float, perfect_total: float) -> float: + return realised_total / perfect_total diff --git a/forecasting/features.py b/forecasting/features.py new file mode 100644 index 0000000..8956885 --- /dev/null +++ b/forecasting/features.py @@ -0,0 +1,86 @@ +"""Day-ahead features. Decision time is the end of day D-1: every feature for target day D +uses only rows of the daily price matrix strictly before D, plus calendar facts about D itself +(which are known in advance). tests/test_forecasting.py enforces this.""" + +from functools import lru_cache + +import holidays +import numpy as np +import pandas as pd + +from forecasting.config import INTERVALS_PER_DAY + +LAG_DAYS = (1, 2, 7) +LSTM_LOOKBACK_DAYS = 7 + + +@lru_cache(maxsize=None) +def _sa_holidays(year: int) -> frozenset: + return frozenset(holidays.Australia(subdiv="SA", years=year).keys()) + + +def is_sa_holiday(day: pd.Timestamp) -> int: + return int(day.date() in _sa_holidays(day.year)) + + +def check_contiguous(P: pd.DataFrame) -> None: + expected = pd.date_range(P.index[0], P.index[-1], freq="D") + if len(expected) != len(P) or not (P.index == expected).all(): + raise ValueError("daily price matrix must have one row per calendar day") + + +def lgbm_features(P: pd.DataFrame, days: pd.DatetimeIndex) -> pd.DataFrame: + """One row per (target day, half-hour slot). P = daily price matrix (days x 48).""" + check_contiguous(P) + pos = P.index.get_indexer(days) + if (pos < max(LAG_DAYS)).any(): + raise ValueError(f"need {max(LAG_DAYS)} days of history before each target day") + values = P.to_numpy() + + n = len(days) + slot = np.tile(np.arange(INTERVALS_PER_DAY), n) + rep = lambda a: np.repeat(np.asarray(a), INTERVALS_PER_DAY) + + feats = {"slot": slot} + for lag in LAG_DAYS: + feats[f"lag_{lag}d"] = values[pos - lag].ravel() + + prev = values[pos - 1] # day D-1, the last complete day at decision time + feats["d1_mean"] = rep(np.nanmean(prev, axis=1)) + feats["d1_std"] = rep(np.nanstd(prev, axis=1)) + feats["d1_min"] = rep(np.nanmin(prev, axis=1)) + feats["d1_max"] = rep(np.nanmax(prev, axis=1)) + + feats["dow"] = rep(days.dayofweek) + feats["month"] = rep(days.month) + feats["holiday"] = rep([is_sa_holiday(d) for d in days]) + + index = pd.MultiIndex.from_arrays([np.repeat(days, INTERVALS_PER_DAY), slot], names=["day", "slot"]) + return pd.DataFrame(feats, index=index) + + +def calendar_vector(day: pd.Timestamp) -> np.ndarray: + """Calendar features of the target day (known in advance): day-of-week one-hot, month sin/cos, holiday.""" + dow = np.zeros(7) + dow[day.dayofweek] = 1.0 + angle = 2 * np.pi * (day.month - 1) / 12 + return np.concatenate([dow, [np.sin(angle), np.cos(angle), is_sa_holiday(day)]]) + + +def lstm_inputs(P: pd.DataFrame, days: pd.DatetimeIndex) -> tuple[np.ndarray, np.ndarray]: + """Sequence input (n, 7, 48 + 2): the 7 days before D, each step = that day's 48 prices plus its + day-of-week sin/cos. Calendar input (n, 10) for day D. Prices are raw here; the model transforms them.""" + check_contiguous(P) + pos = P.index.get_indexer(days) + if (pos < LSTM_LOOKBACK_DAYS).any(): + raise ValueError(f"need {LSTM_LOOKBACK_DAYS} days of history before each target day") + values = P.ffill().to_numpy() # gaps (none in the current cache) are forward-filled for the LSTM only + + seq, cal = [], [] + for p, day in zip(pos, days): + window = values[p - LSTM_LOOKBACK_DAYS:p] + window_days = P.index[p - LSTM_LOOKBACK_DAYS:p] + angle = 2 * np.pi * window_days.dayofweek.to_numpy() / 7 + seq.append(np.column_stack([window, np.sin(angle), np.cos(angle)])) + cal.append(calendar_vector(day)) + return np.asarray(seq, dtype=np.float32), np.asarray(cal, dtype=np.float32) diff --git a/forecasting/models.py b/forecasting/models.py new file mode 100644 index 0000000..2358b11 --- /dev/null +++ b/forecasting/models.py @@ -0,0 +1,196 @@ +"""Day-ahead price models. Each model is fitted on target days strictly before a cutoff and then +forecasts any later day D from the daily price matrix, reading only rows before D. + +fit(P, cutoff): every training target day is < cutoff. The last ES_DAYS of that window are held out +for early stopping, then the model is refitted on the whole window with the chosen number of +boosting rounds / epochs. The test period is never visible to fit().""" + +import copy +import os + +import lightgbm as lgb +import numpy as np +import pandas as pd +import torch +from torch import nn + +from forecasting.config import SEED +from forecasting.features import LAG_DAYS, LSTM_LOOKBACK_DAYS, lgbm_features, lstm_inputs + +ES_DAYS = 60 # early-stopping split, taken from the end of each training window +ASINH_SCALE = 50.0 # $/MWh; asinh is ~linear below this and ~log above it + + +def forward(y: np.ndarray, transform: str) -> np.ndarray: + return np.arcsinh(y / ASINH_SCALE) if transform == "asinh" else y + + +def inverse(y: np.ndarray, transform: str) -> np.ndarray: + return np.sinh(y) * ASINH_SCALE if transform == "asinh" else y + + +def training_days(P: pd.DataFrame, cutoff: pd.Timestamp, lookback: int, start: pd.Timestamp | None = None) -> pd.DatetimeIndex: + """Target days usable for training: complete, enough history, and strictly before cutoff.""" + first = P.index[0] + pd.Timedelta(days=lookback) + if start is not None: + first = max(first, start) + days = P.index[(P.index >= first) & (P.index < cutoff)] + return days[P.loc[days].notna().all(axis=1).to_numpy()] + + +class NaiveModel: + """price(D, t) = price(D-1, t).""" + + name = "naive" + + def fit(self, P, cutoff): + return self + + def predict(self, P: pd.DataFrame, days: pd.DatetimeIndex) -> np.ndarray: + pos = P.index.get_indexer(days) + return P.to_numpy()[pos - 1] + + +class LightGBMModel: + name = "lightgbm" + + def __init__(self, transform="identity", objective="l2", num_leaves=31, train_start=None, learning_rate=0.05): + self.transform = transform + self.objective = objective + self.num_leaves = num_leaves + self.train_start = pd.Timestamp(train_start) if train_start else None + self.params = { + "objective": "huber" if objective == "huber" else "regression", + "learning_rate": learning_rate, + "num_leaves": num_leaves, + "min_data_in_leaf": 100, + "feature_fraction": 0.9, + "bagging_fraction": 0.8, + "bagging_freq": 1, + "lambda_l2": 1.0, + "seed": SEED, + "deterministic": True, + "force_row_wise": True, + "num_threads": min(8, os.cpu_count() or 1), + "verbose": -1, + } + if objective == "huber": + # huber delta in target units: $/MWh for raw prices, ~1 for asinh + self.params["alpha"] = 50.0 if transform == "identity" else 1.0 + + def _xy(self, P, days): + X = lgbm_features(P, days) + y = forward(P.loc[days].to_numpy().ravel(), self.transform) + return X, y + + def fit(self, P: pd.DataFrame, cutoff: pd.Timestamp): + days = training_days(P, cutoff, max(LAG_DAYS), self.train_start) + fit_days, es_days = days[:-ES_DAYS], days[-ES_DAYS:] + X_fit, y_fit = self._xy(P, fit_days) + X_es, y_es = self._xy(P, es_days) + probe = lgb.train( + self.params, lgb.Dataset(X_fit, y_fit), num_boost_round=3000, + valid_sets=[lgb.Dataset(X_es, y_es)], + callbacks=[lgb.early_stopping(100, verbose=False)], + ) + self.num_rounds = max(probe.best_iteration, 1) + X, y = self._xy(P, days) + self.booster = lgb.train(self.params, lgb.Dataset(X, y), num_boost_round=self.num_rounds) + self.trained_through = days[-1] + return self + + def predict(self, P: pd.DataFrame, days: pd.DatetimeIndex) -> np.ndarray: + pred = self.booster.predict(lgbm_features(P, days)) + return inverse(pred, self.transform).reshape(len(days), -1) + + +class _Net(nn.Module): + def __init__(self, n_seq_features: int, n_cal: int, hidden: int, n_out: int = 48): + super().__init__() + self.lstm = nn.LSTM(n_seq_features, hidden, batch_first=True) + self.head = nn.Sequential(nn.Linear(hidden + n_cal, 128), nn.ReLU(), nn.Linear(128, n_out)) + + def forward(self, seq, cal): + _, (h, _) = self.lstm(seq) + return self.head(torch.cat([h[-1], cal], dim=1)) + + +class LSTMModel: + name = "lstm" + + def __init__(self, transform="asinh", loss="mse", hidden=32, max_epochs=300, patience=25, batch_size=64, lr=1e-3): + self.transform = transform + self.loss = loss + self.hidden = hidden + self.max_epochs = max_epochs + self.patience = patience + self.batch_size = batch_size + self.lr = lr + + def _prep(self, P, days): + seq, cal = lstm_inputs(P, days) + seq[:, :, :48] = (forward(seq[:, :, :48], self.transform) - self.mu) / self.sigma + return torch.from_numpy(seq), torch.from_numpy(cal) + + def _target(self, P, days): + y = (forward(P.loc[days].to_numpy(), self.transform) - self.mu) / self.sigma + return torch.from_numpy(y.astype(np.float32)) + + def _train(self, seq, cal, y, epochs, val=None): + torch.manual_seed(SEED) + net = _Net(seq.shape[2], cal.shape[1], self.hidden) + opt = torch.optim.Adam(net.parameters(), lr=self.lr) + loss_fn = nn.HuberLoss(delta=1.0) if self.loss == "huber" else nn.MSELoss() + gen = torch.Generator().manual_seed(SEED) + best, best_epoch, best_state = float("inf"), 0, None + for epoch in range(1, epochs + 1): + net.train() + for idx in torch.randperm(len(y), generator=gen).split(self.batch_size): + opt.zero_grad() + loss = loss_fn(net(seq[idx], cal[idx]), y[idx]) + loss.backward() + nn.utils.clip_grad_norm_(net.parameters(), 1.0) + opt.step() + if val is not None: + net.eval() + with torch.no_grad(): + v = loss_fn(net(val[0], val[1]), val[2]).item() + if v < best: + best, best_epoch, best_state = v, epoch, copy.deepcopy(net.state_dict()) + elif epoch - best_epoch >= self.patience: + break + if val is not None: + net.load_state_dict(best_state) + return net, best_epoch + + def fit(self, P: pd.DataFrame, cutoff: pd.Timestamp): + torch.set_num_threads(min(8, os.cpu_count() or 1)) + days = training_days(P, cutoff, LSTM_LOOKBACK_DAYS) + fit_days, es_days = days[:-ES_DAYS], days[-ES_DAYS:] + # scaling statistics come from the training targets only + t = forward(P.loc[fit_days].to_numpy(), self.transform) + self.mu, self.sigma = float(t.mean()), float(t.std()) + + seq, cal = self._prep(P, fit_days) + es_seq, es_cal = self._prep(P, es_days) + _, self.num_epochs = self._train(seq, cal, self._target(P, fit_days), self.max_epochs, + val=(es_seq, es_cal, self._target(P, es_days))) + self.num_epochs = max(self.num_epochs, 1) + + t = forward(P.loc[days].to_numpy(), self.transform) + self.mu, self.sigma = float(t.mean()), float(t.std()) + seq, cal = self._prep(P, days) + self.net, _ = self._train(seq, cal, self._target(P, days), self.num_epochs) + self.trained_through = days[-1] + return self + + def predict(self, P: pd.DataFrame, days: pd.DatetimeIndex) -> np.ndarray: + self.net.eval() + seq, cal = self._prep(P, days) + with torch.no_grad(): + out = self.net(seq, cal).numpy().astype(np.float64) + return inverse(out * self.sigma + self.mu, self.transform) + + +def build(name: str, config: dict): + return {"naive": NaiveModel, "lightgbm": LightGBMModel, "lstm": LSTMModel}[name](**config) diff --git a/forecasting/report.py b/forecasting/report.py new file mode 100644 index 0000000..3777ef7 --- /dev/null +++ b/forecasting/report.py @@ -0,0 +1,161 @@ +"""Writes results/REPORT.md and the typical-day chart from the backtest outputs.""" + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd + +from forecasting import config as C + +COLOURS = {"perfect_foresight": "#111827", "naive": "#f59e0b", "lightgbm": "#2563eb", "lstm": "#db2777"} +LABELS = {"perfect_foresight": "Actual (perfect foresight)", "naive": "Naive (yesterday)", "lightgbm": "LightGBM", "lstm": "LSTM"} + + +def typical_day(daily: pd.DataFrame) -> str: + """The test day whose perfect-foresight profit is closest to the median.""" + pf = daily["perfect_foresight_aud"] + return daily.loc[(pf - pf.median()).abs().idxmin(), "date"] + + +def plot_day(day: str, forecasts: dict, P: pd.DataFrame, path): + d = pd.Timestamp(day) + x = np.arange(C.INTERVALS_PER_DAY) / 2 + fig, ax = plt.subplots(figsize=(10, 4.5)) + ax.plot(x, P.loc[d].to_numpy(), color=COLOURS["perfect_foresight"], lw=2.2, label=LABELS["perfect_foresight"]) + for n in ("naive", "lightgbm", "lstm"): + ax.plot(x, forecasts[n][d], color=COLOURS[n], lw=1.6, ls="--" if n == "naive" else "-", label=LABELS[n]) + ax.axhline(0, color="#9ca3af", lw=0.8) + ax.set_xlim(0, 23.5) + ax.set_xticks(range(0, 24, 3), [f"{h:02d}:00" for h in range(0, 24, 3)]) + ax.set_xlabel("Interval start (AEST)") + ax.set_ylabel("SA1 spot price (AUD/MWh)") + ax.set_title(f"Typical test day {day}: actual vs day-ahead forecasts") + ax.grid(alpha=0.25) + ax.legend(frameon=False, ncol=2) + fig.tight_layout() + fig.savefig(path, dpi=130) + plt.close(fig) + + +def pct(x: float) -> str: + return f"{100 * x:.1f}%" + + +def write_report(result: dict, validation: dict, daily: pd.DataFrame, forecasts: dict, P: pd.DataFrame): + day = typical_day(daily) + plot_day(day, forecasts, P, C.RESULTS_DIR / "typical_day.png") + row = daily.set_index("date").loc[day] + + m = result["models"] + best = result["best_ml_model"] + data, bat, sp = result["data"], result["battery"], result["split"] + ml_ranked = sorted(["lightgbm", "lstm"], key=lambda n: -m[n]["capture_rate"]) + + lines = [ + "# Day-ahead price forecasting backtest (SA1)", + "", + f"Generated {result['generated_at']} by `python -m forecasting.backtest` from `data/sa1_prices.parquet`.", + "", + "## Headline", + "", + f"Over **{result['Z_test_days']} test days** ({sp['test'][0]} to {sp['test'][1]}), scheduling the battery on " + f"**{LABELS[best]}** forecasts captured **{pct(m[best]['capture_rate'])}** of perfect-foresight arbitrage revenue, " + f"vs **{pct(m['naive']['capture_rate'])}** for the naive same-time-yesterday baseline. " + f"{LABELS[ml_ranked[0]]} beat {LABELS[ml_ranked[1]]} " + f"({pct(m[ml_ranked[0]]['capture_rate'])} vs {pct(m[ml_ranked[1]]['capture_rate'])}).", + "", + "## Data", + "", + f"- Source: {data['source']}", + f"- Range: {data['start']} to {data['end']} ({data['days']} days, {data['rows']:,} half-hour rows), {data['timezone']}", + f"- Gaps: {data['missing_30min_intervals']} missing and {data['partial_30min_intervals']} partially observed half-hours. {data['gap_handling']}", + f"- Price range: {data['price_min']:,.2f} to {data['price_max']:,.2f} AUD/MWh", + "- Open Electricity (used by the live app) only serves the last 730 days on the current plan, so history comes " + "from AEMO NEMWeb; the same 5-minute prices were spot-checked against Open Electricity.", + "", + "## Battery (fixed for every day)", + "", + f"- Capacity {bat['capacity_mwh']} MWh, max charge/discharge {bat['max_mw']} MW, efficiency {bat['efficiency']} " + f"({bat['efficiency_applied_to']}), starts each day empty, {bat['interval_hours']} h intervals.", + "- These are the React app's default sliders and the API's default efficiency. The LP is `calculate_optimal_dispatch()` " + "from `main.py`, unchanged.", + "", + "## Method", + "", + f"- Train: {sp['train'][0]} to {sp['train'][1]}. Validation: {sp['validation'][0]} to {sp['validation'][1]} " + f"({validation['validation_days']} days). Test: {sp['test'][0]} to {sp['test'][1]}.", + "- Decision at the end of day D-1; all 48 half-hour prices of day D are forecast from data up to D-1 only " + "(enforced by `tests/test_forecasting.py`).", + f"- Expanding window: each model is retrained every {sp['retrain_every_days']} days on all data before the retrain " + "date (early stopping uses the last 60 days of that training window), then forecasts each day of the block one day ahead.", + "- Hyperparameters, target transform / loss and training start were chosen on the validation period by capture " + "rate, with the test period removed from the data, then frozen.", + "- Each test day: LP on actual prices gives perfect foresight PF_D; LP on each forecast gives a schedule which is " + "scored at actual prices, `sum((d - c) * actual * 0.5)`. Capture rate = sum(realised) / sum(PF).", + "", + "Frozen configurations:", + "", + ] + for n in ("lightgbm", "lstm"): + lines.append(f"- {LABELS[n]}: `{result['chosen_configs'][n]}`") + lines += [ + "", + "## Results (test period)", + "", + f"Z = {result['Z_test_days']} days. Perfect-foresight revenue over the period: ${result['perfect_foresight_aud']:,.0f}.", + "", + "| Model | Capture rate | Realised revenue (AUD) | MAE (AUD/MWh) | RMSE (AUD/MWh) | Days with a loss |", + "|---|---:|---:|---:|---:|---:|", + ] + for n in ("naive", "lightgbm", "lstm"): + lines.append(f"| {LABELS[n]} | {pct(m[n]['capture_rate'])} | {m[n]['realised_aud']:,.0f} | {m[n]['mae']:.1f} | " + f"{m[n]['rmse']:.1f} | {m[n]['days_with_loss']} |") + lines += [ + "", + "Capture rate by quarter:", + "", + "| Quarter | Days | Perfect foresight (AUD) | Naive | LightGBM | LSTM |", + "|---|---:|---:|---:|---:|---:|", + ] + for q in result["quarterly"]: + lines.append(f"| {q['quarter']} | {q['days']} | {q['perfect_foresight_aud']:,.0f} | {pct(q['naive_capture_rate'])} | " + f"{pct(q['lightgbm_capture_rate'])} | {pct(q['lstm_capture_rate'])} |") + lines += [ + "", + "Validation results (used for selection; test period not involved):", + "", + "| Model | Config | Val capture | Val MAE |", + "|---|---|---:|---:|", + ] + for n in ("naive", "lightgbm", "lstm"): + for c in sorted(validation["models"][n]["candidates"], key=lambda c: -c["capture_rate"]): + chosen = " (chosen)" if c["config"] == validation["models"][n]["chosen"] else "" + lines.append(f"| {LABELS[n]}{chosen} | `{c['config']}` | {pct(c['capture_rate'])} | {c['mae']:.1f} |") + lines += [ + "", + "## Typical test day", + "", + f"![Typical test day](typical_day.png)", + "", + f"{day} is the test day whose perfect-foresight profit (${row['perfect_foresight_aud']:,.0f}) is closest to the " + f"median. Realised that day: naive ${row['naive_aud']:,.0f}, LightGBM ${row['lightgbm_aud']:,.0f}, " + f"LSTM ${row['lstm_aud']:,.0f}.", + "", + "## Limitations", + "", + "This is a single small battery acting as a price taker in one region (SA1) on energy arbitrage only: no FCAS, " + "no network losses, no degradation cost and no cycling limit. The LP is the app's unchanged formulation, so efficiency " + "is applied on charge only, the battery starts every day empty with no end-of-day state-of-charge target, and it may " + "charge and discharge in the same interval (which burns energy when prices are negative). Prices are 30-minute " + "averages of the 5-minute settlement price, so intra-half-hour spikes are smoothed out and the true opportunity " + "is larger than measured. The schedule is fixed once per day at the end of D-1 and never re-optimised intraday, " + "whereas a real operator rebids through the day using AEMO pre-dispatch forecasts, demand, weather and " + "interconnector data, none of which are used here (features are lagged prices and calendar only). " + "Forecasts are point forecasts with no uncertainty, so the schedule cannot hedge against spikes. Results come from " + f"one {result['Z_test_days']}-day test window. SA1 revenue is dominated by a few extreme-price days, so the capture " + "rate moves a lot from quarter to quarter (table above) and should be read as indicative rather than precise.", + "", + ] + (C.RESULTS_DIR / "REPORT.md").write_text("\n".join(lines)) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 25dd2bd..ad6f5fc 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -91,6 +91,7 @@ export default function App() { Battery Dispatch

    SA1 Region Optimization

    +
    Forecast backtest →
    diff --git a/frontend/src/Backtest.tsx b/frontend/src/Backtest.tsx new file mode 100644 index 0000000..6f4dfed --- /dev/null +++ b/frontend/src/Backtest.tsx @@ -0,0 +1,286 @@ +import { Loader2 } from 'lucide-react'; +import { useEffect, useMemo, useState } from 'react'; +import { + Bar, + BarChart, + CartesianGrid, + Cell, + LabelList, + Line, + LineChart, + ReferenceLine, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from 'recharts'; +import type { BacktestDay, BacktestIndex, BacktestMethod, ForecastMethod } from './types'; + +const BASE_URL = import.meta.env.VITE_API_BASE_URL || "http://127.0.0.1:8000/api/v1"; + +// one colour per method, used in every chart; perfect foresight is always the dashed line +const METHODS: BacktestMethod[] = ["perfect_foresight", "naive", "lightgbm", "lstm"]; +const FORECASTS: ForecastMethod[] = ["naive", "lightgbm", "lstm"]; +const COLOUR: Record = { + perfect_foresight: "#e4e4e7", + naive: "#f59e0b", + lightgbm: "#3b82f6", + lstm: "#ec4899", +}; +const LABEL: Record = { + perfect_foresight: "Perfect foresight", + naive: "Naive", + lightgbm: "LightGBM", + lstm: "LSTM", +}; +const DASH: Partial> = { perfect_foresight: "6 4" }; + +const aud = (v: number) => `${v < 0 ? '-' : ''}$${Math.abs(v).toLocaleString('en-AU', { maximumFractionDigits: 0 })}`; +const price = (v: number) => `${v < 0 ? '-' : ''}$${Math.abs(Math.round(v))}`; +const tooltipStyle = { + contentStyle: { backgroundColor: '#18181b', borderColor: '#27272a', borderRadius: '8px', fontSize: '12px' }, + itemStyle: { color: '#fafafa' }, +}; + +function Legend() { + return ( +
    + {METHODS.map((m) => ( + + + + + {m === "perfect_foresight" ? "Perfect foresight / actual price" : LABEL[m]} + + ))} +
    + ); +} + +function StackedChart({ title, data, keys, unit, height, showXAxis, domain }: { + title: string; + data: Record[]; + keys: Record; + unit: (v: number) => string; + height: number; + showXAxis: boolean; + domain?: [number, number]; +}) { + return ( +
    +

    {title}

    + + + + + + unit(Number(v))} /> + {METHODS.map((m) => ( + + ))} + + +
    + ); +} + +export default function Backtest() { + const [index, setIndex] = useState(null); + const [selected, setSelected] = useState(""); + const [day, setDay] = useState(null); + const [error, setError] = useState(""); + const [zoomPrice, setZoomPrice] = useState(false); + + useEffect(() => { + fetch(`${BASE_URL}/backtest/days`) + .then((r) => (r.ok ? r.json() : Promise.reject(new Error(`HTTP ${r.status}`)))) + .then((idx: BacktestIndex) => { + setIndex(idx); + setSelected(idx.best_day); + }) + .catch((e) => setError(`Could not load backtest results (${e.message}).`)); + }, []); + + useEffect(() => { + if (!selected) return; + fetch(`${BASE_URL}/backtest/day/${selected}`) + .then((r) => (r.ok ? r.json() : Promise.reject(new Error(`HTTP ${r.status}`)))) + .then(setDay) + .catch((e) => setError(`Could not load ${selected} (${e.message}).`)); + }, [selected]); + + const rows = useMemo(() => { + if (!day) return []; + return day.intervals.map((time, i) => { + const row: Record = { time, price_perfect_foresight: day.actual_price[i] }; + for (const f of FORECASTS) row[`price_${f}`] = day.forecast_price[f][i]; + for (const m of METHODS) { + row[`soc_${m}`] = day.methods[m].soc_mwh[i]; + row[`cum_${m}`] = day.methods[m].cumulative_profit_aud[i]; + } + return row; + }); + }, [day]); + + const captureBars = useMemo(() => { + if (!index) return []; + return FORECASTS.map((m) => ({ + method: m, + label: LABEL[m], + capture: Math.round(index.summary.models[m].capture_rate * 1000) / 10, + })); + }, [index]); + + // zoomed price axis: fit the forecasts and the bulk of actual prices, letting rare spikes run off the top + const zoomDomain = useMemo((): [number, number] | undefined => { + if (!day) return undefined; + const sorted = [...day.actual_price].sort((a, b) => a - b); + const p90 = sorted[Math.floor(0.9 * (sorted.length - 1))]; + const all = [...day.actual_price, ...FORECASTS.flatMap((f) => day.forecast_price[f])]; + const hi = Math.max(p90, ...FORECASTS.flatMap((f) => day.forecast_price[f])); + return [Math.floor(Math.min(0, ...all) / 50) * 50, Math.ceil((hi * 1.15) / 50) * 50]; + }, [day]); + + const dates = index?.days.map((d) => d.date) ?? []; + const keysFor = (prefix: string) => + Object.fromEntries(METHODS.map((m) => [m, `${prefix}_${m}`])) as Record; + + const pickDate = (value: string) => { + if (dates.includes(value)) { + setError(""); + setSelected(value); + } + }; + + return ( +
    + {/* LEFT SIDEBAR */} +
    +
    + ← Live simulation +

    Forecast Backtest

    +

    + SA1 day-ahead forecasts scheduled by the same LP, scored on actual prices +

    +
    + + {index && ( + <> +
    +

    Test days: {index.summary.Z_test_days}

    +

    Period: {index.summary.split.test[0]} → {index.summary.split.test[1]}

    +

    Battery: {index.summary.battery.capacity_mwh} MWh / {index.summary.battery.max_mw} MW / {index.summary.battery.efficiency * 100}%

    +
    + +
    + + pickDate(e.target.value)} + className="w-full bg-zinc-900 border border-zinc-800 rounded-lg px-3 py-2 text-sm text-zinc-100 [color-scheme:dark]" + /> +
    + {([ + ["best_day", "Best day"], + ["worst_day", "Worst day"], + ["biggest_spike_day", "Biggest spike day"], + ] as const).map(([key, label]) => ( + + ))} +
    +
    + + )} +
    + + {/* MAIN CONTENT AREA */} +
    + {error &&

    {error}

    } + {!index && !error && ( +
    + Loading backtest results... +
    + )} + + {day && ( + <> + {/* per-day KPI cards */} +
    + {METHODS.map((m) => { + const profit = day.methods[m].profit_aud; + const pf = day.methods.perfect_foresight.profit_aud; + return ( +
    +

    {LABEL[m]}

    +

    {aud(profit)}

    +

    + {m === "perfect_foresight" ? "upper bound for this day" : pf > 0 ? `${Math.round((100 * profit) / pf)}% of perfect foresight` : "—"} +

    +
    + ); + })} +
    + +
    +
    +

    {day.date} (AEST, 30-minute intervals)

    + +
    + + + `${v}`} height={170} showXAxis={false} domain={index ? [0, index.summary.battery.capacity_mwh] : undefined} /> + +
    + + )} + + {index && ( +
    +

    Capture rate across all {index.summary.Z_test_days} test days

    +

    + Sum of realised revenue ÷ sum of perfect-foresight revenue ({aud(index.summary.perfect_foresight_aud)}). Dashed line = perfect foresight (100%). +

    + + + + Math.min(0, Math.floor(dataMin)), 100]} stroke="#52525b" fontSize={11} tickFormatter={(v) => `${v}%`} /> + + + + {captureBars.map((b) => )} + `${v}%`} /> + + + +
    + )} +
    +
    + ); +} diff --git a/frontend/src/Router.tsx b/frontend/src/Router.tsx new file mode 100644 index 0000000..95504df --- /dev/null +++ b/frontend/src/Router.tsx @@ -0,0 +1,14 @@ +import { useEffect, useState } from 'react' +import App from './App.tsx' +import Backtest from './Backtest.tsx' + +// hash routing keeps the S3/CloudFront static hosting unchanged: #/backtest -> Backtest, anything else -> live App +export default function Router() { + const [hash, setHash] = useState(window.location.hash) + useEffect(() => { + const onChange = () => setHash(window.location.hash) + window.addEventListener('hashchange', onChange) + return () => window.removeEventListener('hashchange', onChange) + }, []) + return hash.startsWith('#/backtest') ? : +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index bef5202..b98bedd 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,10 +1,10 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import './index.css' -import App from './App.tsx' +import Router from './Router.tsx' createRoot(document.getElementById('root')!).render( - + , ) diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 58d60ec..524eb6a 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -43,4 +43,60 @@ export interface OptimizationData { export interface ApiResponse { status: string; data: OptimizationData; -} \ No newline at end of file +} + +// --- BACKTEST TYPES (GET /backtest/days, /backtest/day/{date}) --- + +export type ForecastMethod = "naive" | "lightgbm" | "lstm"; +export type BacktestMethod = "perfect_foresight" | ForecastMethod; + +export interface MethodDay { + charge_mw: number[]; + discharge_mw: number[]; + soc_mwh: number[]; + cumulative_profit_aud: number[]; + profit_aud: number; +} + +export interface BacktestDay { + date: string; + intervals: string[]; + actual_price: number[]; + forecast_price: Record; + methods: Record; +} + +export interface ModelSummary { + capture_rate: number; + realised_aud: number; + mae: number; + rmse: number; + days_with_loss: number; +} + +export interface BacktestDayRow { + date: string; + price_max: number; + price_min: number; + perfect_foresight_aud: number; + naive_aud: number; + lightgbm_aud: number; + lstm_aud: number; +} + +export interface BacktestIndex { + summary: { + Z_test_days: number; + split: { train: string[]; validation: string[]; test: string[]; retrain_every_days: number }; + battery: { capacity_mwh: number; max_mw: number; efficiency: number }; + models: Record; + best_ml_model: ForecastMethod; + perfect_foresight_aud: number; + }; + best_model: ForecastMethod; + best_day: string; + worst_day: string; + biggest_spike_day: string; + definitions: Record<"best_day" | "worst_day" | "biggest_spike_day", string>; + days: BacktestDayRow[]; +} diff --git a/main.py b/main.py index 091c5fb..72311da 100644 --- a/main.py +++ b/main.py @@ -4,8 +4,10 @@ from pydantic import BaseModel, Field -from typing import List, cast -from datetime import datetime +from typing import List, cast +from datetime import date, datetime +from pathlib import Path +import json import pandas as pd # import numpy as np @@ -198,5 +200,32 @@ def run_live_simulation(battery: BatterySpecs): -# include router in the app +# backtest results (written by `python -m forecasting.backtest`) +RESULTS_DIR = Path(__file__).resolve().parent / "results" + + +def _read_json(path: Path): + if not path.exists(): + raise HTTPException(status_code=404, detail=f"{path.name} not found - run `python -m forecasting.backtest`") + return json.loads(path.read_text()) + + +@router.get("/backtest/days") +def backtest_days(): + summary = _read_json(RESULTS_DIR / "backtest.json") + index = _read_json(RESULTS_DIR / "daily" / "index.json") + return { + "summary": {k: summary[k] for k in ("Z_test_days", "split", "battery", "models", "quarterly", + "best_ml_model", "perfect_foresight_aud", "chosen_configs")}, + **index, + } + + +@router.get("/backtest/day/{day}") +def backtest_day(day: date): + # `day` is parsed as a date, so the filename can only ever be YYYY-MM-DD.json + return _read_json(RESULTS_DIR / "daily" / f"{day.isoformat()}.json") + + +# include router in the app app.include_router(router) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index d534dbc..9396ab2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,4 +23,22 @@ dependencies = [ [tool.pytest.ini_options] pythonpath = [ "." -] \ No newline at end of file +] +# forecasting/backtest extras (not needed by the deployed API): uv sync --extra forecast +[project.optional-dependencies] +forecast = [ + "holidays>=0.60", + "lightgbm>=4.5", + "matplotlib>=3.9", + "pyarrow>=18.0", + "torch>=2.5", +] + +# CPU-only torch wheels (the CUDA build is several GB) +[tool.uv.sources] +torch = [{ index = "pytorch-cpu" }] + +[[tool.uv.index]] +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true diff --git a/results/REPORT.md b/results/REPORT.md new file mode 100644 index 0000000..b93b0b5 --- /dev/null +++ b/results/REPORT.md @@ -0,0 +1,87 @@ +# Day-ahead price forecasting backtest (SA1) + +Generated 2026-10-12 16:18 by `python -m forecasting.backtest` from `data/sa1_prices.parquet`. + +## Headline + +Over **365 test days** (2025-10-12 to 2026-10-11), scheduling the battery on **LSTM** forecasts captured **61.8%** of perfect-foresight arbitrage revenue, vs **27.2%** for the naive same-time-yesterday baseline. LSTM beat LightGBM (61.8% vs 49.5%). + +## Data + +- Source: AEMO NEMWeb aggregated price and demand, SA1 (5-min RRP averaged to 30-min; pre-Oct-2021 native 30-min) +- Range: 2019-01-01 00:00 to 2026-10-11 23:30 (2841 days, 136,368 half-hour rows), NEM market time (AEST, UTC+10, no daylight saving); intervals labelled by start +- Gaps: 0 missing and 0 partially observed half-hours. 30-min buckets are the mean of whatever 5-min observations exist (partial buckets counted above). Buckets with no observations stay NaN and are never filled in the stored data. Days with any NaN price are excluded as backtest target days; as model inputs, LightGBM takes NaN natively and the LSTM forward-fills. +- Price range: -962.20 to 20,300.00 AUD/MWh +- Open Electricity (used by the live app) only serves the last 730 days on the current plan, so history comes from AEMO NEMWeb; the same 5-minute prices were spot-checked against Open Electricity. + +## Battery (fixed for every day) + +- Capacity 5.0 MWh, max charge/discharge 2.5 MW, efficiency 0.9 (charging only (unchanged app LP)), starts each day empty, 0.5 h intervals. +- These are the React app's default sliders and the API's default efficiency. The LP is `calculate_optimal_dispatch()` from `main.py`, unchanged. + +## Method + +- Train: 2019-01-01 to 2025-07-11. Validation: 2025-07-12 to 2025-10-11 (92 days). Test: 2025-10-12 to 2026-10-11. +- Decision at the end of day D-1; all 48 half-hour prices of day D are forecast from data up to D-1 only (enforced by `tests/test_forecasting.py`). +- Expanding window: each model is retrained every 30 days on all data before the retrain date (early stopping uses the last 60 days of that training window), then forecasts each day of the block one day ahead. +- Hyperparameters, target transform / loss and training start were chosen on the validation period by capture rate, with the test period removed from the data, then frozen. +- Each test day: LP on actual prices gives perfect foresight PF_D; LP on each forecast gives a schedule which is scored at actual prices, `sum((d - c) * actual * 0.5)`. Capture rate = sum(realised) / sum(PF). + +Frozen configurations: + +- LightGBM: `{'transform': 'asinh', 'objective': 'l2', 'num_leaves': 63, 'train_start': '2019-01-01'}` +- LSTM: `{'transform': 'asinh', 'loss': 'mse', 'hidden': 64}` + +## Results (test period) + +Z = 365 days. Perfect-foresight revenue over the period: $560,314. + +| Model | Capture rate | Realised revenue (AUD) | MAE (AUD/MWh) | RMSE (AUD/MWh) | Days with a loss | +|---|---:|---:|---:|---:|---:| +| Naive (yesterday) | 27.2% | 152,353 | 80.0 | 584.1 | 85 | +| LightGBM | 49.5% | 277,312 | 57.8 | 417.2 | 32 | +| LSTM | 61.8% | 346,394 | 51.2 | 413.9 | 28 | + +Capture rate by quarter: + +| Quarter | Days | Perfect foresight (AUD) | Naive | LightGBM | LSTM | +|---|---:|---:|---:|---:|---:| +| 2025Q4 | 81 | 100,628 | 34.9% | 54.0% | 59.3% | +| 2026Q1 | 90 | 250,285 | 24.4% | 45.5% | 67.6% | +| 2026Q2 | 91 | 123,472 | 29.8% | 58.8% | 62.4% | +| 2026Q3 | 92 | 73,280 | 23.5% | 43.5% | 49.1% | +| 2026Q4 | 11 | 12,649 | 16.2% | 35.8% | 35.2% | + +Validation results (used for selection; test period not involved): + +| Model | Config | Val capture | Val MAE | +|---|---|---:|---:| +| Naive (yesterday) (chosen) | `{}` | 40.3% | 64.9 | +| LightGBM (chosen) | `{'transform': 'asinh', 'objective': 'l2', 'num_leaves': 63, 'train_start': '2019-01-01'}` | 61.2% | 52.7 | +| LightGBM | `{'transform': 'asinh', 'objective': 'l2', 'num_leaves': 15, 'train_start': '2019-01-01'}` | 60.7% | 52.7 | +| LightGBM | `{'transform': 'identity', 'objective': 'huber', 'num_leaves': 63, 'train_start': '2019-01-01'}` | 60.1% | 53.7 | +| LightGBM | `{'transform': 'asinh', 'objective': 'l2', 'num_leaves': 63, 'train_start': '2021-10-01'}` | 59.8% | 53.1 | +| LightGBM | `{'transform': 'identity', 'objective': 'huber', 'num_leaves': 63, 'train_start': '2021-10-01'}` | 58.5% | 52.7 | +| LightGBM | `{'transform': 'asinh', 'objective': 'l2', 'num_leaves': 15, 'train_start': '2021-10-01'}` | 57.2% | 53.9 | +| LightGBM | `{'transform': 'identity', 'objective': 'l2', 'num_leaves': 15, 'train_start': '2021-10-01'}` | 56.1% | 64.1 | +| LightGBM | `{'transform': 'identity', 'objective': 'l2', 'num_leaves': 15, 'train_start': '2019-01-01'}` | 56.1% | 65.4 | +| LightGBM | `{'transform': 'identity', 'objective': 'huber', 'num_leaves': 15, 'train_start': '2019-01-01'}` | 55.7% | 54.0 | +| LightGBM | `{'transform': 'identity', 'objective': 'huber', 'num_leaves': 15, 'train_start': '2021-10-01'}` | 54.3% | 53.6 | +| LightGBM | `{'transform': 'identity', 'objective': 'l2', 'num_leaves': 63, 'train_start': '2019-01-01'}` | 51.2% | 67.5 | +| LightGBM | `{'transform': 'identity', 'objective': 'l2', 'num_leaves': 63, 'train_start': '2021-10-01'}` | 43.3% | 78.7 | +| LSTM (chosen) | `{'transform': 'asinh', 'loss': 'mse', 'hidden': 64}` | 66.4% | 45.0 | +| LSTM | `{'transform': 'asinh', 'loss': 'mse', 'hidden': 32}` | 65.8% | 46.2 | +| LSTM | `{'transform': 'identity', 'loss': 'huber', 'hidden': 64}` | 65.5% | 47.4 | +| LSTM | `{'transform': 'identity', 'loss': 'huber', 'hidden': 32}` | 64.2% | 48.6 | +| LSTM | `{'transform': 'identity', 'loss': 'mse', 'hidden': 64}` | 53.2% | 59.7 | +| LSTM | `{'transform': 'identity', 'loss': 'mse', 'hidden': 32}` | 49.3% | 67.4 | + +## Typical test day + +![Typical test day](typical_day.png) + +2025-12-19 is the test day whose perfect-foresight profit ($786) is closest to the median. Realised that day: naive $354, LightGBM $477, LSTM $539. + +## Limitations + +This is a single small battery acting as a price taker in one region (SA1) on energy arbitrage only: no FCAS, no network losses, no degradation cost and no cycling limit. The LP is the app's unchanged formulation, so efficiency is applied on charge only, the battery starts every day empty with no end-of-day state-of-charge target, and it may charge and discharge in the same interval (which burns energy when prices are negative). Prices are 30-minute averages of the 5-minute settlement price, so intra-half-hour spikes are smoothed out and the true opportunity is larger than measured. The schedule is fixed once per day at the end of D-1 and never re-optimised intraday, whereas a real operator rebids through the day using AEMO pre-dispatch forecasts, demand, weather and interconnector data, none of which are used here (features are lagged prices and calendar only). Forecasts are point forecasts with no uncertainty, so the schedule cannot hedge against spikes. Results come from one 365-day test window. SA1 revenue is dominated by a few extreme-price days, so the capture rate moves a lot from quarter to quarter (table above) and should be read as indicative rather than precise. diff --git a/results/backtest.json b/results/backtest.json new file mode 100644 index 0000000..06c7a8c --- /dev/null +++ b/results/backtest.json @@ -0,0 +1,328 @@ +{ + "generated_at": "2026-10-12 16:18", + "data": { + "source": "AEMO NEMWeb aggregated price and demand, SA1 (5-min RRP averaged to 30-min; pre-Oct-2021 native 30-min)", + "timezone": "NEM market time (AEST, UTC+10, no daylight saving); intervals labelled by start", + "start": "2019-01-01 00:00", + "end": "2026-10-11 23:30", + "rows": 136368, + "days": 2841, + "missing_30min_intervals": 0, + "partial_30min_intervals": 0, + "price_min": -962.1966666666667, + "price_max": 20300.0, + "gap_handling": "30-min buckets are the mean of whatever 5-min observations exist (partial buckets counted above). Buckets with no observations stay NaN and are never filled in the stored data. Days with any NaN price are excluded as backtest target days; as model inputs, LightGBM takes NaN natively and the LSTM forward-fills.", + "n_days_with_missing_intervals": 0 + }, + "battery": { + "capacity_mwh": 5.0, + "max_mw": 2.5, + "efficiency": 0.9, + "efficiency_applied_to": "charging only (unchanged app LP)", + "start_soc_mwh": 0.0, + "interval_hours": 0.5 + }, + "split": { + "train": [ + "2019-01-01", + "2025-07-11" + ], + "validation": [ + "2025-07-12", + "2025-10-11" + ], + "test": [ + "2025-10-12", + "2026-10-11" + ], + "retrain_every_days": 30 + }, + "Z_test_days": 365, + "chosen_configs": { + "naive": {}, + "lightgbm": { + "transform": "asinh", + "objective": "l2", + "num_leaves": 63, + "train_start": "2019-01-01" + }, + "lstm": { + "transform": "asinh", + "loss": "mse", + "hidden": 64 + } + }, + "retrains": { + "naive": [ + { + "retrain_date": "2025-10-12", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2025-11-11", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2025-12-11", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-01-10", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-02-09", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-03-11", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-04-10", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-05-10", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-06-09", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-07-09", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-08-08", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-09-07", + "trained_through": null, + "rounds_or_epochs": null + }, + { + "retrain_date": "2026-10-07", + "trained_through": null, + "rounds_or_epochs": null + } + ], + "lightgbm": [ + { + "retrain_date": "2025-10-12", + "trained_through": "2025-10-11", + "rounds_or_epochs": 185 + }, + { + "retrain_date": "2025-11-11", + "trained_through": "2025-11-10", + "rounds_or_epochs": 80 + }, + { + "retrain_date": "2025-12-11", + "trained_through": "2025-12-10", + "rounds_or_epochs": 72 + }, + { + "retrain_date": "2026-01-10", + "trained_through": "2026-01-09", + "rounds_or_epochs": 150 + }, + { + "retrain_date": "2026-02-09", + "trained_through": "2026-02-08", + "rounds_or_epochs": 176 + }, + { + "retrain_date": "2026-03-11", + "trained_through": "2026-03-10", + "rounds_or_epochs": 68 + }, + { + "retrain_date": "2026-04-10", + "trained_through": "2026-04-09", + "rounds_or_epochs": 108 + }, + { + "retrain_date": "2026-05-10", + "trained_through": "2026-05-09", + "rounds_or_epochs": 256 + }, + { + "retrain_date": "2026-06-09", + "trained_through": "2026-06-08", + "rounds_or_epochs": 99 + }, + { + "retrain_date": "2026-07-09", + "trained_through": "2026-07-08", + "rounds_or_epochs": 96 + }, + { + "retrain_date": "2026-08-08", + "trained_through": "2026-08-07", + "rounds_or_epochs": 96 + }, + { + "retrain_date": "2026-09-07", + "trained_through": "2026-09-06", + "rounds_or_epochs": 42 + }, + { + "retrain_date": "2026-10-07", + "trained_through": "2026-10-06", + "rounds_or_epochs": 46 + } + ], + "lstm": [ + { + "retrain_date": "2025-10-12", + "trained_through": "2025-10-11", + "rounds_or_epochs": 6 + }, + { + "retrain_date": "2025-11-11", + "trained_through": "2025-11-10", + "rounds_or_epochs": 20 + }, + { + "retrain_date": "2025-12-11", + "trained_through": "2025-12-10", + "rounds_or_epochs": 18 + }, + { + "retrain_date": "2026-01-10", + "trained_through": "2026-01-09", + "rounds_or_epochs": 14 + }, + { + "retrain_date": "2026-02-09", + "trained_through": "2026-02-08", + "rounds_or_epochs": 9 + }, + { + "retrain_date": "2026-03-11", + "trained_through": "2026-03-10", + "rounds_or_epochs": 5 + }, + { + "retrain_date": "2026-04-10", + "trained_through": "2026-04-09", + "rounds_or_epochs": 14 + }, + { + "retrain_date": "2026-05-10", + "trained_through": "2026-05-09", + "rounds_or_epochs": 8 + }, + { + "retrain_date": "2026-06-09", + "trained_through": "2026-06-08", + "rounds_or_epochs": 11 + }, + { + "retrain_date": "2026-07-09", + "trained_through": "2026-07-08", + "rounds_or_epochs": 16 + }, + { + "retrain_date": "2026-08-08", + "trained_through": "2026-08-07", + "rounds_or_epochs": 19 + }, + { + "retrain_date": "2026-09-07", + "trained_through": "2026-09-06", + "rounds_or_epochs": 18 + }, + { + "retrain_date": "2026-10-07", + "trained_through": "2026-10-06", + "rounds_or_epochs": 8 + } + ] + }, + "perfect_foresight_aud": 560314.3511249999, + "models": { + "naive": { + "capture_rate": 0.2719056986239471, + "realised_aud": 152352.66509166668, + "mae": 80.04433837519025, + "rmse": 584.1204242470058, + "days_with_loss": 85 + }, + "lightgbm": { + "capture_rate": 0.4949221742102672, + "realised_aud": 277311.9969, + "mae": 57.75984683798546, + "rmse": 417.2313257763026, + "days_with_loss": 32 + }, + "lstm": { + "capture_rate": 0.6182133339160598, + "realised_aud": 346393.80305, + "mae": 51.194683588702205, + "rmse": 413.8813834823171, + "days_with_loss": 28 + } + }, + "quarterly": [ + { + "quarter": "2025Q4", + "days": 81, + "perfect_foresight_aud": 100628.05439166666, + "naive_capture_rate": 0.3494813534284034, + "lightgbm_capture_rate": 0.5403161474570122, + "lstm_capture_rate": 0.5931140610089076 + }, + { + "quarter": "2026Q1", + "days": 90, + "perfect_foresight_aud": 250285.0319166667, + "naive_capture_rate": 0.2443953712756034, + "lightgbm_capture_rate": 0.4551541104061288, + "lstm_capture_rate": 0.6763545250268749 + }, + { + "quarter": "2026Q2", + "days": 91, + "perfect_foresight_aud": 123472.04622500001, + "naive_capture_rate": 0.2977050231111937, + "lightgbm_capture_rate": 0.5882949215698073, + "lstm_capture_rate": 0.6236366892687737 + }, + { + "quarter": "2026Q3", + "days": 92, + "perfect_foresight_aud": 73280.31189166667, + "naive_capture_rate": 0.2348284925484454, + "lightgbm_capture_rate": 0.4347850283502483, + "lstm_capture_rate": 0.4908676069298211 + }, + { + "quarter": "2026Q4", + "days": 11, + "perfect_foresight_aud": 12648.906700000001, + "naive_capture_rate": 0.1620677303280291, + "lightgbm_capture_rate": 0.3576287697391797, + "lstm_capture_rate": 0.3522712138169748 + } + ], + "best_ml_model": "lstm", + "X_best_model_capture_pct": 62, + "Y_naive_capture_pct": 27, + "runtime_seconds": 169 +} \ No newline at end of file diff --git a/results/daily/2025-10-12.json b/results/daily/2025-10-12.json new file mode 100644 index 0000000..2505640 --- /dev/null +++ b/results/daily/2025-10-12.json @@ -0,0 +1 @@ +{"date": "2025-10-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [62.35, 40.9, 38.4, 30.62, 44.06, 53.76, 39.34, 38.76, 44.63, 58.65, 81.89, 66.34, 98.64, 64.06, 72.6, 105.02, 12.61, 3.51, -7.02, -8.2, -10.73, -11.75, -14.02, -14.52, -14.75, -18.47, -23.79, -22.68, -20.84, -36.28, -29.85, -17.32, -17.45, -14.56, -7.79, 65.48, 89.34, 88.29, 96.47, 93.45, 98.96, 96.33, 82.25, 76.86, 94.49, 90.53, 98.2, 106.28], "forecast_price": {"naive": [-1.25, -5.32, -4.54, -5.82, -6.25, -4.57, -2.94, 4.74, 3.03, 3.12, 30.78, 33.95, 6.15, -6.87, -8.96, -9.48, -9.62, -12.32, -18.34, -27.24, -26.01, -25.57, -27.55, -29.83, -32.31, -33.04, -29.32, -21.86, -20.1, -19.52, -19.38, -15.73, -11.1, -9.56, -6.75, 5.19, -10.29, 27.22, 58.3, 63.4, 57.85, 61.46, 70.34, 73.82, 91.87, 84.79, 87.7, 77.03], "lightgbm": [18.78, 19.28, 16.62, 14.35, 13.51, 13.49, 13.94, 13.55, 12.47, 11.9, 19.43, 19.67, 12.46, 6.22, -8.9, -11.83, -17.44, -21.25, -23.08, -24.51, -23.96, -25.63, -27.74, -32.49, -34.12, -33.53, -34.12, -27.5, -27.17, -24.98, -20.53, -13.12, -4.44, 15.41, 23.74, 37.87, 40.33, 45.83, 55.74, 58.29, 53.17, 54.0, 56.49, 56.69, 61.21, 60.03, 60.96, 57.34], "lstm": [106.0, 108.46, 95.35, 88.56, 80.9, 68.26, 74.9, 69.74, 70.02, 62.75, 70.07, 63.07, 43.46, 22.67, 11.28, 0.73, -5.73, -7.49, -5.96, -12.65, -13.56, -12.39, -14.75, -20.14, -19.52, -26.44, -25.6, -16.25, -20.33, -13.01, -13.76, -10.54, -0.59, 22.72, 34.85, 64.56, 83.5, 104.05, 91.77, 88.03, 87.81, 72.75, 68.76, 62.74, 62.39, 62.56, 61.91, 66.53]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 2.38, 3.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -51.13, -99.13, -137.4, -168.02, -100.82, -149.99, -198.44, -198.44, -198.44, -96.09, -96.09, 27.22, 27.22, 117.96, 249.24, 249.24, 249.24, 250.12, 251.15, 252.49, 253.96, 255.71, 257.52, 259.37, 261.68, 291.41, 319.77, 332.79, 378.14, 415.45, 415.45, 419.81, 421.63, 422.61, 422.61, 422.61, 422.61, 543.19, 543.19, 666.9, 787.31, 684.5, 588.42, 682.92, 682.92, 805.66, 938.51], "profit_aud": 938.51}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-7.79, -58.92, -82.92, -121.19, -176.26, -243.46, -248.38, -199.92, -199.92, -199.92, -97.57, -14.64, 108.66, 100.65, 91.58, 78.45, 76.88, 76.44, 77.32, 80.39, 80.39, 80.39, 89.15, 107.3, 125.74, 148.82, 178.55, 181.39, 184.0, 188.53, 192.26, 194.43, 196.61, 198.43, 199.4, 273.07, 161.39, 161.39, 161.39, 161.39, 161.39, 161.39, 161.39, 161.39, 279.51, 392.67, 515.41, 648.26], "profit_aud": 648.26}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -15.05, -15.05, -15.05, -70.84, -144.15, -41.79, 41.14, 41.14, 41.14, 32.06, 18.93, 17.36, 16.92, 17.8, 19.85, 19.85, 21.31, 30.08, 48.22, 66.66, 89.75, 119.48, 122.32, 124.92, 129.46, 133.19, 135.35, 137.53, 137.53, 137.53, 137.53, 137.53, 137.53, 137.53, 254.35, 254.35, 254.35, 254.35, 254.35, 372.46, 485.62, 608.37, 608.37], "profit_aud": 608.37}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -73.31, 18.81, 18.81, 18.81, 18.81, 18.81, 18.81, 17.23, 12.85, 5.05, 6.08, 8.76, 8.76, 10.51, 28.66, 47.1, 70.19, 99.92, 87.33, 113.38, 113.38, 120.84, 123.01, 125.19, 125.19, 125.19, 125.19, 125.19, 235.55, 356.14, 472.95, 596.66, 596.66, 596.66, 596.66, 596.66, 596.66, 596.66, 596.66], "profit_aud": 596.66}}} \ No newline at end of file diff --git a/results/daily/2025-10-13.json b/results/daily/2025-10-13.json new file mode 100644 index 0000000..8bd396b --- /dev/null +++ b/results/daily/2025-10-13.json @@ -0,0 +1 @@ +{"date": "2025-10-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [116.15, 105.05, 123.51, 132.93, 138.59, 145.38, 167.32, 165.54, 167.93, 213.71, 220.04, 259.27, 194.08, 153.52, 124.66, 123.74, 80.32, 54.43, 19.57, 41.51, 54.63, -4.8, -3.17, -5.84, -11.3, -12.82, -17.78, -14.04, -13.38, -12.53, -11.75, -11.65, -13.64, -1.75, 96.44, 162.8, 147.66, 143.3, 140.29, 156.16, 141.81, 124.33, 115.28, 108.62, 114.72, 102.56, 101.43, 95.09], "forecast_price": {"naive": [62.35, 40.9, 38.4, 30.62, 44.06, 53.76, 39.34, 38.76, 44.63, 58.65, 81.89, 66.34, 98.64, 64.06, 72.6, 105.02, 12.61, 3.51, -7.02, -8.2, -10.73, -11.75, -14.02, -14.52, -14.75, -18.47, -23.79, -22.68, -20.84, -36.28, -29.85, -17.32, -17.45, -14.56, -7.79, 65.48, 89.34, 88.29, 96.47, 93.45, 98.96, 96.33, 82.25, 76.86, 94.49, 90.53, 98.2, 106.28], "lightgbm": [39.25, 29.05, 25.89, 26.79, 22.88, 27.57, 23.44, 23.44, 23.5, 31.08, 46.56, 50.44, 54.59, 48.9, 45.45, 44.56, 36.27, 21.27, 16.73, 10.77, 9.64, 2.46, 0.4, 0.88, -0.19, -3.18, -8.13, -3.59, -3.89, -5.84, -6.06, 7.97, 12.71, 20.54, 32.75, 71.34, 94.57, 93.86, 96.48, 93.93, 93.77, 91.32, 83.88, 75.53, 83.86, 82.24, 84.91, 85.43], "lstm": [120.25, 124.65, 107.49, 100.26, 101.82, 87.95, 94.99, 86.05, 94.15, 98.49, 104.48, 102.25, 95.14, 87.45, 65.27, 51.73, 36.52, 28.26, 23.34, 15.47, 10.42, 5.36, 5.32, 1.29, 0.13, -2.45, -3.71, -1.09, 0.82, 3.3, 7.55, 13.02, 17.93, 47.42, 66.0, 93.38, 128.84, 150.33, 123.74, 119.36, 112.47, 94.31, 97.93, 81.8, 88.87, 76.74, 80.01, 88.15]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.88, 2.0, 3.12, 4.25, 4.12, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-145.18, -276.49, -430.88, -597.04, -673.96, -673.96, -673.96, -673.96, -673.96, -406.82, -131.77, 192.31, 434.92, 434.92, 434.92, 434.92, 434.92, 434.92, 410.45, 404.64, 472.93, 478.93, 475.41, 476.14, 477.55, 490.37, 512.59, 530.14, 546.86, 546.86, 546.86, 546.86, 563.92, 564.13, 564.13, 767.63, 952.2, 1131.33, 1131.33, 1326.52, 1326.52, 1326.52, 1326.52, 1326.52, 1326.52, 1326.52, 1326.52, 1326.52], "profit_aud": 1326.52}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 2.38, 3.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -131.31, -285.7, -451.86, -548.18, -366.45, -575.6, -782.52, -782.52, -782.52, -507.47, -507.47, -264.86, -264.86, -109.04, 45.64, 45.64, 45.64, 43.19, 38.0, 31.17, 31.77, 32.17, 32.9, 34.31, 35.91, 58.13, 75.68, 84.04, 99.7, 114.39, 114.39, 117.8, 118.02, 105.97, 105.97, 105.97, 105.97, 281.33, 281.33, 458.59, 614.01, 469.91, 334.13, 448.86, 448.86, 575.64, 694.5], "profit_aud": 694.5}, "lightgbm": {"charge_mw": [0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -68.55, -68.55, -241.79, -241.79, -450.94, -657.86, -867.78, -867.78, -592.72, -268.64, -26.03, 165.87, 165.87, 165.87, 165.87, 165.87, 165.87, 165.87, 165.87, 165.87, 169.83, 163.26, 164.67, 166.28, 188.5, 197.27, 213.99, 229.65, 244.34, 244.34, 244.34, 244.34, 244.34, 244.34, 428.91, 608.03, 783.4, 978.59, 978.59, 978.59, 978.59, 842.81, 842.81, 842.81, 842.81, 949.79], "profit_aud": 949.79}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -181.73, -181.73, -388.65, -388.65, -388.65, -113.6, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 145.67, 159.79, 175.81, 198.03, 215.58, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 407.57, 586.7, 762.06, 957.26, 957.26, 957.26, 957.26, 957.26, 957.26, 829.06, 829.06, 936.03], "profit_aud": 936.03}}} \ No newline at end of file diff --git a/results/daily/2025-10-14.json b/results/daily/2025-10-14.json new file mode 100644 index 0000000..58cf9cf --- /dev/null +++ b/results/daily/2025-10-14.json @@ -0,0 +1 @@ +{"date": "2025-10-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [84.69, 81.43, 68.98, 59.21, 56.68, 54.0, 57.65, 65.2, 84.04, 98.25, 108.11, 119.27, 128.95, 116.16, 62.98, 44.32, 0.0, -2.92, -10.16, -13.3, -14.5, -19.38, -18.62, -20.77, -23.24, -23.98, -22.81, -20.7, -12.81, -12.71, -9.8, -14.64, -10.26, 3.03, 72.26, 137.96, 148.06, 163.88, 151.64, 152.81, 151.25, 147.39, 167.34, 159.28, 168.96, 155.07, 179.02, 193.78], "forecast_price": {"naive": [116.15, 105.05, 123.51, 132.93, 138.59, 145.38, 167.32, 165.54, 167.93, 213.71, 220.04, 259.27, 194.08, 153.52, 124.66, 123.74, 80.32, 54.43, 19.57, 41.51, 54.63, -4.8, -3.17, -5.84, -11.3, -12.82, -17.78, -14.04, -13.38, -12.53, -11.75, -11.65, -13.64, -1.75, 96.44, 162.8, 147.66, 143.3, 140.29, 156.16, 141.81, 124.33, 115.28, 108.62, 114.72, 102.56, 101.43, 95.09], "lightgbm": [98.22, 96.5, 88.51, 78.46, 80.32, 80.94, 81.19, 81.19, 79.68, 92.75, 111.83, 127.33, 119.55, 101.06, 91.1, 92.47, 68.91, 44.8, 15.77, 14.36, 27.62, -1.73, -4.36, -6.1, -12.48, -13.54, -14.47, -13.71, -16.46, -9.82, -4.66, 5.97, 5.81, 27.38, 72.66, 118.65, 135.25, 132.89, 132.74, 129.99, 127.36, 113.47, 102.57, 89.74, 95.61, 86.9, 87.93, 87.93], "lstm": [112.74, 104.99, 101.62, 90.02, 93.32, 80.64, 76.43, 78.0, 74.88, 85.34, 88.27, 89.01, 82.48, 77.31, 53.87, 44.06, 26.86, 15.69, 9.47, 0.57, -0.94, -7.73, -9.69, -13.91, -14.86, -15.6, -14.44, -15.5, -12.65, -7.79, -1.05, 10.89, 19.1, 39.37, 63.41, 92.65, 133.4, 148.23, 131.2, 117.09, 113.85, 104.79, 105.9, 91.78, 87.18, 76.64, 77.94, 88.93]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 3.88, 3.88, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -74.02, -144.87, -212.37, -284.44, -320.63, -320.63, -320.63, -185.49, -36.4, 124.79, 269.99, 269.99, 269.99, 269.99, 270.36, 271.63, 273.29, 275.11, 279.95, 279.95, 305.92, 334.97, 364.95, 393.46, 406.4, 408.0, 409.59, 398.72, 417.02, 418.3, 418.3, 418.3, 418.3, 418.3, 602.67, 602.67, 602.67, 602.67, 418.43, 627.6, 627.6, 838.81, 838.81, 1062.58, 1304.8], "profit_aud": 1304.8}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.88, 2.0, 3.12, 4.25, 4.12, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-105.86, -207.65, -293.87, -367.89, -399.35, -399.35, -399.35, -399.35, -399.35, -276.53, -141.39, 7.7, 168.89, 168.89, 168.89, 168.89, 168.89, 168.89, 181.59, 183.45, 165.32, 189.55, 168.87, 171.47, 174.37, 198.36, 226.87, 252.74, 268.76, 268.76, 268.76, 268.76, 281.58, 281.2, 281.2, 453.65, 638.73, 843.59, 843.59, 1034.6, 1034.6, 1034.6, 1034.6, 1034.6, 1034.6, 1034.6, 1034.6, 1034.6], "profit_aud": 1034.6}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -74.02, -144.87, -212.37, -212.37, -248.56, -353.61, -353.61, -218.47, -69.37, 91.81, 237.02, 237.02, 237.02, 237.02, 237.02, 238.44, 255.07, 236.94, 239.37, 241.69, 244.29, 258.82, 288.8, 317.31, 343.18, 359.2, 360.79, 362.01, 362.01, 362.01, 362.01, 362.01, 362.01, 547.09, 751.95, 941.49, 1132.51, 1132.51, 1132.51, 1132.51, 1132.51, 1132.51, 1132.51, 1132.51, 1132.51], "profit_aud": 1132.51}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -72.07, -90.32, -195.37, -195.37, -60.23, 88.86, 88.86, 88.86, 88.86, 88.86, 88.86, 88.86, 88.86, 88.86, 90.68, 93.1, 95.43, 108.41, 137.46, 167.44, 195.96, 221.83, 223.43, 225.02, 226.24, 226.24, 226.24, 226.24, 226.24, 226.24, 411.32, 616.18, 805.72, 996.74, 996.74, 996.74, 996.74, 996.74, 996.74, 802.9, 777.84, 1020.06], "profit_aud": 1020.06}}} \ No newline at end of file diff --git a/results/daily/2025-10-15.json b/results/daily/2025-10-15.json new file mode 100644 index 0000000..f5c73ee --- /dev/null +++ b/results/daily/2025-10-15.json @@ -0,0 +1 @@ +{"date": "2025-10-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [182.42, 175.67, 172.11, 171.2, 163.92, 141.76, 143.66, 140.77, 169.34, 194.99, 179.11, 230.84, 167.79, 100.38, 3.67, 2.45, -13.91, -13.47, -13.07, -14.37, -9.34, -13.72, -10.32, -10.88, -11.22, -8.4, -11.85, -17.6, -13.05, -15.25, -13.13, -6.85, 26.42, 102.12, 194.34, 225.61, 229.43, 223.53, 214.19, 195.03, 200.33, 176.27, 144.1, 138.38, 128.51, 107.75, 89.14, 84.88], "forecast_price": {"naive": [84.69, 81.43, 68.98, 59.21, 56.68, 54.0, 57.65, 65.2, 84.04, 98.25, 108.11, 119.27, 128.95, 116.16, 62.98, 44.32, 0.0, -2.92, -10.16, -13.3, -14.5, -19.38, -18.62, -20.77, -23.24, -23.98, -22.81, -20.7, -12.81, -12.71, -9.8, -14.64, -10.26, 3.03, 72.26, 137.96, 148.06, 163.88, 151.64, 152.81, 151.25, 147.39, 167.34, 159.28, 168.96, 155.07, 179.02, 193.78], "lightgbm": [80.06, 70.36, 57.69, 64.68, 64.88, 57.22, 61.19, 57.88, 63.97, 68.65, 82.76, 84.29, 86.28, 83.19, 65.34, 54.92, 30.32, 14.88, 5.1, -6.93, -4.43, -14.74, -16.45, -18.97, -21.14, -21.15, -19.71, -19.71, -17.7, -15.26, -7.09, -5.72, 5.54, 20.64, 45.84, 109.48, 110.3, 111.16, 109.47, 105.73, 103.84, 101.98, 98.7, 95.83, 93.78, 92.44, 94.22, 95.81], "lstm": [174.9, 176.08, 163.18, 150.63, 150.5, 130.52, 128.9, 121.95, 121.0, 135.5, 132.05, 128.85, 113.71, 108.9, 72.32, 55.93, 41.39, 26.17, 19.99, 10.08, 4.7, 0.6, 0.71, -10.11, -5.7, -9.72, -9.9, -12.54, -6.16, 1.31, 6.89, 18.02, 28.36, 53.11, 79.59, 119.49, 165.87, 193.43, 165.95, 155.35, 152.13, 124.78, 132.2, 107.79, 117.03, 89.02, 97.96, 109.5]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 2.0, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -177.2, -356.78, -532.74, -532.74, -289.0, -132.28, 156.26, 156.26, 156.26, 156.26, 156.26, 173.65, 190.49, 206.83, 224.8, 213.13, 230.28, 217.39, 205.31, 205.31, 194.81, 194.81, 216.82, 233.13, 252.2, 268.61, 269.47, 269.47, 269.47, 269.47, 551.48, 838.28, 1117.68, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42, 1385.42], "profit_aud": 1385.42}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 3.88, 3.88, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -214.01, -418.91, -596.11, -775.69, -853.82, -853.82, -853.82, -629.93, -341.38, -131.64, -6.17, -6.17, -6.17, -6.17, -4.48, -2.85, -1.05, 0.12, 3.55, 3.55, 17.15, 31.18, 41.68, 56.49, 67.49, 69.12, 71.03, 56.46, 65.02, 61.72, 61.72, 61.72, 61.72, 61.72, 313.19, 313.19, 313.19, 313.19, 92.85, 272.98, 272.98, 433.62, 433.62, 545.05, 651.15], "profit_aud": 651.15}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -215.14, -215.14, -215.14, -392.34, -571.92, -747.88, -841.87, -841.87, -617.98, -329.43, -119.69, 5.78, 5.78, 5.78, 5.78, 5.78, 5.78, 23.75, 13.39, 15.1, 16.39, 23.19, 37.22, 47.72, 62.54, 84.54, 86.17, 88.08, 89.72, 90.57, 90.57, 90.57, 90.57, 372.59, 659.38, 938.79, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53, 1206.53], "profit_aud": 1206.53}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -211.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 7.68, 24.84, 13.23, 26.84, 26.84, 37.33, 52.15, 74.15, 83.94, 83.94, 83.94, 83.94, 83.94, 83.94, 83.94, 83.94, 370.73, 650.14, 917.88, 1161.67, 1161.67, 1161.67, 1161.67, 1161.67, 1161.67, 1026.98, 1014.5, 1120.6], "profit_aud": 1120.6}}} \ No newline at end of file diff --git a/results/daily/2025-10-16.json b/results/daily/2025-10-16.json new file mode 100644 index 0000000..04912d1 --- /dev/null +++ b/results/daily/2025-10-16.json @@ -0,0 +1 @@ +{"date": "2025-10-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [63.29, 44.42, 22.5, -4.43, -12.64, -18.64, -20.0, -20.0, -20.0, -20.0, -20.0, -13.18, -13.75, -15.92, -25.44, -21.38, -21.57, -14.01, -24.87, -22.76, -26.91, -19.83, -19.58, -19.34, -20.88, -15.36, -15.17, -26.25, -65.68, -113.22, -46.03, -12.09, -10.66, -14.44, 25.08, 102.52, 116.1, 112.82, 126.44, 123.01, 151.48, 124.26, 102.27, 105.88, 109.29, 107.71, 138.13, 131.74], "forecast_price": {"naive": [182.42, 175.67, 172.11, 171.2, 163.92, 141.76, 143.66, 140.77, 169.34, 194.99, 179.11, 230.84, 167.79, 100.38, 3.67, 2.45, -13.91, -13.47, -13.07, -14.37, -9.34, -13.72, -10.32, -10.88, -11.22, -8.4, -11.85, -17.6, -13.05, -15.25, -13.13, -6.85, 26.42, 102.12, 194.34, 225.61, 229.43, 223.53, 214.19, 195.03, 200.33, 176.27, 144.1, 138.38, 128.51, 107.75, 89.14, 84.88], "lightgbm": [122.03, 121.38, 106.24, 97.04, 96.07, 89.91, 92.36, 90.56, 94.5, 110.39, 111.82, 106.25, 106.17, 87.92, 38.16, 33.04, 14.1, 12.34, 6.45, 0.53, 2.54, -3.47, -1.73, -3.56, -6.73, -5.47, -9.37, -8.87, -7.13, -2.94, 0.55, 13.25, 28.1, 62.38, 99.31, 146.09, 148.27, 149.44, 155.43, 147.48, 147.23, 134.02, 121.57, 114.36, 110.19, 95.49, 84.6, 83.45], "lstm": [102.02, 96.43, 94.82, 84.16, 84.15, 80.14, 74.92, 70.67, 73.13, 76.61, 81.87, 82.2, 74.56, 65.23, 46.68, 32.56, 24.25, 7.79, 2.18, -7.28, -8.96, -8.03, -16.74, -19.31, -22.96, -18.88, -16.7, -15.9, -14.78, -5.37, 3.38, 14.2, 21.37, 43.49, 64.81, 113.0, 125.79, 149.59, 140.31, 125.72, 114.08, 102.4, 98.75, 91.58, 87.52, 75.59, 81.25, 87.92]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.75, 2.5, 1.25, 0.0, 1.12, 1.0, 2.12, 0.88, 2.0, 3.12, 4.25, 4.12, 4.0, 3.12, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.55, 2.13, 4.46, 29.46, 54.46, 79.46, 91.96, 91.96, 75.49, 58.29, 38.4, 70.19, 70.19, 97.15, 79.64, 110.72, 139.17, 172.81, 172.81, 172.81, 156.66, 156.66, 137.46, 118.49, 151.31, 233.41, 374.94, 432.48, 433.99, 422.15, 440.2, 440.2, 440.2, 440.2, 440.2, 598.26, 752.03, 941.38, 1096.71, 968.87, 836.52, 836.52, 806.36, 979.02, 1143.69], "profit_aud": 1143.69}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 2.0, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 23.3, 48.3, 73.3, 73.3, 48.3, 30.8, 14.33, 14.33, 14.33, 14.33, 14.33, 41.28, 58.8, 89.88, 118.33, 84.69, 109.48, 85.01, 63.54, 63.54, 44.34, 44.34, 77.16, 159.26, 300.79, 358.32, 359.84, 359.84, 359.84, 359.84, 487.99, 633.11, 774.15, 932.2, 932.2, 932.2, 932.2, 932.2, 932.2, 932.2, 932.2, 932.2, 932.2], "profit_aud": 932.2}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 23.3, 48.3, 73.3, 98.3, 73.3, 48.3, 31.83, 21.51, 21.51, 21.51, 21.51, 21.51, 21.51, 21.51, 49.96, 19.68, 44.47, 22.74, 25.16, 51.26, 60.86, 79.82, 112.64, 194.74, 208.89, 208.89, 208.89, 208.89, 208.89, 208.89, 208.89, 354.02, 495.05, 653.1, 806.87, 806.87, 806.87, 806.87, 806.87, 806.87, 806.87, 806.87, 806.87], "profit_aud": 806.87}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 50.0, 50.0, 30.0, 13.52, 13.52, 13.52, 13.52, 13.52, 13.52, 13.52, 13.52, 16.37, 50.01, 27.99, 52.47, 76.64, 102.75, 121.94, 131.43, 134.71, 142.92, 157.07, 157.07, 157.07, 157.07, 157.07, 157.07, 157.07, 302.19, 443.22, 601.28, 755.05, 755.05, 755.05, 755.05, 755.05, 755.05, 620.4, 620.4, 768.61], "profit_aud": 768.61}}} \ No newline at end of file diff --git a/results/daily/2025-10-17.json b/results/daily/2025-10-17.json new file mode 100644 index 0000000..d2c7fd0 --- /dev/null +++ b/results/daily/2025-10-17.json @@ -0,0 +1 @@ +{"date": "2025-10-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [102.29, 102.4, 99.19, 109.22, 112.96, 133.15, 138.03, 118.92, 128.27, 137.91, 77.61, 78.5, 81.45, 107.92, 62.73, 8.67, -7.14, -10.46, -14.12, -20.5, -18.1, -19.44, -35.63, -45.67, -55.27, -32.31, -41.62, -95.12, -137.56, -175.15, -13.67, -73.77, -116.97, -47.85, 24.48, 102.78, 99.48, 103.41, 102.18, 105.62, 109.61, 106.58, 108.2, 105.67, 115.6, 112.41, 113.94, 117.79], "forecast_price": {"naive": [63.29, 44.42, 22.5, -4.43, -12.64, -18.64, -20.0, -20.0, -20.0, -20.0, -20.0, -13.18, -13.75, -15.92, -25.44, -21.38, -21.57, -14.01, -24.87, -22.76, -26.91, -19.83, -19.58, -19.34, -20.88, -15.36, -15.17, -26.25, -65.68, -113.22, -46.03, -12.09, -10.66, -14.44, 25.08, 102.52, 116.1, 112.82, 126.44, 123.01, 151.48, 124.26, 102.27, 105.88, 109.29, 107.71, 138.13, 131.74], "lightgbm": [44.31, 45.12, 46.08, 43.69, 47.21, 44.7, 46.25, 47.14, 46.25, 47.51, 54.2, 53.31, 47.55, 39.13, 10.76, -0.89, -6.83, -8.83, -13.97, -14.3, -16.71, -19.6, -20.95, -22.22, -22.91, -21.19, -22.0, -25.33, -41.39, -36.16, -26.46, -4.32, 9.85, 24.91, 39.51, 86.89, 106.8, 105.19, 108.59, 110.66, 117.19, 105.7, 89.16, 87.77, 90.59, 89.87, 103.56, 100.72], "lstm": [136.72, 124.69, 112.04, 107.74, 105.27, 92.96, 94.14, 85.67, 81.76, 98.17, 94.31, 93.72, 86.83, 66.39, 46.46, 32.72, 25.6, 14.05, 9.63, -2.62, -2.24, -2.63, -12.14, -17.86, -15.13, -18.34, -15.04, -15.9, -9.53, -1.64, 5.81, 13.25, 17.96, 41.43, 60.9, 112.42, 122.98, 157.37, 150.65, 134.32, 127.86, 110.29, 118.41, 95.04, 106.5, 89.43, 92.84, 99.57]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 1.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-127.87, -255.86, -379.85, -516.38, -579.07, -412.63, -240.09, -240.09, -79.76, 92.62, -4.4, -15.39, -15.39, 119.52, 119.52, 119.52, 120.41, 121.72, 123.48, 149.1, 131.55, 131.55, 136.0, 153.13, 222.21, 181.82, 181.82, 300.73, 472.69, 691.63, 674.54, 766.76, 912.97, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 948.86, 1093.35, 1233.87, 1376.3, 1523.53], "profit_aud": 1523.53}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.75, 2.5, 1.25, 0.0, 1.12, 1.0, 2.12, 0.88, 2.0, 3.12, 4.25, 4.12, 4.0, 3.12, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -13.65, -27.77, -44.42, -216.95, -365.6, -525.94, -612.13, -612.13, -514.01, -412.2, -277.3, -355.71, -355.71, -346.79, -359.87, -342.22, -316.6, -293.97, -293.97, -293.97, -332.11, -332.11, -372.5, -424.52, -305.62, -133.66, 85.28, 102.37, 111.59, -18.25, 41.56, 41.56, 41.56, 41.56, 41.56, 169.29, 301.32, 438.34, 571.57, 436.32, 304.23, 304.23, 272.76, 415.19, 562.42], "profit_aud": 562.42}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-127.87, -127.87, -127.87, -264.39, -264.39, -301.67, -301.67, -301.67, -301.67, -301.67, -204.65, -106.54, -106.54, -106.54, -106.54, -107.62, -106.73, -105.42, -103.65, -101.09, -98.83, -96.4, -91.95, -86.24, -37.88, -37.88, -37.88, 81.03, 252.98, 471.92, 489.01, 498.23, 498.23, 498.23, 498.23, 498.23, 622.58, 622.58, 750.31, 882.34, 1019.36, 1019.36, 884.11, 752.03, 752.03, 720.55, 862.98, 1010.22], "profit_aud": 1010.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -16.65, -176.98, -4.6, -4.6, -4.6, -4.6, -4.6, -4.6, -4.6, -4.6, -4.6, -4.6, 21.02, 0.93, 3.36, 7.82, 64.9, 133.99, 174.38, 200.39, 319.3, 336.49, 358.39, 358.39, 358.39, 358.39, 358.39, 358.39, 358.39, 358.39, 487.65, 615.38, 747.41, 884.43, 884.43, 884.43, 752.34, 882.39, 741.87, 741.87, 874.39], "profit_aud": 874.39}}} \ No newline at end of file diff --git a/results/daily/2025-10-18.json b/results/daily/2025-10-18.json new file mode 100644 index 0000000..9ac78f2 --- /dev/null +++ b/results/daily/2025-10-18.json @@ -0,0 +1 @@ +{"date": "2025-10-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [119.34, 95.02, 92.16, 80.61, 74.63, 86.91, 88.05, 89.51, 88.81, 86.32, 86.3, 81.02, 69.2, 34.73, 1.51, -8.28, -24.2, -39.91, -80.05, -55.2, -42.91, -36.24, -30.84, -21.68, -37.64, -39.85, -49.73, -25.72, -93.06, -58.26, -32.82, -11.44, -2.46, 51.09, 121.62, 149.17, 133.88, 137.62, 115.6, 89.38, 76.38, 39.97, 31.43, 21.72, 30.15, 10.28, -11.0, -10.83], "forecast_price": {"naive": [102.29, 102.4, 99.19, 109.22, 112.96, 133.15, 138.03, 118.92, 128.27, 137.91, 77.61, 78.5, 81.45, 107.92, 62.73, 8.67, -7.14, -10.46, -14.12, -20.5, -18.1, -19.44, -35.63, -45.67, -55.27, -32.31, -41.62, -95.12, -137.56, -175.15, -13.67, -73.77, -116.97, -47.85, 24.48, 102.78, 99.48, 103.41, 102.18, 105.62, 109.61, 106.58, 108.2, 105.67, 115.6, 112.41, 113.94, 117.79], "lightgbm": [66.18, 61.69, 55.47, 44.89, 38.79, 35.05, 29.86, 31.53, 28.99, 28.57, 40.77, 41.35, 36.47, 32.91, 21.98, -3.04, -10.92, -18.93, -27.43, -34.46, -32.77, -33.2, -40.32, -51.08, -58.71, -45.24, -51.72, -56.48, -50.22, -33.72, -19.07, -25.62, -18.64, -10.53, 37.55, 85.34, 90.23, 90.72, 87.98, 86.69, 89.23, 81.67, 82.58, 75.96, 89.25, 83.73, 85.82, 83.12], "lstm": [107.8, 114.77, 101.43, 89.16, 84.59, 77.5, 72.93, 73.91, 67.41, 68.91, 73.86, 65.4, 43.34, 19.33, 0.68, -11.61, -22.42, -37.45, -39.45, -48.73, -48.62, -49.79, -58.42, -71.0, -67.32, -70.19, -61.91, -62.04, -58.11, -44.27, -35.41, -24.42, -11.4, 8.55, 25.71, 60.05, 89.0, 116.14, 121.77, 112.52, 108.93, 96.68, 94.91, 93.85, 80.94, 73.27, 79.47, 89.03]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 1.88, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -93.28, -93.28, -93.28, 7.41, 7.41, 7.41, 7.41, 7.41, 7.41, 7.41, 7.41, 8.45, 11.47, 61.36, 161.42, 230.42, 284.05, 284.05, 245.5, 218.4, 218.4, 268.22, 330.38, 298.23, 414.55, 487.37, 491.47, 492.9, 493.21, 493.21, 645.23, 831.7, 999.04, 1171.07, 1171.07, 1171.07, 1171.07, 1171.07, 1171.07, 1143.91, 1177.83, 1177.83, 1191.58, 1205.12], "profit_aud": 1205.12}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 1.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-149.17, -267.95, -383.15, -483.91, -525.33, -416.69, -306.63, -306.63, -195.62, -87.71, -195.59, -206.93, -206.93, -163.52, -163.52, -163.52, -160.49, -155.51, -145.5, -76.5, -118.12, -118.12, -114.27, -106.14, -59.08, -108.9, -108.9, -76.75, 39.57, 112.4, 71.37, 85.67, 88.74, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 50.43, 88.12, 100.97, 87.22, 73.68], "profit_aud": 73.68}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.38, 1.38, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -110.07, -147.21, -258.22, -366.13, -258.25, -156.97, -70.47, -70.47, -70.47, -69.43, -66.41, -61.42, -51.41, -30.71, -30.71, -30.71, -26.86, 0.24, 47.3, 47.3, 109.46, 141.61, 211.4, 218.68, 182.25, 196.55, 196.86, 190.47, 190.47, 190.47, 357.82, 529.84, 659.89, 659.89, 755.36, 755.36, 755.36, 728.2, 765.89, 765.89, 765.89, 765.89], "profit_aud": 765.89}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03, 4.06, 9.05, 19.05, 32.85, 32.85, 37.38, 41.24, 68.34, 115.4, 165.21, 196.29, 228.45, 240.08, 247.36, 251.46, 252.89, 253.2, 253.2, 253.2, 253.2, 253.2, 425.22, 569.71, 681.43, 776.91, 776.91, 776.91, 776.91, 776.91, 764.05, 765.59, 752.05], "profit_aud": 752.05}}} \ No newline at end of file diff --git a/results/daily/2025-10-19.json b/results/daily/2025-10-19.json new file mode 100644 index 0000000..5d56e41 --- /dev/null +++ b/results/daily/2025-10-19.json @@ -0,0 +1 @@ +{"date": "2025-10-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-14.55, -11.27, -15.9, -15.79, -11.44, -11.7, -11.62, -11.77, -11.59, -11.57, -11.22, -10.8, -10.75, -15.19, -21.32, -20.33, -44.92, -40.26, -29.74, -23.97, -26.32, -28.44, -29.38, -20.16, -27.59, -26.2, -20.07, -14.79, -16.08, -11.86, -8.69, 33.49, 83.19, 87.25, 86.94, 97.2, 111.64, 115.73, 103.84, 94.17, 83.79, 74.35, 90.04, 98.85, 98.81, 111.5, 103.27, 93.12], "forecast_price": {"naive": [119.34, 95.02, 92.16, 80.61, 74.63, 86.91, 88.05, 89.51, 88.81, 86.32, 86.3, 81.02, 69.2, 34.73, 1.51, -8.28, -24.2, -39.91, -80.05, -55.2, -42.91, -36.24, -30.84, -21.68, -37.64, -39.85, -49.73, -25.72, -93.06, -58.26, -32.82, -11.44, -2.46, 51.09, 121.62, 149.17, 133.88, 137.62, 115.6, 89.38, 76.38, 39.97, 31.43, 21.72, 30.15, 10.28, -11.0, -10.83], "lightgbm": [53.61, 51.31, 48.54, 46.45, 42.33, 41.82, 42.72, 41.74, 41.01, 40.69, 40.55, 38.05, 41.89, 33.41, 26.69, 18.27, -15.98, -26.61, -40.07, -46.15, -39.53, -41.29, -42.19, -39.5, -47.38, -55.16, -64.77, -45.53, -61.83, -58.15, -39.39, -16.2, -5.08, 18.28, 42.96, 85.57, 95.1, 97.28, 92.07, 80.94, 67.36, 54.59, 52.92, 52.26, 51.6, 52.79, 50.87, 54.71], "lstm": [11.32, 6.99, 8.82, -0.64, 0.64, -2.51, -0.51, -7.35, -4.02, -2.44, 4.49, 3.45, -2.57, -9.36, -24.42, -27.63, -37.78, -45.38, -48.1, -64.7, -61.95, -51.89, -65.32, -69.51, -69.75, -62.34, -62.65, -58.39, -51.16, -42.53, -29.78, -24.91, -14.67, 3.87, 14.7, 52.85, 71.63, 83.58, 72.48, 62.84, 61.42, 59.48, 51.64, 42.84, 46.05, 36.86, 41.02, 47.33]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 1.0, 2.12, 3.25, 3.12, 3.0, 2.88, 2.75, 2.62, 2.5, 2.38, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 2.88, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 3.5, 2.5, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [18.19, 18.19, 38.05, 57.79, 57.79, 57.79, 57.79, 57.79, 57.79, 57.79, 57.79, 45.8, 32.36, 34.26, 39.59, 39.59, 95.74, 146.07, 183.25, 173.3, 173.3, 208.85, 245.57, 220.37, 254.86, 261.41, 263.92, 263.92, 267.94, 269.42, 270.51, 270.51, 270.51, 270.51, 270.51, 270.51, 410.06, 554.73, 684.53, 684.53, 579.79, 486.85, 486.85, 585.7, 585.7, 725.07, 854.16, 854.16], "profit_aud": 854.16}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 1.88, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 14.3, 14.3, 14.3, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 3.6, 9.22, 59.55, 96.72, 126.69, 159.59, 159.59, 122.87, 97.66, 97.66, 130.42, 155.5, 137.02, 157.11, 171.94, 173.03, 168.85, 158.45, 158.45, 267.12, 388.62, 528.17, 672.84, 672.84, 672.84, 672.84, 672.84, 672.84, 549.27, 660.43, 660.43, 531.34, 414.94], "profit_aud": 414.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.75, 0.0, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.62, 10.65, 14.37, 44.33, 44.33, 44.33, 44.33, 30.32, 51.01, 83.77, 108.85, 108.85, 128.95, 143.78, 144.86, 140.68, 130.28, 130.28, 130.28, 251.78, 391.33, 536.0, 665.8, 665.8, 665.8, 665.8, 665.8, 665.8, 665.8, 665.8, 665.8, 665.8], "profit_aud": 665.8}, "lstm": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 1.75, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 14.09, -3.79, 15.94, 3.07, 17.7, 4.81, 19.52, 34.01, 38.35, 24.32, 10.82, 12.17, 14.07, 16.73, 19.27, 24.89, 29.92, 33.64, 63.6, 70.18, 34.64, 71.36, 96.57, 131.06, 147.44, 172.52, 174.37, 176.38, 177.86, 178.95, 174.76, 164.37, 164.37, 164.37, 164.37, 303.92, 448.58, 578.38, 696.09, 696.09, 696.09, 696.09, 696.09, 696.09, 556.72, 542.27, 658.67], "profit_aud": 658.67}}} \ No newline at end of file diff --git a/results/daily/2025-10-20.json b/results/daily/2025-10-20.json new file mode 100644 index 0000000..43d72c5 --- /dev/null +++ b/results/daily/2025-10-20.json @@ -0,0 +1 @@ +{"date": "2025-10-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [96.97, 91.86, 97.74, 84.76, 92.91, 94.91, 88.22, 117.33, 117.28, 127.76, 109.58, 94.69, 131.55, 130.19, 76.31, 49.62, 122.1, 71.81, 58.98, 129.85, 129.09, 146.33, 113.26, 113.47, 122.33, 161.4, 133.44, 133.24, 128.96, 79.44, 119.87, 82.71, 53.75, 139.56, 155.98, 178.04, 135.69, 118.23, 127.39, 131.57, 134.11, 133.33, 132.11, 121.04, 147.21, 118.83, 173.88, 176.45], "forecast_price": {"naive": [-14.55, -11.27, -15.9, -15.79, -11.44, -11.7, -11.62, -11.77, -11.59, -11.57, -11.22, -10.8, -10.75, -15.19, -21.32, -20.33, -44.92, -40.26, -29.74, -23.97, -26.32, -28.44, -29.38, -20.16, -27.59, -26.2, -20.07, -14.79, -16.08, -11.86, -8.69, 33.49, 83.19, 87.25, 86.94, 97.2, 111.64, 115.73, 103.84, 94.17, 83.79, 74.35, 90.04, 98.85, 98.81, 111.5, 103.27, 93.12], "lightgbm": [33.56, 32.32, 36.6, 37.72, 37.68, 34.85, 35.27, 34.18, 34.18, 38.0, 46.04, 54.74, 52.2, 42.33, 35.45, 30.89, 11.84, -2.41, -5.42, -5.4, -7.67, -13.85, -20.88, -12.67, -21.97, -20.31, -14.85, -12.65, -12.92, -10.41, -2.74, 11.17, 25.53, 36.03, 53.21, 78.42, 87.12, 90.13, 88.25, 88.38, 81.79, 67.56, 71.77, 72.19, 70.07, 71.33, 70.07, 67.3], "lstm": [140.15, 131.56, 117.13, 112.36, 105.59, 99.0, 107.65, 88.84, 92.84, 104.65, 101.25, 98.6, 98.16, 97.44, 79.24, 55.98, 54.32, 42.67, 35.71, 21.07, 18.79, 18.28, 12.68, 7.4, 8.07, 4.46, 7.3, 8.84, 14.98, 21.29, 30.13, 33.65, 36.69, 79.96, 99.42, 156.89, 164.49, 189.27, 162.47, 139.72, 136.67, 110.54, 111.17, 89.87, 104.49, 90.1, 93.01, 95.5]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 4.38, 4.38, 3.12, 3.12, 4.25, 3.0, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.38, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -114.83, -114.83, -220.78, -336.92, -389.59, -499.87, -426.54, -426.54, -266.84, -266.84, -385.21, -220.77, -58.03, -153.42, -215.44, -62.82, -152.59, -226.31, -96.46, -96.46, 86.45, -55.12, -196.96, -196.96, 4.79, 171.59, 338.14, 338.14, 238.84, 189.09, 85.7, 18.51, 192.96, 387.93, 610.48, 729.21, 581.42, 581.42, 581.42, 581.42, 581.42, 581.42, 430.12, 614.14, 465.61, 682.96, 903.52], "profit_aud": 903.52}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 1.0, 2.12, 3.25, 3.12, 3.0, 2.88, 2.75, 2.62, 2.5, 2.38, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 2.88, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 3.5, 2.5, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-121.21, -121.21, -243.39, -349.35, -349.35, -349.35, -349.35, -349.35, -349.35, -349.35, -349.35, -244.24, -79.8, -96.07, -115.15, -115.15, -267.77, -357.54, -431.26, -377.37, -377.37, -560.28, -701.85, -560.01, -712.92, -753.27, -769.95, -769.95, -802.19, -812.12, -827.11, -827.11, -827.11, -827.11, -827.11, -827.11, -657.49, -509.71, -350.47, -350.47, -518.11, -684.77, -684.77, -563.73, -563.73, -415.2, -197.85, -197.85], "profit_aud": -197.85}, "lightgbm": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-121.21, -236.04, -236.04, -236.04, -236.04, -288.71, -288.71, -435.38, -581.98, -581.98, -445.01, -326.64, -162.2, 0.53, 0.53, 0.53, 0.53, -8.44, -23.19, -23.19, -39.32, -149.07, -290.64, -290.64, -443.55, -645.3, -812.1, -812.1, -844.34, -854.27, -869.25, -869.25, -869.25, -869.25, -869.25, -869.25, -699.64, -551.85, -392.62, -228.16, -228.16, -228.16, -228.16, -228.16, -228.16, -228.16, -228.16, -228.16], "profit_aud": -228.16}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -146.67, -163.09, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -3.39, -145.23, -298.14, -499.89, -666.69, -740.64, -740.64, -740.64, -740.64, -740.64, -740.64, -740.64, -740.64, -518.09, -348.48, -200.69, -41.45, -41.45, -41.45, -41.45, -41.45, -192.75, -27.14, -27.14, -27.14, -27.14], "profit_aud": -27.14}}} \ No newline at end of file diff --git a/results/daily/2025-10-21.json b/results/daily/2025-10-21.json new file mode 100644 index 0000000..7905d1b --- /dev/null +++ b/results/daily/2025-10-21.json @@ -0,0 +1 @@ +{"date": "2025-10-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [206.72, 209.04, 213.87, 232.83, 233.03, 211.48, 200.39, 201.25, 203.83, 206.62, 190.18, 170.37, 165.25, 255.35, 183.85, 122.84, 145.35, 81.63, 86.76, 68.3, 64.82, 58.32, 140.22, 95.35, 107.4, 141.24, 117.37, 108.51, 155.9, 173.13, 139.82, 153.56, 133.76, 137.18, 129.13, 100.72, 142.65, 173.53, 137.35, 121.83, 85.61, 72.27, 51.02, 37.0, 16.77, -11.02, -11.68, -11.04], "forecast_price": {"naive": [96.97, 91.86, 97.74, 84.76, 92.91, 94.91, 88.22, 117.33, 117.28, 127.76, 109.58, 94.69, 131.55, 130.19, 76.31, 49.62, 122.1, 71.81, 58.98, 129.85, 129.09, 146.33, 113.26, 113.47, 122.33, 161.4, 133.44, 133.24, 128.96, 79.44, 119.87, 82.71, 53.75, 139.56, 155.98, 178.04, 135.69, 118.23, 127.39, 131.57, 134.11, 133.33, 132.11, 121.04, 147.21, 118.83, 173.88, 176.45], "lightgbm": [95.87, 90.73, 86.35, 78.17, 76.17, 77.72, 75.51, 78.82, 81.55, 91.17, 95.59, 95.89, 103.28, 96.96, 78.75, 57.54, 77.08, 64.42, 50.27, 53.7, 47.72, 43.95, 49.69, 50.19, 47.93, 39.63, 50.48, 53.13, 53.01, 52.77, 57.51, 58.38, 53.12, 107.8, 114.87, 138.23, 135.06, 122.57, 126.17, 126.2, 127.53, 119.05, 115.3, 105.44, 115.75, 103.19, 129.44, 132.64], "lstm": [153.95, 152.73, 134.1, 131.11, 123.16, 113.48, 120.19, 110.33, 111.34, 112.82, 120.62, 115.3, 104.98, 107.04, 93.95, 73.98, 67.91, 56.03, 52.24, 35.87, 33.3, 31.67, 31.13, 22.19, 24.54, 24.43, 22.76, 21.12, 24.9, 35.42, 38.32, 50.24, 56.35, 82.13, 102.28, 149.62, 161.18, 181.38, 164.64, 143.95, 135.03, 116.97, 116.22, 102.38, 108.83, 88.18, 96.76, 109.08]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 3.88, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-258.4, -519.69, -519.69, -286.86, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, -19.42, -225.98, 93.21, 93.21, -60.34, 103.17, 1.14, -47.01, -132.38, -213.4, -286.3, -111.03, -230.22, -245.25, -68.69, -85.13, -220.76, -25.88, 190.53, 190.53, 382.48, 382.48, 382.48, 382.48, 256.57, 417.05, 633.96, 633.96, 633.96, 633.96, 633.96, 633.96, 633.96, 633.96, 647.74, 662.34, 676.14], "profit_aud": 676.14}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 4.38, 4.38, 3.12, 3.12, 4.25, 3.0, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.38, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -261.29, -261.29, -552.33, -843.62, -960.99, -1211.47, -1085.69, -1085.69, -827.42, -827.42, -1040.38, -833.82, -514.64, -744.45, -898.0, -716.31, -818.35, -926.79, -858.5, -858.5, -785.6, -960.87, -1080.05, -1080.05, -903.5, -756.79, -621.15, -621.15, -837.56, -895.59, -1087.53, -1254.73, -1083.26, -921.85, -795.94, -671.12, -888.03, -888.03, -888.03, -888.03, -888.03, -888.03, -934.29, -913.32, -899.55, -914.15, -927.96], "profit_aud": -927.96}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.5, 0.25, 0.25, 0.25, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -291.04, -582.33, -846.67, -1097.16, -1208.85, -1208.85, -1208.85, -971.12, -758.16, -551.6, -232.41, -232.41, -385.96, -222.45, -222.45, -222.45, -222.45, -303.47, -376.37, -454.19, -454.19, -588.44, -764.99, -764.99, -764.99, -764.99, -764.99, -764.99, -764.99, -764.99, -764.99, -764.99, -639.09, -460.77, -460.77, -460.77, -338.94, -231.93, -231.93, -231.93, -278.18, -278.18, -264.41, -279.01, -292.81], "profit_aud": -292.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -119.18, -178.79, -355.35, -502.06, -637.69, -637.69, -637.69, -637.69, -637.69, -637.69, -637.69, -637.69, -511.79, -333.47, -116.56, 55.12, 55.12, 55.12, 55.12, 55.12, 55.12, 55.12, 68.9, 70.53, 56.73], "profit_aud": 56.73}}} \ No newline at end of file diff --git a/results/daily/2025-10-22.json b/results/daily/2025-10-22.json new file mode 100644 index 0000000..9f8f031 --- /dev/null +++ b/results/daily/2025-10-22.json @@ -0,0 +1 @@ +{"date": "2025-10-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-10.97, -9.92, -5.97, -10.22, -11.44, -10.97, -10.47, -11.4, -13.02, -19.98, -14.52, -11.13, -10.93, -11.0, -11.39, -17.8, -10.77, -17.8, -30.48, -23.38, -14.48, -16.21, -13.42, -17.37, -23.36, -20.0, -45.2, -45.07, -17.68, -13.08, -12.58, -13.64, -83.61, -90.77, -40.84, -13.46, -8.08, 50.8, 61.27, 68.88, 69.41, 70.64, 62.51, 68.73, 90.69, 104.82, 106.21, 124.18], "forecast_price": {"naive": [206.72, 209.04, 213.87, 232.83, 233.03, 211.48, 200.39, 201.25, 203.83, 206.62, 190.18, 170.37, 165.25, 255.35, 183.85, 122.84, 145.35, 81.63, 86.76, 68.3, 64.82, 58.32, 140.22, 95.35, 107.4, 141.24, 117.37, 108.51, 155.9, 173.13, 139.82, 153.56, 133.76, 137.18, 129.13, 100.72, 142.65, 173.53, 137.35, 121.83, 85.61, 72.27, 51.02, 37.0, 16.77, -11.02, -11.68, -11.04], "lightgbm": [130.13, 132.56, 121.78, 114.26, 111.87, 110.22, 107.9, 109.57, 108.5, 113.3, 122.53, 127.98, 121.69, 113.15, 81.04, 68.69, 77.58, 29.8, 17.53, 24.15, 24.42, 19.04, 18.12, 11.11, 13.0, 14.72, 12.57, 12.5, 11.68, 16.26, 24.42, 29.03, 37.16, 72.23, 86.65, 87.42, 118.51, 130.59, 120.27, 103.46, 82.1, 75.5, 69.77, 60.19, 57.85, 54.22, 53.16, 53.16], "lstm": [7.98, 14.81, 7.53, 1.68, 2.81, -4.69, -1.18, 1.05, 4.03, 1.12, 11.32, 15.22, 16.62, 21.41, 16.71, 15.64, 10.84, 5.26, -0.33, -7.32, -4.28, -5.3, -6.79, -9.17, -11.62, -10.25, -8.7, -10.17, -6.7, 0.5, 1.83, 9.19, 6.69, 21.55, 28.05, 48.95, 59.99, 73.96, 61.21, 57.75, 57.26, 52.31, 47.51, 42.19, 41.9, 30.1, 35.88, 49.18]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.0, 2.5, 2.25, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 2.75, 1.5, 0.25, 0.12, 1.25, 0.0, 1.0, 2.12, 3.25, 2.0, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [13.71, 16.19, 8.72, 10.0, 15.72, 15.72, 15.72, 15.72, 32.0, 56.98, 75.14, 68.96, 55.29, 41.54, 41.54, 63.79, 50.34, 70.36, 108.47, 137.7, 119.6, 119.6, 102.82, 102.82, 132.02, 157.02, 213.52, 269.85, 272.06, 255.71, 239.98, 228.59, 333.1, 446.57, 497.62, 499.3, 500.31, 500.31, 500.31, 500.31, 500.31, 579.77, 501.63, 501.63, 615.0, 746.02, 878.78, 1034.01], "profit_aud": 1034.01}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 3.88, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [13.71, 26.1, 26.1, 15.89, 1.59, 1.59, 1.59, 1.59, 1.59, 1.59, 1.59, 3.15, 16.81, 3.06, 3.06, 25.31, 13.2, 35.45, 52.37, 81.6, 99.7, 119.96, 103.18, 124.89, 128.16, 103.17, 109.5, 165.83, 143.74, 127.39, 127.39, 110.34, 110.34, 110.34, 110.34, 127.17, 118.08, 181.58, 181.58, 181.58, 181.58, 181.58, 181.58, 181.58, 181.58, 50.56, -82.21, -237.44], "profit_aud": -237.44}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 13.08, 16.27, 32.56, 32.56, 14.4, 0.49, 0.49, 0.49, 0.49, 22.74, 10.63, 10.63, 48.73, 48.73, 32.45, 32.45, 32.45, 54.16, 83.36, 70.86, 127.36, 183.7, 205.79, 205.79, 205.79, 205.79, 205.79, 205.79, 205.79, 205.79, 195.69, 259.19, 335.78, 421.88, 421.88, 421.88, 421.88, 421.88, 421.88, 421.88, 421.88, 421.88], "profit_aud": 421.88}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [13.71, 2.55, 2.55, 15.32, 21.67, 35.38, 48.46, 62.71, 48.05, 73.03, 73.03, 73.03, 59.37, 45.62, 31.38, 9.12, 9.12, 9.12, 12.93, 42.17, 26.1, 28.12, 29.8, 51.52, 80.72, 105.71, 133.96, 190.29, 192.5, 192.5, 192.5, 177.16, 281.67, 281.67, 281.67, 281.67, 271.57, 335.07, 411.65, 497.76, 497.76, 497.76, 497.76, 497.76, 497.76, 366.74, 351.87, 507.1], "profit_aud": 507.1}}} \ No newline at end of file diff --git a/results/daily/2025-10-23.json b/results/daily/2025-10-23.json new file mode 100644 index 0000000..257be37 --- /dev/null +++ b/results/daily/2025-10-23.json @@ -0,0 +1 @@ +{"date": "2025-10-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [156.36, 161.03, 157.42, 186.23, 183.06, 173.84, 174.62, 153.98, 176.9, 173.28, 160.31, 168.1, 141.49, 132.71, 294.63, 460.4, 148.2, 432.3, 226.34, 151.75, 33.21, 35.13, 59.42, 82.75, 59.74, 42.61, -1.35, 6.42, 0.27, 14.69, 74.15, 79.81, 114.91, 135.02, 140.53, 161.01, 141.23, 135.88, 148.26, 147.0, 136.99, 128.48, 104.53, 112.95, 110.2, 109.42, 128.14, 134.27], "forecast_price": {"naive": [-10.97, -9.92, -5.97, -10.22, -11.44, -10.97, -10.47, -11.4, -13.02, -19.98, -14.52, -11.13, -10.93, -11.0, -11.39, -17.8, -10.77, -17.8, -30.48, -23.38, -14.48, -16.21, -13.42, -17.37, -23.36, -20.0, -45.2, -45.07, -17.68, -13.08, -12.58, -13.64, -83.61, -90.77, -40.84, -13.46, -8.08, 50.8, 61.27, 68.88, 69.41, 70.64, 62.51, 68.73, 90.69, 104.82, 106.21, 124.18], "lightgbm": [23.94, 20.42, 15.41, 10.92, 11.63, 11.5, 10.74, 11.5, 11.58, 16.59, 26.39, 28.12, 25.94, 24.33, 11.43, 11.58, 7.75, 2.05, -6.79, -7.64, -9.03, -10.94, -11.74, -9.99, -14.48, -14.29, -24.91, -28.1, -14.53, -5.79, -5.07, 2.31, -9.49, -4.29, 14.41, 47.48, 61.67, 70.27, 71.7, 73.02, 71.04, 68.63, 60.4, 59.96, 67.19, 69.52, 75.11, 81.43], "lstm": [105.64, 108.3, 94.12, 93.36, 87.18, 77.97, 79.28, 74.58, 79.75, 81.12, 88.93, 90.03, 73.31, 65.58, 51.41, 38.92, 30.2, 22.98, 17.97, 13.31, 11.09, 8.62, 6.41, 1.73, 2.4, -1.02, -0.27, 2.3, -0.01, 5.49, 7.01, 11.33, 18.82, 35.32, 50.21, 80.52, 89.45, 111.76, 105.91, 103.62, 94.17, 83.11, 86.65, 79.48, 72.93, 63.94, 71.1, 76.75]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.62, 1.62, 2.75, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-195.45, -240.54, -437.32, -204.53, 24.3, 24.3, 24.3, -168.18, -168.18, -168.18, -257.15, -257.15, -434.01, -599.9, -231.62, 343.88, 158.63, 699.0, 981.93, 981.93, 940.42, 896.51, 896.51, 999.95, 1059.68, 1036.03, 1037.72, 1029.69, 1029.36, 1011.0, 1011.0, 1011.0, 1011.0, 1011.0, 1011.0, 1212.26, 1388.8, 1388.8, 1574.13, 1757.88, 1757.88, 1757.88, 1627.21, 1627.21, 1596.36, 1459.58, 1619.75, 1787.58], "profit_aud": 1787.58}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.0, 2.5, 2.25, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 2.75, 1.5, 0.25, 0.12, 1.25, 0.0, 1.0, 2.12, 3.25, 2.0, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-195.45, -235.71, -38.93, -62.21, -153.74, -153.74, -153.74, -153.74, -374.87, -591.47, -791.86, -698.56, -521.7, -355.81, -355.81, -931.31, -746.06, -1232.39, -1515.32, -1705.01, -1663.49, -1663.49, -1589.22, -1589.22, -1663.89, -1717.15, -1715.47, -1723.49, -1723.52, -1705.16, -1612.47, -1545.82, -1689.46, -1858.24, -2033.91, -2054.03, -2071.69, -2071.69, -2071.69, -2071.69, -2071.69, -1927.14, -2057.81, -2057.81, -1920.06, -1783.29, -1623.12, -1455.28], "profit_aud": -1455.28}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 1.5, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -232.79, -232.79, -450.08, -668.36, -860.84, -959.02, -959.02, -758.64, -548.51, -371.65, -205.76, -205.76, -205.76, -205.76, -205.76, -234.05, -253.02, -257.17, -261.56, -335.84, -243.99, -318.66, -345.29, -343.61, -351.63, -351.96, -353.8, -363.07, -263.3, -406.94, -440.7, -440.7, -440.7, -440.7, -304.82, -119.5, 64.25, 235.49, 235.49, 104.83, -36.36, -36.36, -36.36, 123.81, 291.65], "profit_aud": 291.65}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -217.29, -266.19, -458.67, -458.67, -458.67, -258.28, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -48.15, -151.59, -151.59, -204.86, -203.17, -206.74, -207.07, -207.07, -207.07, -207.07, -207.07, -207.07, -207.07, -207.07, -207.07, -37.22, 148.1, 331.85, 503.09, 503.09, 503.09, 503.09, 503.09, 366.31, 366.31, 517.36], "profit_aud": 517.36}}} \ No newline at end of file diff --git a/results/daily/2025-10-24.json b/results/daily/2025-10-24.json new file mode 100644 index 0000000..16b30a3 --- /dev/null +++ b/results/daily/2025-10-24.json @@ -0,0 +1 @@ +{"date": "2025-10-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [143.07, 140.17, 133.36, 135.57, 147.29, 142.55, 141.17, 143.7, 169.01, 183.33, 173.93, 176.57, 169.08, 112.73, 80.94, 39.68, 52.73, 60.46, -8.53, -8.64, -14.91, -9.24, -10.77, -11.22, -12.95, -10.74, -18.1, -20.67, -15.39, -13.42, -9.95, 11.62, 13.42, 68.24, 97.18, 138.17, 133.65, 113.96, 133.98, 144.55, 141.83, 145.44, 150.54, 147.23, 141.94, 146.52, 150.98, 151.14], "forecast_price": {"naive": [156.36, 161.03, 157.42, 186.23, 183.06, 173.84, 174.62, 153.98, 176.9, 173.28, 160.31, 168.1, 141.49, 132.71, 294.63, 460.4, 148.2, 432.3, 226.34, 151.75, 33.21, 35.13, 59.42, 82.75, 59.74, 42.61, -1.35, 6.42, 0.27, 14.69, 74.15, 79.81, 114.91, 135.02, 140.53, 161.01, 141.23, 135.88, 148.26, 147.0, 136.99, 128.48, 104.53, 112.95, 110.2, 109.42, 128.14, 134.27], "lightgbm": [121.75, 117.05, 110.17, 93.26, 90.98, 92.23, 90.54, 92.02, 91.12, 91.11, 83.84, 89.19, 90.61, 90.65, 80.17, 71.34, 74.86, 52.1, 38.62, 26.87, 18.76, 14.93, 6.9, 7.74, 1.12, 4.11, -10.71, -11.79, -3.08, 2.57, 22.09, 23.96, 36.24, 55.28, 77.42, 118.14, 123.86, 122.08, 120.71, 120.84, 118.96, 105.39, 86.22, 90.12, 84.72, 84.72, 95.63, 99.97], "lstm": [137.79, 132.53, 116.46, 120.17, 109.23, 104.2, 99.06, 97.58, 98.82, 106.1, 107.46, 113.45, 111.97, 118.02, 103.23, 94.59, 79.99, 65.86, 58.89, 45.82, 42.42, 37.73, 37.39, 28.32, 31.56, 26.03, 23.0, 27.3, 27.97, 32.8, 37.34, 50.31, 57.24, 78.65, 94.22, 123.84, 132.77, 153.42, 141.29, 134.67, 125.7, 119.89, 110.98, 101.81, 106.34, 90.99, 99.74, 103.97]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -175.22, -341.92, -511.38, -511.38, -590.49, -766.96, -766.96, -766.96, -537.8, -320.39, -99.68, 111.68, 111.68, 111.68, 62.08, 54.69, 130.27, 131.34, 132.42, 151.05, 140.79, 142.14, 143.54, 159.73, 153.77, 176.39, 202.23, 221.46, 238.24, 239.49, 239.49, 239.49, 239.49, 239.49, 394.93, 394.93, 252.47, 252.47, 252.47, 252.47, 252.47, 440.64, 624.68, 624.68, 624.68, 813.41, 1002.34], "profit_aud": 1002.34}, "naive": {"charge_mw": [2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.62, 1.62, 2.75, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-178.83, -218.08, -384.78, -215.32, -31.21, -31.21, -31.21, -210.84, -210.84, -210.84, -307.37, -307.37, -518.72, -659.63, -558.46, -508.86, -574.77, -499.19, -509.86, -509.86, -491.22, -479.67, -479.67, -493.69, -506.64, -500.68, -478.06, -452.22, -432.98, -416.2, -416.2, -416.2, -416.2, -416.2, -416.2, -243.49, -76.43, -76.43, 91.04, 271.73, 271.73, 271.73, 83.56, 83.56, 43.82, -139.33, 49.39, 238.32], "profit_aud": 238.32}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.47, 0.85, 17.04, 10.32, 32.95, 58.79, 78.02, 94.8, 94.8, 94.8, 94.8, 94.8, 94.8, 94.8, 261.86, 404.32, 571.79, 752.48, 752.48, 752.48, 752.48, 752.48, 575.06, 391.9, 542.89, 731.81], "profit_aud": 731.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -176.46, -356.09, -567.36, -567.36, -567.36, -346.64, -198.7, -57.78, -57.78, -57.78, -57.78, -57.78, -57.78, -57.78, -57.78, -57.78, -57.78, -43.76, -51.85, -38.43, -15.8, 10.04, 29.27, 29.27, 29.27, 29.27, 29.27, 29.27, 29.27, 29.27, 196.33, 338.79, 506.26, 686.95, 686.95, 686.95, 686.95, 686.95, 686.95, 503.8, 503.8, 673.83], "profit_aud": 673.83}}} \ No newline at end of file diff --git a/results/daily/2025-10-25.json b/results/daily/2025-10-25.json new file mode 100644 index 0000000..4445536 --- /dev/null +++ b/results/daily/2025-10-25.json @@ -0,0 +1 @@ +{"date": "2025-10-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [150.81, 153.22, 172.4, 194.59, 188.99, 195.75, 194.38, 154.62, 144.62, 133.98, 123.92, 120.0, 86.64, 62.14, 41.34, 37.36, 27.27, 7.94, 6.9, 5.76, -1.4, -9.37, -9.87, -10.85, -10.52, -7.77, -9.19, -1.43, 46.65, 73.54, 72.88, 32.84, 65.11, 105.93, 100.18, 91.19, 90.08, 99.01, 103.91, 113.58, 105.24, 113.75, 116.49, 70.85, 36.84, 71.38, 90.35, 97.34], "forecast_price": {"naive": [143.07, 140.17, 133.36, 135.57, 147.29, 142.55, 141.17, 143.7, 169.01, 183.33, 173.93, 176.57, 169.08, 112.73, 80.94, 39.68, 52.73, 60.46, -8.53, -8.64, -14.91, -9.24, -10.77, -11.22, -12.95, -10.74, -18.1, -20.67, -15.39, -13.42, -9.95, 11.62, 13.42, 68.24, 97.18, 138.17, 133.65, 113.96, 133.98, 144.55, 141.83, 145.44, 150.54, 147.23, 141.94, 146.52, 150.98, 151.14], "lightgbm": [111.68, 109.57, 98.19, 91.0, 78.49, 80.82, 80.73, 79.47, 80.05, 85.67, 82.09, 80.2, 61.37, 49.63, 35.96, 18.2, 20.6, 6.4, -15.27, -21.81, -24.96, -24.79, -21.4, -19.14, -23.25, -23.73, -30.44, -31.58, -28.2, -24.85, -4.63, 9.71, 13.03, 39.77, 68.12, 105.25, 106.36, 101.37, 111.43, 114.15, 106.42, 101.82, 97.69, 100.23, 95.41, 98.76, 100.28, 100.28], "lstm": [142.52, 143.35, 123.87, 118.24, 111.02, 97.46, 93.15, 92.8, 87.45, 86.08, 90.97, 86.13, 71.9, 58.38, 47.53, 36.46, 29.98, 13.89, 12.18, 1.72, 0.11, -4.13, -5.75, -14.98, -15.52, -15.77, -14.5, -11.73, -9.69, -1.32, 8.57, 19.58, 29.94, 52.87, 70.36, 103.78, 129.55, 138.43, 131.1, 122.04, 128.85, 114.28, 110.65, 108.6, 101.33, 86.62, 92.32, 101.71]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-188.52, -380.05, -595.55, -352.31, -352.31, -107.63, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.45, 62.63, 74.34, 86.68, 100.25, 113.4, 109.09, 120.57, 120.75, 120.75, 212.68, 285.55, 244.51, 163.12, 295.54, 295.54, 282.77, 170.16, 170.16, 170.16, 312.13, 443.68, 585.87, 731.48, 642.92, 596.87, 576.88, 689.82, 811.5], "profit_aud": 811.5}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -191.53, -407.03, -650.26, -650.26, -758.9, -1001.88, -1001.88, -1001.88, -834.4, -679.49, -529.5, -421.19, -421.19, -421.19, -467.9, -471.72, -461.79, -462.65, -463.38, -461.63, -472.03, -470.79, -469.44, -456.29, -460.6, -449.11, -447.33, -505.64, -597.57, -606.68, -606.68, -606.68, -606.68, -606.68, -504.09, -504.09, -627.85, -627.85, -627.85, -627.85, -627.85, -482.24, -393.68, -393.68, -393.68, -280.74, -159.06], "profit_aud": -159.06}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.22, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -46.7, -16.02, -16.02, -16.89, -17.61, -15.86, -4.14, -5.53, -19.09, -19.09, -19.09, -7.61, -5.82, -64.14, -156.07, -165.18, -165.18, -165.18, -165.18, -165.18, -165.18, -52.57, -52.57, 77.31, 219.28, 350.83, 350.83, 350.83, 350.83, 350.83, 350.83, 350.83, 350.83], "profit_aud": 350.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17, 2.41, 15.97, 29.12, 38.83, 50.31, 51.21, 45.37, 36.18, 36.18, 36.18, 36.18, 36.18, 36.18, 36.18, 148.79, 272.55, 402.43, 402.43, 533.99, 533.99, 533.99, 533.99, 533.99, 444.77, 444.77, 554.27], "profit_aud": 554.27}}} \ No newline at end of file diff --git a/results/daily/2025-10-26.json b/results/daily/2025-10-26.json new file mode 100644 index 0000000..6c17b2b --- /dev/null +++ b/results/daily/2025-10-26.json @@ -0,0 +1 @@ +{"date": "2025-10-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [65.6, 56.87, 39.22, 34.35, 34.06, 29.33, 29.81, 31.19, 28.16, 31.56, 41.18, 36.04, 9.02, 23.74, -0.26, -11.15, -13.43, -12.05, -12.44, -17.45, -38.6, -38.95, -60.54, -74.84, -63.65, -80.67, -114.79, -167.95, -100.84, -160.82, -160.19, -103.14, -39.5, -17.66, -29.97, -18.72, 27.94, 40.69, 16.88, 30.14, 25.94, 37.41, 12.1, 30.05, 26.22, 23.03, -2.22, 3.41], "forecast_price": {"naive": [150.81, 153.22, 172.4, 194.59, 188.99, 195.75, 194.38, 154.62, 144.62, 133.98, 123.92, 120.0, 86.64, 62.14, 41.34, 37.36, 27.27, 7.94, 6.9, 5.76, -1.4, -9.37, -9.87, -10.85, -10.52, -7.77, -9.19, -1.43, 46.65, 73.54, 72.88, 32.84, 65.11, 105.93, 100.18, 91.19, 90.08, 99.01, 103.91, 113.58, 105.24, 113.75, 116.49, 70.85, 36.84, 71.38, 90.35, 97.34], "lightgbm": [110.57, 109.03, 102.48, 90.38, 85.99, 79.7, 79.7, 79.97, 80.28, 80.69, 73.2, 70.5, 57.33, 42.71, 30.36, 24.77, 12.97, -2.58, -8.04, -11.27, -13.81, -16.74, -16.22, -14.66, -17.03, -16.86, -13.68, -11.42, 2.08, 11.18, 16.77, 24.57, 28.86, 46.67, 65.22, 86.84, 91.05, 96.15, 95.25, 107.32, 92.78, 95.11, 96.17, 68.11, 59.61, 63.99, 77.26, 82.28], "lstm": [70.58, 69.66, 69.45, 58.4, 57.24, 52.79, 47.95, 43.53, 41.41, 40.18, 49.23, 43.61, 32.2, 27.45, 21.14, 16.25, 13.0, -1.44, -0.57, -14.54, -7.84, -10.23, -14.26, -16.52, -22.43, -20.67, -16.64, -13.09, -12.86, -4.51, 5.03, 16.79, 22.15, 43.83, 56.11, 88.77, 112.74, 111.94, 104.22, 92.94, 96.56, 87.14, 76.96, 76.59, 71.97, 63.7, 65.91, 71.7]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -36.67, -45.02, -45.02, -80.22, -80.22, -28.74, 16.31, 5.03, 31.74, 31.77, 33.16, 49.95, 38.26, 38.26, 40.44, 45.26, 50.13, 57.7, 151.25, 80.59, 90.68, 234.16, 444.1, 444.1, 645.12, 845.36, 922.71, 927.65, 908.05, 945.51, 947.85, 982.77, 1033.63, 1012.54, 1050.21, 1050.21, 1096.97, 1081.85, 1119.42, 1145.64, 1145.64, 1148.42, 1152.26], "profit_aud": 1152.26}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-82.0, -153.08, -202.11, -159.17, -159.17, -122.5, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -96.42, -91.59, -42.91, 32.76, 126.31, 205.87, 161.1, 304.59, 325.58, 325.58, 124.55, -35.64, 93.28, 142.66, 120.58, 120.58, 123.2, 88.28, 88.28, 88.28, 125.96, 158.38, 205.13, 220.25, 182.69, 149.91, 143.46, 140.68, 144.94], "profit_aud": 144.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.51, 3.06, 5.24, 10.07, 58.75, 134.42, 181.19, 260.76, 361.59, 375.94, 396.93, 396.93, 396.93, 396.93, 396.93, 396.93, 396.93, 396.93, 396.93, 396.93, 447.79, 468.89, 506.56, 506.56, 506.56, 521.68, 513.27, 480.49, 451.71, 448.93, 453.19], "profit_aud": 453.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.94, -43.4, 8.08, 8.08, 8.08, 8.08, 8.08, 8.08, 8.08, 23.15, 9.34, 31.15, -11.69, -6.83, 31.01, 124.56, 204.12, 304.95, 448.44, 469.43, 482.04, 502.14, 502.14, 502.14, 502.14, 502.14, 502.14, 502.14, 537.06, 587.92, 609.02, 609.02, 641.44, 641.44, 641.44, 641.44, 641.44, 612.65, 612.65, 616.49], "profit_aud": 616.49}}} \ No newline at end of file diff --git a/results/daily/2025-10-27.json b/results/daily/2025-10-27.json new file mode 100644 index 0000000..a5fc1ae --- /dev/null +++ b/results/daily/2025-10-27.json @@ -0,0 +1 @@ +{"date": "2025-10-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [1.66, -1.57, -2.67, 0.08, 0.04, -6.3, -6.0, -7.55, -6.86, 0.41, 57.08, 65.51, 57.14, 102.02, 547.0, 289.24, 256.02, 20.34, 1.96, 17.96, -11.23, -1.62, -10.75, -10.35, -8.67, -10.62, -11.0, -11.73, -11.72, -13.89, -11.75, -19.21, -13.12, -9.83, -2.64, 92.03, 35.28, 0.09, 38.78, 31.91, 12.72, 2.11, 10.96, 11.57, 55.42, 50.79, 63.55, 49.36], "forecast_price": {"naive": [65.6, 56.87, 39.22, 34.35, 34.06, 29.33, 29.81, 31.19, 28.16, 31.56, 41.18, 36.04, 9.02, 23.74, -0.26, -11.15, -13.43, -12.05, -12.44, -17.45, -38.6, -38.95, -60.54, -74.84, -63.65, -80.67, -114.79, -167.95, -100.84, -160.82, -160.19, -103.14, -39.5, -17.66, -29.97, -18.72, 27.94, 40.69, 16.88, 30.14, 25.94, 37.41, 12.1, 30.05, 26.22, 23.03, -2.22, 3.41], "lightgbm": [29.66, 31.52, 26.78, 25.86, 27.38, 27.35, 27.35, 28.37, 28.37, 37.08, 53.02, 55.1, 54.57, 51.39, 39.49, 27.25, 30.15, 22.15, 15.18, 14.11, -2.63, -6.44, -14.02, -18.3, -18.57, -18.14, -18.02, -17.44, -7.66, 4.52, -0.29, 2.46, 13.75, 30.15, 35.6, 64.03, 70.58, 73.6, 72.68, 70.09, 70.31, 68.52, 70.62, 62.11, 58.57, 61.29, 67.18, 66.83], "lstm": [14.01, 17.76, 11.22, 3.45, 3.32, 2.6, -1.58, 3.04, 3.92, 8.42, 19.97, 21.0, 23.4, 24.29, 15.39, 13.48, 0.62, -8.66, -12.51, -28.1, -22.65, -30.02, -35.38, -38.7, -37.01, -42.0, -47.84, -43.45, -35.82, -30.25, -24.75, -12.0, -8.92, 12.38, 24.34, 47.02, 70.66, 81.66, 77.07, 74.28, 77.03, 70.55, 63.55, 58.18, 49.36, 44.36, 49.14, 57.78]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 1.97, 5.31, 5.41, 5.43, 13.31, 20.81, 30.25, 38.82, 38.82, 38.82, 112.53, 41.11, 168.63, 852.38, 1213.92, 1533.95, 1533.95, 1531.5, 1551.71, 1565.75, 1563.95, 1577.38, 1579.97, 1569.13, 1570.46, 1571.84, 1580.63, 1580.63, 1598.0, 1612.68, 1636.7, 1653.09, 1654.32, 1654.65, 1769.69, 1813.79, 1813.68, 1862.15, 1902.04, 1894.98, 1892.34, 1878.64, 1864.18, 1933.46, 1996.95, 2076.38, 2138.08], "profit_aud": 2138.08}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 7.88, 9.56, 9.56, 18.14, 18.14, 89.49, 171.38, 99.96, 214.73, 146.35, 110.2, -209.83, -190.1, -190.1, -192.34, -190.94, -190.74, -189.39, -176.46, -186.08, -184.75, -171.01, -156.35, -156.35, -138.98, -124.3, -109.89, -108.25, -119.16, -115.87, -127.37, -83.27, -83.16, -131.63, -91.74, -91.74, -89.11, -102.8, -88.33, -32.91, -32.91, -112.34, -56.82], "profit_aud": -56.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 3.34, 3.24, 3.21, 11.09, 18.6, 18.6, 18.6, 18.6, 89.95, 171.84, 243.26, 370.78, 370.78, 370.78, 370.78, 370.78, 370.78, 370.78, 372.18, 372.39, 373.73, 386.66, 397.5, 410.78, 424.52, 431.85, 433.31, 415.95, 430.63, 433.32, 433.32, 433.32, 433.32, 433.32, 477.42, 477.53, 526.01, 526.01, 526.01, 526.01, 539.7, 539.7, 470.42, 470.42, 541.91, 541.91], "profit_aud": 541.91}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-2.08, -3.85, -3.85, -3.89, -3.94, 3.94, 11.44, 20.88, 20.88, 20.88, 92.23, 174.12, 245.54, 373.06, 373.06, 373.06, 373.06, 370.52, 370.27, 347.82, 335.35, 335.55, 336.89, 349.83, 355.24, 368.52, 382.27, 396.93, 398.39, 400.13, 401.6, 404.0, 405.64, 405.64, 405.64, 405.64, 405.64, 405.75, 454.22, 494.11, 510.01, 510.01, 510.01, 510.01, 510.01, 446.52, 437.62, 499.31], "profit_aud": 499.31}}} \ No newline at end of file diff --git a/results/daily/2025-10-28.json b/results/daily/2025-10-28.json new file mode 100644 index 0000000..1919101 --- /dev/null +++ b/results/daily/2025-10-28.json @@ -0,0 +1 @@ +{"date": "2025-10-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [48.6, 68.58, 87.16, 79.14, 62.22, 39.0, 42.68, 54.11, 68.74, 80.39, 108.1, 105.8, 114.35, 101.8, 80.9, 32.38, -6.28, -11.2, -13.94, -12.23, -14.5, -13.08, -12.7, -17.39, -17.95, -19.26, -30.17, -34.23, -23.68, -12.97, -13.72, -21.97, -43.97, -11.27, 23.05, 108.32, 134.05, 135.93, 137.69, 149.42, 136.32, 138.1, 136.51, 141.93, 142.76, 138.02, 141.16, 160.81], "forecast_price": {"naive": [1.66, -1.57, -2.67, 0.08, 0.04, -6.3, -6.0, -7.55, -6.86, 0.41, 57.08, 65.51, 57.14, 102.02, 547.0, 289.24, 256.02, 20.34, 1.96, 17.96, -11.23, -1.62, -10.75, -10.35, -8.67, -10.62, -11.0, -11.73, -11.72, -13.89, -11.75, -19.21, -13.12, -9.83, -2.64, 92.03, 35.28, 0.09, 38.78, 31.91, 12.72, 2.11, 10.96, 11.57, 55.42, 50.79, 63.55, 49.36], "lightgbm": [54.64, 51.92, 53.92, 47.43, 42.57, 37.54, 38.52, 37.06, 37.06, 40.41, 53.54, 54.84, 54.69, 54.38, 59.75, 46.36, 48.19, 23.13, 16.3, 16.34, -0.65, -2.23, -6.95, -7.73, -11.39, -9.75, -13.75, -14.29, -10.52, -10.97, -11.19, -3.88, 1.38, 16.46, 21.58, 72.75, 56.5, 57.59, 61.47, 54.39, 46.77, 45.82, 41.39, 35.32, 44.44, 36.7, 41.05, 35.29], "lstm": [67.83, 63.98, 52.17, 48.4, 50.95, 40.21, 37.12, 39.96, 40.26, 50.06, 53.78, 60.39, 70.95, 88.29, 75.5, 64.63, 44.9, 35.94, 24.77, 14.5, 16.14, 3.13, 2.47, -2.43, -1.38, -9.53, -11.49, -6.91, -3.28, 1.0, 4.19, 12.57, 24.01, 45.18, 74.59, 90.27, 121.71, 123.12, 110.3, 97.12, 97.89, 91.81, 85.51, 78.62, 69.92, 62.47, 63.53, 68.7]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-60.76, -146.48, -37.52, 41.62, -36.16, -84.91, -138.25, -205.88, -244.03, -244.03, -108.91, 23.35, 166.28, 293.53, 293.53, 293.53, 294.32, 295.72, 313.15, 299.57, 317.7, 317.7, 305.38, 307.56, 318.78, 342.86, 380.57, 423.36, 452.96, 436.74, 423.43, 450.9, 505.86, 507.27, 507.27, 507.27, 507.27, 507.27, 507.27, 694.04, 694.04, 694.04, 694.04, 871.45, 1049.9, 1049.9, 1049.9, 1250.91], "profit_aud": 1250.91}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -85.72, -194.67, -95.75, -64.64, -113.38, -166.73, -234.36, -320.29, -320.29, -320.29, -201.26, -344.19, -216.93, -115.81, -75.33, -83.18, -83.18, -65.75, -79.51, -61.38, -75.9, -60.03, -55.68, -78.12, -75.71, -71.94, -46.27, -46.27, -30.05, -12.9, 14.56, 69.52, 70.93, 68.05, 203.45, 371.01, 201.1, 373.22, 559.99, 484.33, 311.71, 141.07, -36.35, 142.1, 314.63, 491.07, 692.08], "profit_aud": 692.08}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -48.75, -102.09, -169.72, -255.65, -300.27, -300.27, -168.01, -25.08, 102.18, 203.3, 203.3, 203.3, 203.3, 203.3, 203.3, 205.11, 206.75, 208.34, 210.51, 232.95, 224.96, 262.67, 305.46, 305.46, 321.68, 338.83, 341.58, 341.58, 341.58, 341.58, 476.98, 644.54, 814.45, 986.56, 986.56, 986.56, 986.56, 986.56, 809.15, 969.75, 797.22, 956.02, 956.02], "profit_aud": 956.02}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -43.92, -43.92, -92.67, -146.01, -213.65, -299.57, -299.57, -299.57, -299.57, -156.64, -29.39, 71.74, 112.22, 112.22, 112.22, 112.22, 127.5, 111.19, 111.19, 111.19, 132.93, 122.97, 147.05, 184.76, 227.55, 257.15, 257.15, 257.15, 257.15, 257.15, 257.15, 257.15, 257.15, 424.71, 594.62, 766.73, 766.73, 937.13, 937.13, 937.13, 937.13, 937.13, 937.13, 937.13, 937.13], "profit_aud": 937.13}}} \ No newline at end of file diff --git a/results/daily/2025-10-29.json b/results/daily/2025-10-29.json new file mode 100644 index 0000000..9b373a9 --- /dev/null +++ b/results/daily/2025-10-29.json @@ -0,0 +1 @@ +{"date": "2025-10-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [151.33, 148.42, 155.35, 154.71, 160.28, 161.68, 166.86, 167.94, 158.87, 181.7, 212.67, 249.99, 240.26, 158.46, 110.18, 97.76, 67.0, 5.64, -2.8, -7.92, -12.03, -3.22, 10.89, 4.44, -0.99, -16.46, -35.56, -33.56, -2.19, 4.04, 16.03, 35.66, 18.31, 63.59, 185.87, 213.74, 255.62, 248.93, 225.22, 209.75, 222.07, 222.15, 208.3, 162.77, 169.21, 167.7, 173.47, 175.02], "forecast_price": {"naive": [48.6, 68.58, 87.16, 79.14, 62.22, 39.0, 42.68, 54.11, 68.74, 80.39, 108.1, 105.8, 114.35, 101.8, 80.9, 32.38, -6.28, -11.2, -13.94, -12.23, -14.5, -13.08, -12.7, -17.39, -17.95, -19.26, -30.17, -34.23, -23.68, -12.97, -13.72, -21.97, -43.97, -11.27, 23.05, 108.32, 134.05, 135.93, 137.69, 149.42, 136.32, 138.1, 136.51, 141.93, 142.76, 138.02, 141.16, 160.81], "lightgbm": [57.65, 48.5, 47.48, 42.07, 37.33, 38.55, 38.68, 33.0, 29.96, 35.04, 54.88, 59.59, 57.77, 58.16, 39.08, 26.08, 9.31, -10.24, -17.65, -19.39, -21.49, -25.63, -27.43, -29.15, -28.07, -28.61, -35.37, -35.37, -30.02, -24.19, -20.36, -17.23, -20.18, 5.91, 21.19, 86.46, 95.48, 92.74, 94.66, 93.1, 92.9, 83.96, 87.01, 84.64, 82.74, 80.49, 82.35, 82.6], "lstm": [159.23, 165.91, 143.74, 136.21, 137.24, 113.75, 110.66, 107.44, 110.05, 126.32, 121.72, 127.62, 116.98, 125.65, 92.08, 73.53, 56.7, 40.36, 27.94, 19.4, 15.79, 9.27, 8.55, -1.58, 1.96, -6.11, -5.45, -5.29, -0.97, 6.01, 10.17, 18.79, 33.19, 58.0, 87.96, 114.34, 162.45, 183.82, 153.24, 146.04, 146.64, 123.0, 123.18, 104.47, 109.94, 88.72, 92.88, 103.07]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 1.88, 3.0, 4.12, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-189.17, -374.7, -568.88, -762.26, -762.26, -762.26, -762.26, -762.26, -850.43, -623.31, -357.47, -44.98, 255.34, 255.34, 255.34, 255.34, 255.34, 255.34, 258.84, 268.74, 283.78, 287.81, 301.42, 306.97, 305.73, 326.31, 370.76, 412.71, 414.9, 414.9, 414.9, 455.02, 432.14, 432.14, 432.14, 432.14, 751.66, 1062.82, 1344.34, 1344.34, 1344.34, 1622.03, 1622.03, 1622.03, 1622.03, 1622.03, 1622.03, 1622.03], "profit_aud": 1622.03}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-189.17, -374.7, -180.51, -25.81, -226.16, -428.26, -636.83, -846.76, -934.93, -934.93, -669.09, -356.6, -56.27, 141.81, 141.81, 141.81, 133.43, 132.73, 136.23, 127.45, 142.49, 142.49, 153.05, 152.5, 153.12, 173.7, 218.15, 260.1, 262.84, 267.89, 283.44, 238.86, 215.97, 208.02, 208.02, 208.02, 208.02, 208.02, 208.02, 470.21, 470.21, 470.21, 470.21, 673.68, 885.18, 885.18, 885.18, 1103.95], "profit_aud": 1103.95}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -200.35, -290.09, -290.09, -500.01, -698.59, -925.71, -659.87, -347.38, -47.06, 151.02, 151.02, 151.02, 151.02, 150.32, 150.67, 151.66, 153.16, 153.56, 152.2, 146.65, 146.65, 159.0, 203.45, 245.41, 248.14, 247.64, 245.64, 285.22, 262.33, 262.33, 262.33, 262.33, 581.86, 581.86, 863.38, 1125.57, 1403.15, 1403.15, 1403.15, 1403.15, 1403.15, 1403.15, 1403.15, 1403.15], "profit_aud": 1403.15}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 2.12, 0.88, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -208.58, -418.5, -617.08, -389.96, -389.96, -77.47, -77.47, 61.18, 61.18, 61.18, 61.18, 61.18, 61.18, 61.18, 61.18, 61.18, 61.18, 55.64, 55.02, 75.6, 120.05, 162.0, 164.74, 164.74, 164.74, 164.74, 164.74, 164.74, 164.74, 164.74, 484.26, 795.42, 1076.94, 1076.94, 1354.53, 1354.53, 1354.53, 1354.53, 1354.53, 1144.9, 1144.9, 1341.8], "profit_aud": 1341.8}}} \ No newline at end of file diff --git a/results/daily/2025-10-30.json b/results/daily/2025-10-30.json new file mode 100644 index 0000000..2b066dc --- /dev/null +++ b/results/daily/2025-10-30.json @@ -0,0 +1 @@ +{"date": "2025-10-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [168.67, 164.37, 163.14, 166.14, 151.71, 157.3, 169.87, 169.66, 171.4, 208.58, 233.76, 224.06, 139.85, 111.54, 74.71, 52.28, -0.79, -3.54, -13.08, -22.98, -15.38, -12.77, -11.73, -11.72, 1.4, 9.0, 3.86, 0.34, 14.88, 101.83, 126.21, 95.78, 139.81, 173.84, 217.01, 217.39, 243.78, 233.72, 216.27, 185.2, 145.92, 120.24, 103.87, 117.35, 85.67, 69.23, 69.15, 84.51], "forecast_price": {"naive": [151.33, 148.42, 155.35, 154.71, 160.28, 161.68, 166.86, 167.94, 158.87, 181.7, 212.67, 249.99, 240.26, 158.46, 110.18, 97.76, 67.0, 5.64, -2.8, -7.92, -12.03, -3.22, 10.89, 4.44, -0.99, -16.46, -35.56, -33.56, -2.19, 4.04, 16.03, 35.66, 18.31, 63.59, 185.87, 213.74, 255.62, 248.93, 225.22, 209.75, 222.07, 222.15, 208.3, 162.77, 169.21, 167.7, 173.47, 175.02], "lightgbm": [134.41, 129.13, 119.14, 114.44, 107.75, 102.8, 102.47, 101.03, 102.33, 112.37, 119.08, 118.66, 115.6, 112.98, 92.75, 86.82, 56.01, 41.33, 29.96, 15.36, -3.36, -0.69, 4.58, 2.31, -0.09, -8.28, -29.57, -27.33, -13.85, -6.7, 14.52, 20.74, 19.94, 46.9, 103.45, 133.0, 148.73, 151.03, 143.78, 138.49, 134.97, 131.56, 114.89, 100.06, 97.3, 97.73, 108.85, 108.85], "lstm": [177.06, 165.79, 159.37, 149.7, 144.9, 135.58, 122.53, 112.78, 121.82, 127.78, 129.88, 141.38, 132.19, 132.26, 102.95, 77.53, 60.89, 39.78, 28.98, 18.25, 12.65, 7.02, 4.84, -5.41, -4.9, -4.05, -3.79, -3.66, -0.28, 6.99, 15.43, 28.88, 42.33, 74.56, 106.46, 154.4, 184.24, 202.97, 186.78, 173.33, 155.59, 142.19, 133.11, 122.05, 112.0, 106.58, 104.76, 116.79]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.83, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.38, 1.5, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -68.21, -272.14, -272.14, -461.78, -658.4, -658.4, -658.4, -658.4, -397.67, -105.48, 174.59, 174.59, 174.59, 174.59, 174.59, 174.69, 175.13, 191.48, 220.2, 239.43, 255.39, 262.72, 264.18, 264.18, 275.43, 274.89, 274.47, 274.47, 274.47, 416.46, 296.74, 296.74, 296.74, 568.0, 839.73, 1144.45, 1436.61, 1436.61, 1436.61, 1436.61, 1436.61, 1306.77, 1438.79, 1438.79, 1429.09, 1342.66, 1448.29], "profit_aud": 1448.29}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 1.88, 3.0, 4.12, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-210.84, -416.3, -620.23, -827.91, -827.91, -827.91, -827.91, -827.91, -923.04, -662.31, -370.11, -90.04, 84.77, 84.77, 84.77, 84.77, 84.77, 84.77, 101.11, 129.83, 149.06, 165.02, 150.35, 135.7, 137.44, 126.19, 121.36, 120.94, 106.06, 106.06, 106.06, 213.82, 39.06, 39.06, 39.06, 39.06, 343.78, 635.93, 906.27, 906.27, 906.27, 1056.57, 1056.57, 1056.57, 1056.57, 1056.57, 1056.57, 1056.57], "profit_aud": 1056.57}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -65.28, -277.61, -489.68, -703.93, -703.93, -411.74, -131.67, 43.14, 43.14, 43.14, 43.14, 43.14, 43.14, 43.14, 43.14, 62.37, 78.33, 63.66, 51.94, 51.76, 40.51, 35.68, 35.26, 16.66, -46.98, -46.98, -46.98, -46.98, -46.98, -46.98, -46.98, 257.74, 549.89, 820.23, 1051.73, 1051.73, 1051.73, 1051.73, 1051.73, 944.64, 858.11, 944.55, 1029.05], "profit_aud": 1029.05}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -212.07, -236.07, -236.07, -236.07, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 44.01, 58.66, 56.92, 45.67, 40.83, 40.62, 38.76, 38.76, 38.76, 38.76, 38.76, 38.76, 38.76, 38.76, 343.49, 635.64, 905.98, 1137.48, 1137.48, 1137.48, 1137.48, 1137.48, 1137.48, 1137.48, 1051.04, 1146.11], "profit_aud": 1146.11}}} \ No newline at end of file diff --git a/results/daily/2025-10-31.json b/results/daily/2025-10-31.json new file mode 100644 index 0000000..70cc7ba --- /dev/null +++ b/results/daily/2025-10-31.json @@ -0,0 +1 @@ +{"date": "2025-10-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [82.75, 65.63, 55.97, 62.43, 55.28, 69.39, 86.47, 101.7, 113.25, 169.87, 192.36, 194.57, 157.42, 104.12, 90.17, 67.0, 59.95, 17.92, 10.31, -11.17, -13.6, -10.8, -10.37, -31.87, -100.17, -110.42, -227.55, -252.44, -118.77, -155.61, -187.7, -58.34, -27.5, -30.93, -10.93, 62.12, 143.7, 141.75, 138.1, 120.42, 130.04, 99.32, 100.59, 104.78, 119.35, 120.2, 135.13, 110.4], "forecast_price": {"naive": [168.67, 164.37, 163.14, 166.14, 151.71, 157.3, 169.87, 169.66, 171.4, 208.58, 233.76, 224.06, 139.85, 111.54, 74.71, 52.28, -0.79, -3.54, -13.08, -22.98, -15.38, -12.77, -11.73, -11.72, 1.4, 9.0, 3.86, 0.34, 14.88, 101.83, 126.21, 95.78, 139.81, 173.84, 217.01, 217.39, 243.78, 233.72, 216.27, 185.2, 145.92, 120.24, 103.87, 117.35, 85.67, 69.23, 69.15, 84.51], "lightgbm": [146.49, 145.33, 126.84, 117.01, 111.2, 107.98, 109.53, 108.62, 109.81, 117.49, 126.52, 127.7, 126.84, 106.66, 80.24, 71.48, 67.78, 37.58, 12.5, 4.91, 4.27, 2.94, -0.49, -0.91, 7.63, 11.05, 5.45, 4.84, 14.28, 29.22, 31.76, 40.28, 64.13, 92.92, 133.14, 167.24, 183.8, 167.55, 178.89, 167.06, 154.4, 135.24, 112.51, 118.55, 95.29, 80.7, 83.11, 95.29], "lstm": [73.15, 67.99, 65.12, 56.64, 55.04, 53.64, 51.45, 45.19, 46.85, 51.78, 55.4, 63.71, 65.13, 58.71, 50.1, 41.85, 33.16, 15.86, 8.91, -3.69, 1.47, -0.24, -10.65, -11.76, -15.53, -13.05, -7.71, -4.61, -3.1, 4.68, 13.25, 25.5, 28.38, 48.93, 68.44, 103.13, 113.16, 134.11, 122.68, 106.53, 104.63, 91.64, 89.38, 79.93, 83.35, 73.73, 76.6, 80.56]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -82.04, -152.0, -230.04, -299.14, -337.64, -337.64, -337.64, -337.64, -125.3, 115.15, 358.37, 555.15, 555.15, 555.15, 555.15, 555.15, 555.15, 555.15, 556.54, 573.55, 573.55, 563.49, 567.47, 580.0, 593.8, 878.23, 1193.78, 1268.01, 1462.53, 1697.15, 1704.44, 1673.92, 1712.57, 1713.94, 1713.94, 1893.57, 2070.75, 2243.37, 2243.37, 2405.93, 2281.77, 2156.03, 2025.05, 2129.48, 2279.73, 2448.64, 2448.64], "profit_aud": 2448.64}, "naive": {"charge_mw": [0.0, 0.83, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.38, 1.5, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -27.24, -97.2, -97.2, -166.3, -253.03, -253.03, -253.03, -253.03, -40.69, 199.77, 442.98, 442.98, 442.98, 442.98, 442.98, 435.49, 433.25, 420.36, 434.32, 451.33, 464.82, 471.3, 475.29, 475.29, 337.26, 369.12, 684.66, 684.66, 684.66, 473.5, 546.42, 546.42, 546.42, 532.76, 610.41, 790.04, 967.22, 967.22, 967.22, 967.22, 967.22, 841.48, 959.36, 959.36, 942.53, 773.62, 911.62], "profit_aud": 911.62}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -86.73, -194.81, -321.94, -368.93, -368.93, -128.48, 114.74, 311.52, 311.52, 311.52, 311.52, 311.52, 311.52, 311.52, 317.72, 334.72, 348.22, 361.18, 401.02, 300.85, 162.83, 447.26, 762.8, 762.8, 762.8, 762.8, 762.8, 762.8, 762.8, 762.8, 840.45, 1020.08, 1197.27, 1369.89, 1369.89, 1369.89, 1369.89, 1369.89, 1369.89, 1369.89, 1219.64, 1200.72, 1338.72], "profit_aud": 1338.72}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -108.08, -235.2, -376.76, -447.26, -447.26, -204.05, -7.27, 122.88, 122.88, 122.88, 122.88, 122.88, 122.88, 136.84, 121.54, 122.89, 135.85, 175.69, 300.9, 438.92, 581.14, 612.69, 627.54, 627.54, 627.54, 627.54, 627.54, 627.54, 627.54, 627.54, 807.17, 984.35, 1156.97, 1307.5, 1307.5, 1307.5, 1307.5, 1307.5, 1307.5, 1307.5, 1307.5, 1307.5], "profit_aud": 1307.5}}} \ No newline at end of file diff --git a/results/daily/2025-11-01.json b/results/daily/2025-11-01.json new file mode 100644 index 0000000..69f9035 --- /dev/null +++ b/results/daily/2025-11-01.json @@ -0,0 +1 @@ +{"date": "2025-11-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [114.83, 133.26, 109.36, 107.01, 110.97, 99.9, 101.05, 87.62, 88.68, 88.43, 94.27, 92.83, 56.02, 26.46, -4.15, -16.16, -21.32, -29.05, -35.87, -16.94, -27.9, -50.62, -52.94, -58.17, -40.73, -47.93, -65.05, -108.64, -106.21, -61.64, -47.74, -18.01, -8.44, 28.77, 97.27, 121.84, 139.07, 144.15, 138.31, 142.36, 138.47, 140.66, 106.82, 110.49, 101.55, 78.97, 30.22, 33.52], "forecast_price": {"naive": [82.75, 65.63, 55.97, 62.43, 55.28, 69.39, 86.47, 101.7, 113.25, 169.87, 192.36, 194.57, 157.42, 104.12, 90.17, 67.0, 59.95, 17.92, 10.31, -11.17, -13.6, -10.8, -10.37, -31.87, -100.17, -110.42, -227.55, -252.44, -118.77, -155.61, -187.7, -58.34, -27.5, -30.93, -10.93, 62.12, 143.7, 141.75, 138.1, 120.42, 130.04, 99.32, 100.59, 104.78, 119.35, 120.2, 135.13, 110.4], "lightgbm": [101.99, 100.07, 96.18, 84.94, 79.71, 79.22, 84.15, 84.62, 88.37, 79.34, 68.9, 64.82, 61.79, 46.96, 42.0, 33.91, 28.24, -3.41, -4.88, -18.67, -20.03, -22.21, -24.28, -34.87, -46.39, -42.78, -43.72, -44.41, -11.51, -0.67, -0.98, 4.53, 12.6, 15.29, 36.18, 67.65, 98.98, 108.29, 108.3, 107.4, 107.68, 90.15, 87.9, 73.68, 80.82, 82.18, 91.21, 90.71], "lstm": [132.65, 136.16, 117.22, 107.04, 105.04, 97.3, 88.09, 92.14, 83.76, 92.42, 98.2, 88.65, 67.78, 41.38, 21.35, 5.64, -7.12, -22.23, -29.22, -36.39, -39.74, -45.82, -51.91, -63.36, -60.36, -64.26, -62.06, -59.76, -53.53, -41.43, -30.0, -16.67, -2.49, 16.51, 38.6, 62.52, 105.88, 134.56, 133.59, 130.18, 132.65, 118.36, 113.21, 109.9, 96.82, 85.86, 89.61, 100.32]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 2.25, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 0.0, 0.75, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-143.53, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.38, 6.9, 8.92, 11.59, 22.48, 67.32, 46.14, 46.14, 52.47, 98.79, 171.51, 120.6, 120.6, 201.91, 337.71, 470.48, 547.53, 553.5, 555.75, 556.8, 556.8, 556.8, 556.8, 730.64, 910.83, 910.83, 1088.78, 1088.78, 1264.6, 1264.6, 1264.6, 1264.6, 1264.6, 1264.6, 1264.6], "profit_aud": 1264.6}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -166.57, -303.28, -437.04, -575.76, -631.2, -631.2, -631.2, -631.2, -520.67, -402.83, -286.79, -216.76, -216.76, -216.76, -216.76, -216.76, -216.76, -216.76, -214.64, -179.77, -179.77, -231.12, -223.85, -218.76, -212.77, -131.46, 4.35, 70.73, 147.78, 207.45, 209.7, 200.34, 164.38, 152.22, 152.22, 326.06, 506.25, 679.13, 679.13, 852.23, 676.41, 542.88, 404.76, 493.62, 592.33, 630.1, 630.1], "profit_aud": 630.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -124.87, -124.87, -124.87, -25.1, -25.1, -25.1, -25.1, -25.1, -25.1, -25.1, -25.1, -25.1, -21.47, -16.98, -14.87, -11.38, -5.05, 1.56, 37.92, 88.83, 148.74, 230.05, 365.86, 379.13, 310.71, 370.38, 370.38, 370.38, 370.38, 370.38, 370.38, 370.38, 550.57, 723.46, 901.42, 1074.51, 1074.51, 1074.51, 936.39, 809.46, 809.46, 847.23, 880.75], "profit_aud": 880.75}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -14.15, -14.15, -125.0, -125.0, -7.17, -7.17, -7.17, -7.17, -7.17, -7.17, -4.5, -0.87, 3.61, 5.73, 9.22, 15.55, 22.16, 94.88, 145.79, 205.7, 287.01, 354.91, 368.19, 375.89, 381.86, 384.11, 385.17, 385.17, 385.17, 385.17, 385.17, 565.36, 738.24, 916.2, 1089.29, 1089.29, 1089.29, 1089.29, 1089.29, 990.58, 986.35, 1028.24], "profit_aud": 1028.24}}} \ No newline at end of file diff --git a/results/daily/2025-11-02.json b/results/daily/2025-11-02.json new file mode 100644 index 0000000..c4a0d33 --- /dev/null +++ b/results/daily/2025-11-02.json @@ -0,0 +1 @@ +{"date": "2025-11-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [47.51, 35.74, 31.44, 10.92, 41.76, 56.68, 66.58, 69.47, 60.31, 18.04, -1.92, -9.95, -17.51, -21.15, -24.32, -42.35, -34.57, -49.49, -54.0, -25.35, -55.72, -20.47, -19.83, -52.26, -53.19, -31.95, -19.97, -22.48, -20.75, -17.1, -11.73, -10.03, 2.21, 59.99, 57.56, 38.11, 3.83, 8.94, 7.89, 16.23, 41.92, 95.42, 86.92, 55.19, 100.3, 101.54, 105.58, 77.73], "forecast_price": {"naive": [114.83, 133.26, 109.36, 107.01, 110.97, 99.9, 101.05, 87.62, 88.68, 88.43, 94.27, 92.83, 56.02, 26.46, -4.15, -16.16, -21.32, -29.05, -35.87, -16.94, -27.9, -50.62, -52.94, -58.17, -40.73, -47.93, -65.05, -108.64, -106.21, -61.64, -47.74, -18.01, -8.44, 28.77, 97.27, 121.84, 139.07, 144.15, 138.31, 142.36, 138.47, 140.66, 106.82, 110.49, 101.55, 78.97, 30.22, 33.52], "lightgbm": [85.19, 82.52, 77.27, 70.33, 68.41, 69.82, 71.84, 67.38, 67.98, 69.05, 66.26, 60.48, 43.18, 32.63, 13.42, -3.64, -17.7, -29.5, -31.44, -33.36, -36.45, -56.13, -58.44, -67.37, -56.62, -60.87, -62.17, -63.17, -60.0, -51.18, -41.43, -12.93, -5.46, 23.95, 45.87, 92.38, 110.8, 108.75, 112.13, 106.89, 107.78, 100.08, 87.29, 82.42, 81.15, 75.73, 48.55, 49.23], "lstm": [57.99, 51.76, 56.69, 41.79, 42.78, 41.65, 38.68, 32.36, 31.49, 36.65, 44.27, 39.13, 25.18, 10.77, -5.21, -14.22, -24.25, -35.87, -41.47, -55.2, -50.3, -47.19, -59.54, -60.34, -65.12, -62.69, -54.55, -52.38, -47.33, -37.09, -24.1, -16.07, -3.54, 12.99, 28.12, 62.28, 92.66, 108.44, 103.18, 90.77, 93.87, 87.46, 74.25, 69.96, 64.12, 58.64, 65.17, 68.7]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 1.88, 3.0, 4.12, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 5.0, 5.0, 3.75, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-26.37, -71.05, -110.35, -124.0, -176.2, -105.35, -22.13, 64.7, 140.09, 140.09, 140.33, 141.57, 143.76, 146.41, 149.45, 202.38, 245.59, 307.45, 374.95, 343.26, 412.9, 387.32, 362.53, 427.86, 494.35, 526.3, 504.13, 532.23, 534.83, 536.96, 538.43, 539.68, 539.68, 614.67, 686.61, 734.25, 729.46, 718.29, 708.43, 701.69, 701.69, 820.97, 918.75, 849.77, 975.15, 1102.07, 1234.04, 1234.04], "profit_aud": 1234.04}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 2.25, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 0.0, 0.75, 1.88, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-59.39, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -19.19, -16.15, -10.85, -6.53, 12.03, 79.52, 47.83, 47.83, 50.39, 67.74, 133.07, 66.58, 66.58, 91.55, 119.65, 145.59, 166.96, 168.43, 169.68, 169.41, 169.41, 169.41, 169.41, 174.19, 185.37, 185.37, 205.65, 205.65, 324.94, 324.94, 324.94, 324.94, 324.94, 324.94, 324.94], "profit_aud": 324.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.29, 9.61, 15.8, 22.55, 25.72, 32.68, 35.24, 37.72, 103.05, 103.05, 142.99, 167.95, 196.05, 211.62, 213.75, 215.22, 216.47, 216.2, 216.2, 216.2, 216.2, 220.98, 232.16, 242.02, 242.02, 294.42, 294.42, 294.42, 294.42, 294.42, 294.42, 294.42, 294.42], "profit_aud": 294.42}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -86.83, -162.22, -162.22, -164.61, -174.57, -174.57, -174.57, -171.53, -166.23, -161.91, -155.73, -148.98, -117.29, -117.29, -137.14, -112.35, -47.02, 19.47, 59.4, 71.89, 74.7, 77.29, 79.43, 80.89, 82.15, 81.87, 81.87, 81.87, 81.87, 86.65, 97.83, 107.69, 107.69, 160.1, 160.1, 160.1, 160.1, 160.1, 33.17, 33.17, 120.62], "profit_aud": 120.62}}} \ No newline at end of file diff --git a/results/daily/2025-11-03.json b/results/daily/2025-11-03.json new file mode 100644 index 0000000..a938864 --- /dev/null +++ b/results/daily/2025-11-03.json @@ -0,0 +1 @@ +{"date": "2025-11-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [78.88, 84.23, 87.25, 85.56, 90.04, 74.47, 69.39, 86.37, 60.79, 65.72, 74.35, 66.61, 60.4, 65.56, 84.69, 54.16, 56.44, 30.1, 2.26, -7.08, 5.72, 38.06, -15.01, -15.19, -12.86, -11.08, -10.62, -10.5, -9.88, -10.13, -9.94, 0.43, 15.77, -1.92, 19.7, 90.62, 93.34, 48.3, 55.12, 100.12, 106.34, 144.54, 138.48, 92.86, 113.09, 106.67, 109.1, 111.22], "forecast_price": {"naive": [47.51, 35.74, 31.44, 10.92, 41.76, 56.68, 66.58, 69.47, 60.31, 18.04, -1.92, -9.95, -17.51, -21.15, -24.32, -42.35, -34.57, -49.49, -54.0, -25.35, -55.72, -20.47, -19.83, -52.26, -53.19, -31.95, -19.97, -22.48, -20.75, -17.1, -11.73, -10.03, 2.21, 59.99, 57.56, 38.11, 3.83, 8.94, 7.89, 16.23, 41.92, 95.42, 86.92, 55.19, 100.3, 101.54, 105.58, 77.73], "lightgbm": [39.08, 39.08, 37.13, 35.8, 38.25, 38.67, 40.94, 44.44, 42.54, 39.45, 47.86, 50.86, 41.15, 36.95, 43.14, 26.43, 27.02, 0.99, -4.77, 2.9, -8.47, -1.0, -2.33, -20.05, -15.52, -13.49, -2.68, -4.49, -4.35, -0.76, 3.39, 18.87, 25.36, 40.07, 46.64, 62.07, 62.1, 60.45, 61.41, 58.65, 56.02, 93.71, 85.93, 59.64, 83.47, 85.42, 83.57, 74.44], "lstm": [120.03, 122.45, 110.11, 100.92, 97.71, 95.31, 100.16, 89.63, 96.03, 96.21, 110.61, 102.44, 80.27, 69.52, 52.35, 35.67, 27.21, 17.95, 15.4, 1.77, 2.97, 0.69, 1.17, -2.69, -2.85, -3.27, -4.59, -0.11, 0.87, 5.13, 9.84, 19.17, 18.07, 45.78, 59.83, 95.75, 113.26, 146.82, 135.65, 127.24, 120.3, 101.9, 97.32, 92.19, 92.34, 81.11, 91.99, 95.67]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.5], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 0.0, 0.12, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.25, 0.0], "cumulative_profit_aud": [-98.6, -98.6, -98.6, -98.6, 2.7, -7.72, -94.45, 13.51, -62.48, -71.68, 21.26, 21.26, -54.24, -63.42, 42.44, 42.44, 42.44, 42.44, 39.61, 48.46, 54.19, 101.76, 120.52, 139.51, 155.58, 169.43, 176.07, 177.38, 177.38, 179.91, 181.15, 181.15, 198.89, 201.3, 201.3, 291.92, 408.6, 348.23, 279.33, 279.33, 279.33, 460.0, 633.1, 517.03, 658.4, 658.4, 781.14, 920.16], "profit_aud": 920.16}, "naive": {"charge_mw": [1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 1.88, 3.0, 4.12, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 5.0, 5.0, 3.75, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-43.78, -149.06, -258.12, -365.08, -477.63, -384.54, -297.81, -189.85, -113.86, -113.86, -123.15, -131.48, -139.03, -147.22, -157.81, -225.51, -296.06, -333.68, -336.5, -345.35, -352.51, -304.94, -323.7, -304.72, -288.65, -277.56, -289.34, -276.23, -274.99, -273.72, -272.48, -272.54, -272.54, -274.94, -250.32, -137.05, -253.72, -314.1, -383.0, -424.55, -424.55, -243.87, -88.08, -204.15, -62.79, 70.56, 206.94, 206.94], "profit_aud": 206.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 2.62, 2.62, 2.62, 1.38, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -109.06, -216.01, -328.57, -369.9, -369.9, -261.94, -261.94, -261.94, -169.0, -85.74, -85.74, -167.69, -61.83, -61.83, -61.83, -66.05, -68.87, -77.72, -84.88, -42.63, -40.76, -21.77, -5.7, 8.15, 2.26, 15.38, 27.73, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 29.0, 209.68, 382.78, 266.71, 393.94, 527.28, 663.66, 663.66], "profit_aud": 663.66}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -10.43, -10.43, -118.39, -118.39, -118.39, -25.45, -25.45, -25.45, -25.45, -25.45, -25.45, -25.45, -25.45, -25.45, -16.6, -10.16, -57.73, -74.62, -55.64, -39.57, -25.71, -12.44, -5.88, -5.88, -5.88, -5.88, -5.88, -5.88, -5.88, -5.88, -5.88, -5.88, 54.49, 123.39, 248.54, 381.46, 381.46, 381.46, 381.46, 381.46, 248.12, 248.12, 373.24], "profit_aud": 373.24}}} \ No newline at end of file diff --git a/results/daily/2025-11-04.json b/results/daily/2025-11-04.json new file mode 100644 index 0000000..75b583a --- /dev/null +++ b/results/daily/2025-11-04.json @@ -0,0 +1 @@ +{"date": "2025-11-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [114.06, 109.95, 116.1, 108.79, 86.31, 95.46, 108.42, 102.06, 115.14, 134.42, 181.18, 171.67, 108.99, 65.43, 4.29, -9.8, -10.98, -11.29, -10.12, -10.52, -13.68, -14.64, -15.5, -14.62, -14.5, -12.02, -11.44, -11.17, -11.06, -11.25, -11.06, -10.86, -10.29, -7.76, -10.2, -11.58, -11.0, -8.92, -7.21, -2.81, 3.04, 3.53, 5.39, -3.38, -6.89, -7.02, -3.02, 5.48], "forecast_price": {"naive": [78.88, 84.23, 87.25, 85.56, 90.04, 74.47, 69.39, 86.37, 60.79, 65.72, 74.35, 66.61, 60.4, 65.56, 84.69, 54.16, 56.44, 30.1, 2.26, -7.08, 5.72, 38.06, -15.01, -15.19, -12.86, -11.08, -10.62, -10.5, -9.88, -10.13, -9.94, 0.43, 15.77, -1.92, 19.7, 90.62, 93.34, 48.3, 55.12, 100.12, 106.34, 144.54, 138.48, 92.86, 113.09, 106.67, 109.1, 111.22], "lightgbm": [66.31, 67.09, 71.16, 63.91, 60.07, 56.98, 57.1, 61.99, 55.3, 59.64, 72.81, 70.0, 67.37, 65.55, 67.16, 47.46, 35.29, 17.57, 7.42, 0.38, 3.54, 11.09, -8.62, -8.38, -8.04, -10.01, -9.33, -9.52, -8.82, -4.98, -1.57, 7.94, 12.62, 26.49, 39.4, 84.74, 95.27, 68.46, 73.72, 98.57, 95.8, 108.81, 105.75, 84.05, 95.0, 88.75, 91.44, 92.78], "lstm": [130.19, 129.52, 120.0, 109.0, 110.89, 100.07, 97.17, 95.56, 97.25, 105.11, 113.01, 109.94, 84.8, 77.77, 51.12, 37.04, 24.36, 14.18, 8.02, -2.52, -2.45, -6.89, -7.5, -10.68, -11.2, -11.36, -11.27, -9.69, -8.73, -2.96, 0.1, 11.89, 17.02, 37.38, 53.8, 83.16, 117.22, 149.27, 141.93, 127.35, 122.02, 110.65, 106.54, 96.7, 92.6, 83.91, 91.73, 98.62]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 1.75, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 1.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 4.88, 4.75, 3.5, 3.38, 4.5, 5.0, 5.0, 5.0, 4.88, 3.62, 2.38, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -107.89, -227.21, -272.2, -399.78, -399.78, -231.75, -5.27, 209.31, 209.31, 209.31, 209.31, 210.53, 211.91, 226.02, 216.21, 216.21, 224.76, 243.05, 262.43, 280.7, 298.82, 300.33, 301.76, 301.76, 301.76, 305.97, 307.35, 307.35, 307.35, 297.65, 297.65, 312.13, 319.0, 320.12, 321.02, 321.02, 324.82, 329.23, 335.97, 340.19, 348.81, 357.58, 359.46, 366.32], "profit_aud": 366.32}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.5], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 0.0, 0.12, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.25, 0.0], "cumulative_profit_aud": [-142.57, -142.57, -142.57, -142.57, -45.48, -58.84, -194.37, -66.8, -210.73, -229.55, -3.07, -3.07, -139.31, -148.47, -143.11, -143.11, -143.11, -143.11, -130.46, -117.31, -130.99, -149.29, -129.92, -111.64, -93.52, -78.49, -71.34, -69.94, -69.94, -67.13, -65.75, -65.75, -77.32, -67.62, -67.62, -79.2, -92.95, -81.81, -72.8, -72.8, -72.8, -68.39, -61.65, -57.43, -66.04, -66.04, -69.43, -62.58], "profit_aud": -62.58}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -47.9, -167.22, -302.75, -302.75, -446.68, -614.71, -388.23, -173.65, -37.41, -37.41, -32.04, -32.04, -32.04, -32.04, -32.04, -18.89, -16.98, -35.27, -21.71, -21.71, -21.71, -6.68, 7.62, 21.57, 35.4, 36.8, 38.19, 38.19, 38.19, 38.19, 38.19, 26.6, 12.85, 23.99, 33.01, 29.49, 33.29, 37.7, 44.44, 48.66, 40.91, 40.91, 40.91, 40.91], "profit_aud": 40.91}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -135.53, -263.1, -295.34, -295.34, -68.87, 145.72, 145.72, 145.72, 145.72, 145.72, 145.72, 145.72, 145.72, 148.35, 148.35, 150.18, 152.11, 170.39, 188.51, 203.54, 217.84, 224.82, 226.2, 227.61, 227.61, 227.61, 227.61, 227.61, 227.61, 227.61, 227.61, 216.46, 207.45, 203.93, 207.73, 207.73, 207.73, 207.73, 207.73, 216.51, 216.51, 222.67], "profit_aud": 222.67}}} \ No newline at end of file diff --git a/results/daily/2025-11-05.json b/results/daily/2025-11-05.json new file mode 100644 index 0000000..2310ba0 --- /dev/null +++ b/results/daily/2025-11-05.json @@ -0,0 +1 @@ +{"date": "2025-11-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [7.55, -3.37, -5.9, -7.07, -7.13, -7.11, -5.98, -2.35, 7.72, 65.41, 57.39, 22.84, 10.1, 11.26, 0.23, 23.0, 37.72, -0.7, -2.8, -11.2, -11.38, -11.42, -12.57, -13.89, -16.98, -14.44, -18.96, -21.66, -22.76, -17.81, -17.64, -19.48, -19.5, -10.47, 4.01, 67.98, 109.4, 149.43, 289.67, 342.41, 128.01, 137.99, 132.66, 145.37, 131.63, 114.88, 120.52, 114.36], "forecast_price": {"naive": [114.06, 109.95, 116.1, 108.79, 86.31, 95.46, 108.42, 102.06, 115.14, 134.42, 181.18, 171.67, 108.99, 65.43, 4.29, -9.8, -10.98, -11.29, -10.12, -10.52, -13.68, -14.64, -15.5, -14.62, -14.5, -12.02, -11.44, -11.17, -11.06, -11.25, -11.06, -10.86, -10.29, -7.76, -10.2, -11.58, -11.0, -8.92, -7.21, -2.81, 3.04, 3.53, 5.39, -3.38, -6.89, -7.02, -3.02, 5.48], "lightgbm": [52.94, 53.21, 50.11, 51.28, 49.06, 49.69, 50.56, 49.6, 46.24, 44.21, 74.72, 75.58, 56.19, 52.07, 37.08, 29.47, 19.2, -1.19, -2.44, -8.47, -12.9, -14.99, -15.75, -18.64, -19.51, -19.82, -20.63, -20.08, -18.02, -16.15, -12.28, -0.73, 1.73, 10.22, 19.78, 33.88, 42.35, 44.93, 46.18, 50.34, 48.27, 49.95, 48.94, 46.45, 45.69, 45.69, 45.22, 42.46], "lstm": [9.18, 13.29, 7.79, 1.4, 3.06, -3.7, -3.13, 2.49, 6.19, 5.4, 18.71, 18.55, 12.01, 7.04, -10.57, -14.44, -26.25, -34.55, -39.2, -46.41, -37.49, -36.9, -42.03, -41.53, -41.58, -45.91, -44.46, -44.53, -41.27, -34.22, -36.09, -23.64, -28.49, -12.79, -4.95, 14.55, 34.07, 53.87, 56.88, 54.77, 57.02, 52.63, 44.68, 41.01, 39.29, 34.24, 39.42, 51.92]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.75, 1.88, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.42, 4.11, 12.95, 21.86, 30.75, 38.22, 38.52, 38.52, 120.29, 192.02, 220.57, 207.94, 219.2, 218.91, 247.66, 294.82, 294.9, 295.25, 296.65, 298.08, 299.51, 301.08, 302.81, 324.03, 308.01, 324.6, 351.67, 380.12, 380.12, 380.12, 404.47, 428.85, 430.16, 430.16, 430.16, 430.16, 616.94, 979.03, 1407.03, 1407.03, 1407.03, 1407.03, 1588.75, 1588.75, 1588.75, 1588.75, 1588.75], "profit_aud": 1588.75}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 1.75, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 1.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 4.88, 4.75, 3.5, 3.38, 4.5, 5.0, 5.0, 5.0, 4.88, 3.62, 2.38, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 8.92, 17.8, 20.29, 23.22, 23.22, 104.99, 176.73, 205.27, 205.27, 205.27, 205.27, 202.4, 197.68, 198.56, 195.84, 195.84, 202.96, 217.24, 232.95, 250.32, 271.54, 273.34, 275.71, 275.71, 275.71, 282.39, 284.6, 284.6, 284.6, 271.51, 271.51, 186.54, 118.16, 99.48, 63.27, 63.27, 223.29, 395.77, 561.59, 379.88, 215.33, 71.74, -3.59, 139.36], "profit_aud": 139.36}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 8.92, 8.92, 8.92, 9.89, 0.25, -81.52, -9.78, 18.77, 31.4, 31.4, 31.4, 31.4, 31.4, 31.49, 31.84, 33.24, 34.66, 36.09, 37.66, 46.34, 67.56, 85.61, 109.32, 136.39, 139.23, 141.46, 143.66, 146.1, 146.1, 146.1, 146.1, 146.1, 146.1, 146.1, 146.1, 574.11, 734.12, 906.61, 1072.43, 1072.43, 1072.43, 1072.43, 1072.43, 1072.43], "profit_aud": 1072.43}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-9.44, -13.23, -13.23, -4.39, -0.43, 8.45, 15.93, 18.86, 27.54, -54.22, 17.52, 46.06, 58.69, 72.77, 72.75, 69.87, 65.15, 65.24, 65.59, 79.59, 79.59, 68.51, 84.23, 84.23, 96.96, 115.01, 138.72, 165.79, 168.63, 168.63, 173.04, 151.42, 175.8, 177.11, 176.61, 176.61, 176.61, 363.39, 725.47, 1153.48, 1313.49, 1313.49, 1313.49, 1313.49, 1295.06, 1151.47, 1151.47, 1294.42], "profit_aud": 1294.42}}} \ No newline at end of file diff --git a/results/daily/2025-11-06.json b/results/daily/2025-11-06.json new file mode 100644 index 0000000..f20a0ab --- /dev/null +++ b/results/daily/2025-11-06.json @@ -0,0 +1 @@ +{"date": "2025-11-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [132.19, 133.07, 129.33, 123.18, 115.36, 101.89, 109.25, 122.63, 131.57, 145.51, 181.4, 102.48, 39.73, 31.55, 1.32, -3.7, -8.21, -11.04, -11.1, -13.02, -10.88, -7.22, -8.08, -7.58, 57.45, 34.6, 1.11, -5.87, -10.08, -7.49, -10.05, -7.36, -4.3, 20.92, 14.76, 21.34, 53.52, 110.1, 120.21, 134.72, 133.58, 128.19, 116.64, 107.34, 110.33, 63.45, 84.07, 83.95], "forecast_price": {"naive": [7.55, -3.37, -5.9, -7.07, -7.13, -7.11, -5.98, -2.35, 7.72, 65.41, 57.39, 22.84, 10.1, 11.26, 0.23, 23.0, 37.72, -0.7, -2.8, -11.2, -11.38, -11.42, -12.57, -13.89, -16.98, -14.44, -18.96, -21.66, -22.76, -17.81, -17.64, -19.48, -19.5, -10.47, 4.01, 67.98, 109.4, 149.43, 289.67, 342.41, 128.01, 137.99, 132.66, 145.37, 131.63, 114.88, 120.52, 114.36], "lightgbm": [62.53, 63.88, 61.69, 55.3, 49.7, 46.29, 44.74, 44.92, 45.4, 56.23, 68.61, 58.15, 54.77, 49.56, 33.66, 32.67, 26.59, 11.74, 5.73, -2.3, -2.39, -4.27, -5.17, -5.94, -4.14, -4.3, -3.16, -2.9, -3.28, 2.04, 4.59, 7.99, 10.47, 24.39, 32.93, 72.37, 93.7, 115.32, 150.15, 146.58, 100.77, 98.53, 95.16, 88.16, 83.92, 70.97, 72.42, 80.05], "lstm": [153.63, 151.06, 132.2, 129.05, 125.24, 118.93, 118.74, 111.0, 111.98, 125.3, 126.77, 127.77, 104.96, 93.88, 64.36, 41.4, 32.91, 24.65, 17.36, 9.48, 5.37, 5.8, 3.33, -4.34, 0.04, -4.63, -4.58, -3.52, -0.84, 5.3, 8.52, 14.5, 23.47, 43.52, 61.86, 98.45, 122.01, 159.01, 146.26, 143.27, 126.83, 109.93, 109.28, 94.86, 96.94, 87.44, 89.45, 98.95]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -144.19, -271.55, -408.11, -408.11, -292.99, -111.1, 115.66, 115.66, 115.66, 115.66, 115.66, 116.12, 121.25, 135.05, 148.93, 165.2, 178.81, 170.79, 180.9, 181.84, 253.66, 296.91, 298.3, 294.22, 306.82, 316.18, 328.74, 337.94, 338.48, 362.01, 343.56, 343.56, 343.56, 343.56, 493.82, 662.22, 829.2, 989.44, 989.44, 989.44, 989.44, 910.12, 1004.7, 1004.7], "profit_aud": 1004.7}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.75, 1.88, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -16.63, -97.46, -251.43, -395.63, -522.99, -659.55, -674.88, -674.88, -492.99, -266.23, -138.13, -187.79, -156.25, -157.9, -162.53, -172.79, -171.41, -170.02, -168.4, -167.04, -166.13, -165.12, -164.18, -235.99, -197.58, -198.55, -191.21, -178.62, -178.62, -178.62, -169.41, -164.04, -166.65, -166.65, -166.65, -166.65, -29.03, 121.23, 289.63, 289.63, 289.63, 289.63, 423.81, 423.81, 423.81, 423.81, 423.81], "profit_aud": 423.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -127.36, -263.92, -417.21, -581.68, -399.79, -173.03, -44.93, -15.14, -15.14, -15.14, -15.14, -15.14, -15.14, -15.14, -13.51, -12.15, -3.12, 6.98, 16.46, -19.44, -62.7, -62.7, -68.39, -55.8, -55.8, -55.8, -55.8, -55.8, -55.8, -55.8, -55.8, -55.8, 81.82, 232.08, 400.49, 567.46, 567.46, 567.46, 567.46, 567.46, 488.15, 488.15, 582.59], "profit_aud": 582.59}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -153.29, -317.76, -317.76, -136.35, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, -8.25, 1.23, 37.13, -6.12, -7.51, -0.17, 12.42, 12.42, 12.42, 12.42, 12.42, 12.42, 12.42, 12.42, 12.42, 150.04, 300.3, 468.71, 635.68, 635.68, 635.68, 635.68, 635.68, 556.37, 556.37, 650.81], "profit_aud": 650.81}}} \ No newline at end of file diff --git a/results/daily/2025-11-07.json b/results/daily/2025-11-07.json new file mode 100644 index 0000000..c5d2a82 --- /dev/null +++ b/results/daily/2025-11-07.json @@ -0,0 +1 @@ +{"date": "2025-11-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [100.68, 108.23, 99.49, 86.76, 92.71, 61.48, 33.01, 31.94, 14.58, 1.54, 5.07, 39.25, 52.8, 2.9, 7.47, 7.05, -11.29, -14.2, -9.71, -9.08, -8.83, -7.5, -10.02, -10.79, -13.25, -13.18, -16.91, -20.4, -20.04, -18.5, -18.63, -11.72, -10.86, -8.73, -6.46, 0.01, -3.99, 11.66, 11.86, 10.85, -7.59, -9.33, -6.99, -10.69, -10.03, -10.3, -10.0, -9.75], "forecast_price": {"naive": [132.19, 133.07, 129.33, 123.18, 115.36, 101.89, 109.25, 122.63, 131.57, 145.51, 181.4, 102.48, 39.73, 31.55, 1.32, -3.7, -8.21, -11.04, -11.1, -13.02, -10.88, -7.22, -8.08, -7.58, 57.45, 34.6, 1.11, -5.87, -10.08, -7.49, -10.05, -7.36, -4.3, 20.92, 14.76, 21.34, 53.52, 110.1, 120.21, 134.72, 133.58, 128.19, 116.64, 107.34, 110.33, 63.45, 84.07, 83.95], "lightgbm": [72.78, 66.15, 63.69, 60.91, 60.81, 56.94, 67.94, 67.42, 68.11, 65.51, 80.44, 73.32, 61.4, 59.8, 51.7, 49.43, 41.22, 6.72, 3.93, -7.16, -7.21, -3.83, -6.12, -9.16, 5.56, 3.62, -9.88, -10.3, -12.81, -8.28, -5.23, 0.94, 4.89, 22.06, 34.55, 58.14, 73.54, 103.79, 107.81, 100.22, 106.63, 102.89, 95.54, 86.76, 88.78, 67.21, 77.27, 78.2], "lstm": [81.94, 81.49, 72.96, 68.5, 63.74, 57.65, 59.62, 59.9, 60.99, 65.89, 72.1, 72.01, 56.36, 35.26, 18.47, 10.15, 0.33, -7.6, -9.13, -17.18, -13.55, -13.52, -16.85, -18.74, -17.96, -20.01, -17.33, -16.23, -17.08, -11.63, -8.65, -1.17, -1.37, 12.36, 19.34, 47.66, 64.71, 90.5, 95.68, 89.6, 87.21, 79.64, 78.19, 70.92, 71.34, 65.95, 73.7, 77.99]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.25, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.08, -6.01, -12.34, 36.73, 102.73, 99.11, 107.52, 107.52, 121.63, 139.38, 139.38, 139.38, 133.25, 123.87, 125.13, 126.48, 129.79, 129.79, 140.36, 165.86, 190.91, 214.03, 237.32, 238.78, 240.14, 241.23, 242.04, 242.06, 242.56, 257.14, 271.96, 285.53, 286.48, 298.13, 290.38, 303.73, 316.27, 329.15, 341.65, 347.74], "profit_aud": 347.74}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -115.89, -192.74, -234.0, -234.0, -221.25, -219.32, -212.99, -212.99, -212.99, -212.99, -212.99, -213.87, -206.81, -189.06, -176.92, -165.57, -154.53, -162.86, -150.33, -148.98, -165.55, -182.02, -203.16, -217.34, -192.3, -169.18, -145.89, -131.23, -129.87, -139.7, -131.62, -131.62, -131.62, -131.62, -116.79, -103.23, -112.71, -124.37, -124.37, -124.37, -124.37, -111.49, -122.74, -122.74], "profit_aud": -122.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.88, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -108.44, -224.34, -301.19, -301.19, -301.19, -288.43, -288.43, -282.1, -233.03, -233.03, -233.03, -233.03, -233.03, -233.03, -233.03, -233.03, -221.68, -210.65, -220.03, -210.0, -196.52, -213.08, -229.56, -208.42, -182.91, -157.87, -134.75, -132.42, -132.42, -132.42, -132.42, -132.42, -132.42, -132.42, -117.84, -103.02, -103.02, -112.5, -124.16, -124.16, -124.16, -124.16, -111.28, -111.28, -122.24], "profit_aud": -122.24}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -76.85, -118.11, -127.05, -127.05, -127.05, -120.72, -71.65, -71.65, -71.65, -71.65, -71.65, -71.65, -69.88, -68.66, -57.31, -57.31, -64.59, -63.33, -49.85, -33.28, -16.81, 4.33, 4.33, 19.36, 21.67, 24.0, 10.98, 24.56, 24.56, 24.56, 24.56, 24.56, 39.14, 53.96, 67.53, 58.05, 58.05, 58.05, 58.05, 58.05, 70.93, 70.93, 59.96], "profit_aud": 59.96}}} \ No newline at end of file diff --git a/results/daily/2025-11-08.json b/results/daily/2025-11-08.json new file mode 100644 index 0000000..8534524 --- /dev/null +++ b/results/daily/2025-11-08.json @@ -0,0 +1 @@ +{"date": "2025-11-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-10.0, -8.24, -10.85, -11.95, -12.36, -15.59, -14.03, -11.56, -9.79, -7.27, -5.71, 13.41, -9.01, -6.31, -6.2, -11.71, -10.98, -10.41, -15.89, -15.47, -16.16, -18.6, -20.31, -20.4, -20.36, -19.92, -19.29, -12.09, -16.38, -14.54, -15.16, -11.28, -12.4, -10.79, -10.77, -26.86, -9.0, 21.18, 7.92, 10.23, 59.83, 61.61, 59.75, 50.52, 42.52, 44.62, 52.2, 44.06], "forecast_price": {"naive": [100.68, 108.23, 99.49, 86.76, 92.71, 61.48, 33.01, 31.94, 14.58, 1.54, 5.07, 39.25, 52.8, 2.9, 7.47, 7.05, -11.29, -14.2, -9.71, -9.08, -8.83, -7.5, -10.02, -10.79, -13.25, -13.18, -16.91, -20.4, -20.04, -18.5, -18.63, -11.72, -10.86, -8.73, -6.46, 0.01, -3.99, 11.66, 11.86, 10.85, -7.59, -9.33, -6.99, -10.69, -10.03, -10.3, -10.0, -9.75], "lightgbm": [39.92, 38.85, 36.6, 34.0, 32.27, 30.41, 31.09, 32.44, 30.43, 25.28, 22.56, 26.86, 26.75, 16.02, 1.99, -3.66, -16.48, -18.27, -17.37, -19.1, -20.77, -20.87, -21.59, -22.49, -23.67, -23.48, -25.74, -26.36, -25.02, -22.32, -19.89, -10.97, -1.42, 18.67, 24.44, 41.7, 44.97, 52.23, 52.23, 52.88, 53.82, 51.12, 54.59, 47.86, 50.42, 52.21, 40.9, 40.83], "lstm": [10.23, 9.19, 4.56, 0.6, -1.83, -7.52, -5.0, -0.7, 1.44, 0.67, 11.89, 10.33, -1.09, -13.06, -27.89, -33.55, -45.91, -50.9, -55.22, -52.04, -53.84, -50.5, -52.13, -59.22, -52.42, -52.26, -52.15, -49.79, -50.41, -43.11, -43.22, -29.84, -31.29, -18.9, -11.38, 12.64, 28.58, 44.83, 55.54, 49.46, 48.32, 46.83, 42.81, 40.35, 34.88, 32.51, 35.04, 48.24]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 1.75, 2.5, 2.0, 2.5, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 1.12, 1.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 4.75, 5.0, 4.88, 5.0, 4.88, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [12.5, 3.36, 4.72, 19.66, 35.11, 54.59, 72.13, 79.35, 80.58, 72.51, 65.37, 82.13, 93.39, 85.51, 77.75, 92.39, 92.39, 82.29, 86.26, 86.26, 88.28, 90.61, 116.0, 141.5, 166.94, 191.84, 203.9, 188.78, 209.26, 209.26, 214.94, 214.94, 218.04, 218.04, 207.6, 241.17, 242.29, 268.77, 258.87, 257.44, 332.23, 409.24, 483.92, 547.07, 493.92, 487.67, 552.93, 552.93], "profit_aud": 552.93}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.25, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 2.74, 11.83, 18.97, 35.73, 24.46, 32.35, 25.37, 25.37, 39.1, 52.11, 52.11, 52.11, 40.88, 17.62, 20.16, 22.71, 27.8, 27.8, 39.85, 54.97, 75.44, 93.62, 112.57, 113.98, 115.53, 116.87, 118.22, 84.65, 85.78, 112.25, 122.15, 134.93, 127.45, 50.44, 116.76, 53.61, 0.46, -55.31, -120.56, -148.1], "profit_aud": -148.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.14, 22.22, 22.22, 22.22, 22.22, 23.69, 25.06, 27.66, 27.66, 29.59, 31.61, 33.94, 36.48, 39.03, 64.47, 76.92, 101.03, 116.15, 136.62, 138.44, 140.34, 141.75, 143.3, 143.3, 143.3, 143.3, 143.3, 169.77, 169.77, 182.56, 257.35, 257.35, 332.03, 332.03, 332.03, 332.03, 332.03, 332.03], "profit_aud": 332.03}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.5, 2.25, 2.5, 2.0, 2.5, 2.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 2.0, 1.88, 3.0, 4.12, 5.0, 5.0, 4.88, 5.0, 4.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 6.63, 22.09, 41.57, 59.11, 73.55, 61.32, 52.23, 45.09, 61.85, 62.98, 63.77, 64.54, 66.01, 67.38, 68.68, 88.54, 88.54, 108.74, 108.74, 108.74, 134.24, 159.69, 179.61, 182.02, 182.02, 186.11, 186.11, 189.9, 189.9, 193.0, 194.35, 195.7, 195.7, 195.7, 195.7, 205.6, 218.38, 293.17, 370.18, 370.18, 370.18, 364.23, 308.46, 308.46, 363.53], "profit_aud": 363.53}}} \ No newline at end of file diff --git a/results/daily/2025-11-09.json b/results/daily/2025-11-09.json new file mode 100644 index 0000000..5d54272 --- /dev/null +++ b/results/daily/2025-11-09.json @@ -0,0 +1 @@ +{"date": "2025-11-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [49.49, 47.21, 49.38, 44.0, 47.15, 45.75, 43.23, 43.99, 40.78, 46.81, 66.52, 47.08, 22.97, -3.14, -5.22, -5.89, -10.94, -10.72, -11.25, -11.5, -13.74, -13.76, -13.94, -14.39, -17.57, -18.26, -21.8, -18.84, -17.54, -12.58, -10.74, -10.96, -10.94, -8.75, -0.31, 83.64, 103.22, 99.61, 107.42, 111.87, 123.67, 113.0, 100.01, 107.95, 109.71, 109.22, 121.04, 115.96], "forecast_price": {"naive": [-10.0, -8.24, -10.85, -11.95, -12.36, -15.59, -14.03, -11.56, -9.79, -7.27, -5.71, 13.41, -9.01, -6.31, -6.2, -11.71, -10.98, -10.41, -15.89, -15.47, -16.16, -18.6, -20.31, -20.4, -20.36, -19.92, -19.29, -12.09, -16.38, -14.54, -15.16, -11.28, -12.4, -10.79, -10.77, -26.86, -9.0, 21.18, 7.92, 10.23, 59.83, 61.61, 59.75, 50.52, 42.52, 44.62, 52.2, 44.06], "lightgbm": [17.6, 15.11, 14.43, 8.73, 10.31, 11.75, 13.92, 14.09, 14.9, 12.67, 11.17, 13.96, 7.73, 4.76, -11.83, -16.12, -20.58, -13.3, -19.46, -22.91, -22.53, -24.41, -24.99, -25.41, -25.75, -24.39, -23.48, -23.34, -23.63, -20.61, -17.94, -10.08, -0.53, 14.58, 26.54, 22.72, 33.81, 40.91, 38.6, 39.03, 50.16, 54.76, 53.76, 43.2, 46.06, 46.07, 47.11, 41.93], "lstm": [68.42, 67.75, 62.22, 55.92, 50.68, 43.2, 45.77, 44.9, 45.68, 40.44, 51.26, 45.63, 28.38, 9.09, -2.58, -9.12, -17.13, -17.79, -14.47, -20.63, -18.03, -17.2, -17.01, -18.93, -18.32, -23.3, -20.57, -13.8, -21.51, -15.66, -15.28, -12.4, -7.48, 10.18, 16.25, 38.56, 56.52, 70.65, 69.87, 68.37, 67.8, 57.52, 53.16, 50.51, 47.6, 49.93, 53.59, 57.95]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -6.05, -6.05, -57.03, -57.03, 26.12, 26.12, 26.12, 26.51, 27.16, 27.9, 30.63, 30.63, 32.04, 33.48, 35.2, 36.91, 38.66, 40.46, 62.42, 85.24, 112.49, 136.04, 147.01, 148.58, 148.58, 151.32, 152.69, 153.78, 153.82, 153.82, 153.82, 153.82, 153.82, 279.68, 434.26, 575.51, 450.5, 450.5, 450.5, 450.5, 601.81, 746.75], "profit_aud": 746.75}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 1.75, 2.5, 2.0, 2.5, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 1.12, 1.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 4.75, 5.0, 4.88, 5.0, 4.88, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-61.87, -9.46, -15.63, -70.63, -129.57, -186.76, -240.8, -268.29, -273.39, -221.43, -138.28, -79.44, -108.15, -112.07, -118.6, -111.24, -111.24, -121.64, -118.83, -118.83, -117.11, -115.39, -97.96, -79.97, -58.01, -35.19, -21.56, -45.12, -23.19, -23.19, -19.16, -19.16, -16.43, -16.43, -16.73, -121.28, -134.18, -9.67, -143.94, -159.6, -5.02, 136.23, 261.24, 396.18, 259.04, 243.75, 395.05, 395.05], "profit_aud": 395.05}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.0, 0.0, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 1.75, 2.25, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.62, 1.38, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -55.0, -113.94, -171.13, -138.7, -83.72, -32.74, -32.74, -115.89, -57.05, -57.05, -57.05, -56.4, -54.92, -41.25, -54.65, -53.24, -50.37, -50.37, -33.18, -15.74, 2.24, 24.2, 35.61, 35.61, 35.61, 42.19, 43.77, 45.11, 46.48, 47.84, 47.84, 47.5, -57.05, -57.05, -57.05, -57.05, -57.05, 97.53, 238.78, 363.79, 363.79, 363.79, 363.79, 515.1, 515.1], "profit_aud": 515.1}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.5, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 1.0, 0.88, 0.75, 1.88, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -6.41, -6.41, -6.41, -6.41, -64.92, 18.23, 18.23, 18.23, 18.23, 18.88, 19.62, 22.35, 35.75, 21.69, 36.05, 36.05, 36.05, 36.05, 54.04, 71.61, 94.43, 121.68, 98.12, 120.05, 123.2, 124.54, 125.91, 127.28, 127.28, 127.28, 127.28, 127.28, 251.79, 386.06, 525.9, 680.49, 680.49, 680.49, 680.49, 543.35, 528.06, 528.06, 673.0], "profit_aud": 673.0}}} \ No newline at end of file diff --git a/results/daily/2025-11-10.json b/results/daily/2025-11-10.json new file mode 100644 index 0000000..2250db2 --- /dev/null +++ b/results/daily/2025-11-10.json @@ -0,0 +1 @@ +{"date": "2025-11-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [110.66, 124.43, 129.75, 121.61, 135.65, 125.58, 123.92, 141.49, 145.63, 140.67, 172.96, 131.33, 158.66, 113.0, 54.16, -4.55, -9.36, -11.16, -9.61, -10.79, -11.09, -15.53, -14.21, -18.28, -29.11, -28.55, -45.56, -145.56, -145.4, -211.31, -216.96, -191.61, -201.74, -93.64, -16.36, 56.18, 95.11, 107.5, 119.73, 125.0, 144.31, 133.06, 117.56, 105.71, 114.99, 128.2, 142.23, 135.24], "forecast_price": {"naive": [49.49, 47.21, 49.38, 44.0, 47.15, 45.75, 43.23, 43.99, 40.78, 46.81, 66.52, 47.08, 22.97, -3.14, -5.22, -5.89, -10.94, -10.72, -11.25, -11.5, -13.74, -13.76, -13.94, -14.39, -17.57, -18.26, -21.8, -18.84, -17.54, -12.58, -10.74, -10.96, -10.94, -8.75, -0.31, 83.64, 103.22, 99.61, 107.42, 111.87, 123.67, 113.0, 100.01, 107.95, 109.71, 109.22, 121.04, 115.96], "lightgbm": [45.49, 44.11, 48.96, 41.42, 42.44, 37.63, 37.71, 40.68, 35.44, 41.47, 56.18, 48.43, 42.2, 39.95, 36.7, 33.88, 28.61, 21.4, 12.12, 9.98, 7.32, 4.74, 2.91, 2.44, 1.01, 1.01, -1.28, 0.36, 0.98, 3.39, 11.99, 13.6, 21.06, 30.66, 38.84, 83.6, 94.81, 91.28, 90.65, 96.87, 97.55, 97.91, 92.23, 83.48, 85.75, 85.75, 88.6, 86.92], "lstm": [133.55, 143.99, 122.76, 116.98, 113.06, 104.5, 112.49, 100.82, 107.19, 116.82, 119.47, 108.09, 93.97, 78.55, 59.95, 46.36, 35.9, 28.77, 28.66, 19.58, 15.4, 13.07, 15.95, 10.87, 12.0, 10.88, 10.5, 13.47, 13.0, 15.54, 21.14, 21.46, 26.14, 51.49, 58.76, 89.41, 113.56, 138.34, 121.33, 117.02, 113.25, 91.64, 98.35, 82.33, 90.47, 77.78, 84.63, 96.09]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.38, 3.88, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-138.33, -293.87, -293.87, -445.88, -445.88, -515.58, -670.48, -493.62, -311.58, -311.58, -95.38, -95.38, 102.94, 102.94, 102.94, 103.51, 104.68, 118.64, 107.97, 109.32, 110.7, 114.58, 114.58, 116.87, 124.15, 124.15, 129.84, 239.01, 239.01, 503.15, 774.36, 1013.87, 1266.04, 1277.74, 1279.79, 1279.79, 1279.79, 1279.79, 1279.79, 1279.79, 1460.18, 1626.51, 1626.51, 1494.37, 1478.27, 1638.52, 1816.31, 1985.36], "profit_aud": 1985.36}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -17.35, -17.35, -199.39, -199.39, 16.81, 16.81, 16.81, 2.69, -4.08, -3.51, -1.17, -1.17, 0.03, 1.38, 2.77, 4.71, 6.48, 8.77, 45.16, 80.85, 137.79, 319.74, 410.62, 437.04, 437.04, 484.94, 510.16, 521.86, 523.91, 523.91, 523.91, 523.91, 523.91, 664.54, 844.92, 1011.25, 864.3, 864.3, 864.3, 864.3, 1042.09, 1211.14], "profit_aud": 1211.14}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -156.97, -311.87, -311.87, -493.91, -493.91, -277.71, -113.55, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 41.44, 77.13, 134.07, 316.03, 497.78, 497.78, 497.78, 497.78, 497.78, 497.78, 497.78, 497.78, 616.67, 616.67, 616.67, 772.93, 953.32, 1119.65, 1119.65, 1119.65, 1119.65, 1119.65, 1119.65, 1119.65], "profit_aud": 1119.65}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -156.97, -156.97, -333.83, -333.83, -193.16, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 23.04, 42.45, 26.47, 49.31, 85.7, 121.39, 178.33, 178.33, 259.03, 259.03, 259.03, 259.03, 259.03, 259.03, 259.03, 259.03, 377.92, 512.3, 661.96, 818.22, 818.22, 818.22, 818.22, 803.42, 803.42, 643.17, 643.17, 812.22], "profit_aud": 812.22}}} \ No newline at end of file diff --git a/results/daily/2025-11-11.json b/results/daily/2025-11-11.json new file mode 100644 index 0000000..1c130fb --- /dev/null +++ b/results/daily/2025-11-11.json @@ -0,0 +1 @@ +{"date": "2025-11-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [89.43, 91.36, 82.0, 74.82, 68.15, 48.03, 56.73, 60.14, 63.31, 59.81, 73.82, 70.79, 69.93, 106.35, -4.79, -14.94, -10.64, -12.03, -10.22, -11.85, -12.03, -15.43, -15.5, -15.38, -13.29, -12.74, -14.35, -16.72, -12.91, -17.62, -16.54, -12.48, -11.41, -9.23, -10.49, 23.7, 95.4, 91.81, 110.66, 116.52, 119.29, 117.34, 104.15, 91.32, 80.05, 89.9, 100.84, 99.96], "forecast_price": {"naive": [110.66, 124.43, 129.75, 121.61, 135.65, 125.58, 123.92, 141.49, 145.63, 140.67, 172.96, 131.33, 158.66, 113.0, 54.16, -4.55, -9.36, -11.16, -9.61, -10.79, -11.09, -15.53, -14.21, -18.28, -29.11, -28.55, -45.56, -145.56, -145.4, -211.31, -216.96, -191.61, -201.74, -93.64, -16.36, 56.18, 95.11, 107.5, 119.73, 125.0, 144.31, 133.06, 117.56, 105.71, 114.99, 128.2, 142.23, 135.24], "lightgbm": [88.9, 87.59, 84.89, 81.53, 74.1, 77.8, 78.64, 76.24, 77.13, 82.05, 97.32, 82.89, 76.06, 68.68, 48.45, 11.69, 6.25, -0.56, 2.42, -4.37, -4.88, -8.24, -9.75, -10.22, -13.48, -13.48, -16.27, -16.67, -16.67, -15.91, -11.92, -4.52, -0.68, 6.28, 32.67, 64.83, 95.26, 99.98, 105.03, 109.17, 114.56, 109.2, 96.58, 84.89, 92.57, 96.31, 102.11, 100.71], "lstm": [144.82, 143.31, 128.83, 124.26, 111.42, 108.37, 105.04, 115.76, 113.13, 123.35, 132.0, 122.1, 92.84, 57.07, 29.34, 14.12, -1.87, -7.99, -13.56, -15.67, -23.86, -27.01, -31.6, -34.57, -36.88, -41.34, -48.87, -50.3, -49.19, -41.8, -42.36, -32.25, -19.02, -5.32, 11.9, 42.78, 64.91, 100.2, 103.53, 109.85, 90.56, 89.58, 89.29, 87.8, 82.08, 79.41, 82.9, 84.71]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 3.25, 2.0, 1.25, 0.0, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.0, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -60.04, -130.95, -206.13, -206.13, -280.9, -188.62, -100.14, -47.69, 85.25, 85.85, 104.53, 94.21, 109.25, 96.47, 97.95, 99.45, 118.74, 138.11, 157.35, 157.35, 141.42, 155.78, 176.68, 160.55, 182.58, 203.26, 204.82, 206.24, 196.0, 209.11, 209.11, 209.11, 209.11, 347.43, 493.08, 642.2, 788.88, 788.88, 788.88, 688.82, 576.44, 702.48, 802.45], "profit_aud": 802.45}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.38, 3.88, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-111.79, -225.98, -225.98, -319.51, -319.51, -346.17, -417.08, -341.9, -262.77, -262.77, -170.49, -170.49, -83.08, -83.08, -83.08, -81.21, -79.88, -64.84, -76.19, -74.71, -73.2, -69.35, -69.35, -67.42, -64.1, -64.1, -62.31, -49.77, -49.77, -27.74, -7.06, 8.55, 22.81, 23.97, 25.28, 25.28, 25.28, 25.28, 25.28, 25.28, 174.39, 321.07, 321.07, 206.93, 195.72, 308.1, 434.14, 559.1], "profit_aud": 559.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -85.19, -85.19, -85.19, -93.61, -93.61, -93.61, -1.33, -1.33, -1.33, -1.33, -1.33, -1.33, -1.33, 13.7, 2.21, 3.69, 5.19, 7.12, 9.06, 10.98, 20.94, 20.94, 38.89, 59.79, 75.93, 97.96, 100.03, 101.59, 103.01, 103.01, 103.01, 103.01, 103.01, 103.01, 241.33, 386.98, 536.1, 682.78, 682.78, 568.63, 568.63, 568.63, 682.07, 682.07], "profit_aud": 682.07}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -60.04, -130.95, -130.95, -130.95, -71.14, 21.14, 21.14, 21.14, 21.14, 21.14, 21.14, 22.47, 23.97, 25.25, 26.73, 28.23, 30.16, 32.1, 34.02, 35.68, 37.28, 55.22, 76.12, 92.26, 103.28, 123.96, 125.52, 126.94, 128.1, 128.1, 128.1, 128.1, 242.86, 381.18, 526.83, 675.95, 675.95, 675.95, 675.95, 675.95, 675.95, 675.95, 675.95], "profit_aud": 675.95}}} \ No newline at end of file diff --git a/results/daily/2025-11-12.json b/results/daily/2025-11-12.json new file mode 100644 index 0000000..b527915 --- /dev/null +++ b/results/daily/2025-11-12.json @@ -0,0 +1 @@ +{"date": "2025-11-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [104.52, 114.55, 94.32, 109.73, 104.14, 98.45, 127.53, 92.72, 112.06, 175.49, 158.01, 121.82, 78.39, -3.43, -4.98, -10.7, -12.54, -13.26, -14.81, -15.47, -18.73, -22.0, -21.72, -21.37, -23.08, -27.98, -27.65, -27.14, -23.72, -21.36, -20.07, -13.59, -11.13, -16.7, -6.32, 66.61, 106.05, 126.61, 145.56, 184.66, 183.29, 174.89, 167.39, 102.59, 99.7, 69.78, 94.35, 108.04], "forecast_price": {"naive": [89.43, 91.36, 82.0, 74.82, 68.15, 48.03, 56.73, 60.14, 63.31, 59.81, 73.82, 70.79, 69.93, 106.35, -4.79, -14.94, -10.64, -12.03, -10.22, -11.85, -12.03, -15.43, -15.5, -15.38, -13.29, -12.74, -14.35, -16.72, -12.91, -17.62, -16.54, -12.48, -11.41, -9.23, -10.49, 23.7, 95.4, 91.81, 110.66, 116.52, 119.29, 117.34, 104.15, 91.32, 80.05, 89.9, 100.84, 99.96], "lightgbm": [57.07, 58.48, 55.67, 52.37, 49.38, 37.4, 43.55, 46.42, 48.14, 50.65, 53.8, 53.62, 53.9, 60.28, 21.76, 13.68, 19.66, 0.29, 1.91, -5.89, -7.36, -10.47, -11.4, -11.4, -12.08, -12.08, -12.08, -12.08, -12.08, -11.65, -9.33, -6.4, 1.37, 15.78, 27.85, 46.01, 82.55, 86.28, 95.33, 102.86, 96.22, 94.75, 85.73, 79.59, 74.43, 74.17, 79.79, 76.71], "lstm": [99.81, 104.11, 95.63, 86.7, 82.12, 74.49, 77.1, 79.12, 82.99, 88.06, 97.46, 89.73, 64.45, 36.55, 15.79, 5.49, -1.91, -8.37, -13.49, -17.15, -18.43, -21.28, -21.02, -28.86, -22.68, -30.09, -32.47, -31.28, -34.8, -24.28, -26.54, -20.97, -15.19, -3.67, 9.91, 38.47, 60.32, 86.42, 92.83, 91.2, 86.47, 77.79, 79.45, 72.92, 75.3, 64.66, 72.13, 71.73]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-58.01, -58.01, -175.91, -175.91, -306.09, -429.15, -269.73, -385.63, -385.63, -166.27, 31.25, 183.52, 183.52, 183.95, 184.57, 185.91, 187.48, 189.14, 190.99, 192.92, 195.26, 203.51, 203.51, 203.51, 217.94, 252.91, 287.47, 321.4, 351.05, 353.72, 356.23, 357.93, 345.57, 366.45, 367.24, 367.24, 367.24, 367.24, 367.24, 598.06, 827.17, 1045.78, 1255.02, 1255.02, 1255.02, 1167.8, 1154.59, 1289.64], "profit_aud": 1289.64}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 3.25, 2.0, 1.25, 0.0, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.0, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -123.06, -282.48, -398.37, -398.37, -617.73, -420.22, -267.95, -209.15, -213.45, -212.82, -199.45, -211.62, -195.04, -213.55, -211.62, -209.28, -181.78, -154.62, -127.91, -127.91, -162.88, -135.24, -101.31, -130.96, -104.25, -79.17, -77.47, -76.08, -94.62, -86.72, -86.72, -86.72, -86.72, 95.23, 326.05, 555.16, 773.77, 773.77, 773.77, 649.15, 561.92, 679.86, 787.9], "profit_aud": 787.9}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -123.06, -282.48, -398.37, -538.44, -538.44, -340.93, -249.56, -151.58, -155.87, -155.87, -142.5, -156.61, -140.03, -156.69, -154.76, -152.42, -149.67, -146.95, -144.28, -115.43, -80.46, -45.9, -11.97, 2.86, 5.53, 8.04, 9.73, 9.73, 9.73, 9.73, 9.73, 9.73, 9.73, 191.68, 422.51, 651.62, 870.23, 870.23, 870.23, 870.23, 870.23, 870.23, 870.23], "profit_aud": 870.23}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -123.06, -282.48, -398.37, -398.37, -244.82, -47.3, 104.97, 104.97, 104.97, 104.97, 104.97, 106.53, 108.19, 110.04, 111.98, 114.32, 119.82, 119.82, 146.53, 120.92, 155.89, 190.45, 224.38, 254.03, 254.03, 269.08, 270.78, 272.18, 274.26, 274.26, 274.26, 274.26, 432.52, 614.47, 845.29, 1074.4, 1074.4, 1074.4, 1074.4, 1074.4, 987.18, 1093.33, 1093.33], "profit_aud": 1093.33}}} \ No newline at end of file diff --git a/results/daily/2025-11-13.json b/results/daily/2025-11-13.json new file mode 100644 index 0000000..d95ca2f --- /dev/null +++ b/results/daily/2025-11-13.json @@ -0,0 +1 @@ +{"date": "2025-11-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [102.88, 60.71, 15.6, -2.63, -0.49, -1.82, -3.22, -6.21, -4.27, 7.52, 27.76, 12.52, -2.22, -4.62, -2.56, -8.6, -9.65, -5.54, -2.38, -0.9, -2.52, 7.34, -6.67, -11.61, -12.78, -24.6, -10.92, -8.98, 17.34, 137.64, 183.8, 43.14, 69.83, 112.65, 127.43, 76.7, 70.58, 68.84, 62.75, 80.71, 89.6, 86.24, 90.73, 81.49, 111.31, 100.16, 102.96, 106.84], "forecast_price": {"naive": [104.52, 114.55, 94.32, 109.73, 104.14, 98.45, 127.53, 92.72, 112.06, 175.49, 158.01, 121.82, 78.39, -3.43, -4.98, -10.7, -12.54, -13.26, -14.81, -15.47, -18.73, -22.0, -21.72, -21.37, -23.08, -27.98, -27.65, -27.14, -23.72, -21.36, -20.07, -13.59, -11.13, -16.7, -6.32, 66.61, 106.05, 126.61, 145.56, 184.66, 183.29, 174.89, 167.39, 102.59, 99.7, 69.78, 94.35, 108.04], "lightgbm": [87.54, 87.0, 83.95, 82.7, 81.49, 75.76, 73.9, 74.35, 77.93, 73.46, 82.85, 78.27, 64.58, 51.01, 22.36, 12.25, 5.05, -1.18, -6.96, -10.53, -12.09, -15.23, -15.3, -15.17, -8.35, -12.76, -17.81, -18.65, -17.18, -16.05, -12.14, -5.69, 0.96, 12.49, 28.68, 61.23, 88.39, 101.51, 105.54, 111.32, 110.31, 106.51, 100.09, 81.34, 81.34, 68.55, 80.22, 84.31], "lstm": [96.0, 94.38, 87.0, 80.26, 70.45, 66.93, 65.68, 72.84, 70.08, 76.12, 83.52, 68.36, 48.72, 25.67, 6.1, -6.46, -13.71, -20.96, -25.94, -27.01, -31.62, -32.71, -32.68, -36.56, -30.21, -35.79, -34.71, -34.11, -33.85, -24.54, -22.89, -15.27, -8.12, 2.63, 17.15, 50.74, 64.92, 94.92, 104.02, 98.42, 87.73, 81.54, 73.59, 74.96, 71.16, 66.93, 67.37, 72.6]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 3.12, 1.88, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 3.5, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 3.29, 2.75, 3.65, 7.68, 15.45, 20.79, 30.19, 64.89, 80.54, 80.82, 86.59, 86.59, 97.34, 109.41, 116.34, 113.36, 112.23, 110.83, 120.0, 120.83, 135.34, 151.32, 182.08, 195.73, 201.34, 201.34, 373.39, 603.14, 549.22, 461.93, 602.74, 762.03, 762.03, 722.86, 636.8, 558.37, 558.37, 558.37, 558.37, 660.44, 558.58, 697.71, 822.91, 951.61, 1085.16], "profit_aud": 1085.16}, "naive": {"charge_mw": [1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-57.1, -57.1, -76.6, -76.6, -75.98, -73.71, -77.74, -69.98, -69.98, -60.57, -25.88, -10.23, -10.23, -9.65, -9.33, -8.26, -7.05, -6.36, -6.06, -5.95, -5.63, -8.38, -8.38, -8.38, -0.39, 30.36, 44.02, 55.24, 33.57, 16.37, -6.61, -12.0, 65.51, -75.3, -91.22, -91.22, -91.22, -91.22, -91.22, 9.67, 121.68, 229.48, 342.89, 342.89, 342.89, 217.69, 203.27, 336.83], "profit_aud": 336.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.45, 0.45, 0.45, -8.95, 25.75, 25.75, 25.75, 25.75, 25.75, 25.75, 25.75, 26.44, 26.74, 26.85, 27.16, 17.99, 26.33, 36.49, 20.51, -10.24, 3.41, 14.63, -7.04, -179.08, -202.06, -207.45, -207.45, -207.45, -207.45, -207.45, -207.45, -207.45, -129.01, -28.12, 83.89, 191.69, 191.69, 191.69, 191.69, 66.49, 66.49, 186.69], "profit_aud": 186.69}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 2.27, 6.3, 6.3, 6.3, 13.82, 48.52, 48.52, 48.52, 48.52, 48.52, 49.59, 50.8, 51.49, 51.79, 51.9, 52.22, 50.39, 50.39, 64.9, 57.81, 88.56, 102.22, 113.44, 91.77, 74.57, 51.59, 46.2, 37.47, 37.47, 37.47, 37.47, 37.47, 123.52, 201.96, 302.85, 414.86, 414.86, 414.86, 414.86, 414.86, 414.86, 414.86, 414.86], "profit_aud": 414.86}}} \ No newline at end of file diff --git a/results/daily/2025-11-14.json b/results/daily/2025-11-14.json new file mode 100644 index 0000000..6256ce9 --- /dev/null +++ b/results/daily/2025-11-14.json @@ -0,0 +1 @@ +{"date": "2025-11-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [89.28, 99.85, 95.51, 89.79, 84.69, 82.49, 87.24, 100.03, 107.83, 121.18, 118.05, 110.86, 106.89, 86.86, 20.6, -9.67, -18.61, -13.92, -11.81, -10.45, -10.47, -9.72, -7.03, -11.15, 32.77, 31.87, -11.58, -10.76, -11.05, -10.87, -9.94, -8.8, -0.79, 0.52, 20.14, 105.73, 112.59, 119.33, 115.6, 96.67, 108.02, 125.54, 142.17, 142.0, 135.83, 142.62, 145.45, 163.98], "forecast_price": {"naive": [102.88, 60.71, 15.6, -2.63, -0.49, -1.82, -3.22, -6.21, -4.27, 7.52, 27.76, 12.52, -2.22, -4.62, -2.56, -8.6, -9.65, -5.54, -2.38, -0.9, -2.52, 7.34, -6.67, -11.61, -12.78, -24.6, -10.92, -8.98, 17.34, 137.64, 183.8, 43.14, 69.83, 112.65, 127.43, 76.7, 70.58, 68.84, 62.75, 80.71, 89.6, 86.24, 90.73, 81.49, 111.31, 100.16, 102.96, 106.84], "lightgbm": [66.66, 63.55, 51.64, 48.24, 46.28, 43.72, 39.59, 39.6, 36.78, 40.7, 41.57, 41.45, 40.39, 29.66, 15.48, 8.9, 3.75, 0.41, -2.03, -6.03, -6.38, -4.24, -8.65, -14.9, -16.06, -18.21, -14.9, -10.93, -3.0, 11.05, 12.52, 13.11, 27.37, 41.94, 59.53, 65.44, 65.93, 67.35, 63.42, 75.55, 75.33, 73.25, 71.97, 69.48, 78.9, 74.69, 74.99, 77.56], "lstm": [112.66, 108.19, 98.65, 92.51, 83.11, 81.5, 85.02, 89.13, 84.24, 89.81, 101.07, 88.92, 64.15, 45.41, 34.84, 27.2, 26.24, 20.01, 14.27, 9.58, 13.68, 10.32, 12.6, 3.32, 11.08, 0.93, 0.78, 3.24, -0.86, -0.96, 2.28, 6.35, 6.37, 16.44, 19.8, 39.28, 57.5, 86.31, 96.84, 98.3, 95.18, 90.73, 91.38, 86.66, 86.58, 85.21, 90.25, 97.99]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.25, 3.12, 1.88, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-111.6, -49.19, -49.19, -161.43, -267.29, -370.41, -479.47, -479.47, -344.68, -193.2, -45.64, 92.93, 92.93, 92.93, 92.93, 94.14, 117.4, 134.8, 149.56, 149.56, 150.87, 150.87, 142.09, 156.02, 196.98, 236.82, 251.3, 264.75, 278.56, 292.15, 293.4, 294.49, 294.59, 294.59, 294.59, 294.59, 294.59, 428.84, 428.84, 308.0, 308.0, 308.0, 485.71, 485.71, 485.71, 663.98, 845.8, 1050.78], "profit_aud": 1050.78}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 3.12, 1.88, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 3.5, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -112.24, -18.23, -59.48, -168.53, -293.57, -428.36, -276.88, -129.32, 9.25, -4.11, -112.69, -112.69, -100.61, -77.34, -59.95, -74.71, -87.77, -93.58, -105.73, -104.85, -90.91, -131.87, -171.7, -157.22, -150.5, -150.5, -164.08, -176.5, -165.51, -164.52, -163.88, -138.7, -138.7, -201.18, -350.34, -494.85, -494.85, -494.85, -494.85, -334.91, -512.41, -342.62, -164.34, 17.47, 222.45], "profit_aud": 222.45}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -134.79, -134.79, -1.98, -1.98, -1.98, -1.98, -1.98, -1.98, -1.98, -1.98, -0.51, 2.11, 15.19, 3.04, 3.92, 17.86, -23.1, -62.93, -48.45, -41.72, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, -40.34, 80.5, 215.52, 215.52, 215.52, 215.52, 385.32, 385.32, 385.32, 590.3], "profit_aud": 590.3}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -11.86, -114.97, -114.97, -114.97, -114.97, -114.97, 32.59, 32.59, 32.59, 32.59, 32.59, 32.59, 32.59, 32.59, 32.59, 45.65, 33.87, 46.01, 38.11, 52.04, 88.91, 49.07, 63.56, 56.83, 70.64, 84.23, 96.65, 96.65, 96.65, 96.65, 96.65, 96.65, 96.65, 96.65, 241.15, 361.99, 497.02, 497.02, 497.02, 497.02, 497.02, 497.02, 497.02, 702.0], "profit_aud": 702.0}}} \ No newline at end of file diff --git a/results/daily/2025-11-15.json b/results/daily/2025-11-15.json new file mode 100644 index 0000000..b306e2a --- /dev/null +++ b/results/daily/2025-11-15.json @@ -0,0 +1 @@ +{"date": "2025-11-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [171.65, 184.22, 229.7, 247.66, 243.54, 173.2, 162.64, 157.27, 141.73, 153.92, 168.56, 172.5, 110.03, 95.11, 103.0, 21.49, 14.52, -7.05, -11.5, -11.87, -13.3, -12.08, -16.14, -14.6, -11.51, -13.66, -13.22, -12.26, -11.15, -10.28, -7.08, -10.13, -10.46, -12.9, -3.62, 61.84, 69.34, 74.86, 77.06, 69.19, 73.24, 76.54, 76.68, 94.02, 102.56, 93.21, 87.68, 88.51], "forecast_price": {"naive": [89.28, 99.85, 95.51, 89.79, 84.69, 82.49, 87.24, 100.03, 107.83, 121.18, 118.05, 110.86, 106.89, 86.86, 20.6, -9.67, -18.61, -13.92, -11.81, -10.45, -10.47, -9.72, -7.03, -11.15, 32.77, 31.87, -11.58, -10.76, -11.05, -10.87, -9.94, -8.8, -0.79, 0.52, 20.14, 105.73, 112.59, 119.33, 115.6, 96.67, 108.02, 125.54, 142.17, 142.0, 135.83, 142.62, 145.45, 163.98], "lightgbm": [71.83, 71.56, 68.51, 62.9, 61.39, 57.93, 57.82, 61.16, 56.84, 55.88, 55.63, 53.72, 50.45, 47.36, 12.3, -3.46, -10.44, -12.2, -13.67, -14.45, -14.95, -15.78, -13.13, -20.15, 0.44, -0.5, -20.15, -20.15, -18.76, -11.27, -4.56, -4.61, 8.7, 17.27, 37.17, 71.57, 90.34, 93.16, 88.03, 84.68, 88.46, 91.87, 97.16, 92.6, 94.68, 94.68, 94.68, 95.94], "lstm": [161.27, 163.88, 142.37, 133.22, 125.45, 115.75, 115.64, 118.7, 103.81, 111.17, 109.32, 87.95, 52.5, 27.98, 14.86, 8.77, 4.73, -4.29, -5.04, -10.22, -14.99, -16.19, -10.86, -21.03, -14.76, -21.25, -22.05, -19.67, -23.29, -18.71, -13.84, -4.22, 0.77, 12.45, 22.63, 48.84, 67.76, 100.26, 105.43, 113.22, 104.2, 96.75, 94.77, 98.12, 96.22, 90.77, 94.61, 100.18]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 1.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 3.62, 3.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-214.57, -444.84, -444.84, -135.26, 108.27, 108.27, 108.27, 108.27, -68.89, -90.44, -90.44, 125.18, 125.18, 125.18, 125.18, 125.18, 125.18, 126.06, 127.5, 128.99, 145.61, 145.61, 165.78, 184.04, 179.26, 196.33, 212.86, 214.39, 215.79, 215.79, 206.94, 206.94, 212.17, 228.3, 228.75, 228.75, 228.75, 228.75, 315.45, 228.96, 228.96, 228.96, 228.96, 346.48, 474.68, 591.2, 591.2, 701.85], "profit_aud": 701.85}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.25, 3.12, 1.88, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-214.57, -99.43, -99.43, -409.01, -713.42, -929.93, -1133.23, -1133.23, -956.07, -763.67, -552.97, -337.34, -337.34, -337.34, -337.34, -340.03, -358.19, -349.37, -334.99, -334.99, -333.33, -333.33, -353.51, -335.25, -349.64, -366.71, -350.19, -334.87, -320.93, -308.08, -307.2, -305.93, -304.63, -304.63, -304.63, -304.63, -304.63, -220.41, -220.41, -306.9, -306.9, -306.9, -211.04, -211.04, -211.04, -94.52, 15.07, 125.71], "profit_aud": 125.71}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 2.0, 3.12, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.69, -4.5, -3.62, -2.18, 9.69, 26.31, 41.4, 41.4, 59.66, 45.27, 28.19, 44.72, 60.04, 73.98, 75.26, 75.26, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 77.8, 173.65, 173.65, 301.85, 418.37, 418.37, 529.01], "profit_aud": 529.01}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 2.32, 3.8, 7.13, 22.22, 2.05, 20.31, 7.53, 24.6, 41.13, 56.45, 70.39, 76.81, 77.69, 78.96, 78.96, 78.96, 78.96, 78.96, 78.96, 172.53, 268.86, 355.34, 446.9, 446.9, 446.9, 446.9, 446.9, 446.9, 446.9, 446.9], "profit_aud": 446.9}}} \ No newline at end of file diff --git a/results/daily/2025-11-16.json b/results/daily/2025-11-16.json new file mode 100644 index 0000000..b09be0c --- /dev/null +++ b/results/daily/2025-11-16.json @@ -0,0 +1 @@ +{"date": "2025-11-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [77.94, 74.87, 73.42, 62.76, 52.49, 60.02, 54.77, 50.52, 36.1, 27.58, 20.43, -9.56, -19.72, -20.77, -19.89, -23.92, -37.45, -32.36, -24.45, -31.78, -29.9, -30.31, -31.0, -27.61, -21.5, -21.61, -18.66, -20.61, -16.93, -13.1, -17.41, -18.13, -12.99, -8.54, -10.02, -7.66, -5.4, -5.77, -5.63, -5.72, -6.43, -6.11, -5.98, -5.73, -5.65, -5.57, -4.65, -3.42], "forecast_price": {"naive": [171.65, 184.22, 229.7, 247.66, 243.54, 173.2, 162.64, 157.27, 141.73, 153.92, 168.56, 172.5, 110.03, 95.11, 103.0, 21.49, 14.52, -7.05, -11.5, -11.87, -13.3, -12.08, -16.14, -14.6, -11.51, -13.66, -13.22, -12.26, -11.15, -10.28, -7.08, -10.13, -10.46, -12.9, -3.62, 61.84, 69.34, 74.86, 77.06, 69.19, 73.24, 76.54, 76.68, 94.02, 102.56, 93.21, 87.68, 88.51], "lightgbm": [77.62, 75.46, 72.85, 69.27, 60.94, 60.57, 65.17, 66.52, 64.8, 64.25, 62.48, 58.55, 52.85, 50.7, 38.62, 7.41, 0.47, -6.87, -15.08, -20.67, -22.12, -24.1, -25.34, -25.34, -23.28, -23.87, -25.34, -25.34, -24.74, -21.54, -13.59, -9.62, -4.65, 6.29, 25.65, 54.76, 64.93, 69.0, 69.46, 63.73, 65.28, 67.29, 64.73, 70.22, 71.43, 70.22, 68.99, 69.01], "lstm": [100.46, 96.91, 93.98, 86.34, 87.2, 75.57, 74.75, 77.05, 68.17, 71.82, 77.28, 57.29, 35.02, 12.74, -5.36, -10.38, -17.51, -28.03, -23.49, -29.64, -28.07, -33.11, -29.91, -33.48, -32.8, -38.44, -39.91, -36.33, -38.31, -33.07, -31.15, -19.94, -16.48, -3.21, 6.53, 26.53, 47.41, 67.64, 75.8, 80.75, 77.75, 68.9, 70.15, 71.37, 66.44, 65.04, 70.6, 80.64]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.5, 2.0, 2.5, 2.5, 1.75, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 4.88, 5.0, 4.88, 3.62, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.62, 3.5, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -65.61, 1.91, 1.91, 1.91, 1.91, 1.91, 1.91, 3.1, 5.57, 10.76, 10.76, 13.75, 60.57, 101.02, 70.46, 110.19, 132.61, 170.5, 209.25, 212.7, 212.7, 218.1, 218.1, 223.25, 223.25, 206.87, 213.4, 236.07, 237.69, 228.21, 240.73, 241.69, 234.93, 234.93, 234.93, 234.93, 242.97, 246.79, 247.54, 248.26, 248.96, 249.66, 250.24, 250.67], "profit_aud": 250.67}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 1.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 3.62, 3.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-97.42, -191.0, -191.0, -112.55, -60.06, -60.06, -60.06, -60.06, -105.19, -109.05, -109.05, -121.0, -121.0, -121.0, -121.0, -121.0, -121.0, -116.95, -113.9, -109.92, -72.56, -72.56, -33.81, 0.7, -8.22, 18.79, 42.11, 44.68, 46.8, 46.8, 25.03, 25.03, 31.53, 42.2, 43.45, 43.45, 43.45, 43.45, 37.12, 44.27, 44.27, 44.27, 44.27, 37.11, 30.05, 23.08, 23.08, 18.81], "profit_aud": 18.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.75, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 4.25, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.04, 7.1, 11.07, 14.81, 18.6, 57.34, 91.86, 91.86, 91.86, 115.17, 140.93, 155.75, 157.38, 159.56, 161.83, 163.45, 163.45, 163.45, 163.45, 163.45, 163.45, 156.41, 156.41, 156.41, 156.41, 156.41, 149.25, 142.19, 135.22, 135.22, 135.22], "profit_aud": 135.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.0, 2.5, 2.0, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -45.13, -45.13, -22.15, -22.15, -22.15, -22.15, -19.66, -16.67, -11.99, 28.46, 1.32, 9.27, 9.27, 16.85, 16.85, 37.55, 37.55, 64.56, 87.88, 113.64, 134.8, 136.44, 138.62, 140.88, 142.51, 143.57, 143.57, 143.57, 143.57, 143.57, 136.54, 129.39, 121.35, 121.35, 121.35, 121.35, 121.35, 121.35, 121.35, 117.08], "profit_aud": 117.08}}} \ No newline at end of file diff --git a/results/daily/2025-11-17.json b/results/daily/2025-11-17.json new file mode 100644 index 0000000..14d1b01 --- /dev/null +++ b/results/daily/2025-11-17.json @@ -0,0 +1 @@ +{"date": "2025-11-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-4.85, -5.94, -5.91, -6.5, -7.49, -8.83, -7.45, -5.9, -5.6, -5.71, 5.53, 4.99, 1.01, -7.02, -9.2, -10.36, -10.03, -9.88, -9.94, -11.65, -9.56, -9.34, -11.08, -10.17, -10.09, -9.96, -11.62, -13.53, -10.87, -10.47, -10.65, -6.14, -5.96, -7.3, -8.35, -13.45, -14.9, -5.7, -4.52, -6.58, -2.89, 8.83, 4.72, 0.58, -2.21, 5.12, 9.27, 8.53], "forecast_price": {"naive": [77.94, 74.87, 73.42, 62.76, 52.49, 60.02, 54.77, 50.52, 36.1, 27.58, 20.43, -9.56, -19.72, -20.77, -19.89, -23.92, -37.45, -32.36, -24.45, -31.78, -29.9, -30.31, -31.0, -27.61, -21.5, -21.61, -18.66, -20.61, -16.93, -13.1, -17.41, -18.13, -12.99, -8.54, -10.02, -7.66, -5.4, -5.77, -5.63, -5.72, -6.43, -6.11, -5.98, -5.73, -5.65, -5.57, -4.65, -3.42], "lightgbm": [47.68, 46.78, 47.5, 46.67, 45.94, 46.23, 45.01, 44.31, 32.6, 34.28, 39.2, 34.32, 33.13, 28.77, 25.64, 15.44, 7.42, 3.3, 6.23, -1.44, -1.96, -4.99, -4.28, -2.97, 1.84, 1.84, 3.57, 3.57, 3.81, 3.23, 4.61, 5.78, 10.97, 22.68, 31.63, 46.26, 59.88, 62.37, 64.48, 64.48, 64.32, 64.54, 63.54, 59.27, 61.7, 61.7, 61.7, 60.75], "lstm": [-1.22, -4.59, -5.08, -10.65, -7.97, -10.41, -9.82, -5.5, 1.65, 6.76, 23.78, 21.8, 12.68, 13.4, -3.05, -1.87, -7.05, -21.77, -31.29, -32.06, -24.82, -26.42, -26.54, -27.23, -26.94, -28.76, -34.16, -31.34, -35.13, -37.02, -30.78, -29.27, -26.91, -17.34, -21.6, -1.82, 22.45, 40.71, 56.45, 51.74, 51.54, 57.89, 53.75, 43.44, 36.38, 41.73, 49.81, 58.86]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 1.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.38, 0.25, 0.12, 0.0, 1.12, 1.0, 0.0, 1.12, 1.0, 0.88, 0.75, 1.88, 3.0, 4.12, 4.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.61, 2.09, 2.09, 10.22, 19.58, 30.61, 39.92, 39.92, 37.6, 37.6, 44.51, 50.75, 52.01, 52.89, 54.04, 59.21, 59.21, 59.21, 59.21, 73.77, 73.77, 64.71, 78.57, 78.57, 78.57, 78.57, 93.09, 110.01, 123.6, 123.6, 135.58, 127.91, 120.45, 114.36, 124.8, 141.61, 160.23, 160.94, 155.92, 164.15, 164.51, 175.55, 181.44, 181.36, 184.12, 190.52, 202.11, 212.77], "profit_aud": 212.77}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.5, 2.0, 2.5, 2.5, 1.75, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 4.88, 5.0, 4.88, 3.62, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.62, 3.5, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 9.36, -0.57, -0.57, -0.57, -0.57, -0.57, -0.57, -1.19, -1.32, 0.44, 0.44, 1.73, 14.27, 26.61, 14.19, 28.75, 35.92, 47.59, 61.45, 62.72, 62.72, 65.21, 65.21, 68.59, 68.59, 55.5, 59.5, 67.17, 67.92, 59.82, 70.26, 71.94, 53.32, 53.32, 53.32, 53.32, 56.93, 51.41, 50.82, 50.75, 51.02, 50.38, 49.23, 48.16], "profit_aud": 48.16}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.0, 7.8, 14.71, 14.71, 14.71, 14.71, 14.71, 14.71, 14.71, 27.06, 15.88, 23.16, 35.11, 46.79, 60.64, 73.35, 73.35, 73.35, 73.35, 73.35, 61.12, 74.2, 74.2, 74.2, 74.2, 74.2, 74.2, 74.2, 74.2, 74.2, 68.55, 60.32, 56.71, 67.75, 67.75, 67.75, 67.75, 67.75, 67.75, 67.75], "profit_aud": 67.75}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.5, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.61, 1.35, 2.09, 10.22, 19.57, 30.6, 39.92, 43.61, 43.61, 43.61, 50.52, 56.76, 58.02, 49.24, 60.73, 49.23, 50.49, 51.72, 64.15, 78.71, 66.75, 62.88, 62.88, 62.88, 62.88, 62.88, 77.4, 94.32, 107.91, 121.0, 127.65, 128.42, 129.17, 121.07, 131.51, 133.19, 133.19, 133.19, 127.53, 119.31, 119.31, 130.35, 136.24, 136.08, 138.84, 132.44, 144.03, 154.69], "profit_aud": 154.69}}} \ No newline at end of file diff --git a/results/daily/2025-11-18.json b/results/daily/2025-11-18.json new file mode 100644 index 0000000..9c5a5df --- /dev/null +++ b/results/daily/2025-11-18.json @@ -0,0 +1 @@ +{"date": "2025-11-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [10.8, 4.85, 16.88, 29.4, 39.56, 49.04, 91.0, 140.05, 144.38, 176.76, 205.8, 265.62, 222.15, 188.64, 179.94, 121.36, 0.02, -4.51, -3.34, -10.41, -12.07, -11.54, -11.13, -11.5, -11.9, -16.83, -20.09, -54.32, -132.58, -202.6, -231.81, -210.58, -90.0, -45.58, -14.46, -18.84, -11.1, -4.79, 13.95, 72.3, 68.99, 90.29, 82.15, 88.44, 87.9, 95.88, 110.3, 112.82], "forecast_price": {"naive": [-4.85, -5.94, -5.91, -6.5, -7.49, -8.83, -7.45, -5.9, -5.6, -5.71, 5.53, 4.99, 1.01, -7.02, -9.2, -10.36, -10.03, -9.88, -9.94, -11.65, -9.56, -9.34, -11.08, -10.17, -10.09, -9.96, -11.62, -13.53, -10.87, -10.47, -10.65, -6.14, -5.96, -7.3, -8.35, -13.45, -14.9, -5.7, -4.52, -6.58, -2.89, 8.83, 4.72, 0.58, -2.21, 5.12, 9.27, 8.53], "lightgbm": [1.71, 1.71, 0.21, 0.68, 1.41, -3.49, -2.26, -1.26, -1.01, -2.91, 1.11, -0.13, -2.46, -3.4, -4.67, -7.38, -6.37, -6.78, -7.18, -12.53, -9.31, -10.95, -15.51, -11.25, -11.25, -11.25, -14.82, -16.17, -14.82, -9.61, -7.47, -2.61, 2.81, 14.52, 22.38, 27.64, 43.69, 47.35, 49.7, 49.36, 48.52, 49.39, 48.21, 45.01, 44.27, 45.01, 47.94, 47.94], "lstm": [7.74, 4.13, 2.3, -1.58, -0.93, -2.56, -3.64, -0.76, 7.55, 11.1, 25.34, 26.99, 17.94, 16.18, 2.78, 0.38, -6.53, -19.57, -30.35, -27.71, -22.93, -24.53, -29.21, -27.68, -27.29, -35.14, -36.41, -32.94, -38.16, -35.57, -35.63, -35.18, -29.86, -20.87, -20.78, -5.78, 16.66, 37.86, 50.75, 48.58, 48.52, 53.08, 48.97, 39.73, 34.3, 37.45, 45.85, 52.91]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 1.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 0.38, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-13.51, -19.57, -40.67, -77.42, -99.37, -99.37, -99.37, -99.37, -99.37, -99.37, 157.88, 489.9, 767.59, 1003.39, 1003.39, 1003.39, 1003.39, 1009.04, 1005.32, 1006.62, 1014.17, 1014.17, 1014.17, 1014.17, 1014.17, 1016.27, 1018.78, 1025.57, 1191.3, 1444.56, 1734.32, 1997.54, 2053.79, 2059.49, 2043.44, 2066.99, 2068.38, 2068.97, 2068.97, 2068.97, 2068.97, 2181.83, 2181.83, 2181.83, 2181.83, 2301.68, 2439.56, 2580.58], "profit_aud": 2580.58}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 1.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.38, 0.25, 0.12, 0.0, 1.12, 1.0, 0.0, 1.12, 1.0, 0.88, 0.75, 1.88, 3.0, 4.12, 4.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-1.35, -2.56, -2.56, -39.31, -88.75, -150.06, -263.81, -263.81, -203.89, -203.89, 53.36, 385.38, 663.07, 639.49, 617.0, 556.32, 556.32, 556.32, 556.32, 569.33, 569.33, 558.13, 572.05, 572.05, 572.05, 572.05, 597.16, 665.06, 830.78, 830.78, 1091.57, 828.35, 715.85, 677.79, 695.86, 719.41, 733.28, 733.88, 749.37, 658.99, 650.37, 763.23, 865.91, 853.53, 743.66, 863.51, 1001.39, 1142.41], "profit_aud": 1142.41}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 2.25, 0.0, 2.5, 0.75, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.0, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -21.1, -25.22, 24.23, -37.08, -150.83, -220.85, -40.37, -261.33, -4.08, 327.94, 300.17, 276.59, 254.1, 102.4, 102.42, 102.42, 102.84, 115.85, 102.46, 103.9, 117.81, 117.81, 128.22, 128.22, 153.33, 221.23, 386.96, 412.29, 441.26, 467.59, 467.59, 467.59, 467.59, 467.59, 467.59, 467.59, 485.03, 575.4, 661.64, 774.5, 774.5, 774.5, 774.5, 774.5, 774.5, 774.5], "profit_aud": 774.5}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 1.75, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.25, 0.12, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -36.74, -86.19, -147.49, -261.24, -348.77, -348.77, -348.77, -91.52, 240.5, 518.19, 753.99, 753.99, 753.99, 753.99, 754.56, 758.74, 771.75, 756.66, 745.46, 749.64, 749.64, 749.64, 751.74, 776.85, 776.85, 942.58, 1195.84, 1485.6, 1643.53, 1654.78, 1660.48, 1662.28, 1664.64, 1664.64, 1664.64, 1682.08, 1772.46, 1772.46, 1885.31, 1988.0, 1963.24, 1853.37, 1733.52, 1871.4, 2012.42], "profit_aud": 2012.42}}} \ No newline at end of file diff --git a/results/daily/2025-11-19.json b/results/daily/2025-11-19.json new file mode 100644 index 0000000..b71c808 --- /dev/null +++ b/results/daily/2025-11-19.json @@ -0,0 +1 @@ +{"date": "2025-11-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [109.75, 121.11, 115.88, 81.23, 62.21, 65.83, 61.52, 58.89, 73.98, 90.68, 98.99, 84.09, 49.53, 35.34, 32.55, 17.33, -9.22, -10.84, -15.69, -13.97, -14.61, -17.0, -14.61, -14.59, -13.29, -14.34, -14.97, -41.46, -34.47, -24.48, -33.6, -30.5, -14.61, -28.32, -17.06, -9.25, -6.96, 18.47, 29.25, 7.9, 31.08, 71.97, 109.72, 107.37, 80.98, 73.66, 80.76, 84.9], "forecast_price": {"naive": [10.8, 4.85, 16.88, 29.4, 39.56, 49.04, 91.0, 140.05, 144.38, 176.76, 205.8, 265.62, 222.15, 188.64, 179.94, 121.36, 0.02, -4.51, -3.34, -10.41, -12.07, -11.54, -11.13, -11.5, -11.9, -16.83, -20.09, -54.32, -132.58, -202.6, -231.81, -210.58, -90.0, -45.58, -14.46, -18.84, -11.1, -4.79, 13.95, 72.3, 68.99, 90.29, 82.15, 88.44, 87.9, 95.88, 110.3, 112.82], "lightgbm": [50.14, 43.5, 48.75, 46.14, 43.76, 47.24, 56.18, 51.4, 52.76, 52.92, 57.03, 50.51, 56.38, 47.31, 44.57, 37.06, 2.85, 0.11, -2.59, -7.31, -10.62, -13.5, -15.13, -15.13, -15.13, -14.39, -14.94, -33.22, -32.13, -32.19, -29.01, -20.46, -18.32, -4.3, 22.14, 30.53, 45.56, 61.1, 66.44, 76.45, 75.61, 83.6, 79.08, 82.72, 82.72, 76.56, 88.38, 89.52], "lstm": [94.65, 95.49, 92.92, 80.92, 84.05, 79.3, 78.61, 83.2, 101.42, 100.22, 121.66, 125.5, 100.64, 74.35, 45.28, 32.26, 10.15, 5.77, -7.65, -6.96, -8.2, -15.74, -15.4, -20.09, -28.03, -37.65, -46.7, -43.37, -45.71, -39.16, -46.28, -38.84, -27.63, -12.6, -3.84, 12.76, 36.54, 69.03, 63.99, 77.82, 70.84, 77.05, 75.41, 66.13, 73.79, 62.67, 75.63, 75.18]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.75, 0.62, 1.75, 1.62, 1.5, 0.25, 0.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -77.76, -160.04, -236.94, -310.55, -255.07, -141.71, -17.97, 87.15, 87.15, 87.15, 87.15, 87.15, 88.3, 89.65, 109.27, 105.36, 105.36, 126.62, 126.62, 126.62, 110.0, 110.0, 110.0, 161.83, 204.91, 220.21, 262.21, 300.34, 282.08, 317.48, 321.74, 322.9, 323.77, 323.77, 356.68, 346.8, 346.8, 346.8, 483.95, 618.16, 719.37, 719.37, 719.37, 825.5], "profit_aud": 825.5}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 1.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 0.38, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-137.19, -288.58, -433.43, -534.96, -569.48, -569.48, -569.48, -569.48, -569.48, -569.48, -445.74, -340.62, -278.71, -234.53, -234.53, -234.53, -234.53, -220.99, -238.4, -236.66, -227.53, -227.53, -227.53, -227.53, -227.53, -225.74, -223.86, -218.68, -175.6, -145.0, -103.0, -64.86, -55.73, -52.19, -71.13, -59.57, -58.7, -61.01, -61.01, -61.01, -61.01, 28.96, 28.96, 28.96, 28.96, 121.04, 221.99, 328.11], "profit_aud": 328.11}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 3.25, 3.25, 3.25, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -151.39, -151.39, -252.92, -330.68, -412.96, -336.07, -336.07, -336.07, -268.06, -144.32, -144.32, -82.4, -82.4, -82.4, -82.4, -82.4, -82.4, -80.44, -78.69, -76.87, -74.74, -65.61, -65.61, -65.61, -65.61, -65.61, -13.79, 29.3, 59.89, 101.9, 120.96, 122.79, 126.33, 126.33, 126.33, 126.33, 126.33, 126.33, 126.33, 126.33, 216.29, 216.29, 216.29, 317.51, 317.51, 418.47, 524.59], "profit_aud": 524.59}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 2.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -101.53, -136.06, -218.34, -295.24, -368.85, -276.37, -276.37, -152.63, -47.52, 14.4, 14.4, 14.4, 14.4, 14.4, 14.4, 18.32, 18.32, 20.15, 24.4, 24.4, 26.22, 27.88, 29.67, 48.39, 100.22, 143.3, 158.6, 200.6, 204.42, 206.24, 209.78, 211.92, 211.92, 211.92, 211.92, 211.92, 221.79, 221.79, 311.76, 448.9, 314.69, 395.67, 303.59, 404.54, 510.67], "profit_aud": 510.67}}} \ No newline at end of file diff --git a/results/daily/2025-11-20.json b/results/daily/2025-11-20.json new file mode 100644 index 0000000..7b4d6e7 --- /dev/null +++ b/results/daily/2025-11-20.json @@ -0,0 +1 @@ +{"date": "2025-11-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [86.24, 79.19, 100.07, 87.28, 79.76, 79.34, 88.22, 80.8, 83.59, 80.46, 84.32, 81.64, 40.26, 35.52, -9.39, -17.45, -61.3, -10.2, -7.82, -12.1, -11.86, -10.67, -11.66, -13.75, -12.91, -11.75, -14.77, -15.65, -17.77, -38.11, -45.74, -45.84, -170.25, -126.13, -25.26, -4.9, -1.35, 50.06, 45.62, 54.01, 53.85, 49.14, 34.13, 42.45, 18.54, 28.05, 31.96, 36.64], "forecast_price": {"naive": [109.75, 121.11, 115.88, 81.23, 62.21, 65.83, 61.52, 58.89, 73.98, 90.68, 98.99, 84.09, 49.53, 35.34, 32.55, 17.33, -9.22, -10.84, -15.69, -13.97, -14.61, -17.0, -14.61, -14.59, -13.29, -14.34, -14.97, -41.46, -34.47, -24.48, -33.6, -30.5, -14.61, -28.32, -17.06, -9.25, -6.96, 18.47, 29.25, 7.9, 31.08, 71.97, 109.72, 107.37, 80.98, 73.66, 80.76, 84.9], "lightgbm": [51.47, 42.52, 42.57, 41.6, 36.77, 37.62, 37.55, 37.73, 41.46, 41.04, 45.35, 45.14, 38.51, 38.31, 33.19, 17.04, 6.71, 1.13, -3.06, -7.07, -7.86, -11.52, -11.91, -13.34, -13.34, -12.88, -14.02, -22.81, -18.76, -12.55, -17.37, -10.45, 2.12, 4.3, 26.02, 39.03, 48.44, 49.88, 49.87, 56.42, 55.8, 67.67, 81.07, 78.54, 69.73, 67.4, 69.73, 71.08], "lstm": [80.08, 75.97, 76.28, 70.34, 64.62, 61.62, 64.27, 67.92, 78.24, 76.05, 90.89, 84.79, 66.05, 46.08, 28.1, 13.66, -0.65, -3.34, -11.51, -14.07, -15.2, -16.08, -17.76, -19.11, -22.42, -31.11, -36.0, -33.22, -39.2, -35.34, -40.51, -32.72, -24.21, -13.18, -2.58, 17.41, 31.43, 63.49, 69.08, 73.01, 67.12, 66.37, 58.28, 59.02, 58.89, 54.12, 61.1, 65.87]}, "methods": {"perfect_foresight": {"charge_mw": [0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.0, 0.12, 0.0, 1.12, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-12.07, -111.06, 14.03, 14.03, 14.03, -85.14, 14.1, 14.1, 14.1, 14.1, 14.1, 14.1, 14.1, 14.1, 15.27, 37.08, 113.72, 103.82, 94.05, 109.17, 109.17, 100.26, 100.26, 117.45, 117.45, 106.05, 107.9, 109.85, 112.08, 135.89, 193.07, 250.36, 463.18, 620.84, 624.0, 624.61, 624.78, 687.36, 687.36, 754.88, 822.19, 883.61, 840.95, 888.71, 865.53, 830.47, 862.42, 908.22], "profit_aud": 908.22}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.75, 0.62, 1.75, 1.62, 1.5, 0.25, 0.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -99.69, -198.87, -309.14, -410.14, -347.45, -246.87, -141.47, -39.42, -39.42, -39.42, -39.42, -39.42, -31.76, -30.48, -20.72, -24.1, -24.1, -10.76, -10.76, -10.76, -26.9, -26.9, -26.9, -7.34, 14.87, 38.69, 95.86, 153.16, -59.65, 98.01, 104.33, 104.94, 105.11, 105.11, 156.43, 88.92, 88.92, 88.92, 131.58, 184.64, 207.82, 207.82, 207.82, 253.61], "profit_aud": 253.61}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 0.75, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -99.69, -121.91, -232.18, -232.18, -232.18, -232.18, -126.78, -24.73, -24.73, -24.73, -24.73, -24.73, -24.73, -24.73, -23.75, -22.24, -20.76, -19.42, -17.97, -4.22, -4.22, -4.22, 14.25, 33.81, 56.02, 56.02, 113.2, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 118.92, 161.59, 214.65, 214.65, 214.65, 254.59, 300.39], "profit_aud": 300.39}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -99.69, -198.87, -309.14, -410.14, -305.65, -245.31, -139.91, -37.86, -37.86, -37.86, -37.86, -37.86, -30.19, -28.92, -27.94, -26.43, -24.95, -23.61, -22.16, -20.44, -18.82, -17.36, 1.11, 10.89, 33.1, 80.74, 137.91, 143.64, 164.93, 180.69, 183.85, 183.85, 183.85, 183.85, 240.88, 308.39, 375.71, 437.13, 432.35, 432.35, 432.35, 397.29, 397.29, 443.09], "profit_aud": 443.09}}} \ No newline at end of file diff --git a/results/daily/2025-11-21.json b/results/daily/2025-11-21.json new file mode 100644 index 0000000..1d8faa7 --- /dev/null +++ b/results/daily/2025-11-21.json @@ -0,0 +1 @@ +{"date": "2025-11-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [13.84, 11.41, 8.76, 8.02, 5.38, 3.69, -0.63, -3.57, -0.54, 6.41, 10.74, 2.7, -3.56, -8.26, -33.7, -41.96, -110.97, -75.69, -49.61, -34.62, -45.44, -48.17, -59.09, -49.12, -57.38, -58.24, -56.15, -85.98, -57.46, -53.79, -61.63, -23.8, -11.58, -5.1, -2.59, 41.75, 80.2, 79.1, 67.86, 55.02, 50.04, 54.09, 45.45, 17.7, 2.97, -4.48, -8.88, -8.72], "forecast_price": {"naive": [86.24, 79.19, 100.07, 87.28, 79.76, 79.34, 88.22, 80.8, 83.59, 80.46, 84.32, 81.64, 40.26, 35.52, -9.39, -17.45, -61.3, -10.2, -7.82, -12.1, -11.86, -10.67, -11.66, -13.75, -12.91, -11.75, -14.77, -15.65, -17.77, -38.11, -45.74, -45.84, -170.25, -126.13, -25.26, -4.9, -1.35, 50.06, 45.62, 54.01, 53.85, 49.14, 34.13, 42.45, 18.54, 28.05, 31.96, 36.64], "lightgbm": [57.62, 58.99, 58.77, 56.34, 52.23, 50.8, 54.7, 52.17, 56.18, 55.63, 58.76, 58.31, 40.82, 37.8, 16.68, -0.92, -21.31, -5.13, -6.41, -14.93, -14.14, -11.54, -15.22, -17.32, -9.41, -8.28, -17.32, -18.02, -18.02, -24.25, -22.73, -17.09, -15.17, -8.61, 19.12, 44.48, 51.24, 62.62, 58.77, 63.47, 65.05, 64.44, 57.96, 56.65, 56.22, 56.52, 56.14, 56.16], "lstm": [33.41, 29.83, 29.53, 22.85, 20.72, 18.31, 19.25, 22.45, 26.1, 29.59, 40.44, 38.3, 26.13, 6.9, -10.23, -15.28, -23.43, -26.36, -30.85, -31.08, -27.02, -24.62, -28.78, -30.16, -33.66, -38.18, -35.91, -32.2, -35.41, -30.17, -30.56, -27.61, -23.37, -13.3, -5.96, 12.01, 25.61, 44.58, 57.17, 58.34, 52.38, 50.47, 51.35, 47.99, 48.54, 48.08, 52.27, 57.79]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.75, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.12, 0.0, 1.12, 0.0, 0.75, 1.88, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.79, 5.25, 5.93, 13.94, 27.36, 29.72, 30.17, 31.2, 35.41, 40.66, 179.38, 273.99, 273.99, 230.71, 199.14, 199.14, 273.0, 218.48, 268.69, 341.48, 341.48, 448.95, 520.78, 520.78, 597.82, 600.79, 602.24, 602.88, 603.2, 603.2, 703.45, 802.33, 887.16, 955.93, 955.93, 955.93, 955.93, 955.93, 955.93, 961.53, 972.64, 983.53], "profit_aud": 983.53}, "naive": {"charge_mw": [0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.0, 0.12, 0.0, 1.12, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-1.94, -16.2, -5.24, -5.24, -5.24, -9.86, -10.56, -10.56, -10.56, -10.56, -10.56, -10.56, -10.56, -10.56, -6.35, 46.1, 184.82, 111.4, 49.39, 92.66, 92.66, 52.44, 52.44, 113.84, 113.84, 57.35, 64.37, 75.12, 82.3, 115.92, 192.95, 222.7, 237.18, 243.56, 243.88, 238.66, 228.64, 327.52, 327.52, 396.29, 458.84, 526.45, 469.64, 489.55, 485.84, 491.44, 482.56, 471.66], "profit_aud": 471.66}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.0, 1.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.5, 0.25, 1.38, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -1.51, -6.12, -6.12, -1.66, -1.66, -1.66, 11.76, 15.13, 15.13, 15.13, 15.13, 20.38, 159.09, 75.08, 81.28, 124.55, 147.27, 87.06, 160.93, 222.33, 150.6, 77.81, 112.9, 220.37, 292.2, 359.44, 436.47, 439.44, 440.89, 441.53, 441.53, 441.53, 441.53, 540.41, 540.41, 609.18, 671.73, 739.34, 739.34, 739.34, 739.34, 739.34, 739.34, 739.34], "profit_aud": 739.34}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -4.45, -11.18, -15.79, -15.01, -10.54, -10.54, -2.53, 10.89, 14.26, 9.81, 9.81, 14.03, 19.27, 33.14, 42.6, 104.62, 147.89, 109.95, 49.75, 49.75, 55.89, 127.62, 200.41, 270.6, 324.33, 396.17, 396.17, 411.57, 414.55, 416.0, 416.63, 416.96, 416.96, 416.96, 416.96, 501.78, 570.55, 633.1, 633.1, 633.1, 633.1, 633.1, 633.1, 633.1, 622.21], "profit_aud": 622.21}}} \ No newline at end of file diff --git a/results/daily/2025-11-22.json b/results/daily/2025-11-22.json new file mode 100644 index 0000000..4e182a8 --- /dev/null +++ b/results/daily/2025-11-22.json @@ -0,0 +1 @@ +{"date": "2025-11-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-8.23, -7.2, -4.97, -4.04, -8.16, -8.06, -8.37, -7.87, -3.12, -2.36, -1.67, 1.55, -12.63, -5.55, 21.0, 35.41, 28.76, 16.01, 7.35, -3.74, -2.14, 5.9, -1.38, 2.73, -0.67, 5.86, 13.44, 6.48, 50.85, 49.74, 107.15, 140.06, 162.5, 175.92, 139.19, 154.3, 143.11, 144.71, 159.76, 161.72, 171.05, 180.53, 219.25, 143.63, 93.1, 71.46, 37.83, 67.68], "forecast_price": {"naive": [13.84, 11.41, 8.76, 8.02, 5.38, 3.69, -0.63, -3.57, -0.54, 6.41, 10.74, 2.7, -3.56, -8.26, -33.7, -41.96, -110.97, -75.69, -49.61, -34.62, -45.44, -48.17, -59.09, -49.12, -57.38, -58.24, -56.15, -85.98, -57.46, -53.79, -61.63, -23.8, -11.58, -5.1, -2.59, 41.75, 80.2, 79.1, 67.86, 55.02, 50.04, 54.09, 45.45, 17.7, 2.97, -4.48, -8.88, -8.72], "lightgbm": [30.71, 28.98, 26.12, 25.47, 24.15, 24.84, 24.84, 25.9, 26.13, 25.75, 26.3, 24.46, 21.6, 20.17, 6.99, -13.38, -29.52, -34.81, -38.13, -32.96, -37.34, -43.1, -43.9, -44.0, -43.53, -43.9, -43.63, -43.53, -43.53, -43.35, -38.06, -21.17, -12.09, 11.21, 25.29, 46.58, 69.65, 70.54, 63.86, 59.21, 56.51, 57.75, 51.14, 51.82, 52.1, 51.74, 49.15, 49.15], "lstm": [-6.99, -13.07, -16.37, -21.99, -22.87, -26.61, -25.62, -21.36, -20.24, -11.9, -4.56, -1.07, -9.38, -18.51, -39.68, -43.87, -50.93, -55.32, -67.88, -55.3, -57.49, -55.44, -59.08, -55.13, -56.06, -56.2, -51.0, -37.88, -38.19, -30.74, -27.97, -22.2, -14.97, -5.5, 3.72, 21.42, 37.32, 48.7, 54.52, 49.9, 46.24, 39.46, 38.33, 30.54, 27.86, 30.98, 34.84, 39.53]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.67, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.62, 4.75, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [10.29, 19.29, 17.23, 12.18, 22.38, 32.45, 42.92, 52.76, 53.15, 53.45, 51.82, 53.76, 69.55, 76.48, 102.73, 146.99, 182.94, 202.95, 202.95, 207.62, 210.3, 213.99, 215.72, 212.3, 213.14, 213.14, 228.27, 220.17, 220.17, 220.17, 220.17, 220.17, 423.3, 643.2, 469.21, 469.21, 290.33, 249.81, 249.81, 451.96, 665.78, 891.44, 1165.5, 1165.5, 1165.5, 1165.5, 1118.21, 1194.35], "profit_aud": 1194.35}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.75, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.12, 0.0, 1.12, 0.0, 0.75, 1.88, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.47, 20.31, 24.2, 21.26, 19.17, 20.52, 22.1, 22.8, 20.17, 15.74, -20.21, -40.21, -40.21, -44.89, -46.38, -46.38, -44.65, -41.62, -41.03, -48.36, -48.36, -56.45, -120.01, -120.01, -253.95, -271.46, -291.77, -313.76, -331.16, -331.16, -152.28, 28.61, 228.3, 430.45, 430.45, 430.45, 430.45, 430.45, 430.45, 341.12, 293.83, 209.24], "profit_aud": 209.24}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.43, -8.02, -10.02, -19.21, -23.37, -23.1, -23.84, -22.11, -25.52, -25.1, -32.43, -49.23, -50.04, -56.4, -62.62, -76.01, -93.52, -113.83, -113.83, -113.83, -113.83, 65.05, 245.93, 445.63, 647.78, 647.78, 647.78, 647.78, 647.78, 647.78, 647.78, 647.78, 647.78], "profit_aud": 647.78}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.5, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 2.0, 3.12, 3.0, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [1.03, 1.93, 2.55, 7.6, 17.81, 27.88, 38.35, 43.27, 43.66, 40.71, 38.62, 40.56, 24.77, 25.46, 22.83, 18.41, 14.81, 12.81, 3.62, 3.62, 6.3, 6.3, 8.03, 8.03, 8.7, 1.37, -0.31, -0.31, -13.02, -19.24, -32.63, -50.14, -70.45, -92.44, -92.44, -92.44, -92.44, 88.44, 288.14, 490.28, 704.1, 704.1, 704.1, 524.56, 408.19, 388.18, 435.47, 520.07], "profit_aud": 520.07}}} \ No newline at end of file diff --git a/results/daily/2025-11-23.json b/results/daily/2025-11-23.json new file mode 100644 index 0000000..b2dcd4e --- /dev/null +++ b/results/daily/2025-11-23.json @@ -0,0 +1 @@ +{"date": "2025-11-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [116.64, 160.92, 150.93, 178.64, 178.11, 158.44, 135.26, 155.57, 207.48, 232.38, 176.56, 148.92, 87.75, 31.47, -12.04, -19.94, -22.38, -13.62, -10.83, -24.64, -24.86, -9.1, -7.32, -8.58, -5.19, -11.63, -10.04, -10.56, -10.18, -16.36, -38.92, -14.07, -19.0, -9.68, -3.1, 60.18, 96.23, 101.71, 130.48, 132.19, 126.9, 120.34, 120.83, 113.1, 113.3, 108.26, 130.41, 131.24], "forecast_price": {"naive": [-8.23, -7.2, -4.97, -4.04, -8.16, -8.06, -8.37, -7.87, -3.12, -2.36, -1.67, 1.55, -12.63, -5.55, 21.0, 35.41, 28.76, 16.01, 7.35, -3.74, -2.14, 5.9, -1.38, 2.73, -0.67, 5.86, 13.44, 6.48, 50.85, 49.74, 107.15, 140.06, 162.5, 175.92, 139.19, 154.3, 143.11, 144.71, 159.76, 161.72, 171.05, 180.53, 219.25, 143.63, 93.1, 71.46, 37.83, 67.68], "lightgbm": [59.44, 57.35, 55.83, 50.09, 48.34, 48.02, 46.15, 46.07, 42.47, 39.91, 37.07, 38.18, 35.52, 25.29, 1.0, 3.45, -5.09, -15.5, -19.08, -24.72, -25.95, -25.5, -27.93, -27.29, -25.42, -22.46, -20.07, -22.46, -3.14, -1.84, -0.16, 8.67, 22.42, 52.45, 54.12, 69.95, 83.23, 83.41, 83.63, 78.02, 74.7, 73.66, 73.14, 72.23, 60.23, 49.92, 34.15, 48.39], "lstm": [82.93, 76.39, 65.99, 60.45, 57.48, 53.79, 50.88, 54.8, 48.69, 46.48, 49.6, 44.59, 34.87, 20.19, 9.13, 2.5, 1.62, -0.78, -4.67, -7.87, -5.88, -8.54, -8.79, -9.87, -7.14, -8.36, -6.76, -2.25, 0.57, 3.22, 8.57, 11.58, 14.61, 38.23, 47.68, 59.12, 89.2, 104.05, 100.6, 90.02, 88.46, 70.51, 60.12, 57.97, 55.2, 57.39, 61.75, 70.55]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-145.8, -145.8, -334.46, -111.16, 66.95, -131.11, -300.19, -494.65, -235.3, 55.18, 209.67, 209.67, 209.67, 209.67, 218.69, 243.62, 271.59, 288.62, 275.08, 305.88, 336.96, 325.58, 316.43, 305.71, 299.22, 313.76, 310.95, 310.95, 310.95, 331.4, 380.04, 397.62, 421.37, 422.58, 422.97, 422.97, 422.97, 422.97, 586.07, 751.3, 909.93, 909.93, 909.93, 894.09, 894.09, 758.77, 921.78, 1085.83], "profit_aud": 1085.83}, "naive": {"charge_mw": [2.5, 2.5, 1.67, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.62, 4.75, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-145.8, -346.95, -284.31, -61.01, -283.65, -481.7, -650.78, -845.25, -871.18, -900.23, -728.97, -542.82, -652.5, -691.84, -706.89, -731.82, -759.79, -776.81, -776.81, -746.02, -714.94, -720.63, -711.48, -700.76, -694.27, -694.27, -705.57, -692.38, -692.38, -692.38, -692.38, -692.38, -716.13, -728.23, -724.36, -724.36, -844.64, -873.12, -873.12, -707.88, -549.26, -398.83, -247.79, -247.79, -247.79, -247.79, -410.8, -263.15], "profit_aud": -263.15}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.05, -7.39, -4.59, -2.89, -1.53, 1.54, 32.62, 44.0, 53.15, 63.87, 67.11, 68.57, 57.42, 70.61, 71.88, 73.93, 78.79, 78.79, 78.79, 78.79, 78.79, 78.79, 199.08, 326.22, 489.31, 654.55, 654.55, 654.55, 654.55, 654.55, 654.55, 654.55, 491.54, 639.19], "profit_aud": 639.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7, 3.06, 33.85, 6.25, 17.63, 26.78, 37.5, 40.74, 55.28, 56.53, 57.85, 57.85, 57.85, 57.85, 57.85, 57.85, 57.85, 57.85, 57.85, 178.13, 305.28, 468.37, 633.61, 633.61, 633.61, 633.61, 633.61, 491.99, 476.84, 476.84, 640.89], "profit_aud": 640.89}}} \ No newline at end of file diff --git a/results/daily/2025-11-24.json b/results/daily/2025-11-24.json new file mode 100644 index 0000000..7feee88 --- /dev/null +++ b/results/daily/2025-11-24.json @@ -0,0 +1 @@ +{"date": "2025-11-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [131.67, 111.15, 115.82, 107.94, 95.92, 96.7, 90.88, 90.95, 102.62, 119.72, 138.42, 120.69, 95.65, 16.25, 1.96, -17.04, -7.78, -6.86, -7.6, -10.13, -6.43, -10.2, -9.6, -10.46, -10.11, -14.62, -10.45, -10.54, -10.45, -10.62, -8.81, -7.18, -1.6, 12.97, 27.07, 129.02, 48.23, 31.7, 23.28, 13.22, 4.24, 10.1, 15.55, 6.94, 10.75, 11.26, 7.74, 1.33], "forecast_price": {"naive": [116.64, 160.92, 150.93, 178.64, 178.11, 158.44, 135.26, 155.57, 207.48, 232.38, 176.56, 148.92, 87.75, 31.47, -12.04, -19.94, -22.38, -13.62, -10.83, -24.64, -24.86, -9.1, -7.32, -8.58, -5.19, -11.63, -10.04, -10.56, -10.18, -16.36, -38.92, -14.07, -19.0, -9.68, -3.1, 60.18, 96.23, 101.71, 130.48, 132.19, 126.9, 120.34, 120.83, 113.1, 113.3, 108.26, 130.41, 131.24], "lightgbm": [60.65, 60.6, 58.95, 52.61, 51.01, 51.78, 51.58, 52.05, 53.2, 52.3, 52.9, 59.28, 67.37, 57.6, 39.71, 27.73, 17.78, 16.96, 17.46, 6.34, 6.46, 14.26, 12.27, 9.02, 12.27, 6.37, 11.73, 11.17, 17.23, 14.68, 7.48, 27.66, 29.09, 39.38, 47.12, 67.94, 90.84, 93.19, 105.24, 105.24, 100.93, 98.22, 95.29, 87.59, 87.59, 86.22, 85.15, 89.18], "lstm": [136.4, 135.63, 126.92, 120.79, 109.93, 112.49, 117.86, 121.93, 123.48, 134.58, 143.53, 126.4, 105.05, 83.93, 60.4, 53.07, 41.12, 31.76, 28.57, 25.42, 14.97, 11.38, 16.98, 10.72, 10.74, 10.59, 5.39, 3.24, 1.78, 0.49, 3.27, 9.2, 13.91, 32.25, 41.86, 68.57, 95.05, 122.52, 112.28, 112.76, 100.81, 95.01, 90.57, 88.65, 90.6, 86.62, 91.11, 96.27]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 2.5, 2.0, 2.5, 0.0, 2.5, 0.0, 0.75, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 0.25, 0.12, 1.25, 0.0, 0.12, 0.0, 1.12, 1.0, 2.12, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -119.91, -160.04, -273.64, -387.33, -387.33, -237.68, -64.66, 86.21, 86.21, 86.21, 86.21, 107.5, 111.39, 102.82, 102.82, 115.49, 107.45, 110.0, 110.0, 123.08, 123.08, 141.36, 150.5, 163.68, 163.68, 176.96, 178.06, 178.95, 179.15, 179.15, 212.99, 374.26, 434.55, 474.18, 474.18, 474.18, 468.87, 466.05, 485.48, 476.81, 476.81, 490.89, 490.89, 490.89], "profit_aud": 490.89}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-164.59, -164.59, -309.37, -174.44, -78.51, -199.4, -313.0, -426.69, -298.41, -148.76, -27.65, -27.65, -27.65, -27.65, -29.12, -7.83, 1.9, 10.46, 0.96, 13.62, 21.66, 8.9, -3.1, -16.17, -28.81, -10.53, -13.46, -13.46, -13.46, -0.19, 10.82, 19.79, 21.79, 20.16, 16.78, 16.78, 16.78, 16.78, 45.88, 62.41, 67.71, 67.71, 67.71, 66.74, 66.74, 52.67, 62.34, 64.0], "profit_aud": 64.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.39, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.0, 2.12, 2.12, 3.25, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -119.91, -240.79, -354.39, -354.39, -354.39, -354.39, -354.39, -203.53, -83.97, -69.75, -69.75, -69.75, -69.75, -69.75, -69.75, -57.09, -49.05, -61.81, -61.81, -48.73, -48.73, -30.45, -23.19, -10.01, -23.07, -21.58, -10.57, -10.57, -10.57, -10.57, -10.57, -10.57, -10.57, -10.57, 18.52, 35.05, 40.36, 52.99, 52.99, 52.99, 52.99, 52.99, 52.99, 52.99], "profit_aud": 52.99}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -119.91, -240.79, -266.23, -266.23, -266.23, -116.58, 56.44, 56.44, 56.44, 56.44, 56.44, 56.44, 56.44, 56.44, 56.44, 56.44, 57.34, 70.09, 58.09, 58.09, 58.09, 58.09, 63.89, 77.07, 90.13, 103.41, 114.42, 114.42, 114.42, 114.42, 114.42, 114.42, 114.42, 154.04, 183.14, 199.67, 204.98, 204.98, 204.98, 204.98, 204.98, 190.9, 190.9, 192.4], "profit_aud": 192.4}}} \ No newline at end of file diff --git a/results/daily/2025-11-25.json b/results/daily/2025-11-25.json new file mode 100644 index 0000000..c7f9f49 --- /dev/null +++ b/results/daily/2025-11-25.json @@ -0,0 +1 @@ +{"date": "2025-11-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.76, 6.93, 5.96, 18.16, 17.0, 24.62, 32.47, 34.04, 31.46, 22.52, 22.84, 11.45, -2.92, -6.89, -12.46, -10.97, -18.11, -20.33, -13.62, -20.61, -32.27, -40.62, -46.13, -52.52, -43.25, -38.76, -47.26, -48.84, -47.92, -94.14, -44.08, -16.55, -7.06, -15.76, -11.48, 7.75, 60.44, 98.64, 97.51, 102.78, 108.67, 124.22, 124.53, 128.78, 115.02, 155.92, 146.9, 135.64], "forecast_price": {"naive": [131.67, 111.15, 115.82, 107.94, 95.92, 96.7, 90.88, 90.95, 102.62, 119.72, 138.42, 120.69, 95.65, 16.25, 1.96, -17.04, -7.78, -6.86, -7.6, -10.13, -6.43, -10.2, -9.6, -10.46, -10.11, -14.62, -10.45, -10.54, -10.45, -10.62, -8.81, -7.18, -1.6, 12.97, 27.07, 129.02, 48.23, 31.7, 23.28, 13.22, 4.24, 10.1, 15.55, 6.94, 10.75, 11.26, 7.74, 1.33], "lightgbm": [68.03, 64.89, 64.24, 62.97, 59.78, 57.89, 65.81, 62.32, 63.55, 62.59, 84.08, 71.63, 68.58, 42.66, 32.6, 22.31, 10.93, 6.27, 3.91, -5.08, -3.18, -6.21, -6.56, -6.56, -6.56, -11.26, -6.96, -6.98, -6.67, -6.25, -5.88, -0.66, 5.62, 17.84, 34.04, 87.86, 52.25, 48.1, 47.59, 57.83, 54.56, 57.72, 57.01, 54.45, 54.88, 56.59, 57.13, 56.7], "lstm": [-1.51, -5.6, -7.59, -12.38, -12.32, -14.09, -14.03, -11.71, -7.3, -0.44, 9.97, 14.08, 6.72, 3.47, -12.29, -10.17, -16.77, -27.2, -38.01, -35.46, -29.47, -28.75, -35.93, -29.45, -30.41, -31.92, -29.12, -22.69, -23.5, -18.3, -17.38, -13.98, -9.84, -5.47, -0.52, 14.07, 34.32, 49.1, 52.49, 47.97, 44.35, 45.6, 43.64, 33.25, 30.46, 35.27, 38.87, 46.96]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.0, 0.0, 2.5, 2.25, 2.25, 2.25, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [3.46, -5.2, -12.65, -22.73, -43.97, -13.2, 27.38, 69.93, 109.25, 109.25, 109.25, 109.25, 109.61, 110.48, 126.05, 113.87, 118.4, 143.81, 126.79, 129.36, 133.4, 138.48, 178.84, 244.48, 244.48, 196.03, 255.1, 316.15, 376.04, 493.72, 499.23, 501.3, 492.47, 512.17, 515.04, 515.04, 515.04, 515.04, 515.04, 515.04, 515.04, 515.04, 515.04, 676.02, 676.02, 870.92, 1054.55, 1224.1], "profit_aud": 1224.1}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 2.5, 2.0, 2.5, 0.0, 2.5, 0.0, 0.75, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 0.25, 0.12, 1.25, 0.0, 0.12, 0.0, 1.12, 1.0, 2.12, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, -21.25, -31.46, -72.05, -114.59, -114.59, -86.45, -57.9, -43.58, -43.58, -43.58, -43.58, -29.87, -20.81, -46.23, -46.23, -20.46, -60.8, -50.64, -50.64, 15.0, 15.0, 63.45, 104.8, 165.85, 165.85, 283.53, 289.04, 291.1, 291.99, 291.99, 277.63, 287.31, 362.86, 486.16, 486.16, 486.16, 350.32, 315.54, 471.2, 310.23, 310.23, 505.13, 505.13, 505.13], "profit_aud": 505.13}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.88, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, -21.25, -52.02, -52.02, -61.55, -61.55, -61.55, -33.0, -18.68, -18.68, -18.68, -18.68, -18.68, -18.68, -18.68, -18.68, 7.08, -28.74, -23.66, 16.7, 16.7, 16.7, 65.15, 124.22, 185.27, 245.17, 256.93, 262.44, 264.51, 264.51, 264.51, 264.51, 274.19, 274.19, 260.38, 138.5, 266.97, 266.97, 422.24, 577.9, 577.9, 577.9, 577.9, 761.53, 761.53], "profit_aud": 761.53}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.5, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 3.0, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.35, -0.52, -1.27, -23.96, -45.21, -75.98, -116.56, -137.84, -141.77, -144.58, -116.03, -101.71, -105.36, -113.98, -98.41, -110.59, -108.32, -105.78, -88.76, -63.0, -63.0, -63.0, -5.34, -5.34, 37.91, 86.36, 92.27, 92.27, 104.25, 116.02, 121.53, 123.59, 124.48, 126.45, 127.88, 127.88, 127.88, 251.19, 373.07, 501.54, 501.54, 656.81, 656.81, 495.83, 352.06, 352.06, 498.96, 668.52], "profit_aud": 668.52}}} \ No newline at end of file diff --git a/results/daily/2025-11-26.json b/results/daily/2025-11-26.json new file mode 100644 index 0000000..ef1f3e4 --- /dev/null +++ b/results/daily/2025-11-26.json @@ -0,0 +1 @@ +{"date": "2025-11-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [92.28, 82.68, 75.55, 51.7, 27.13, 17.34, 22.73, 23.95, 4.56, 0.19, -3.24, -4.58, -6.42, -5.93, -10.14, -12.79, -9.3, -9.08, -11.53, -22.3, -21.36, -35.68, -30.0, -46.54, -45.41, -32.32, -44.64, -41.88, -52.19, -39.16, -38.06, -32.71, -54.83, -70.96, -17.07, -20.38, -20.98, -7.36, -3.55, -3.67, -5.19, -4.29, -3.75, -3.46, 7.26, -0.31, 19.53, 7.56], "forecast_price": {"naive": [-2.76, 6.93, 5.96, 18.16, 17.0, 24.62, 32.47, 34.04, 31.46, 22.52, 22.84, 11.45, -2.92, -6.89, -12.46, -10.97, -18.11, -20.33, -13.62, -20.61, -32.27, -40.62, -46.13, -52.52, -43.25, -38.76, -47.26, -48.84, -47.92, -94.14, -44.08, -16.55, -7.06, -15.76, -11.48, 7.75, 60.44, 98.64, 97.51, 102.78, 108.67, 124.22, 124.53, 128.78, 115.02, 155.92, 146.9, 135.64], "lightgbm": [53.52, 52.8, 50.51, 52.36, 47.45, 48.3, 44.33, 44.1, 47.51, 51.1, 55.93, 51.79, 44.01, 37.01, 28.51, 9.57, 0.8, -3.06, -5.01, -8.12, -11.91, -17.38, -19.28, -22.75, -17.83, -18.01, -19.28, -26.82, -26.06, -27.56, -18.15, -4.23, 8.88, 13.56, 27.3, 48.43, 59.6, 81.65, 82.31, 81.96, 84.26, 87.24, 92.26, 90.08, 83.93, 86.33, 89.14, 89.14], "lstm": [121.94, 125.73, 109.76, 103.22, 96.03, 93.34, 93.0, 95.01, 102.25, 107.94, 112.85, 105.28, 81.09, 50.84, 30.49, 15.45, 1.52, -2.87, -7.62, -12.45, -16.44, -19.92, -17.06, -28.4, -25.93, -33.23, -40.31, -39.06, -41.0, -34.26, -34.2, -31.78, -18.58, -7.69, 6.58, 32.01, 55.7, 86.2, 82.75, 86.7, 86.13, 76.25, 74.62, 68.18, 71.58, 64.02, 72.42, 73.8]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 1.75, 0.0, 2.5, 2.5, 2.25, 2.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.25, 1.38, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.12, 4.25, 4.12, 4.0, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -21.67, -21.67, 5.28, 5.28, 5.28, 5.68, 6.25, 7.86, 7.86, 11.66, 27.65, 27.65, 16.3, 17.74, 23.32, 23.32, 67.92, 34.62, 92.8, 149.57, 109.17, 164.97, 212.08, 277.32, 277.32, 277.32, 236.43, 304.97, 393.67, 372.33, 377.42, 403.66, 404.57, 400.13, 396.58, 403.07, 408.44, 408.91, 409.34, 418.41, 418.79, 443.2, 452.65], "profit_aud": 452.65}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.0, 0.0, 2.5, 2.25, 2.25, 2.25, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-115.34, -218.7, -313.13, -341.82, -375.73, -354.06, -325.65, -295.71, -290.02, -290.02, -290.02, -290.02, -289.22, -288.47, -275.8, -290.0, -287.67, -276.33, -290.74, -287.96, -285.29, -280.83, -254.58, -196.4, -196.4, -236.8, -181.0, -128.65, -63.41, -14.46, -9.7, -5.61, -74.15, 14.54, 18.81, 18.81, 18.81, 18.81, 18.81, 18.81, 18.81, 18.81, 18.81, 14.49, 14.49, 14.11, 38.52, 47.97], "profit_aud": 47.97}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -28.41, -58.35, -58.35, -58.35, -62.4, -66.98, -66.98, -66.98, -66.98, -66.98, -66.98, -65.85, -64.41, -61.62, -58.95, -54.49, -24.49, 33.69, 33.69, 33.69, 33.69, 86.04, 151.28, 200.23, 204.99, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 209.08, 204.39, 200.07, 200.07, 200.07, 224.48, 233.93], "profit_aud": 233.93}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -21.67, -50.08, -56.79, -56.79, -56.55, -60.6, -60.6, -60.6, -60.6, -60.6, -60.6, -60.6, -59.47, -58.03, -55.24, -52.57, -7.96, -41.26, -29.62, -29.62, -25.58, 30.22, 82.57, 147.81, 196.76, 220.55, 224.64, 231.49, 240.36, 240.36, 240.36, 240.36, 231.16, 226.72, 222.14, 215.64, 215.64, 215.64, 215.64, 215.64, 216.03, 216.03, 224.53], "profit_aud": 224.53}}} \ No newline at end of file diff --git a/results/daily/2025-11-27.json b/results/daily/2025-11-27.json new file mode 100644 index 0000000..d8bcbf6 --- /dev/null +++ b/results/daily/2025-11-27.json @@ -0,0 +1 @@ +{"date": "2025-11-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [4.93, 10.27, 31.38, 5.83, 7.64, 8.87, 43.41, 23.88, 28.3, 33.52, 48.7, 37.77, 21.16, 0.38, 2.21, -6.93, -8.88, -12.51, -13.13, -16.25, -18.94, -21.02, -19.93, -26.63, -25.94, -29.06, -25.24, -28.68, -41.65, -34.93, -16.1, -15.08, -8.85, -5.37, -4.85, -6.76, 100.96, 149.34, 155.0, 151.71, 145.95, 147.66, 140.88, 138.91, 148.51, 162.79, 182.88, 183.36], "forecast_price": {"naive": [92.28, 82.68, 75.55, 51.7, 27.13, 17.34, 22.73, 23.95, 4.56, 0.19, -3.24, -4.58, -6.42, -5.93, -10.14, -12.79, -9.3, -9.08, -11.53, -22.3, -21.36, -35.68, -30.0, -46.54, -45.41, -32.32, -44.64, -41.88, -52.19, -39.16, -38.06, -32.71, -54.83, -70.96, -17.07, -20.38, -20.98, -7.36, -3.55, -3.67, -5.19, -4.29, -3.75, -3.46, 7.26, -0.31, 19.53, 7.56], "lightgbm": [47.9, 43.47, 48.38, 44.46, 32.6, 30.74, 30.74, 30.98, 25.75, 25.59, 27.08, 27.24, 25.71, 25.46, 8.8, 0.65, -0.96, -1.31, -5.04, -12.71, -12.34, -18.99, -19.57, -25.3, -23.79, -19.57, -24.09, -24.09, -29.52, -24.83, -20.33, -12.06, -17.92, -12.0, 21.68, 26.73, 36.46, 51.17, 50.32, 51.55, 52.27, 50.88, 46.61, 44.89, 44.21, 46.89, 47.46, 47.09], "lstm": [12.31, 11.35, 7.03, 3.81, 1.3, 1.06, -2.46, 4.03, 10.36, 13.11, 26.27, 27.31, 18.86, 9.79, -3.78, -12.89, -21.47, -33.15, -43.22, -39.32, -39.05, -36.41, -46.72, -46.0, -49.66, -52.82, -60.18, -56.36, -62.61, -58.38, -60.27, -52.97, -46.81, -36.57, -27.58, -8.53, 8.8, 29.05, 40.06, 45.72, 42.27, 44.61, 39.62, 37.21, 32.53, 31.88, 38.06, 46.95]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 3.12, 4.25, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.75, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-6.16, -18.99, 20.23, 12.95, 3.4, -7.69, 46.57, 16.73, 30.88, 72.78, 133.65, 180.86, 180.86, 180.38, 182.86, 183.73, 184.84, 186.41, 188.05, 190.08, 192.45, 197.7, 197.7, 221.01, 221.01, 257.34, 257.34, 293.18, 345.25, 388.91, 390.92, 392.81, 393.91, 393.91, 389.2, 397.65, 397.65, 397.65, 591.4, 591.4, 591.4, 591.4, 591.4, 591.4, 591.4, 794.88, 1023.49, 1252.68], "profit_aud": 1252.68}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 1.75, 0.0, 2.5, 2.5, 2.25, 2.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.25, 1.38, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.12, 4.25, 4.12, 4.0, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -11.09, -11.09, 15.77, 15.77, 15.77, 9.68, 4.96, -0.33, -0.33, -1.16, 7.51, 7.51, -8.12, -6.48, -2.42, -2.42, 23.86, 1.74, 35.03, 67.46, 31.13, 62.68, 94.94, 147.0, 147.0, 147.0, 128.15, 139.21, 145.92, 139.86, 141.55, 15.35, -3.32, 190.43, 337.59, 155.15, -29.41, -47.02, -64.39, 121.25, -82.24, 146.37, 375.56], "profit_aud": 375.56}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -12.84, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 22.47, 23.58, 25.14, 26.78, 30.85, 30.85, 33.47, 35.97, 69.26, 88.71, 52.38, 83.93, 119.78, 171.84, 215.5, 217.51, 200.77, 211.84, 212.51, 212.51, 212.51, 212.51, 399.18, 399.18, 588.82, 771.26, 955.83, 955.83, 955.83, 955.83, 955.83, 955.83, 955.83], "profit_aud": 955.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -7.29, -16.84, -27.93, -82.19, -95.44, -95.44, -53.54, 7.33, 54.54, 80.99, 80.99, 80.72, 81.58, 82.69, 84.26, 100.66, 100.66, 100.66, 83.11, 88.09, 88.09, 91.33, 94.97, 126.51, 144.44, 196.5, 240.16, 260.29, 262.17, 263.28, 263.95, 264.56, 265.4, 265.4, 265.4, 459.16, 648.8, 831.23, 1015.8, 1015.8, 1015.8, 830.17, 626.68, 809.57, 1038.76], "profit_aud": 1038.76}}} \ No newline at end of file diff --git a/results/daily/2025-11-28.json b/results/daily/2025-11-28.json new file mode 100644 index 0000000..ad881b2 --- /dev/null +++ b/results/daily/2025-11-28.json @@ -0,0 +1 @@ +{"date": "2025-11-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [225.49, 238.4, 257.22, 293.06, 298.18, 177.77, 180.25, 150.8, 204.26, 204.54, 168.38, 68.54, 21.68, 42.32, 50.46, -6.47, -10.93, -13.93, -11.94, -8.88, -8.33, -9.87, -12.53, -12.65, -12.14, -11.04, -11.56, -7.69, -5.6, -6.19, -3.41, 41.21, 78.84, 111.01, 114.92, 103.64, 73.11, 80.22, 99.12, 92.83, 103.82, 100.08, 92.43, 77.21, 83.5, 86.79, 90.88, 90.72], "forecast_price": {"naive": [4.93, 10.27, 31.38, 5.83, 7.64, 8.87, 43.41, 23.88, 28.3, 33.52, 48.7, 37.77, 21.16, 0.38, 2.21, -6.93, -8.88, -12.51, -13.13, -16.25, -18.94, -21.02, -19.93, -26.63, -25.94, -29.06, -25.24, -28.68, -41.65, -34.93, -16.1, -15.08, -8.85, -5.37, -4.85, -6.76, 100.96, 149.34, 155.0, 151.71, 145.95, 147.66, 140.88, 138.91, 148.51, 162.79, 182.88, 183.36], "lightgbm": [52.38, 52.85, 53.21, 45.27, 46.88, 46.16, 45.68, 46.52, 46.19, 46.85, 45.81, 45.36, 44.09, 38.76, 10.23, 4.79, 3.52, -3.75, -9.05, -12.68, -14.47, -18.97, -18.26, -22.96, -22.96, -23.78, -21.38, -22.63, -31.57, -24.86, -14.53, -10.49, 0.12, 14.13, 25.29, 35.91, 75.39, 95.02, 92.07, 93.81, 92.93, 90.34, 88.98, 85.01, 85.27, 85.41, 83.36, 83.36], "lstm": [149.72, 144.91, 135.43, 125.25, 111.78, 108.7, 109.24, 118.87, 115.02, 112.46, 124.28, 105.51, 83.15, 50.49, 36.6, 19.95, 11.98, 4.0, 1.71, -4.76, -9.27, -9.55, -9.03, -18.96, -21.85, -26.46, -30.25, -30.6, -30.0, -31.34, -26.34, -20.17, -14.96, 2.81, 15.39, 45.64, 58.58, 90.71, 102.26, 106.95, 98.56, 91.36, 88.57, 82.59, 88.51, 83.52, 86.14, 92.22]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 1.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.38, 1.5, 2.62, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-281.87, -579.87, -651.89, -285.57, 87.16, -135.05, -185.52, -374.03, -118.71, 136.97, 136.97, 136.97, 109.86, 103.94, 167.02, 167.83, 173.29, 190.7, 205.63, 194.53, 184.11, 184.11, 199.77, 215.59, 230.76, 237.66, 252.11, 253.07, 253.07, 254.61, 255.04, 255.04, 255.04, 393.8, 537.45, 667.0, 575.61, 475.33, 574.45, 574.45, 704.23, 829.32, 829.32, 732.81, 732.81, 732.81, 835.04, 835.04], "profit_aud": 835.04}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 3.12, 4.25, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.75, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-281.87, -579.87, -258.35, -624.67, -997.4, -1219.61, -994.3, -1182.81, -1080.68, -825.0, -614.53, -528.86, -528.86, -581.76, -524.98, -524.18, -522.81, -521.07, -519.58, -518.47, -517.42, -514.96, -514.96, -503.89, -503.89, -490.09, -490.09, -480.47, -473.46, -465.73, -465.3, -470.45, -480.31, -480.31, -368.84, -498.39, -498.39, -498.39, -374.49, -374.49, -374.49, -374.49, -374.49, -374.49, -374.49, -266.01, -152.42, -39.01], "profit_aud": -39.01}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.88, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.74, 3.23, 4.34, 5.39, 7.85, 7.85, 23.67, 34.29, 48.09, 48.09, 48.09, 55.09, 62.83, 63.26, 58.11, 58.11, 58.11, 58.11, 58.11, 58.11, 158.38, 282.28, 398.31, 528.08, 528.08, 528.08, 528.08, 528.08, 528.08, 528.08, 528.08], "profit_aud": 528.09}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -222.21, -247.45, -247.45, -247.45, -247.45, -36.97, -36.97, -36.97, -36.97, -36.97, -36.97, -36.97, -36.97, -36.97, -35.86, -34.82, -32.36, -32.36, -30.77, -29.26, -22.36, -7.91, 1.7, 8.71, 16.45, 16.87, 11.72, 1.87, 1.87, 1.87, 1.87, 1.87, 1.87, 125.77, 241.8, 371.57, 371.57, 371.57, 371.57, 371.57, 371.57, 371.57, 484.98], "profit_aud": 484.98}}} \ No newline at end of file diff --git a/results/daily/2025-11-29.json b/results/daily/2025-11-29.json new file mode 100644 index 0000000..6254937 --- /dev/null +++ b/results/daily/2025-11-29.json @@ -0,0 +1 @@ +{"date": "2025-11-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [93.95, 86.66, 87.47, 76.3, 55.55, 49.59, 49.7, 48.68, 42.33, 39.03, 46.06, 31.07, 7.05, -9.32, -9.26, 8.9, 2.33, -6.41, -10.97, -17.43, -18.55, -13.23, -13.21, -13.58, -18.17, -16.18, -15.92, -19.39, -17.29, -19.12, -16.87, -12.35, -11.56, -10.97, -7.88, -1.34, 31.88, 68.36, 71.86, 79.37, 93.63, 88.7, 92.06, 98.52, 103.24, 104.81, 105.68, 105.3], "forecast_price": {"naive": [225.49, 238.4, 257.22, 293.06, 298.18, 177.77, 180.25, 150.8, 204.26, 204.54, 168.38, 68.54, 21.68, 42.32, 50.46, -6.47, -10.93, -13.93, -11.94, -8.88, -8.33, -9.87, -12.53, -12.65, -12.14, -11.04, -11.56, -7.69, -5.6, -6.19, -3.41, 41.21, 78.84, 111.01, 114.92, 103.64, 73.11, 80.22, 99.12, 92.83, 103.82, 100.08, 92.43, 77.21, 83.5, 86.79, 90.88, 90.72], "lightgbm": [59.23, 59.23, 55.61, 50.91, 48.38, 45.56, 47.2, 46.95, 44.16, 43.47, 46.25, 40.49, 38.79, 34.77, 25.3, 24.13, 11.97, -11.39, -13.61, -16.93, -17.77, -16.68, -23.24, -21.44, -23.24, -20.86, -20.86, -17.14, 0.97, -0.13, 4.51, 24.12, 41.63, 51.98, 64.62, 66.84, 63.01, 70.68, 78.38, 77.09, 79.09, 78.6, 75.52, 62.89, 62.18, 59.43, 61.76, 62.45], "lstm": [89.57, 83.9, 78.24, 69.19, 67.35, 59.96, 55.42, 63.94, 57.7, 56.02, 65.43, 51.8, 35.08, 19.69, 9.01, 10.6, 10.14, 7.21, 1.71, 1.77, 2.57, 0.51, 6.08, 5.8, 5.8, 4.83, 7.63, 14.6, 10.08, 13.33, 17.14, 24.88, 27.81, 36.64, 38.36, 55.72, 67.93, 92.12, 91.04, 90.67, 80.88, 76.25, 72.91, 79.29, 78.46, 71.53, 80.37, 87.73]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.75, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 1.12, 1.0, 0.88, 2.0, 3.12, 4.25, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -48.79, 3.02, 3.02, 3.02, 14.67, 26.24, 37.37, 39.71, 40.51, 41.88, 63.66, 86.85, 75.81, 59.29, 59.29, 82.0, 82.0, 82.0, 106.24, 127.85, 151.75, 166.51, 168.05, 169.5, 170.87, 171.86, 172.02, 172.02, 172.02, 172.02, 172.02, 172.02, 172.02, 172.02, 172.02, 301.07, 432.09, 564.18, 695.8], "profit_aud": 695.8}, "naive": {"charge_mw": [2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 1.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.38, 1.5, 2.62, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-117.44, -225.77, -250.26, -154.89, -85.45, -147.44, -161.35, -222.2, -169.29, -120.5, -120.5, -120.5, -129.32, -128.01, -139.59, -140.7, -141.86, -133.85, -120.14, -141.92, -165.11, -165.11, -148.59, -131.62, -108.91, -98.8, -78.9, -76.48, -76.48, -71.7, -69.59, -69.59, -69.59, -83.3, -93.15, -94.83, -134.69, -220.13, -148.27, -148.27, -31.23, 79.64, 79.64, -43.51, -43.51, -43.51, 75.38, 75.38], "profit_aud": 75.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 2.17, 4.35, 8.99, 8.99, 25.5, 42.47, 65.18, 85.4, 95.35, 97.78, 78.33, 102.23, 102.23, 102.23, 102.23, 102.23, 102.23, 102.23, 102.23, 102.23, 192.05, 291.26, 408.29, 519.17, 519.17, 519.17, 519.17, 519.17, 519.17, 519.17], "profit_aud": 519.17}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 3.88, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -62.12, -13.44, -13.44, -62.23, -4.66, -4.66, -4.66, -4.66, 6.91, 16.93, 16.93, 16.93, 30.64, 52.43, 75.61, 92.15, 83.89, 83.89, 83.89, 104.11, 104.11, 82.3, 103.91, 103.91, 103.91, 103.91, 103.91, 103.91, 103.91, 103.91, 103.91, 189.35, 279.18, 378.38, 483.72, 483.72, 483.72, 483.72, 483.72, 352.71, 352.71, 484.33], "profit_aud": 484.33}}} \ No newline at end of file diff --git a/results/daily/2025-11-30.json b/results/daily/2025-11-30.json new file mode 100644 index 0000000..79cab3a --- /dev/null +++ b/results/daily/2025-11-30.json @@ -0,0 +1 @@ +{"date": "2025-11-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [76.43, 78.26, 78.64, 78.48, 85.87, 74.76, 69.1, 48.31, 41.5, 40.29, 36.52, 17.15, 10.28, -4.6, -6.86, -11.05, -15.06, -17.66, -16.65, -18.53, -48.25, -29.85, -53.81, -77.27, -82.59, -79.23, -90.24, -86.46, -62.1, -94.02, -89.5, -17.94, -65.76, -14.33, -8.25, -14.22, -11.7, -4.01, -1.26, -5.99, -6.5, 3.12, -0.35, -0.42, -6.81, -1.92, -7.0, -6.71], "forecast_price": {"naive": [93.95, 86.66, 87.47, 76.3, 55.55, 49.59, 49.7, 48.68, 42.33, 39.03, 46.06, 31.07, 7.05, -9.32, -9.26, 8.9, 2.33, -6.41, -10.97, -17.43, -18.55, -13.23, -13.21, -13.58, -18.17, -16.18, -15.92, -19.39, -17.29, -19.12, -16.87, -12.35, -11.56, -10.97, -7.88, -1.34, 31.88, 68.36, 71.86, 79.37, 93.63, 88.7, 92.06, 98.52, 103.24, 104.81, 105.68, 105.3], "lightgbm": [59.04, 55.59, 53.84, 54.17, 48.59, 45.03, 47.89, 42.53, 37.38, 36.47, 39.66, 37.85, 28.74, 18.4, 1.87, 1.6, -2.3, -7.83, -16.29, -20.93, -22.66, -22.38, -22.0, -22.58, -21.1, -23.41, -23.41, -24.22, -23.41, -23.52, -20.82, -13.87, -7.69, 3.06, 22.58, 40.7, 55.68, 68.56, 66.72, 72.05, 78.36, 77.37, 76.09, 75.11, 75.97, 75.97, 77.2, 77.2], "lstm": [109.0, 104.33, 98.25, 90.49, 83.85, 81.4, 77.02, 81.21, 71.3, 73.9, 78.91, 58.36, 32.08, 6.17, -6.74, -12.76, -19.4, -24.07, -20.1, -23.99, -22.92, -25.55, -23.57, -29.58, -28.73, -33.82, -36.19, -33.91, -37.5, -35.33, -30.42, -24.78, -20.28, -9.98, -3.83, 18.04, 35.07, 57.09, 67.06, 71.92, 76.12, 64.29, 61.33, 59.49, 55.45, 58.35, 67.09, 76.84]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.5, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 2.38, 2.75, 3.88, 5.0], "cumulative_profit_aud": [-95.54, -95.54, -95.54, -95.54, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.64, 2.5, 3.88, 5.76, 10.18, 10.18, 12.49, 72.8, 39.67, 46.4, 56.06, 159.3, 218.72, 331.53, 439.6, 361.98, 479.5, 591.38, 571.46, 653.66, 655.45, 645.14, 662.91, 665.84, 661.95, 660.37, 667.85, 675.98, 679.88, 679.44, 678.92, 687.44, 688.4, 697.15, 705.54], "profit_aud": 705.54}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.75, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 1.12, 1.0, 0.88, 2.0, 3.12, 4.25, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -50.36, -9.28, -9.28, -9.28, -3.53, 5.04, -8.77, -23.83, -21.62, -19.54, 3.61, 63.92, 39.0, -28.26, -28.26, 74.98, 74.98, 74.98, 183.06, 260.69, 378.21, 456.52, 458.77, 466.99, 468.78, 469.81, 471.59, 471.59, 471.59, 471.59, 471.59, 471.59, 471.59, 471.59, 471.59, 463.07, 460.68, 451.93, 443.54], "profit_aud": 443.54}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.88, 4.09, 6.17, 8.49, 38.64, 38.64, 38.64, 38.64, 38.64, 137.68, 250.49, 358.56, 397.38, 514.9, 526.09, 528.33, 536.55, 536.55, 536.55, 536.55, 536.55, 536.55, 536.55, 536.55, 528.43, 532.33, 532.33, 532.33, 532.33, 532.33, 523.58, 515.19], "profit_aud": 515.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.0, 2.5, 2.0, 2.5, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.12, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 2.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.86, 2.24, 4.12, 26.2, 7.72, 12.35, 12.35, 19.82, 19.82, 39.13, 39.13, 88.65, 201.46, 309.54, 387.17, 504.69, 515.88, 518.12, 526.34, 528.13, 529.16, 529.16, 529.16, 529.16, 527.58, 520.1, 511.97, 511.97, 511.97, 511.97, 520.49, 520.76, 512.01, 503.62], "profit_aud": 503.62}}} \ No newline at end of file diff --git a/results/daily/2025-12-01.json b/results/daily/2025-12-01.json new file mode 100644 index 0000000..8cbe982 --- /dev/null +++ b/results/daily/2025-12-01.json @@ -0,0 +1 @@ +{"date": "2025-12-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-7.83, -4.02, -7.06, -7.04, -4.21, -6.52, -7.99, -4.59, -5.08, -5.08, 0.05, 4.3, -4.32, -7.06, -7.46, -5.17, -10.17, -14.41, -11.63, -17.7, -16.13, -16.62, -13.12, -17.58, -19.88, -17.6, -11.58, -16.4, -19.31, -64.11, -60.09, -51.61, -27.55, -48.82, -40.28, -13.83, -11.68, 22.68, 82.75, 92.64, 98.87, 100.04, 107.94, 104.81, 107.02, 94.47, 103.87, 118.26], "forecast_price": {"naive": [76.43, 78.26, 78.64, 78.48, 85.87, 74.76, 69.1, 48.31, 41.5, 40.29, 36.52, 17.15, 10.28, -4.6, -6.86, -11.05, -15.06, -17.66, -16.65, -18.53, -48.25, -29.85, -53.81, -77.27, -82.59, -79.23, -90.24, -86.46, -62.1, -94.02, -89.5, -17.94, -65.76, -14.33, -8.25, -14.22, -11.7, -4.01, -1.26, -5.99, -6.5, 3.12, -0.35, -0.42, -6.81, -1.92, -7.0, -6.71], "lightgbm": [51.97, 53.76, 55.29, 55.29, 56.66, 53.89, 53.74, 44.53, 39.57, 41.59, 44.32, 40.08, 36.65, 26.44, 20.18, 12.4, 9.93, 8.11, 5.44, 0.11, -11.93, -10.95, -17.3, -18.25, -18.25, -18.55, -18.25, -18.25, -18.25, -17.55, -15.9, 2.87, -6.52, 18.36, 29.69, 39.89, 40.59, 47.26, 45.35, 46.3, 46.17, 45.42, 44.59, 43.4, 43.99, 43.4, 43.99, 43.21], "lstm": [-1.67, -4.94, -7.87, -12.57, -12.18, -12.05, -14.89, -7.52, -1.59, 5.06, 18.83, 21.87, 13.26, 9.61, -8.37, -9.26, -13.94, -24.76, -33.01, -29.92, -27.23, -26.65, -30.67, -30.89, -31.9, -29.13, -39.19, -33.63, -36.17, -38.19, -31.6, -33.12, -27.02, -19.21, -23.16, -7.46, 16.53, 31.21, 45.68, 42.85, 40.83, 47.54, 43.95, 35.19, 30.15, 34.95, 41.74, 53.11]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.75, 2.5, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 1.75, 2.5, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 3.12, 3.88, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [9.79, 5.32, 14.15, 22.94, 17.68, 25.84, 35.82, 35.82, 40.27, 40.27, 40.34, 45.71, 40.32, 42.08, 51.42, 44.96, 46.23, 64.24, 51.33, 73.46, 73.46, 79.69, 63.29, 65.49, 90.34, 96.94, 82.47, 82.47, 84.88, 165.03, 240.14, 304.66, 289.37, 350.39, 400.75, 402.48, 403.94, 403.94, 403.94, 403.94, 403.94, 403.94, 538.86, 669.88, 803.66, 803.66, 803.66, 951.49], "profit_aud": 951.49}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.5, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 2.38, 2.75, 3.88, 5.0], "cumulative_profit_aud": [9.79, 9.79, 9.79, 9.79, 5.05, 5.05, 5.05, 5.05, 5.05, 5.05, 5.05, 5.05, 5.05, 5.93, 6.86, 7.51, 8.78, 12.38, 12.38, 14.6, 34.76, 16.3, 17.94, 20.14, 44.99, 58.19, 72.66, 93.16, 69.03, 149.17, 224.29, 167.0, 201.44, 207.54, 157.18, 174.47, 177.39, 199.39, 302.82, 187.03, 63.45, 188.49, 323.42, 454.43, 320.65, 273.42, 143.57, -4.25], "profit_aud": -4.25}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 6.36, 6.36, 6.41, 6.41, 6.41, 6.41, 6.41, 6.41, 6.41, 6.41, 6.41, 6.41, 10.45, 10.45, 12.09, 34.07, 58.92, 80.92, 95.39, 105.64, 108.05, 116.07, 123.58, 65.51, 99.95, 99.95, 99.95, 99.95, 99.95, 128.3, 128.3, 244.1, 367.68, 492.73, 492.73, 492.73, 492.73, 492.73, 492.73, 492.73], "profit_aud": 492.73}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.98, 1.48, 5.9, 14.69, 19.95, 28.11, 38.1, 38.67, 39.31, 39.31, 39.37, 44.75, 39.35, 30.52, 31.46, 32.1, 33.38, 35.18, 49.72, 56.35, 56.35, 35.57, 37.21, 39.41, 44.38, 44.38, 58.85, 79.35, 103.48, 183.63, 183.63, 222.34, 225.78, 171.59, 221.95, 223.68, 223.68, 223.68, 327.11, 442.91, 442.91, 567.95, 702.88, 673.53, 539.75, 421.66, 551.5, 699.33], "profit_aud": 699.33}}} \ No newline at end of file diff --git a/results/daily/2025-12-02.json b/results/daily/2025-12-02.json new file mode 100644 index 0000000..a35a639 --- /dev/null +++ b/results/daily/2025-12-02.json @@ -0,0 +1 @@ +{"date": "2025-12-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [111.25, 110.47, 132.33, 136.77, 132.9, 138.0, 141.36, 144.53, 165.84, 149.91, 145.68, 145.49, 147.15, 355.18, 75.55, 24.32, 1.2, 2.82, -1.53, -3.08, -6.31, -8.32, -7.99, -7.68, -8.17, -7.45, -7.56, -9.34, -9.46, -8.08, -14.84, -13.28, -8.61, -10.73, -4.59, 48.5, 113.36, 140.1, 169.82, 218.03, 224.74, 197.86, 168.39, 178.43, 137.95, 138.61, 136.66, 146.35], "forecast_price": {"naive": [-7.83, -4.02, -7.06, -7.04, -4.21, -6.52, -7.99, -4.59, -5.08, -5.08, 0.05, 4.3, -4.32, -7.06, -7.46, -5.17, -10.17, -14.41, -11.63, -17.7, -16.13, -16.62, -13.12, -17.58, -19.88, -17.6, -11.58, -16.4, -19.31, -64.11, -60.09, -51.61, -27.55, -48.82, -40.28, -13.83, -11.68, 22.68, 82.75, 92.64, 98.87, 100.04, 107.94, 104.81, 107.02, 94.47, 103.87, 118.26], "lightgbm": [26.81, 25.37, 24.21, 24.1, 24.26, 24.57, 26.39, 26.24, 26.09, 26.28, 24.08, 22.68, 22.96, 22.91, 8.83, 2.95, 0.96, -5.05, -7.09, -11.55, -13.37, -15.73, -16.87, -17.39, -17.64, -17.39, -16.73, -17.39, -17.64, -29.8, -28.7, -13.72, -7.37, -3.25, 2.89, 26.6, 36.21, 49.1, 78.9, 83.01, 84.18, 81.91, 83.04, 79.57, 80.43, 78.17, 79.57, 83.89], "lstm": [126.8, 117.7, 105.23, 97.65, 89.09, 89.72, 93.48, 98.81, 112.67, 118.12, 125.58, 113.66, 88.98, 61.58, 43.88, 28.87, 14.42, 17.05, 10.64, 6.18, 4.45, 1.89, 4.25, -0.15, 0.91, -5.91, -13.08, -10.38, -15.89, -16.88, -14.32, -15.66, -7.8, -1.78, 0.19, 21.82, 44.2, 78.23, 87.29, 90.59, 89.7, 92.54, 81.38, 76.1, 78.39, 72.62, 86.33, 91.2]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.75, 0.12, 0.0, 1.12, 2.25, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-139.06, -277.15, -442.56, -442.56, -497.72, -497.72, -497.72, -497.72, -290.41, -103.02, -103.02, -103.02, -103.02, 340.95, 340.95, 340.95, 339.46, 342.63, 342.82, 343.21, 344.0, 354.4, 354.4, 354.4, 354.4, 350.27, 350.27, 361.94, 373.76, 370.41, 388.95, 405.55, 405.55, 418.96, 419.54, 419.54, 419.54, 419.54, 419.54, 692.07, 972.99, 1220.32, 1220.32, 1443.36, 1443.36, 1443.36, 1443.36, 1443.36], "profit_aud": 1443.36}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.75, 2.5, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 1.75, 2.5, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 3.12, 3.88, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-139.06, -16.45, -181.86, -352.82, -186.69, -359.19, -535.88, -535.88, -681.0, -681.0, -498.89, -317.03, -133.09, -221.89, -316.32, -285.92, -286.07, -289.6, -291.29, -287.44, -287.44, -284.32, -294.31, -293.34, -283.13, -280.34, -289.79, -289.79, -288.61, -278.51, -259.97, -243.36, -248.14, -234.73, -228.99, -235.05, -249.22, -249.22, -249.22, -249.22, -249.22, -249.22, -38.73, 184.31, 356.75, 356.75, 356.75, 539.69], "profit_aud": 539.69}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.35, -0.16, 0.22, 1.01, 2.05, 3.05, 10.74, 20.95, 20.95, 20.95, 20.95, 32.76, 42.86, 61.4, 63.06, 64.14, 65.48, 65.48, 65.48, 65.48, 65.48, 65.48, 338.02, 618.94, 618.94, 829.43, 829.43, 829.43, 829.43, 829.43, 1012.36], "profit_aud": 1012.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -170.96, -337.09, -509.59, -686.28, -766.5, -559.19, -371.8, -189.69, -7.83, -7.83, -7.83, -7.83, -7.83, -9.33, -6.16, -6.16, -6.16, -6.16, 4.24, -4.74, 4.86, -4.33, -3.39, 6.05, 0.87, 12.69, 22.78, 41.33, 57.93, 59.01, 60.35, 60.35, 60.35, 60.35, 60.35, 272.63, 545.16, 826.08, 1073.41, 1073.41, 850.36, 850.36, 677.1, 813.76, 996.69], "profit_aud": 996.69}}} \ No newline at end of file diff --git a/results/daily/2025-12-03.json b/results/daily/2025-12-03.json new file mode 100644 index 0000000..446203a --- /dev/null +++ b/results/daily/2025-12-03.json @@ -0,0 +1 @@ +{"date": "2025-12-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [171.94, 152.5, 167.81, 140.53, 195.04, 220.06, 212.9, 215.86, 186.24, 187.67, 44.53, 15.25, -6.72, -7.82, -8.03, -10.96, -14.83, -24.76, -29.2, -28.04, -29.03, -27.92, -28.45, -26.0, -27.95, -27.56, -34.2, -36.89, -30.4, -28.0, -14.34, -12.47, -8.15, -4.51, 19.19, 83.68, 108.64, 134.04, 140.08, 141.34, 137.56, 161.51, 160.87, 159.4, 140.61, 132.48, 130.16, 113.81], "forecast_price": {"naive": [111.25, 110.47, 132.33, 136.77, 132.9, 138.0, 141.36, 144.53, 165.84, 149.91, 145.68, 145.49, 147.15, 355.18, 75.55, 24.32, 1.2, 2.82, -1.53, -3.08, -6.31, -8.32, -7.99, -7.68, -8.17, -7.45, -7.56, -9.34, -9.46, -8.08, -14.84, -13.28, -8.61, -10.73, -4.59, 48.5, 113.36, 140.1, 169.82, 218.03, 224.74, 197.86, 168.39, 178.43, 137.95, 138.61, 136.66, 146.35], "lightgbm": [82.0, 83.21, 80.68, 75.79, 69.67, 69.95, 66.79, 69.61, 70.31, 72.3, 74.12, 73.05, 71.57, 72.53, 57.07, 23.47, 19.73, 9.13, 2.54, -4.97, -4.42, -8.98, -7.39, -8.95, -9.87, -7.33, -5.77, -7.39, -8.95, -9.05, -9.88, -3.56, 5.28, 11.46, 28.18, 46.19, 89.27, 100.42, 109.02, 123.53, 122.12, 119.55, 111.7, 108.38, 105.55, 105.55, 105.55, 105.55], "lstm": [159.28, 162.21, 147.04, 140.82, 127.17, 123.33, 131.57, 129.58, 133.8, 145.45, 156.14, 136.08, 106.67, 81.17, 54.68, 41.76, 29.33, 24.51, 15.05, 10.61, 6.33, 4.9, 7.09, -2.23, 1.16, -4.28, -10.92, -10.11, -12.11, -9.11, -9.86, -3.96, 1.58, 11.17, 17.83, 44.67, 66.38, 104.49, 106.11, 113.58, 103.5, 99.24, 91.36, 82.83, 97.84, 80.97, 87.65, 96.96]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 2.0, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-214.93, -405.56, -615.32, -790.98, -644.7, -369.61, -103.49, 166.33, 166.33, 166.33, 166.33, 166.33, 167.17, 168.14, 169.15, 170.52, 172.37, 175.47, 211.97, 211.97, 248.26, 248.26, 251.81, 251.81, 251.81, 251.81, 294.57, 340.68, 378.69, 382.19, 383.98, 385.54, 386.56, 387.12, 387.12, 387.12, 387.12, 387.12, 387.12, 563.79, 563.79, 765.68, 966.76, 1166.01, 1166.01, 1166.01, 1166.01, 1166.01], "profit_aud": 1166.01}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.75, 0.12, 0.0, 1.12, 2.25, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-214.93, -405.56, -615.32, -615.32, -696.26, -696.26, -696.26, -696.26, -463.46, -228.87, -228.87, -228.87, -228.87, -238.65, -238.65, -238.65, -220.11, -247.97, -244.32, -240.81, -237.18, -202.28, -202.28, -202.28, -202.28, -217.58, -217.58, -171.46, -133.46, -145.08, -127.16, -111.57, -111.57, -105.94, -108.33, -108.33, -108.33, -108.33, -108.33, 68.34, 240.28, 442.17, 442.17, 641.42, 641.42, 641.42, 641.42, 641.42], "profit_aud": 641.42}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.22, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.0, 2.12, 3.25, 3.0, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 35.04, 2.82, 37.71, 37.71, 70.21, 105.15, 101.29, 58.54, 58.54, 96.54, 131.53, 149.46, 151.02, 151.02, 151.02, 151.02, 151.02, 151.02, 151.02, 151.02, 327.69, 499.64, 701.52, 902.6, 902.6, 902.6, 902.6, 902.6, 902.6], "profit_aud": 902.6}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -243.81, -518.89, -518.89, -579.33, -579.33, -344.74, -289.08, -289.08, -289.08, -289.08, -289.08, -289.08, -289.08, -289.08, -289.08, -289.08, -285.01, -250.11, -285.68, -253.18, -284.63, -281.19, -238.43, -192.31, -154.31, -136.81, -118.89, -117.33, -117.33, -117.33, -117.33, -117.33, -117.33, 50.21, 225.31, 401.98, 573.93, 573.93, 573.93, 374.68, 532.87, 367.27, 367.27, 495.3], "profit_aud": 495.3}}} \ No newline at end of file diff --git a/results/daily/2025-12-04.json b/results/daily/2025-12-04.json new file mode 100644 index 0000000..e5e77d5 --- /dev/null +++ b/results/daily/2025-12-04.json @@ -0,0 +1 @@ +{"date": "2025-12-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [57.54, 17.15, -1.23, -6.32, -9.16, -11.06, -7.9, -9.23, -7.05, -6.49, -7.17, -8.6, -11.91, -10.06, -8.65, -8.12, -9.01, -11.66, -11.64, -12.84, -12.06, -12.81, -13.71, -10.22, -10.92, -9.44, -7.99, -6.42, -6.19, -5.33, -4.58, -12.74, -12.97, -6.1, 23.3, 79.46, 127.38, 137.28, 138.74, 141.97, 136.63, 131.8, 126.49, 115.2, 107.48, 128.35, 138.19, 150.12], "forecast_price": {"naive": [171.94, 152.5, 167.81, 140.53, 195.04, 220.06, 212.9, 215.86, 186.24, 187.67, 44.53, 15.25, -6.72, -7.82, -8.03, -10.96, -14.83, -24.76, -29.2, -28.04, -29.03, -27.92, -28.45, -26.0, -27.95, -27.56, -34.2, -36.89, -30.4, -28.0, -14.34, -12.47, -8.15, -4.51, 19.19, 83.68, 108.64, 134.04, 140.08, 141.34, 137.56, 161.51, 160.87, 159.4, 140.61, 132.48, 130.16, 113.81], "lightgbm": [84.83, 87.1, 83.84, 79.21, 72.08, 72.54, 72.93, 72.54, 72.46, 72.46, 67.45, 71.05, 69.52, 64.89, 39.52, 14.26, 9.21, -0.19, -3.77, -8.87, -9.36, -11.92, -14.55, -16.9, -17.11, -16.9, -18.09, -18.09, -18.09, -17.16, -9.59, -5.78, 5.34, 16.21, 33.11, 72.63, 96.17, 115.62, 117.51, 118.58, 118.33, 119.25, 112.0, 101.87, 105.46, 103.74, 101.16, 96.97], "lstm": [115.2, 108.49, 99.46, 95.9, 82.07, 79.21, 80.07, 85.98, 87.28, 87.31, 103.27, 79.58, 53.93, 29.24, 15.75, 1.74, -3.54, -11.27, -17.8, -19.92, -21.35, -20.88, -20.62, -24.15, -18.01, -22.61, -24.72, -22.63, -25.06, -17.85, -14.96, -7.85, -4.46, 3.09, 10.05, 37.81, 52.88, 87.69, 106.87, 104.81, 95.38, 88.36, 77.61, 79.03, 78.76, 71.87, 74.63, 85.65]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 2.0, 0.75, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.15, 0.94, 12.4, 26.22, 26.22, 37.76, 28.95, 20.84, 15.85, 16.93, 31.81, 44.39, 37.16, 27.02, 27.02, 35.76, 35.76, 51.82, 66.89, 82.9, 100.04, 100.04, 102.77, 103.95, 104.95, 105.75, 106.52, 99.86, 94.13, 110.05, 126.27, 128.55, 128.55, 128.55, 128.55, 300.14, 473.57, 651.03, 787.67, 787.67, 787.67, 643.67, 509.31, 509.31, 682.05, 869.7], "profit_aud": 869.7}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 2.0, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-71.92, -93.36, -91.82, -83.92, -90.8, -104.62, -114.5, -126.03, -126.03, -126.03, -126.03, -126.03, -124.54, -123.29, -122.2, -121.19, -120.06, -118.61, -104.06, -104.06, -88.99, -88.99, -87.27, -87.27, -87.27, -87.27, -77.29, -69.26, -61.53, -60.86, -60.29, -58.69, -57.07, -56.31, -56.31, -56.31, -56.31, -56.31, -56.31, 121.15, 121.15, 285.9, 444.0, 588.0, 588.0, 588.0, 588.0, 588.0], "profit_aud": 588.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.46, 2.91, 4.52, 6.02, 7.63, 9.34, 10.62, 18.81, 18.81, 28.79, 36.82, 44.55, 51.22, 51.79, 53.38, 53.38, 53.38, 53.38, 53.38, 53.38, 53.38, 226.81, 404.27, 575.06, 739.81, 739.81, 739.81, 739.81, 739.81, 739.81, 739.81], "profit_aud": 739.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88, 0.75, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 13.82, 14.93, 14.93, 14.93, 14.93, 5.96, 5.96, 5.96, 5.96, 5.96, 5.96, 7.09, 8.55, 10.0, 11.61, 23.66, 23.66, 23.66, 36.43, 22.79, 34.58, 44.57, 52.6, 60.33, 61.0, 61.57, 63.16, 64.78, 64.78, 64.78, 64.78, 64.78, 64.78, 238.21, 415.67, 586.46, 751.21, 751.21, 751.21, 751.21, 590.77, 571.43, 759.08], "profit_aud": 759.08}}} \ No newline at end of file diff --git a/results/daily/2025-12-05.json b/results/daily/2025-12-05.json new file mode 100644 index 0000000..7bcb500 --- /dev/null +++ b/results/daily/2025-12-05.json @@ -0,0 +1 @@ +{"date": "2025-12-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [162.08, 149.1, 154.62, 155.16, 155.04, 174.93, 161.92, 140.81, 156.41, 104.47, 85.46, 73.93, 50.55, 41.4, 55.64, 4.71, 14.15, -9.68, -4.0, -11.43, -11.21, -14.25, -16.61, -14.62, -14.36, -9.45, -5.9, -3.78, -0.88, 3.25, 35.84, 22.95, 65.95, 124.38, 115.86, 112.3, 173.99, 138.06, 109.14, 87.12, 84.92, 92.62, 113.68, 134.22, 150.9, 164.78, 172.04, 162.21], "forecast_price": {"naive": [57.54, 17.15, -1.23, -6.32, -9.16, -11.06, -7.9, -9.23, -7.05, -6.49, -7.17, -8.6, -11.91, -10.06, -8.65, -8.12, -9.01, -11.66, -11.64, -12.84, -12.06, -12.81, -13.71, -10.22, -10.92, -9.44, -7.99, -6.42, -6.19, -5.33, -4.58, -12.74, -12.97, -6.1, 23.3, 79.46, 127.38, 137.28, 138.74, 141.97, 136.63, 131.8, 126.49, 115.2, 107.48, 128.35, 138.19, 150.12], "lightgbm": [60.37, 53.82, 47.23, 34.45, 34.25, 45.07, 47.9, 49.62, 46.17, 46.37, 39.58, 35.33, 29.91, 29.82, 23.54, 6.35, 3.85, -4.73, -6.98, -11.73, -12.08, -14.39, -14.74, -9.64, -13.59, -9.64, -9.64, -6.61, -4.51, -5.66, -1.9, -1.92, 2.54, 17.49, 34.12, 65.79, 93.01, 99.03, 99.8, 99.8, 98.87, 94.56, 90.25, 82.6, 79.42, 86.47, 90.68, 90.68], "lstm": [160.24, 142.92, 131.68, 123.27, 114.41, 111.82, 117.19, 120.42, 110.33, 120.87, 122.89, 111.4, 80.54, 50.68, 37.86, 23.95, 21.91, 17.0, 13.19, 8.2, 6.29, 7.94, 8.14, 0.23, 9.32, -0.06, -0.49, -2.71, -1.62, -1.7, 4.18, 6.87, 7.71, 18.83, 24.58, 52.47, 70.19, 105.18, 125.26, 131.37, 118.7, 111.85, 114.01, 99.54, 109.52, 104.92, 107.4, 115.2]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -186.38, -208.02, -208.02, -208.02, 10.64, 10.64, 10.64, 10.64, 10.64, 10.64, 10.64, 10.64, -41.1, 21.49, 15.6, 31.52, 43.62, 39.18, 47.75, 47.75, 65.57, 86.33, 104.6, 122.56, 123.74, 124.47, 124.95, 125.06, 125.06, 165.37, 136.68, 136.68, 292.16, 292.16, 292.16, 509.65, 682.23, 636.94, 528.04, 421.89, 306.11, 306.11, 306.11, 494.73, 700.7, 915.76, 1118.51], "profit_aud": 1118.51}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 2.0, 0.75, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -19.33, -38.72, -232.52, -451.18, -451.18, -627.2, -431.69, -301.1, -241.71, -250.95, -314.13, -365.87, -319.42, -313.52, -313.52, -306.26, -306.26, -291.98, -277.97, -260.16, -239.39, -239.39, -235.8, -234.62, -233.88, -233.41, -233.3, -229.23, -184.44, -213.13, -295.56, -342.21, -342.21, -342.21, -342.21, -169.63, -33.21, 75.69, 160.61, 160.61, 160.61, -7.16, -195.79, -195.79, 19.27, 222.02], "profit_aud": 222.02}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -193.95, -387.75, -387.75, -225.83, -49.82, -49.82, -49.82, -49.82, -49.82, -49.82, -49.82, -49.82, -49.82, -49.82, -48.61, -48.11, -33.83, -19.82, -2.0, 18.76, 10.65, 28.6, 29.78, 30.52, 30.99, 30.02, 25.95, 25.95, 20.21, 20.21, 20.21, 20.21, 20.21, 20.21, 192.79, 329.21, 438.11, 544.26, 544.26, 544.26, 544.26, 355.64, 355.64, 549.19, 549.19], "profit_aud": 549.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.12, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -195.51, -195.51, -99.36, -99.36, -99.36, -99.36, -99.36, -99.36, -99.36, -99.36, -99.36, -99.36, -85.36, -85.36, -101.97, -83.69, -101.65, -95.74, -88.37, -83.64, -82.54, -86.61, -86.61, -86.61, -86.61, -86.61, -86.61, -86.61, -86.61, -86.61, 49.81, 158.71, 264.86, 264.86, 392.74, 224.97, 224.97, 224.97, 224.97, 427.72], "profit_aud": 427.72}}} \ No newline at end of file diff --git a/results/daily/2025-12-06.json b/results/daily/2025-12-06.json new file mode 100644 index 0000000..a0abfc0 --- /dev/null +++ b/results/daily/2025-12-06.json @@ -0,0 +1 @@ +{"date": "2025-12-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [101.01, 86.01, 80.92, 83.19, 82.62, 70.62, 55.41, 53.42, 55.08, 80.25, 77.09, 25.66, -7.01, -0.39, 65.49, 116.47, 72.81, -2.39, 0.01, -7.12, -11.08, -8.59, -6.38, -7.25, -10.52, -12.68, -13.07, -11.23, -14.58, -17.22, -37.68, -24.96, -15.66, -11.42, -6.06, -20.74, -18.6, -13.5, -9.4, 4.17, 1.25, 7.21, 8.12, 8.58, 10.44, 11.23, 14.98, 17.0], "forecast_price": {"naive": [162.08, 149.1, 154.62, 155.16, 155.04, 174.93, 161.92, 140.81, 156.41, 104.47, 85.46, 73.93, 50.55, 41.4, 55.64, 4.71, 14.15, -9.68, -4.0, -11.43, -11.21, -14.25, -16.61, -14.62, -14.36, -9.45, -5.9, -3.78, -0.88, 3.25, 35.84, 22.95, 65.95, 124.38, 115.86, 112.3, 173.99, 138.06, 109.14, 87.12, 84.92, 92.62, 113.68, 134.22, 150.9, 164.78, 172.04, 162.21], "lightgbm": [91.08, 85.28, 82.03, 77.94, 68.52, 68.7, 67.21, 66.96, 68.07, 63.91, 59.67, 58.42, 46.3, 44.08, 36.32, 9.35, 11.1, -6.4, -6.51, -19.53, -20.39, -21.69, -21.35, -21.35, -21.35, -17.06, -13.73, -13.34, -12.79, -11.27, 4.86, 5.7, 29.93, 53.46, 63.79, 84.62, 110.44, 111.2, 92.91, 87.38, 86.13, 86.23, 92.12, 100.73, 103.93, 103.87, 102.54, 103.87], "lstm": [163.47, 156.92, 140.11, 129.26, 124.96, 114.8, 113.31, 115.73, 106.21, 105.61, 107.73, 87.58, 49.03, 26.17, 17.57, 12.72, 11.99, 3.85, 0.66, -1.1, -4.64, -5.43, 1.16, -6.08, 0.57, -3.61, -5.61, 0.6, -4.86, -0.8, 5.03, 12.18, 16.41, 22.46, 25.43, 43.44, 63.55, 94.6, 109.85, 118.61, 108.5, 97.85, 98.94, 100.46, 103.65, 94.78, 103.32, 108.51]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -38.51, -105.28, -174.13, -73.82, 22.55, -9.52, -0.76, -0.27, 81.59, 227.18, 318.19, 321.18, 321.19, 322.08, 335.94, 346.67, 338.71, 331.68, 332.99, 336.16, 352.5, 338.46, 347.57, 369.1, 416.2, 447.4, 466.97, 452.7, 445.12, 471.05, 494.3, 499.36, 500.54, 505.22, 503.66, 503.66, 503.66, 503.66, 516.71, 530.76, 549.47, 570.72], "profit_aud": 570.72}, "naive": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -107.51, -118.84, -118.84, -118.84, -30.56, -30.56, -30.56, -30.56, -30.56, -30.56, -30.56, -30.56, -30.07, 43.6, -101.99, -20.07, -17.09, -17.08, -11.74, -11.74, -1.0, 6.97, 16.03, 29.17, 30.76, 32.39, 33.79, 35.62, 35.62, -6.78, 24.42, 24.42, 10.15, 10.15, 10.15, -13.11, -29.98, -26.08, -31.28, -32.84, -41.86, -41.86, -41.86, -28.81, -14.76, 3.95, 25.2], "profit_aud": 25.2}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -145.59, -63.68, -63.38, -63.38, -62.49, -55.56, -44.82, -36.86, -27.79, -14.65, -13.07, -11.43, -10.03, -8.21, -6.05, -6.05, -6.05, -6.05, -6.05, -6.05, -6.05, -29.31, -46.18, -46.18, -47.35, -48.91, -57.92, -57.92, -57.92, -44.87, -30.83, -12.11, 9.14], "profit_aud": 9.14}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 2.0, 3.12, 4.25, 3.0, 4.12, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.9, 22.75, 33.49, 25.53, 34.59, 21.44, 37.29, 53.63, 39.59, 57.82, 75.04, 75.04, 75.04, 75.04, 75.04, 75.04, 75.04, 75.04, 75.04, 63.28, 68.49, 70.05, 70.05, 70.05, 70.05, 70.05, 70.05, 70.05, 91.3], "profit_aud": 91.3}}} \ No newline at end of file diff --git a/results/daily/2025-12-07.json b/results/daily/2025-12-07.json new file mode 100644 index 0000000..5905e51 --- /dev/null +++ b/results/daily/2025-12-07.json @@ -0,0 +1 @@ +{"date": "2025-12-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [10.7, 16.96, 17.13, 28.25, 9.2, 9.64, 23.32, 22.68, 25.46, 35.41, 41.97, 39.39, 9.93, -5.08, -24.82, -105.57, -116.32, -135.79, -167.55, -134.79, -117.47, -84.36, -59.5, -73.63, -111.8, -133.44, -79.06, -94.77, -68.86, -58.48, -67.78, -212.03, -83.53, -76.55, -12.57, 61.79, 89.7, 91.4, 114.62, 133.58, 135.94, 123.88, 135.67, 134.84, 126.62, 120.47, 147.06, 117.53], "forecast_price": {"naive": [101.01, 86.01, 80.92, 83.19, 82.62, 70.62, 55.41, 53.42, 55.08, 80.25, 77.09, 25.66, -7.01, -0.39, 65.49, 116.47, 72.81, -2.39, 0.01, -7.12, -11.08, -8.59, -6.38, -7.25, -10.52, -12.68, -13.07, -11.23, -14.58, -17.22, -37.68, -24.96, -15.66, -11.42, -6.06, -20.74, -18.6, -13.5, -9.4, 4.17, 1.25, 7.21, 8.12, 8.58, 10.44, 11.23, 14.98, 17.0], "lightgbm": [44.77, 48.84, 46.36, 46.76, 49.76, 42.48, 39.35, 35.03, 35.99, 40.13, 39.96, 24.57, 18.53, 16.04, 30.08, 33.73, 28.2, -7.91, -7.53, -13.02, -20.76, -18.12, -16.12, -16.31, -17.9, -21.56, -21.56, -20.98, -21.56, -20.87, -24.86, -15.21, -9.58, 2.17, 23.11, 22.2, 34.9, 37.11, 35.69, 38.46, 38.65, 39.98, 39.54, 38.77, 39.09, 38.77, 39.09, 39.09], "lstm": [18.77, 13.56, 14.0, 7.96, 10.06, 9.05, 8.84, 11.0, 17.17, 19.66, 30.56, 22.52, 8.28, -5.36, -25.4, -28.76, -41.0, -53.84, -58.12, -52.53, -49.35, -52.63, -50.04, -53.04, -49.64, -58.1, -66.4, -62.03, -65.84, -65.44, -61.52, -54.17, -47.49, -42.24, -38.07, -20.03, 2.92, 25.36, 43.12, 46.67, 49.47, 50.16, 45.28, 41.5, 37.29, 40.06, 48.27, 58.21]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 4.38, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.62, 2.38, 3.5, 4.62, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-13.38, -34.58, -55.99, -20.68, -32.18, -44.23, -44.23, -59.99, -28.16, 16.1, 68.56, 117.8, 117.8, 118.44, 121.54, 134.74, 207.44, 377.18, 586.62, 755.11, 901.95, 901.95, 827.58, 735.54, 875.29, 1042.1, 987.15, 1105.61, 1048.11, 975.01, 890.28, 1155.31, 1259.73, 1355.42, 1356.99, 1356.99, 1356.99, 1356.99, 1356.99, 1356.99, 1526.91, 1526.91, 1696.5, 1865.05, 1865.05, 1865.05, 2048.88, 2048.88], "profit_aud": 2048.88}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -16.21, -44.56, -76.39, -32.13, 20.33, -28.91, -41.32, -34.98, -66.01, -197.97, -343.38, -173.64, -362.13, -345.28, -198.45, -93.0, -167.37, -238.79, -224.81, -191.45, -92.62, -211.09, -168.05, -94.94, -10.22, 254.82, 359.23, 263.54, 247.83, 170.58, 58.46, 24.19, 9.86, 160.14, -9.78, -9.78, -9.78, -9.78, 148.49, 299.07, 482.9, 629.81], "profit_aud": 629.81}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 2.0, 2.5, 2.25, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.12, 0.0, 0.0, 1.12, 1.5, 0.25, 0.12, 0.0, 1.12, 2.25, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-13.38, -13.38, -13.38, -13.38, -3.02, -3.02, -3.02, -31.38, -34.94, 9.33, 9.33, -39.92, -52.33, -45.98, -77.01, -208.98, -310.76, -276.81, -276.81, -259.96, -113.13, -70.95, -145.32, -145.32, -145.32, 21.48, 120.31, 191.39, 277.47, 277.47, 362.2, 388.7, 399.14, 399.14, 399.14, 399.14, 399.14, 399.14, 399.14, 399.14, 399.14, 554.0, 723.58, 723.58, 723.58, 723.58, 907.42, 1054.32], "profit_aud": 1054.32}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.5, 0.38, 0.25, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -35.31, -46.82, -58.87, -88.02, -100.61, -68.78, -24.51, 27.95, 77.19, 77.19, 77.82, 80.93, 94.12, 108.66, 125.64, 335.08, 335.08, 286.33, 286.33, 286.33, 286.33, 286.33, 303.01, 401.84, 520.3, 606.38, 679.49, 721.85, 748.35, 758.79, 768.36, 769.93, 762.21, 762.21, 762.21, 762.21, 929.19, 1099.11, 1253.96, 1389.63, 1389.63, 1231.36, 1080.77, 1264.61, 1411.51], "profit_aud": 1411.51}}} \ No newline at end of file diff --git a/results/daily/2025-12-08.json b/results/daily/2025-12-08.json new file mode 100644 index 0000000..faffe89 --- /dev/null +++ b/results/daily/2025-12-08.json @@ -0,0 +1 @@ +{"date": "2025-12-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [151.44, 154.72, 197.76, 236.51, 295.28, 230.0, 220.7, 452.31, 285.35, 296.72, 2372.68, 192.67, 57.08, -0.42, 1.92, -2.96, -9.58, -15.97, -11.33, -12.25, -10.93, -12.75, -13.82, -18.59, -20.19, -19.2, -16.94, -10.06, -9.42, -16.17, -15.75, -40.89, -66.04, -26.54, -12.41, -5.57, 15.6, 104.76, 107.26, 86.5, 85.65, 89.04, 77.27, 82.53, 96.04, 67.26, 94.21, 111.54], "forecast_price": {"naive": [10.7, 16.96, 17.13, 28.25, 9.2, 9.64, 23.32, 22.68, 25.46, 35.41, 41.97, 39.39, 9.93, -5.08, -24.82, -105.57, -116.32, -135.79, -167.55, -134.79, -117.47, -84.36, -59.5, -73.63, -111.8, -133.44, -79.06, -94.77, -68.86, -58.48, -67.78, -212.03, -83.53, -76.55, -12.57, 61.79, 89.7, 91.4, 114.62, 133.58, 135.94, 123.88, 135.67, 134.84, 126.62, 120.47, 147.06, 117.53], "lightgbm": [39.25, 38.31, 38.85, 39.15, 36.52, 37.43, 35.66, 34.51, 34.75, 40.26, 39.19, 35.4, 32.79, 31.42, 26.02, 8.19, 2.14, -15.75, -14.05, -18.71, -18.4, -19.64, -20.15, -20.45, -20.45, -20.45, -20.15, -20.45, -20.45, -26.44, -25.64, -20.52, -13.8, -5.07, 25.97, 54.19, 75.51, 77.03, 89.03, 98.52, 100.41, 94.78, 96.57, 91.69, 92.08, 89.92, 94.9, 90.14], "lstm": [143.85, 144.26, 131.12, 121.33, 116.1, 108.73, 120.07, 122.48, 133.17, 150.07, 158.06, 140.47, 107.83, 77.25, 49.96, 30.8, 17.83, 8.96, 7.1, 1.05, -4.82, -7.76, -3.35, -9.95, -6.91, -7.82, -13.85, -16.95, -12.07, -10.97, -7.34, -3.75, 4.16, 22.23, 32.66, 61.85, 92.18, 123.89, 135.18, 132.93, 128.22, 123.78, 118.3, 106.42, 116.96, 104.66, 110.84, 115.07]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 1.75, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.38, 3.12, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.5, 2.62, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-189.3, -382.7, -629.9, -794.27, -425.18, -712.68, -988.55, -423.16, -66.47, 304.42, 3270.28, 3270.28, 3270.28, 3270.8, 3272.96, 3273.33, 3274.53, 3294.49, 3294.49, 3299.09, 3285.43, 3287.02, 3288.75, 3311.99, 3337.23, 3361.23, 3380.28, 3367.7, 3355.93, 3355.93, 3355.93, 3407.04, 3489.59, 3522.76, 3524.32, 3525.01, 3525.01, 3655.97, 3790.05, 3790.05, 3790.05, 3879.09, 3782.5, 3782.5, 3902.55, 3818.47, 3936.23, 4075.65], "profit_aud": 4075.65}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 4.38, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.62, 2.38, 3.5, 4.62, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-189.3, -382.7, -629.9, -334.26, -703.36, -990.86, -990.86, -1305.21, -948.53, -577.64, 2388.22, 2629.06, 2629.06, 2629.11, 2628.87, 2629.24, 2635.23, 2655.19, 2669.35, 2684.67, 2698.33, 2698.33, 2681.05, 2657.81, 2683.05, 2707.05, 2695.28, 2707.86, 2699.99, 2679.78, 2660.1, 2711.21, 2793.76, 2826.93, 2828.49, 2828.49, 2828.49, 2828.49, 2828.49, 2828.49, 2935.55, 2935.55, 3032.14, 3135.31, 3135.31, 3135.31, 3253.08, 3253.08], "profit_aud": 3253.08}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 0.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.12, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -565.39, -922.07, -551.18, 1821.5, 1821.5, 1821.5, 1821.5, 1821.5, 1821.5, 1821.5, 1841.47, 1828.89, 1831.95, 1831.95, 1833.55, 1835.27, 1858.51, 1881.23, 1881.23, 1881.23, 1881.23, 1881.23, 1901.44, 1921.12, 1972.23, 1980.49, 1983.8, 1983.8, 1983.8, 1983.8, 1983.8, 1983.8, 2091.93, 2199.0, 2199.0, 2295.59, 2295.59, 2295.59, 2295.59, 2413.36, 2413.36], "profit_aud": 2413.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -98.15, -467.24, -754.74, -1030.61, -1030.61, -1030.61, -659.72, 2306.14, 2546.97, 2546.97, 2546.97, 2546.97, 2546.97, 2546.97, 2546.97, 2546.97, 2546.97, 2549.71, 2565.65, 2548.37, 2571.61, 2549.2, 2561.2, 2582.37, 2594.95, 2606.72, 2626.94, 2628.9, 2634.01, 2634.01, 2634.01, 2634.01, 2634.01, 2634.01, 2764.97, 2899.05, 3007.18, 3114.24, 3114.24, 3114.24, 3114.24, 3114.24, 3114.24, 3114.24, 3114.24], "profit_aud": 3114.24}}} \ No newline at end of file diff --git a/results/daily/2025-12-09.json b/results/daily/2025-12-09.json new file mode 100644 index 0000000..0789cf2 --- /dev/null +++ b/results/daily/2025-12-09.json @@ -0,0 +1 @@ +{"date": "2025-12-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [112.31, 126.67, 139.06, 159.55, 156.36, 126.27, 137.9, 153.1, 140.54, 131.66, 108.52, 104.85, 48.13, 7.24, -35.32, -58.96, -40.26, -11.86, -18.51, -14.71, -15.87, -11.76, -19.44, -8.4, -8.5, -8.19, -8.77, -7.29, -8.7, -7.04, -6.78, -6.0, -6.37, -8.16, 14.76, 2.18, 100.22, 105.64, 101.82, 93.56, 81.31, 88.39, 91.31, 85.93, 90.85, 82.91, 78.86, 88.9], "forecast_price": {"naive": [151.44, 154.72, 197.76, 236.51, 295.28, 230.0, 220.7, 452.31, 285.35, 296.72, 2372.68, 192.67, 57.08, -0.42, 1.92, -2.96, -9.58, -15.97, -11.33, -12.25, -10.93, -12.75, -13.82, -18.59, -20.19, -19.2, -16.94, -10.06, -9.42, -16.17, -15.75, -40.89, -66.04, -26.54, -12.41, -5.57, 15.6, 104.76, 107.26, 86.5, 85.65, 89.04, 77.27, 82.53, 96.04, 67.26, 94.21, 111.54], "lightgbm": [76.44, 76.44, 79.6, 73.68, 64.91, 69.95, 71.49, 70.42, 70.91, 72.06, 71.93, 76.17, 69.98, 65.6, 48.86, 26.98, 18.27, 8.66, 7.52, 3.97, 1.42, 0.22, 2.06, 1.74, 1.61, 1.74, 2.19, 4.49, 5.02, 0.61, 2.4, 6.0, 4.17, 12.27, 29.37, 45.66, 63.43, 92.18, 96.19, 92.54, 92.33, 93.17, 77.43, 86.98, 85.28, 74.4, 84.44, 95.01], "lstm": [88.43, 84.81, 77.26, 75.51, 68.28, 63.79, 63.9, 70.58, 74.93, 75.88, 91.23, 76.66, 50.57, 24.83, 4.13, -4.71, -13.32, -23.38, -28.6, -28.56, -29.49, -33.31, -33.15, -33.13, -33.34, -36.38, -37.65, -34.17, -37.19, -29.17, -30.46, -21.02, -18.14, -8.8, -3.26, 18.99, 41.72, 69.86, 86.86, 84.75, 80.9, 78.5, 75.85, 76.68, 71.83, 69.78, 74.78, 75.2]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.5, 2.5, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.88, 5.0, 3.88, 5.0, 4.88, 4.75, 4.62, 5.0, 3.88, 5.0, 5.0, 5.0, 4.0, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-140.39, -298.72, -337.66, -138.22, 57.22, -100.61, -100.61, 71.62, 71.62, 71.62, 71.62, 71.62, 71.62, 71.62, 115.78, 189.48, 239.8, 224.97, 248.11, 259.14, 278.98, 265.93, 290.23, 290.23, 290.23, 290.23, 294.62, 286.53, 297.4, 298.28, 299.13, 293.31, 293.31, 303.51, 320.12, 317.4, 442.68, 574.73, 702.0, 818.94, 717.3, 717.3, 820.02, 820.02, 820.02, 820.02, 721.44, 821.45], "profit_aud": 821.45}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 1.75, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.38, 3.12, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.5, 2.62, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-140.39, -298.72, -472.55, -583.43, -387.98, -545.82, -718.19, -526.82, -351.14, -186.57, -50.92, -50.92, -50.92, -59.96, -99.7, -92.33, -87.3, -72.47, -72.47, -66.95, -86.79, -85.32, -82.89, -72.39, -61.76, -51.52, -41.66, -50.76, -61.63, -61.63, -61.63, -54.14, -46.17, -35.97, -37.82, -38.09, -38.09, 93.96, 221.23, 221.23, 221.23, 309.62, 195.49, 195.49, 309.05, 205.41, 303.99, 415.11], "profit_aud": 415.11}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -195.45, -195.45, -195.45, -195.45, -195.45, -195.45, -195.45, -77.49, -77.49, -77.49, -77.49, -77.49, -77.49, -77.49, -77.49, -77.49, -57.65, -42.95, -55.11, -44.61, -33.98, -23.74, -23.74, -31.03, -41.89, -33.1, -24.63, -31.37, -23.41, -23.41, -23.41, -23.41, -23.41, -23.41, 103.86, 220.8, 322.45, 432.93, 318.8, 404.73, 404.73, 301.09, 301.09, 412.21], "profit_aud": 412.21}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -195.45, -353.28, -525.65, -525.65, -525.65, -410.45, -274.8, -143.74, -143.74, -143.74, -143.74, -136.37, -131.34, -129.86, -125.23, -125.23, -123.24, -118.83, -118.83, -118.83, -113.52, -103.28, -92.32, -83.21, -72.34, -72.34, -70.64, -69.89, -69.1, -68.08, -69.92, -69.92, -69.92, -69.92, 57.35, 174.29, 275.93, 386.42, 386.42, 386.42, 386.42, 386.42, 386.42, 386.42], "profit_aud": 386.42}}} \ No newline at end of file diff --git a/results/daily/2025-12-10.json b/results/daily/2025-12-10.json new file mode 100644 index 0000000..6afc4e6 --- /dev/null +++ b/results/daily/2025-12-10.json @@ -0,0 +1 @@ +{"date": "2025-12-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [82.99, 83.97, 83.85, 86.5, 80.62, 80.92, 78.55, 80.12, 74.73, 89.58, 100.23, 100.7, 83.49, 102.95, 78.87, 123.03, 201.88, 154.95, 88.43, 67.74, 42.33, 26.15, 19.08, -10.18, -19.41, -9.94, 20.73, 23.69, 15.05, -6.2, -5.58, 16.54, 17.05, 13.36, 26.14, 34.1, 2.28, 3.63, 13.17, 29.04, 35.42, 53.06, 51.34, 42.56, 49.1, 43.92, 46.02, 50.43], "forecast_price": {"naive": [112.31, 126.67, 139.06, 159.55, 156.36, 126.27, 137.9, 153.1, 140.54, 131.66, 108.52, 104.85, 48.13, 7.24, -35.32, -58.96, -40.26, -11.86, -18.51, -14.71, -15.87, -11.76, -19.44, -8.4, -8.5, -8.19, -8.77, -7.29, -8.7, -7.04, -6.78, -6.0, -6.37, -8.16, 14.76, 2.18, 100.22, 105.64, 101.82, 93.56, 81.31, 88.39, 91.31, 85.93, 90.85, 82.91, 78.86, 88.9], "lightgbm": [79.87, 78.44, 71.9, 72.77, 72.65, 71.07, 78.14, 55.81, 73.2, 70.57, 63.82, 70.14, 46.59, 39.94, 21.44, 0.34, -1.71, -1.39, -5.97, -8.69, -9.05, -9.84, -10.31, -5.83, -6.49, -5.83, -5.83, -4.22, -5.83, -3.55, -0.03, 4.01, 8.91, 20.14, 36.66, 40.99, 85.51, 92.57, 91.57, 90.12, 84.02, 86.6, 85.21, 79.64, 82.25, 79.44, 76.98, 79.55], "lstm": [88.75, 87.79, 80.02, 72.77, 67.25, 62.2, 63.97, 67.1, 75.44, 74.7, 85.34, 73.23, 45.12, 19.81, 2.78, -3.48, -8.67, -12.89, -16.8, -17.87, -17.07, -16.99, -13.59, -19.9, -12.77, -14.61, -16.02, -12.45, -16.48, -5.67, -8.36, -4.37, -1.99, 5.71, 9.46, 31.32, 54.11, 84.77, 94.48, 93.78, 87.74, 80.81, 79.85, 74.61, 76.8, 67.6, 77.39, 76.0]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 3.12, 4.25, 4.25, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -100.77, -145.68, -243.86, -344.02, -437.42, -437.42, -337.19, -211.32, -315.68, -187.0, -285.58, -131.79, 120.56, 314.25, 314.25, 314.25, 314.25, 314.25, 314.25, 326.97, 351.23, 363.66, 389.57, 419.19, 400.37, 408.13, 415.1, 415.1, 436.42, 419.72, 452.4, 495.02, 492.17, 487.63, 471.17, 471.17, 471.17, 537.49, 601.67, 601.67, 663.05, 663.05, 663.05, 726.09], "profit_aud": 726.09}, "naive": {"charge_mw": [2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.5, 2.5, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.88, 5.0, 3.88, 5.0, 4.88, 4.75, 4.62, 5.0, 3.88, 5.0, 5.0, 5.0, 4.0, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-103.74, -208.7, -232.18, -124.05, -23.28, -124.43, -124.43, -34.29, -34.29, -34.29, -34.29, -34.29, -34.29, -34.29, -132.87, -286.66, -539.01, -345.32, -455.86, -506.66, -559.58, -530.55, -554.41, -554.41, -554.41, -554.41, -564.77, -538.48, -557.29, -556.51, -555.82, -539.77, -539.77, -556.47, -527.06, -569.69, -566.83, -562.3, -545.84, -509.54, -553.82, -553.82, -496.06, -496.06, -496.06, -496.06, -553.58, -496.84], "profit_aud": -496.84}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.15, -16.09, -16.09, -16.09, -16.09, -16.09, -16.09, -16.09, -16.09, -268.43, -96.44, -107.49, -192.17, -245.09, -277.77, -301.63, -307.28, -283.01, -283.01, -288.2, -261.9, -280.71, -279.94, -279.24, -279.24, -279.24, -279.24, -279.24, -279.24, -279.24, -274.7, -258.24, -221.95, -221.95, -155.63, -155.63, -155.63, -155.63, -155.63, -155.63, -155.63], "profit_aud": -155.63}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -101.14, -199.33, -299.48, -206.07, -127.69, -2.4, -2.4, -2.4, -2.4, -2.4, -17.78, -43.02, -62.38, -172.92, -257.6, -310.52, -343.2, -332.61, -319.89, -344.15, -341.66, -367.58, -341.28, -360.09, -366.98, -360.0, -362.07, -364.2, -364.2, -364.2, -364.2, -364.2, -359.66, -343.2, -306.91, -262.63, -262.63, -262.63, -262.63, -262.63, -317.54, -265.77, -265.77], "profit_aud": -265.77}}} \ No newline at end of file diff --git a/results/daily/2025-12-11.json b/results/daily/2025-12-11.json new file mode 100644 index 0000000..5cfff18 --- /dev/null +++ b/results/daily/2025-12-11.json @@ -0,0 +1 @@ +{"date": "2025-12-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [52.42, 51.94, 39.74, 34.79, 34.49, 34.15, 30.8, 31.41, 28.77, 27.15, 28.93, 19.22, 13.19, -1.82, -16.27, -8.12, -16.04, -33.8, -26.31, -29.76, -19.49, -20.37, -19.32, -24.6, -21.9, -11.39, -8.08, -10.68, -33.3, -23.59, -30.85, -16.61, -12.87, -13.7, -10.57, 13.34, 102.63, 105.01, 120.69, 110.7, 114.84, 121.11, 118.2, 109.28, 92.81, 82.28, 92.37, 92.56], "forecast_price": {"naive": [82.99, 83.97, 83.85, 86.5, 80.62, 80.92, 78.55, 80.12, 74.73, 89.58, 100.23, 100.7, 83.49, 102.95, 78.87, 123.03, 201.88, 154.95, 88.43, 67.74, 42.33, 26.15, 19.08, -10.18, -19.41, -9.94, 20.73, 23.69, 15.05, -6.2, -5.58, 16.54, 17.05, 13.36, 26.14, 34.1, 2.28, 3.63, 13.17, 29.04, 35.42, 53.06, 51.34, 42.56, 49.1, 43.92, 46.02, 50.43], "lightgbm": [65.06, 64.57, 63.46, 62.04, 59.86, 58.83, 58.32, 58.83, 55.39, 60.92, 64.09, 63.43, 56.77, 56.93, 44.73, 39.12, 33.17, 32.48, 27.31, 21.9, 9.58, 0.1, -1.42, -10.87, -12.81, -8.29, 1.05, 2.87, 1.97, -2.1, 0.9, 6.93, 10.24, 21.65, 29.87, 43.83, 51.75, 58.6, 58.55, 59.29, 58.41, 64.88, 63.73, 56.16, 60.25, 57.67, 57.59, 63.08], "lstm": [56.43, 54.62, 46.24, 41.01, 39.65, 35.45, 39.15, 46.97, 48.33, 50.84, 60.36, 54.41, 46.5, 32.91, 21.47, 8.27, 5.22, -1.89, -4.09, -12.01, -13.26, -10.97, -11.69, -13.27, -10.52, -13.17, -19.45, -16.55, -21.05, -14.98, -16.39, -9.57, -9.16, -4.08, 0.4, 16.36, 31.1, 56.15, 70.44, 65.28, 65.63, 61.67, 58.28, 57.32, 57.95, 51.02, 59.72, 64.46]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.5, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.12, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.23, 20.57, 11.56, 13.56, 55.81, 88.7, 125.9, 125.9, 125.9, 120.49, 151.24, 178.61, 164.37, 154.27, 140.92, 182.55, 212.04, 250.6, 258.91, 258.91, 262.33, 263.65, 263.65, 263.65, 263.65, 414.52, 414.52, 558.07, 709.45, 857.2, 857.2, 857.2, 754.34, 754.34, 858.47], "profit_aud": 858.47}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 3.12, 4.25, 4.25, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -43.12, -62.07, -100.58, -139.84, -175.79, -175.79, -146.87, -122.85, -139.34, -141.61, -121.27, -131.42, -151.46, -193.72, -193.72, -193.72, -193.72, -193.72, -193.72, -162.97, -135.6, -121.36, -131.46, -144.81, -103.18, -73.69, -35.13, -35.13, -51.22, -34.1, -47.31, -30.63, -158.92, -290.18, -441.05, -441.05, -441.05, -289.66, -141.91, -141.91, -25.9, -25.9, -25.9, 89.8], "profit_aud": 89.8}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -35.96, -35.96, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, -3.42, 7.89, 32.04, 62.79, 90.16, 104.4, 104.4, 91.05, 57.75, 87.23, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 125.8, 277.19, 424.93, 424.93, 540.94, 540.94, 540.94, 656.65], "profit_aud": 656.65}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.25, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -43.48, -86.6, -129.29, -167.79, -167.79, -146.22, -112.28, -76.12, -52.1, -52.1, -52.1, -52.1, -52.1, -52.1, -47.87, -44.58, -40.86, -16.5, -33.51, -33.51, -2.76, -30.14, -28.71, -18.61, -5.26, 36.37, 51.11, 89.68, 91.75, 93.36, 95.08, 95.08, 95.08, 95.08, 95.08, 245.94, 384.31, 527.86, 664.1, 664.1, 664.1, 664.1, 561.25, 561.25, 676.95], "profit_aud": 676.95}}} \ No newline at end of file diff --git a/results/daily/2025-12-12.json b/results/daily/2025-12-12.json new file mode 100644 index 0000000..8e795c0 --- /dev/null +++ b/results/daily/2025-12-12.json @@ -0,0 +1 @@ +{"date": "2025-12-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [85.7, 82.69, 91.76, 84.3, 57.34, 39.7, 33.8, 31.82, 33.66, 32.82, 38.82, 20.29, -0.48, -7.45, -14.76, -41.62, -26.58, -7.68, -8.03, -9.4, -8.02, -3.08, 0.55, 5.41, 1.37, 4.8, 21.58, 23.72, 41.79, 70.84, 108.74, 130.11, 156.94, 177.06, 176.37, 183.33, 169.39, 173.57, 141.1, 130.83, 120.0, 118.15, 116.46, 136.08, 131.85, 135.16, 131.03, 107.39], "forecast_price": {"naive": [52.42, 51.94, 39.74, 34.79, 34.49, 34.15, 30.8, 31.41, 28.77, 27.15, 28.93, 19.22, 13.19, -1.82, -16.27, -8.12, -16.04, -33.8, -26.31, -29.76, -19.49, -20.37, -19.32, -24.6, -21.9, -11.39, -8.08, -10.68, -33.3, -23.59, -30.85, -16.61, -12.87, -13.7, -10.57, 13.34, 102.63, 105.01, 120.69, 110.7, 114.84, 121.11, 118.2, 109.28, 92.81, 82.28, 92.37, 92.56], "lightgbm": [57.73, 57.73, 47.28, 47.09, 47.09, 47.09, 47.69, 47.69, 47.38, 46.38, 47.91, 47.13, 42.18, 31.6, 29.92, 23.58, 21.35, 2.34, 1.95, -6.43, -8.49, -13.45, -15.86, -18.0, -17.28, -15.62, -6.14, -10.26, -18.84, -13.21, -14.5, -6.3, 1.63, 10.65, 23.7, 47.84, 82.1, 82.81, 88.72, 82.67, 85.35, 85.73, 84.55, 78.91, 77.05, 73.37, 77.51, 77.51], "lstm": [81.71, 74.73, 67.39, 59.53, 55.31, 51.74, 55.07, 64.6, 60.41, 61.0, 69.15, 57.57, 39.45, 21.9, 16.21, 4.16, -0.66, 1.26, 0.19, -6.71, -7.04, -2.16, 0.72, -2.46, -0.33, -4.31, -7.68, -4.98, -6.41, -3.29, -0.17, 6.07, 4.21, 13.4, 17.05, 36.41, 49.47, 77.26, 87.58, 85.41, 84.53, 77.07, 73.22, 68.06, 73.19, 68.1, 76.22, 79.95]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -39.77, -39.77, -44.36, 4.17, 4.17, 4.23, 5.16, 23.6, 75.63, 108.85, 108.85, 114.87, 126.62, 127.63, 128.01, 128.01, 134.77, 133.06, 132.39, 132.39, 132.39, 132.39, 132.39, 132.39, 132.39, 132.39, 353.72, 574.18, 803.34, 803.34, 1020.3, 1020.3, 1020.3, 986.7, 839.02, 693.45, 863.55, 863.55, 1032.5, 1032.5, 1032.5], "profit_aud": 1032.5}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.5, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.12, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.93, 19.38, -26.82, -23.5, -13.91, -3.87, 7.89, 7.89, 7.89, 8.04, 1.28, -0.44, 5.56, 32.54, 62.19, 9.95, -78.6, -214.53, -279.58, -279.58, -323.85, -345.9, -345.9, -345.9, -345.9, -169.53, -169.53, -19.53, 128.16, 273.73, 273.73, 273.73, 104.78, 104.78, 225.59], "profit_aud": 225.59}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.18, 2.18, 4.1, 3.41, -3.35, -5.06, -11.06, 15.91, 45.57, -6.67, -33.23, -169.17, -185.43, -185.43, -185.43, -185.43, -185.43, -185.43, -185.43, -9.06, -9.06, 140.94, 288.62, 434.19, 434.19, 434.19, 434.19, 434.19, 434.19], "profit_aud": 434.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -16.06, -65.68, -107.93, -68.16, -68.16, -68.16, -19.63, -19.63, -19.63, -19.63, -19.63, -19.63, 13.59, 4.95, 4.95, 16.71, 26.73, 24.17, 24.85, 18.09, 19.81, 13.81, -13.17, -42.82, -95.06, -139.34, -152.93, -6.56, -202.73, -202.73, -202.73, -202.73, -202.73, 14.23, 190.6, 354.13, 504.13, 504.13, 504.13, 334.03, 334.03, 165.08, 296.11, 430.35], "profit_aud": 430.35}}} \ No newline at end of file diff --git a/results/daily/2025-12-13.json b/results/daily/2025-12-13.json new file mode 100644 index 0000000..c39e452 --- /dev/null +++ b/results/daily/2025-12-13.json @@ -0,0 +1 @@ +{"date": "2025-12-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [97.63, 101.71, 78.63, 77.68, 75.81, 82.07, 80.66, 81.98, 78.82, 85.92, 82.44, 86.5, 99.65, 115.2, 56.16, -1.26, -4.57, 4.75, -8.95, -9.87, -7.13, -6.47, -7.48, -9.0, -9.78, -11.46, -13.04, -14.06, -12.65, -9.06, -8.48, -8.25, -7.84, -8.4, -9.56, -7.04, 21.17, 81.07, 75.31, 79.64, 69.74, 75.96, 76.05, 73.51, 69.07, 70.8, 71.67, 69.83], "forecast_price": {"naive": [85.7, 82.69, 91.76, 84.3, 57.34, 39.7, 33.8, 31.82, 33.66, 32.82, 38.82, 20.29, -0.48, -7.45, -14.76, -41.62, -26.58, -7.68, -8.03, -9.4, -8.02, -3.08, 0.55, 5.41, 1.37, 4.8, 21.58, 23.72, 41.79, 70.84, 108.74, 130.11, 156.94, 177.06, 176.37, 183.33, 169.39, 173.57, 141.1, 130.83, 120.0, 118.15, 116.46, 136.08, 131.85, 135.16, 131.03, 107.39], "lightgbm": [77.02, 76.35, 73.38, 69.19, 57.31, 54.43, 57.42, 58.43, 57.42, 58.53, 53.02, 53.43, 49.35, 36.36, 41.9, 20.3, 10.19, -4.05, -5.91, -12.46, -13.34, -10.62, -8.83, -9.67, -11.33, -11.2, -7.52, -6.1, 1.06, 12.28, 13.89, 23.93, 37.13, 61.19, 70.73, 79.69, 96.7, 97.39, 96.44, 92.82, 91.31, 88.39, 85.98, 90.71, 85.97, 85.99, 85.97, 77.83], "lstm": [106.78, 108.56, 92.31, 79.17, 78.17, 71.93, 67.37, 76.71, 65.32, 66.67, 66.63, 53.63, 35.74, 23.74, 18.76, 17.94, 18.88, 17.81, 16.46, 11.63, 13.81, 15.98, 24.99, 22.93, 30.19, 33.46, 33.56, 37.64, 35.78, 38.51, 51.02, 57.62, 57.77, 61.12, 64.24, 83.05, 97.27, 119.61, 127.43, 112.11, 100.29, 95.21, 94.03, 91.45, 86.33, 84.65, 92.01, 101.15]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 4.75, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -22.02, -119.12, -213.88, -213.88, -213.88, -213.88, -213.88, -213.88, -213.88, -213.88, -89.31, 54.69, 54.69, 55.01, 60.72, 66.65, 77.84, 90.17, 84.22, 76.13, 76.13, 77.25, 83.36, 97.69, 113.99, 131.56, 147.37, 148.51, 148.51, 148.51, 143.06, 143.06, 155.0, 155.89, 155.89, 257.23, 257.23, 356.77, 356.77, 451.73, 546.79, 546.79, 546.79, 546.79, 546.79, 546.79], "profit_aud": 546.79}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -102.48, -102.48, -114.51, -11.46, -11.46, -23.92, -38.32, -108.51, -106.94, -101.24, -101.24, -94.53, -82.19, -81.3, -80.49, -80.49, -91.74, -79.52, -77.91, -77.91, -77.91, -77.91, -77.91, -77.91, -77.91, -77.91, -88.41, -100.35, -109.15, -109.15, -7.81, -7.81, -7.81, -27.34, -122.29, -217.36, -125.47, -125.47, -36.97, -36.97, -36.97], "profit_aud": -36.97}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -144.0, -80.82, -80.82, -80.82, -81.42, -80.3, -67.96, -59.05, -50.96, -54.06, -54.06, -41.84, -27.51, -25.88, -24.13, -24.13, -24.13, -24.13, -24.13, -24.13, -24.13, -24.13, -24.13, 2.33, 103.67, 197.81, 297.35, 297.35, 297.35, 297.35, 297.35, 297.35, 297.35, 297.35, 297.35], "profit_aud": 297.35}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.82, -8.59, -8.59, -8.59, -8.59, -8.59, -8.59, -8.59, -8.59, -8.59, -8.59, -11.23, -0.04, 12.29, 21.21, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 29.3, 130.64, 224.77, 324.32, 411.49, 411.49, 411.49, 411.49, 401.82, 313.32, 313.32, 400.61], "profit_aud": 400.61}}} \ No newline at end of file diff --git a/results/daily/2025-12-14.json b/results/daily/2025-12-14.json new file mode 100644 index 0000000..a7f4180 --- /dev/null +++ b/results/daily/2025-12-14.json @@ -0,0 +1 @@ +{"date": "2025-12-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [64.38, 66.32, 65.04, 58.85, 35.38, 30.48, 30.9, 30.18, 33.15, 34.0, 33.16, 15.72, -1.1, -5.22, -7.59, -10.12, -10.05, -11.58, -14.94, -27.1, -36.25, -46.74, -43.79, -68.31, -56.95, -56.06, -52.88, -55.31, -62.08, -74.11, -64.51, -52.63, -48.78, -53.31, -62.99, -16.42, -6.27, -8.02, 29.12, 42.28, 66.56, 56.96, 63.24, 68.42, 69.64, 66.6, 72.96, 75.95], "forecast_price": {"naive": [97.63, 101.71, 78.63, 77.68, 75.81, 82.07, 80.66, 81.98, 78.82, 85.92, 82.44, 86.5, 99.65, 115.2, 56.16, -1.26, -4.57, 4.75, -8.95, -9.87, -7.13, -6.47, -7.48, -9.0, -9.78, -11.46, -13.04, -14.06, -12.65, -9.06, -8.48, -8.25, -7.84, -8.4, -9.56, -7.04, 21.17, 81.07, 75.31, 79.64, 69.74, 75.96, 76.05, 73.51, 69.07, 70.8, 71.67, 69.83], "lightgbm": [56.53, 56.53, 53.41, 50.8, 46.49, 48.39, 47.74, 47.74, 47.29, 48.26, 46.57, 47.79, 47.34, 46.35, 22.26, -6.1, -7.45, -11.56, -17.21, -18.6, -16.72, -17.19, -17.4, -19.63, -19.63, -22.79, -23.66, -23.36, -20.8, -18.57, -16.83, -11.61, -7.84, 3.24, 19.35, 39.23, 51.26, 74.99, 70.07, 76.29, 69.55, 71.59, 70.36, 66.48, 65.85, 63.14, 66.48, 63.28], "lstm": [68.57, 69.82, 61.74, 55.85, 55.28, 48.08, 53.01, 55.88, 51.11, 54.28, 55.66, 43.26, 23.35, 3.08, -6.63, -15.13, -25.68, -27.79, -24.24, -28.83, -29.51, -30.71, -28.97, -30.92, -30.4, -31.35, -38.11, -34.98, -42.31, -36.94, -33.79, -23.91, -20.98, -15.98, -5.69, 10.32, 28.38, 46.76, 52.83, 55.56, 61.13, 55.49, 52.96, 50.66, 50.34, 49.16, 54.09, 61.42]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 4.88, 4.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -4.27, -4.27, -41.99, -41.99, 0.51, 0.51, 0.51, 0.64, 1.3, 2.24, 4.78, 4.78, 6.22, 8.09, 11.48, 16.01, 27.69, 27.69, 113.08, 170.02, 170.02, 170.02, 170.02, 247.63, 340.26, 420.9, 420.9, 380.17, 380.17, 458.9, 460.96, 453.99, 464.02, 464.02, 464.02, 538.91, 467.72, 467.72, 553.25, 640.3, 640.3, 731.5, 826.44], "profit_aud": 826.44}, "naive": {"charge_mw": [0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.38, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 4.75, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -18.21, -91.77, -136.0, -136.0, -136.0, -136.0, -136.0, -136.0, -136.0, -136.0, -137.38, -143.91, -143.91, -141.37, -128.81, -143.28, -124.61, -90.72, -120.99, -179.42, -179.42, -170.88, -135.29, -65.21, 0.88, 70.01, 147.62, 156.88, 156.88, 156.88, 122.98, 122.98, 201.71, 203.77, 203.77, 193.73, 193.73, 246.59, 246.59, 317.78, 396.84, 396.84, 396.84, 396.84, 396.84, 396.84], "profit_aud": 396.84}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.25, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.27, 2.52, 3.97, 5.84, 39.72, 9.45, 9.45, 9.45, 60.68, 60.68, 130.75, 196.85, 265.98, 343.59, 352.85, 360.92, 367.49, 373.59, 373.59, 373.59, 373.59, 373.59, 363.56, 363.56, 416.42, 416.42, 487.61, 566.66, 566.66, 566.66, 566.66, 566.66, 566.66], "profit_aud": 566.66}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -38.1, -38.1, -4.15, -4.15, -4.15, -4.15, -4.15, -4.15, -4.15, -3.2, -1.94, -0.68, 13.79, -2.8, 0.59, 5.12, 16.81, 16.81, 33.89, 33.89, 40.89, 106.99, 176.12, 253.73, 346.36, 386.68, 393.26, 399.36, 406.02, 413.89, 413.89, 413.89, 413.89, 413.89, 466.75, 549.96, 621.15, 621.15, 621.15, 621.15, 621.15, 621.15, 716.09], "profit_aud": 716.09}}} \ No newline at end of file diff --git a/results/daily/2025-12-15.json b/results/daily/2025-12-15.json new file mode 100644 index 0000000..a8f1bdb --- /dev/null +++ b/results/daily/2025-12-15.json @@ -0,0 +1 @@ +{"date": "2025-12-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [72.35, 81.64, 77.83, 61.09, 51.92, 50.09, 44.35, 55.2, 50.7, 45.6, 55.13, 40.39, 9.49, -4.19, -14.97, -19.19, -57.87, -65.71, -77.33, -114.69, -106.03, -152.6, -64.98, -101.17, -104.79, -169.61, -309.29, -311.0, -287.48, -378.28, -248.79, -242.59, -241.33, -234.82, -70.85, -13.46, -8.6, 29.19, 70.39, 74.52, 73.66, 71.56, 71.19, 64.23, 53.44, 54.88, 53.28, 58.28], "forecast_price": {"naive": [64.38, 66.32, 65.04, 58.85, 35.38, 30.48, 30.9, 30.18, 33.15, 34.0, 33.16, 15.72, -1.1, -5.22, -7.59, -10.12, -10.05, -11.58, -14.94, -27.1, -36.25, -46.74, -43.79, -68.31, -56.95, -56.06, -52.88, -55.31, -62.08, -74.11, -64.51, -52.63, -48.78, -53.31, -62.99, -16.42, -6.27, -8.02, 29.12, 42.28, 66.56, 56.96, 63.24, 68.42, 69.64, 66.6, 72.96, 75.95], "lightgbm": [43.66, 43.66, 44.09, 43.36, 35.65, 35.89, 34.55, 35.06, 35.65, 37.78, 44.04, 41.22, 35.33, 33.84, 27.5, 9.8, 5.22, 4.61, 3.41, -4.1, -8.4, -16.49, -15.8, -18.07, -20.25, -20.56, -20.56, -20.46, -20.64, -17.82, -15.83, -17.48, -13.12, -6.42, -1.35, 27.31, 41.6, 55.45, 58.68, 58.62, 73.67, 67.46, 67.9, 66.08, 70.83, 63.11, 71.92, 74.72], "lstm": [86.87, 85.33, 78.54, 66.38, 65.35, 60.65, 69.27, 72.96, 77.56, 81.86, 94.5, 82.81, 59.94, 41.18, 27.81, 13.85, 0.85, 2.31, 2.39, -4.73, -7.38, -8.78, -5.33, -7.82, -5.35, -11.42, -19.14, -17.96, -22.75, -19.77, -20.26, -15.67, -13.39, -4.98, -1.11, 17.02, 40.85, 66.95, 66.31, 71.77, 76.0, 74.25, 69.76, 63.33, 67.04, 61.62, 74.32, 80.1]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 0.88, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-90.44, 1.41, 1.41, 1.41, 1.41, 1.41, -54.03, 8.07, 8.07, -48.93, 13.1, 13.1, 13.1, 13.62, 15.49, 17.89, 25.13, 33.34, 43.01, 186.37, 186.37, 377.11, 295.89, 225.58, 225.58, 246.78, 633.39, 1022.14, 1381.48, 1854.33, 2009.82, 2040.14, 2070.31, 2099.66, 2108.52, 2110.2, 2111.28, 2111.28, 2111.28, 2204.42, 2296.5, 2385.95, 2474.94, 2474.94, 2474.94, 2474.94, 2474.94, 2474.94], "profit_aud": 2474.94}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 4.88, 4.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -7.01, -7.01, -76.01, -76.01, -19.02, -19.02, -19.02, -20.21, -19.68, -17.81, -13.01, -13.01, -4.8, 4.87, 19.2, 32.46, 70.61, 70.61, 197.07, 301.86, 301.86, 301.86, 301.86, 661.2, 1134.05, 1445.03, 1445.03, 1243.52, 1243.52, 1332.08, 1333.76, 1324.22, 1287.73, 1287.73, 1287.73, 1370.6, 1281.15, 1281.15, 1361.44, 1428.24, 1428.24, 1494.85, 1567.7], "profit_aud": 1567.7}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -55.44, -124.44, -138.64, -138.64, -69.72, -19.23, -19.23, -19.23, -19.23, -19.23, -19.23, -19.23, -19.23, -4.89, 8.36, 46.51, 46.51, 59.16, 124.65, 336.67, 723.28, 1112.02, 1471.37, 1518.65, 1518.65, 1579.3, 1609.47, 1638.82, 1647.68, 1647.68, 1647.68, 1647.68, 1647.68, 1647.68, 1739.75, 1739.75, 1739.75, 1739.75, 1806.56, 1806.56, 1873.17, 1946.02], "profit_aud": 1946.02}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.75, 0.0, 2.5, 0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.25, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -76.36, -141.26, -203.88, -259.31, -259.31, -221.29, -164.29, -95.37, -44.88, -44.88, -44.88, -44.88, -44.88, 27.46, 27.46, -59.55, -45.21, -5.45, 185.3, 104.08, 230.54, 99.56, 120.76, 507.37, 701.75, 1061.09, 1533.94, 1844.92, 1875.24, 1905.41, 1934.76, 1943.62, 1943.62, 1943.62, 1943.62, 1943.62, 2036.77, 2128.84, 2218.29, 2218.29, 2209.3, 2209.3, 2140.7, 2207.3, 2280.16], "profit_aud": 2280.16}}} \ No newline at end of file diff --git a/results/daily/2025-12-16.json b/results/daily/2025-12-16.json new file mode 100644 index 0000000..d91d54b --- /dev/null +++ b/results/daily/2025-12-16.json @@ -0,0 +1 @@ +{"date": "2025-12-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [56.91, 59.7, 61.82, 65.64, 62.02, 62.84, 57.45, 55.99, 60.5, 63.28, 68.12, 59.15, 22.7, -14.57, -73.05, -89.25, -76.98, -64.25, -29.57, -11.6, -74.9, -88.13, -92.01, -73.25, -65.56, -79.3, -177.91, -44.14, -122.67, -22.01, -202.19, -186.82, -27.91, -14.99, -14.0, -2.34, 83.85, 95.68, 101.48, 98.2, 91.11, 100.04, 101.22, 109.98, 124.47, 114.54, 97.8, 96.61], "forecast_price": {"naive": [72.35, 81.64, 77.83, 61.09, 51.92, 50.09, 44.35, 55.2, 50.7, 45.6, 55.13, 40.39, 9.49, -4.19, -14.97, -19.19, -57.87, -65.71, -77.33, -114.69, -106.03, -152.6, -64.98, -101.17, -104.79, -169.61, -309.29, -311.0, -287.48, -378.28, -248.79, -242.59, -241.33, -234.82, -70.85, -13.46, -8.6, 29.19, 70.39, 74.52, 73.66, 71.56, 71.19, 64.23, 53.44, 54.88, 53.28, 58.28], "lightgbm": [42.73, 45.22, 43.0, 41.07, 39.61, 37.21, 30.98, 38.99, 37.21, 32.44, 42.41, 34.53, 24.33, 13.57, -1.37, -6.75, -29.74, -28.08, -30.88, -36.13, -39.09, -40.33, -42.09, -40.91, -40.91, -40.91, -40.91, -40.91, -40.91, -40.59, -37.86, -32.25, -24.33, -16.65, -11.84, 27.65, 47.38, 55.58, 72.48, 79.96, 79.6, 74.54, 74.86, 68.37, 61.2, 60.39, 58.2, 63.4], "lstm": [73.09, 66.78, 60.47, 53.13, 51.18, 49.54, 46.47, 52.9, 48.69, 62.16, 63.64, 63.29, 40.63, 21.77, 4.93, -13.9, -26.02, -22.5, -28.23, -31.17, -30.75, -28.95, -34.48, -34.11, -30.37, -37.5, -40.55, -33.68, -39.44, -32.71, -28.52, -25.62, -21.19, -13.1, -3.45, 20.45, 44.66, 74.67, 75.5, 81.17, 78.1, 69.93, 72.34, 64.59, 63.46, 56.42, 70.65, 67.53]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.0, 2.12, 3.25, 3.12, 1.88, 3.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-71.14, -71.14, -71.14, 2.71, 2.71, 2.71, -5.33, -75.32, -75.32, -75.32, 9.83, 9.83, 9.83, 11.66, 102.97, 214.53, 310.75, 257.1, 220.14, 205.65, 289.91, 400.07, 515.08, 515.08, 433.13, 532.25, 754.64, 699.47, 852.81, 825.3, 1078.04, 1311.57, 1315.06, 1316.93, 1318.68, 1318.97, 1318.97, 1318.97, 1445.82, 1445.82, 1445.82, 1445.82, 1445.82, 1583.3, 1738.88, 1882.06, 1882.06, 1882.06], "profit_aud": 1882.06}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 0.88, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-71.14, -3.98, -3.98, -3.98, -3.98, -3.98, -75.79, -12.8, -12.8, -91.9, -15.26, -15.26, -15.26, -13.44, -4.31, 6.85, 16.47, 24.5, 28.2, 42.69, 42.69, 152.85, 37.84, -13.08, -13.08, -3.16, 219.23, 274.4, 427.74, 455.25, 581.62, 604.97, 608.46, 610.33, 612.08, 612.37, 601.89, 601.89, 601.89, 724.65, 838.54, 963.59, 1090.12, 1090.12, 1090.12, 1090.12, 1090.12, 1090.12], "profit_aud": 1090.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.75, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -71.81, -15.82, -15.82, -94.92, -9.77, -9.77, -9.77, -9.77, -0.64, 10.52, 29.76, 29.76, 33.46, 34.91, 44.27, 55.29, 170.3, 261.87, 319.23, 319.23, 319.23, 374.41, 527.75, 530.5, 555.77, 579.12, 582.61, 584.49, 586.24, 586.24, 586.24, 586.24, 586.24, 708.99, 822.88, 947.93, 1074.46, 1074.46, 1074.46, 1074.46, 1074.46, 1074.46], "profit_aud": 1074.46}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 1.75, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 2.25, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -25.74, -104.3, -176.11, -176.11, -251.74, -172.64, -87.49, -13.55, -13.55, -13.55, -13.55, -2.39, 93.83, 22.51, 26.2, 30.55, 30.55, 30.55, 145.56, 237.13, 209.92, 309.05, 531.44, 531.44, 684.78, 687.53, 712.8, 736.15, 739.64, 741.52, 743.27, 743.27, 743.27, 862.86, 989.71, 1112.47, 1226.35, 1226.35, 1226.35, 1226.35, 1208.93, 1065.75, 1188.0, 1188.0], "profit_aud": 1188.0}}} \ No newline at end of file diff --git a/results/daily/2025-12-17.json b/results/daily/2025-12-17.json new file mode 100644 index 0000000..16193e3 --- /dev/null +++ b/results/daily/2025-12-17.json @@ -0,0 +1 @@ +{"date": "2025-12-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [91.33, 104.9, 132.84, 130.13, 129.04, 102.04, 103.16, 90.59, 111.29, 129.1, 134.05, 124.62, 68.74, 19.6, -12.19, -12.75, -11.14, -9.33, -15.33, -17.33, -13.01, 3.13, -4.44, -4.01, 4.28, 6.37, 6.94, -10.24, -10.41, -12.56, -19.85, -4.34, 55.53, 91.44, 112.6, 176.27, 188.5, 225.56, 243.16, 221.36, 215.69, 168.74, 153.85, 152.83, 167.5, 168.32, 166.43, 169.46], "forecast_price": {"naive": [56.91, 59.7, 61.82, 65.64, 62.02, 62.84, 57.45, 55.99, 60.5, 63.28, 68.12, 59.15, 22.7, -14.57, -73.05, -89.25, -76.98, -64.25, -29.57, -11.6, -74.9, -88.13, -92.01, -73.25, -65.56, -79.3, -177.91, -44.14, -122.67, -22.01, -202.19, -186.82, -27.91, -14.99, -14.0, -2.34, 83.85, 95.68, 101.48, 98.2, 91.11, 100.04, 101.22, 109.98, 124.47, 114.54, 97.8, 96.61], "lightgbm": [45.34, 45.68, 44.64, 43.95, 37.56, 36.59, 36.16, 37.53, 37.56, 47.12, 49.09, 47.36, 40.3, 29.15, 13.39, 7.4, 0.87, -3.45, -0.22, -0.94, -15.14, -22.05, -24.33, -26.3, -26.41, -26.3, -23.81, -19.7, -25.37, -11.93, -23.78, -20.1, -4.68, 10.22, 20.07, 35.56, 71.79, 78.82, 82.61, 82.61, 79.56, 80.24, 78.92, 77.38, 81.41, 80.87, 74.19, 74.19], "lstm": [99.85, 100.4, 88.31, 79.77, 71.71, 66.05, 65.85, 72.43, 66.56, 78.46, 78.85, 67.82, 41.07, 21.42, 4.11, -9.74, -18.39, -20.28, -21.12, -25.02, -32.72, -30.37, -31.4, -35.33, -33.84, -35.33, -39.77, -37.79, -38.61, -25.09, -24.34, -19.63, -11.49, -0.99, 15.41, 43.57, 63.48, 96.68, 95.02, 92.07, 88.99, 76.39, 78.5, 70.45, 74.04, 59.2, 71.65, 69.33]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 4.38, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-114.16, -245.29, -79.24, 50.89, 50.89, -76.66, -205.61, -318.85, -365.03, -203.66, -36.1, 119.67, 119.67, 119.67, 134.91, 150.85, 159.2, 147.53, 166.69, 188.35, 204.61, 208.53, 211.86, 211.86, 217.22, 225.18, 233.85, 246.66, 259.67, 275.37, 300.18, 300.72, 300.72, 300.72, 300.72, 300.72, 300.72, 582.67, 886.62, 1163.32, 1432.93, 1432.93, 1432.93, 1432.93, 1432.93, 1432.93, 1432.93, 1432.93], "profit_aud": 1432.93}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.0, 2.12, 3.25, 3.12, 1.88, 3.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-114.16, -114.16, -114.16, 32.23, 32.23, 32.23, 17.79, -95.45, -95.45, -95.45, 72.12, 72.12, 72.12, 69.67, 84.91, 100.85, 114.77, 106.98, 87.82, 66.16, 80.8, 76.88, 82.44, 82.44, 87.79, 79.83, 71.15, 58.35, 71.36, 55.67, 80.48, 85.9, 78.96, 67.53, 53.46, 31.42, 31.42, 31.42, 335.37, 335.37, 335.37, 335.37, 335.37, 526.41, 735.79, 946.19, 946.19, 946.19], "profit_aud": 946.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 0.0, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -127.55, -256.5, -369.74, -415.92, -254.55, -86.99, 68.78, 68.78, 68.78, 68.78, 68.78, 68.78, 80.45, 63.44, 65.6, 67.23, 66.84, 72.4, 77.41, 72.05, 64.09, 59.75, 48.38, 61.4, 45.7, 70.51, 71.6, 64.65, 64.65, 64.65, 64.65, 64.65, 64.65, 368.6, 645.3, 645.3, 645.3, 645.3, 645.3, 854.68, 1065.08, 1065.08, 1065.08], "profit_aud": 1065.08}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -127.55, -256.5, -256.5, -287.66, -126.29, 41.28, 41.28, 41.28, 41.28, 41.28, 42.87, 44.26, 45.43, 47.34, 49.51, 54.39, 54.39, 54.39, 57.4, 57.4, 49.43, 40.76, 53.56, 66.58, 68.15, 70.63, 71.17, 64.23, 52.8, 52.8, 52.8, 52.8, 334.75, 638.7, 915.4, 1185.01, 1185.01, 1185.01, 1185.01, 1185.01, 974.61, 1161.84, 1161.84], "profit_aud": 1161.84}}} \ No newline at end of file diff --git a/results/daily/2025-12-18.json b/results/daily/2025-12-18.json new file mode 100644 index 0000000..a340752 --- /dev/null +++ b/results/daily/2025-12-18.json @@ -0,0 +1 @@ +{"date": "2025-12-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [166.84, 142.09, 161.66, 148.18, 138.72, 136.22, 133.63, 132.4, 132.18, 138.93, 139.65, 100.11, 48.31, 11.51, -7.54, -9.3, -9.0, -14.84, -52.7, -22.41, -54.17, -18.66, -7.91, -4.65, -6.25, -1.07, 48.0, 11.84, -3.64, -8.29, 13.94, 106.3, 153.41, 95.55, 191.09, 223.56, 254.03, 316.89, 293.6, 228.82, 222.93, 183.92, 178.59, 182.91, 166.38, 151.19, 172.01, 149.28], "forecast_price": {"naive": [91.33, 104.9, 132.84, 130.13, 129.04, 102.04, 103.16, 90.59, 111.29, 129.1, 134.05, 124.62, 68.74, 19.6, -12.19, -12.75, -11.14, -9.33, -15.33, -17.33, -13.01, 3.13, -4.44, -4.01, 4.28, 6.37, 6.94, -10.24, -10.41, -12.56, -19.85, -4.34, 55.53, 91.44, 112.6, 176.27, 188.5, 225.56, 243.16, 221.36, 215.69, 168.74, 153.85, 152.83, 167.5, 168.32, 166.43, 169.46], "lightgbm": [79.44, 80.71, 80.15, 70.0, 68.91, 63.68, 63.26, 61.09, 61.91, 64.23, 68.12, 65.33, 55.77, 49.99, 27.28, 10.21, 1.4, 3.94, -4.71, -10.13, -12.56, -7.15, -7.33, -7.56, -6.13, -7.11, -3.82, -13.48, -13.03, -14.86, -10.49, 4.69, 30.43, 41.83, 62.64, 87.74, 109.45, 121.84, 132.18, 121.84, 121.9, 114.6, 103.08, 98.91, 102.58, 103.13, 102.58, 104.28], "lstm": [132.63, 129.09, 115.94, 107.11, 99.21, 94.94, 95.2, 110.31, 98.67, 97.53, 104.6, 88.93, 68.96, 55.44, 40.57, 28.26, 26.59, 21.94, 19.57, 10.92, 6.11, 7.93, 12.79, 9.66, 19.21, 19.03, 15.23, 14.74, 18.66, 27.07, 29.0, 45.89, 44.48, 58.47, 67.07, 109.78, 116.23, 160.17, 160.12, 139.82, 121.33, 113.6, 106.78, 103.79, 100.21, 91.82, 95.55, 103.86]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, -177.61, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 5.21, 7.53, 7.53, 16.81, 82.68, 110.7, 178.41, 201.74, 202.73, 197.57, 205.38, 205.51, 265.51, 277.35, 281.9, 292.27, 292.27, 292.27, 464.86, 345.42, 345.42, 345.42, 662.96, 1059.07, 1426.07, 1712.09, 1712.09, 1712.09, 1712.09, 1712.09, 1712.09, 1523.11, 1716.62, 1716.62], "profit_aud": 1716.62}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 4.38, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-208.55, -386.16, -184.08, -35.89, -35.89, -206.16, -373.2, -538.69, -593.55, -419.88, -245.33, -120.19, -120.19, -120.19, -110.76, -99.13, -92.38, -110.93, -45.06, -17.04, 50.67, 27.34, 33.27, 33.27, 25.46, 24.13, 84.13, 69.33, 73.89, 84.25, 66.83, 53.54, 53.54, 53.54, 53.54, 53.54, 53.54, 449.65, 816.64, 1102.67, 1381.34, 1381.34, 1381.34, 1381.34, 1381.34, 1381.34, 1381.34, 1381.34], "profit_aud": 1381.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 1.88, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -165.49, -165.49, -165.49, -8.39, -8.39, -8.39, -8.39, -8.39, -8.39, 2.86, -13.84, -7.25, 20.76, 88.47, 88.47, 88.47, 94.29, 86.47, 86.47, 146.47, 131.68, 136.23, 146.6, 129.17, 129.17, 129.17, 129.17, 129.17, 129.17, 129.17, 525.28, 892.28, 1178.31, 1456.97, 1456.97, 1456.97, 1456.97, 1456.97, 1456.97, 1456.97, 1456.97], "profit_aud": 1456.97}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -170.27, -188.98, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, -23.49, 4.53, 72.24, 95.57, 99.96, 105.77, 97.96, 96.89, 36.89, 22.1, 22.1, 22.1, 22.1, 22.1, 22.1, 22.1, 22.1, 22.1, 22.1, 418.21, 785.2, 1071.23, 1349.9, 1349.9, 1349.9, 1349.9, 1349.9, 1160.91, 1160.91, 1328.85], "profit_aud": 1328.85}}} \ No newline at end of file diff --git a/results/daily/2025-12-19.json b/results/daily/2025-12-19.json new file mode 100644 index 0000000..e8b8abd --- /dev/null +++ b/results/daily/2025-12-19.json @@ -0,0 +1 @@ +{"date": "2025-12-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [167.34, 164.88, 142.98, 115.53, 115.69, 106.1, 101.04, 83.35, 78.41, 78.58, 77.15, 66.44, 76.54, 37.93, 45.64, 57.01, 35.44, 59.66, 38.73, 23.1, -5.83, -7.0, -12.11, -27.88, -8.12, -15.91, -6.38, -9.02, 8.67, 2.31, -7.9, -7.54, -7.0, -4.17, 26.07, 72.71, 95.77, 123.8, 122.94, 122.89, 122.71, 116.59, 112.45, 111.39, 115.6, 117.52, 118.76, 123.3], "forecast_price": {"naive": [166.84, 142.09, 161.66, 148.18, 138.72, 136.22, 133.63, 132.4, 132.18, 138.93, 139.65, 100.11, 48.31, 11.51, -7.54, -9.3, -9.0, -14.84, -52.7, -22.41, -54.17, -18.66, -7.91, -4.65, -6.25, -1.07, 48.0, 11.84, -3.64, -8.29, 13.94, 106.3, 153.41, 95.55, 191.09, 223.56, 254.03, 316.89, 293.6, 228.82, 222.93, 183.92, 178.59, 182.91, 166.38, 151.19, 172.01, 149.28], "lightgbm": [83.23, 80.3, 87.52, 72.02, 66.51, 60.57, 60.08, 56.62, 57.22, 60.24, 60.14, 53.32, 50.22, 41.97, 11.58, 2.99, -2.26, -5.84, -22.29, -13.56, -27.61, -13.09, -6.9, -5.03, -5.82, -4.55, 9.99, 0.01, -1.43, 4.14, 13.2, 35.46, 56.95, 51.05, 103.81, 122.76, 129.55, 147.27, 138.99, 124.38, 121.69, 109.2, 105.64, 104.78, 99.87, 96.77, 101.38, 92.62], "lstm": [102.97, 93.12, 86.93, 82.22, 76.24, 76.3, 71.15, 82.48, 79.21, 73.04, 81.01, 72.33, 56.42, 35.81, 26.42, 22.13, 19.73, 16.57, 8.7, 5.17, 4.31, 8.65, 14.1, 11.89, 17.67, 20.96, 16.83, 19.0, 26.64, 31.07, 37.73, 47.03, 44.07, 54.0, 53.65, 78.07, 88.71, 118.63, 134.78, 119.85, 110.18, 105.2, 101.26, 91.62, 95.7, 100.51, 96.88, 100.29]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -83.05, 3.05, -44.36, -57.14, 14.12, -30.19, 44.39, 44.39, 44.39, 45.12, 45.99, 61.13, 95.99, 106.14, 126.03, 122.49, 133.77, 144.61, 147.49, 157.37, 166.8, 169.43, 169.95, 169.95, 169.95, 169.95, 324.69, 478.37, 631.99, 631.99, 631.99, 631.99, 631.99, 631.99, 631.99, 631.99, 786.12], "profit_aud": 786.12}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, -206.1, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -45.25, -50.96, -65.21, -65.21, -102.5, -150.91, -179.78, -172.49, -163.74, -162.22, -193.17, -183.02, -181.03, -189.01, -198.03, -208.87, -211.76, -211.76, -211.76, -219.63, -214.42, -214.42, -214.42, -94.71, 60.04, 213.72, 367.33, 367.33, 367.33, 367.33, 367.33, 367.33, 220.44, 354.04, 354.04], "profit_aud": 354.04}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.43, -11.89, -60.3, -89.17, -81.88, -73.13, -65.56, -96.51, -86.36, -84.37, -92.35, -91.08, -101.92, -101.92, -101.92, -101.92, -109.8, -104.59, -104.59, -104.59, 15.12, 169.87, 323.55, 477.16, 477.16, 477.16, 477.16, 477.16, 477.16, 477.16, 477.16, 477.16], "profit_aud": 477.16}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -126.3, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -32.53, -80.94, -109.81, -102.52, -93.77, -101.34, -66.48, -66.48, -84.38, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, -76.4, 78.34, 232.02, 385.64, 539.03, 539.03, 539.03, 539.03, 539.03, 539.03, 539.03, 539.03], "profit_aud": 539.03}}} \ No newline at end of file diff --git a/results/daily/2025-12-20.json b/results/daily/2025-12-20.json new file mode 100644 index 0000000..01a1d49 --- /dev/null +++ b/results/daily/2025-12-20.json @@ -0,0 +1 @@ +{"date": "2025-12-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [122.69, 126.93, 128.55, 121.65, 112.44, 103.91, 99.49, 106.96, 102.61, 110.97, 131.63, 99.08, 117.6, 342.34, 51.18, -38.43, -24.98, -11.16, -12.15, -25.68, -30.16, -26.07, -13.21, -18.3, -86.3, -82.77, -82.0, -150.86, -81.55, -35.95, -217.58, -88.86, -21.8, 7.34, 27.46, 66.12, 110.76, 147.16, 141.3, 142.07, 139.67, 129.76, 112.76, 135.28, 124.82, 136.43, 164.18, 159.72], "forecast_price": {"naive": [167.34, 164.88, 142.98, 115.53, 115.69, 106.1, 101.04, 83.35, 78.41, 78.58, 77.15, 66.44, 76.54, 37.93, 45.64, 57.01, 35.44, 59.66, 38.73, 23.1, -5.83, -7.0, -12.11, -27.88, -8.12, -15.91, -6.38, -9.02, 8.67, 2.31, -7.9, -7.54, -7.0, -4.17, 26.07, 72.71, 95.77, 123.8, 122.94, 122.89, 122.71, 116.59, 112.45, 111.39, 115.6, 117.52, 118.76, 123.3], "lightgbm": [84.91, 84.91, 79.21, 75.38, 73.67, 71.87, 71.65, 69.39, 67.33, 69.36, 62.43, 59.2, 58.06, 44.58, 39.97, 30.04, 19.11, 23.82, 5.17, -4.37, -9.74, -10.08, -19.04, -24.15, -14.16, -20.71, -10.13, -17.68, -8.81, -10.63, -9.03, 3.18, 7.93, 13.14, 33.17, 66.42, 84.04, 94.74, 94.74, 94.74, 95.23, 90.84, 84.45, 82.71, 85.38, 85.38, 85.38, 86.31], "lstm": [119.39, 120.19, 101.64, 87.8, 86.17, 80.5, 79.08, 85.93, 76.6, 80.71, 82.42, 63.33, 39.1, 13.52, 1.59, -10.37, -14.6, -20.79, -23.45, -29.43, -37.62, -33.18, -31.08, -35.91, -32.27, -29.53, -35.81, -33.72, -35.66, -26.91, -18.51, -9.68, -4.14, -1.29, 8.04, 34.16, 50.12, 74.99, 91.87, 93.43, 89.9, 85.0, 80.31, 80.69, 79.98, 74.95, 77.37, 85.61]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 1.5, 2.62, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -43.12, -167.48, -167.48, -295.74, -295.74, -131.21, -255.06, -108.06, 319.86, 319.86, 367.9, 399.13, 385.17, 373.38, 383.01, 420.71, 453.3, 436.78, 413.9, 521.78, 625.24, 696.99, 885.57, 885.57, 840.62, 1112.6, 1223.67, 1226.4, 1226.4, 1226.4, 1226.4, 1226.4, 1410.35, 1586.97, 1764.55, 1904.22, 1904.22, 1763.27, 1763.27, 1607.25, 1607.25, 1812.46, 2012.12], "profit_aud": 2012.12}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -123.86, 8.44, -419.48, -433.81, -481.85, -450.62, -464.58, -464.58, -464.58, -460.81, -457.55, -441.03, -418.15, -310.28, -206.82, -252.33, -63.75, -165.68, -210.62, 61.35, 172.43, 180.6, 179.68, 179.68, 179.68, 179.68, 363.63, 540.25, 717.83, 717.83, 717.83, 717.83, 717.83, 717.83, 717.83, 717.83, 917.49], "profit_aud": 917.49}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.23, 18.67, 18.67, 21.88, 25.65, 28.91, 45.42, 68.3, 176.18, 279.64, 234.13, 422.71, 332.19, 377.13, 404.33, 404.33, 404.33, 404.33, 404.33, 404.33, 404.33, 588.28, 764.9, 942.48, 1117.07, 1117.07, 1117.07, 1117.07, 1117.07, 1117.07, 1117.07, 1117.07], "profit_aud": 1117.07}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.0, 1.88, 3.0, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.8, 7.93, 9.32, 10.84, 14.05, 51.75, 77.82, 77.82, 100.7, 100.7, -2.76, 99.74, 288.32, 390.26, 394.75, 421.95, 433.06, 435.78, 434.86, 434.86, 434.86, 434.86, 434.86, 611.48, 789.07, 963.66, 1109.63, 1109.63, 1109.63, 1109.63, 939.1, 939.1, 1138.75], "profit_aud": 1138.75}}} \ No newline at end of file diff --git a/results/daily/2025-12-21.json b/results/daily/2025-12-21.json new file mode 100644 index 0000000..a913fce --- /dev/null +++ b/results/daily/2025-12-21.json @@ -0,0 +1 @@ +{"date": "2025-12-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [192.52, 168.37, 150.11, 124.09, 117.83, 109.81, 113.5, 98.15, 90.95, 80.29, 61.32, 29.45, 8.13, 24.99, 16.22, -1.38, -4.14, -5.13, -2.46, -7.0, -7.09, -41.43, -76.82, -51.35, -33.73, -64.76, -27.7, -51.0, -28.54, -15.64, -8.85, -20.09, -20.09, -83.52, -44.68, -9.41, -9.39, -6.31, -3.46, 15.59, 14.13, 7.87, 8.76, 14.85, 44.52, 54.51, 68.26, 71.68], "forecast_price": {"naive": [122.69, 126.93, 128.55, 121.65, 112.44, 103.91, 99.49, 106.96, 102.61, 110.97, 131.63, 99.08, 117.6, 342.34, 51.18, -38.43, -24.98, -11.16, -12.15, -25.68, -30.16, -26.07, -13.21, -18.3, -86.3, -82.77, -82.0, -150.86, -81.55, -35.95, -217.58, -88.86, -21.8, 7.34, 27.46, 66.12, 110.76, 147.16, 141.3, 142.07, 139.67, 129.76, 112.76, 135.28, 124.82, 136.43, 164.18, 159.72], "lightgbm": [49.52, 49.69, 47.59, 44.51, 46.87, 52.31, 52.31, 50.35, 51.74, 50.12, 42.22, 49.23, 39.28, 33.37, 23.45, -3.09, -13.31, -10.39, -12.87, -18.28, -22.72, -22.26, -20.62, -18.82, -39.82, -41.65, -39.82, -39.82, -37.23, -23.78, -38.25, -35.2, -12.0, 12.74, 23.77, 51.66, 70.02, 80.46, 80.05, 80.05, 80.73, 72.15, 69.61, 74.94, 70.29, 74.94, 76.34, 77.95], "lstm": [195.36, 191.89, 178.28, 154.26, 141.61, 143.54, 145.65, 149.23, 124.17, 135.73, 125.92, 95.3, 64.59, 40.73, 23.1, 7.18, -0.57, -4.78, -1.36, -13.37, -21.61, -22.23, -19.14, -24.7, -22.04, -21.36, -31.18, -31.13, -20.65, -13.98, -8.24, 6.75, 15.78, 31.19, 50.1, 83.51, 99.78, 123.27, 129.13, 125.34, 122.95, 108.38, 96.8, 91.01, 95.9, 88.64, 88.75, 102.56]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -10.16, 17.96, 17.96, 18.13, 19.16, 25.58, 22.51, 23.38, 24.27, 76.05, 172.08, 236.27, 257.35, 338.29, 307.55, 371.3, 374.87, 355.32, 344.26, 344.26, 354.31, 458.7, 514.55, 515.72, 516.9, 517.68, 518.12, 537.61, 551.74, 541.89, 530.95, 530.95, 586.6, 654.74, 740.07, 829.66], "profit_aud": 829.66}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 1.5, 2.62, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -45.57, -187.44, -187.44, -301.13, -301.13, -224.48, -261.29, -251.13, -219.89, -219.89, -218.17, -213.0, -219.41, -221.8, -219.17, -210.31, -158.53, -254.55, -318.74, -276.57, -195.63, -171.39, -107.64, -107.64, -127.19, -116.13, -91.02, -88.51, -88.51, -88.51, -88.51, -88.51, -96.4, -100.72, -81.23, -67.1, -67.1, -78.04, -78.04, -133.69, -133.69, -48.37, 41.23], "profit_aud": 41.23}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -155.11, -302.4, -165.14, -51.64, -51.64, -51.64, -51.64, -128.29, -95.16, -95.16, -95.16, -95.16, -94.99, -89.82, -95.51, -95.21, -94.33, -85.47, -69.94, -69.94, -134.13, -91.96, -11.02, 23.6, 87.35, 105.2, 85.65, 96.71, 101.73, 104.24, 104.24, 104.24, 104.24, 104.24, 96.35, 92.03, 111.52, 129.18, 129.18, 118.24, 118.24, 118.24, 118.24, 118.24, 198.88], "profit_aud": 198.88}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.75, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.75, 1.88, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.52, 6.93, 4.21, 5.08, 11.28, 63.07, -32.95, 31.24, 73.4, 73.4, 108.02, 171.77, 175.34, 177.29, 178.4, 178.4, 178.4, 178.4, 178.4, 178.4, 178.4, 170.51, 166.19, 185.68, 203.34, 203.34, 203.34, 203.34, 203.34, 135.2, 125.65, 215.24], "profit_aud": 215.24}}} \ No newline at end of file diff --git a/results/daily/2025-12-22.json b/results/daily/2025-12-22.json new file mode 100644 index 0000000..d12c721 --- /dev/null +++ b/results/daily/2025-12-22.json @@ -0,0 +1 @@ +{"date": "2025-12-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [68.96, 78.23, 81.32, 75.85, 82.83, 87.75, 98.23, 98.97, 102.77, 85.17, 80.02, 47.93, 33.5, 147.78, -3.92, -28.28, -15.68, -12.56, -16.33, -68.55, -81.98, -45.3, -91.01, -92.14, -85.85, -43.96, -23.82, -129.14, -160.09, -215.59, -144.24, -185.4, -229.61, -100.81, -20.26, -36.55, -84.87, 13.6, 84.26, 88.07, 94.73, 72.24, 71.58, 79.42, 76.75, 71.3, 73.18, 67.85], "forecast_price": {"naive": [192.52, 168.37, 150.11, 124.09, 117.83, 109.81, 113.5, 98.15, 90.95, 80.29, 61.32, 29.45, 8.13, 24.99, 16.22, -1.38, -4.14, -5.13, -2.46, -7.0, -7.09, -41.43, -76.82, -51.35, -33.73, -64.76, -27.7, -51.0, -28.54, -15.64, -8.85, -20.09, -20.09, -83.52, -44.68, -9.41, -9.39, -6.31, -3.46, 15.59, 14.13, 7.87, 8.76, 14.85, 44.52, 54.51, 68.26, 71.68], "lightgbm": [61.05, 60.71, 59.92, 55.0, 55.84, 53.09, 53.55, 52.17, 50.65, 51.08, 53.71, 49.4, 53.77, 49.68, 31.03, 17.9, 13.56, 11.53, 9.15, 4.6, 3.29, -20.95, -25.57, -24.84, -15.04, -27.42, -15.04, -26.67, -15.04, -7.77, -0.7, -3.02, 1.06, -9.7, -3.32, 34.95, 45.37, 51.36, 54.5, 56.73, 56.73, 54.48, 53.66, 52.39, 51.9, 55.22, 61.44, 62.55], "lstm": [65.77, 64.53, 59.04, 49.03, 50.16, 46.44, 52.11, 57.54, 60.56, 70.49, 85.25, 73.07, 50.7, 32.62, 15.46, 1.39, -5.73, -15.18, -15.51, -22.63, -24.64, -23.9, -26.91, -27.66, -27.08, -27.7, -37.41, -36.1, -41.04, -38.97, -36.73, -29.6, -29.16, -19.62, -15.62, 6.9, 28.89, 54.86, 70.94, 71.45, 77.31, 77.12, 75.27, 71.65, 65.76, 62.75, 72.71, 79.67]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.0, 2.5, 2.25, 2.0, 0.0, 2.5, 0.0, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-86.2, -184.0, -217.74, -312.56, -312.56, -312.56, -189.77, -66.06, 62.4, 62.4, 62.4, 55.69, 13.82, 198.54, 199.03, 234.38, 238.3, 222.6, 224.64, 241.78, 344.26, 287.63, 401.4, 516.58, 548.77, 493.81, 464.04, 480.18, 680.3, 949.79, 1039.94, 1271.68, 1558.7, 1571.3, 1545.97, 1555.11, 1661.19, 1661.19, 1766.52, 1876.6, 1995.01, 1995.01, 1995.01, 2094.29, 2094.29, 2094.29, 2094.29, 2094.29], "profit_aud": 2094.29}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -41.87, 124.38, 124.38, 127.91, 131.83, 147.53, 127.12, 135.69, 145.93, 202.56, 316.32, 431.5, 485.15, 540.11, 513.67, 675.1, 695.11, 425.63, 245.33, 245.33, 360.13, 486.15, 511.48, 516.04, 526.65, 524.95, 514.42, 624.51, 719.23, 628.93, 539.45, 539.45, 635.39, 724.52, 816.0, 900.81], "profit_aud": 900.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 2.25, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 3.88, 5.0, 5.0, 5.0, 3.75, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 56.62, 170.39, 285.57, 285.57, 340.52, 330.64, 492.07, 512.08, 539.03, 358.73, 428.25, 141.23, 267.25, 292.58, 292.58, 292.58, 292.58, 292.58, 402.66, 521.07, 521.07, 521.07, 521.07, 521.07, 521.07, 612.55, 697.36], "profit_aud": 697.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 2.38, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -94.82, -198.35, -308.04, -430.83, -430.83, -353.75, -247.29, -147.27, -87.36, -87.36, -87.36, -87.36, -87.36, -85.4, -83.83, -81.79, -73.22, -52.72, -52.72, -41.35, -18.31, -18.31, -12.81, 16.96, 97.67, 297.79, 567.28, 747.58, 770.75, 799.45, 812.05, 814.59, 814.59, 814.59, 814.59, 814.59, 814.59, 932.99, 1023.3, 1112.77, 1112.77, 1112.77, 1023.65, 1105.98, 1190.79], "profit_aud": 1190.79}}} \ No newline at end of file diff --git a/results/daily/2025-12-23.json b/results/daily/2025-12-23.json new file mode 100644 index 0000000..e6be397 --- /dev/null +++ b/results/daily/2025-12-23.json @@ -0,0 +1 @@ +{"date": "2025-12-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [72.51, 86.2, 72.5, 54.89, 45.71, 45.5, 47.04, 44.12, 59.29, 74.4, 57.05, 26.88, 29.63, 80.85, 9.34, -12.89, -75.96, -12.85, -13.01, -26.39, -65.54, -91.18, -59.85, -97.89, -55.31, -72.45, -92.84, -92.66, -99.7, -81.08, -60.97, -56.77, -81.73, -120.73, -56.74, -15.53, -9.02, 31.77, 26.39, 41.22, 39.46, 12.16, 10.81, 11.22, 14.19, 37.57, 50.12, 51.28], "forecast_price": {"naive": [68.96, 78.23, 81.32, 75.85, 82.83, 87.75, 98.23, 98.97, 102.77, 85.17, 80.02, 47.93, 33.5, 147.78, -3.92, -28.28, -15.68, -12.56, -16.33, -68.55, -81.98, -45.3, -91.01, -92.14, -85.85, -43.96, -23.82, -129.14, -160.09, -215.59, -144.24, -185.4, -229.61, -100.81, -20.26, -36.55, -84.87, 13.6, 84.26, 88.07, 94.73, 72.24, 71.58, 79.42, 76.75, 71.3, 73.18, 67.85], "lightgbm": [52.2, 60.29, 58.56, 54.54, 58.79, 58.18, 60.14, 60.14, 58.99, 57.56, 56.55, 46.91, 45.75, 62.79, 14.58, 2.88, 0.11, -1.07, -4.91, -11.01, -18.25, -21.55, -24.1, -24.1, -23.11, -19.98, -12.79, -24.1, -23.11, -19.4, -16.81, -16.0, -11.77, -0.49, 20.08, 19.82, 24.51, 58.03, 85.94, 90.56, 94.11, 77.38, 76.58, 79.82, 78.4, 74.26, 74.77, 71.26], "lstm": [97.71, 90.48, 84.01, 71.29, 72.18, 68.69, 70.96, 76.08, 71.25, 81.34, 86.69, 81.03, 51.65, 31.96, 15.92, -4.51, -14.76, -11.82, -17.84, -23.99, -23.65, -21.54, -25.48, -26.25, -20.81, -29.82, -36.66, -29.06, -33.53, -31.22, -28.74, -22.23, -22.68, -12.55, -9.9, 17.86, 42.01, 82.37, 82.1, 92.47, 88.0, 85.45, 85.08, 74.44, 77.29, 67.57, 85.36, 82.77]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-90.63, 6.34, 6.34, 6.34, -50.79, -107.66, -127.18, -182.33, -108.22, -15.21, 56.1, 22.5, 18.35, 119.41, 119.41, 121.02, 215.96, 203.5, 203.5, 206.8, 214.99, 328.97, 270.92, 393.27, 324.14, 369.42, 485.47, 601.29, 725.92, 827.26, 768.12, 697.16, 799.31, 950.22, 957.32, 959.26, 960.38, 1000.1, 1033.08, 1084.61, 1133.93, 1118.73, 1105.21, 1091.19, 1085.3, 1132.25, 1194.91, 1259.01], "profit_aud": 1259.01}, "naive": {"charge_mw": [2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.0, 2.5, 2.25, 2.0, 0.0, 2.5, 0.0, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-90.63, -198.38, -228.47, -297.09, -297.09, -297.09, -238.29, -183.14, -109.02, -109.02, -109.02, -112.78, -149.82, -48.76, -49.93, -33.82, -14.83, -30.89, -29.26, -22.66, 59.26, -54.72, 20.09, 142.45, 163.19, 72.63, -43.42, -31.84, 92.79, 194.14, 232.24, 303.21, 405.36, 420.45, 349.53, 353.41, 364.68, 364.68, 397.67, 449.19, 498.51, 498.51, 498.51, 512.54, 512.54, 512.54, 512.54, 512.54], "profit_aud": 512.54}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.75, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-90.63, 6.34, 6.34, 6.34, 6.34, 6.34, 6.34, 6.34, 6.34, 6.34, 6.34, 2.58, -34.45, 66.6, 66.6, 66.6, 66.6, 68.21, 69.83, 73.13, 81.32, 161.11, 235.92, 358.28, 427.41, 427.41, 311.36, 427.18, 551.8, 561.94, 569.56, 576.66, 586.87, 601.96, 601.96, 601.96, 601.96, 601.96, 634.95, 686.48, 735.8, 735.8, 735.8, 749.82, 749.82, 749.82, 749.82, 749.82], "profit_aud": 749.82}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 2.0, 0.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.38, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -22.78, -22.78, -79.65, -138.46, -138.46, -212.57, -119.57, -48.26, -14.66, -14.66, -14.66, -14.66, -13.05, 81.89, 67.63, 69.26, 102.24, 102.24, 13.8, 28.76, 151.12, 81.98, 172.54, 288.6, 346.51, 471.13, 572.48, 580.1, 580.1, 600.53, 615.62, 622.72, 622.72, 622.72, 622.72, 622.72, 674.24, 723.56, 738.77, 752.29, 738.26, 738.26, 691.31, 753.96, 805.25], "profit_aud": 805.25}}} \ No newline at end of file diff --git a/results/daily/2025-12-24.json b/results/daily/2025-12-24.json new file mode 100644 index 0000000..95f8ec8 --- /dev/null +++ b/results/daily/2025-12-24.json @@ -0,0 +1 @@ +{"date": "2025-12-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [26.38, 38.25, 30.86, 33.24, 17.93, 24.57, 24.45, 26.34, 32.31, 28.41, 28.83, 16.35, -1.95, 29.45, 14.41, -7.67, -8.28, -8.5, -10.77, -13.94, -13.54, -24.18, -56.51, -36.53, -71.65, -51.04, -51.7, -64.33, -134.85, -81.54, -52.46, -53.14, -53.79, -65.38, -92.3, -30.03, -21.58, -7.04, -1.7, -2.32, -0.33, 5.06, 4.53, 0.0, -2.65, -2.55, -0.86, -0.68], "forecast_price": {"naive": [72.51, 86.2, 72.5, 54.89, 45.71, 45.5, 47.04, 44.12, 59.29, 74.4, 57.05, 26.88, 29.63, 80.85, 9.34, -12.89, -75.96, -12.85, -13.01, -26.39, -65.54, -91.18, -59.85, -97.89, -55.31, -72.45, -92.84, -92.66, -99.7, -81.08, -60.97, -56.77, -81.73, -120.73, -56.74, -15.53, -9.02, 31.77, 26.39, 41.22, 39.46, 12.16, 10.81, 11.22, 14.19, 37.57, 50.12, 51.28], "lightgbm": [44.48, 44.38, 44.23, 44.55, 35.22, 35.37, 37.56, 34.88, 44.02, 44.53, 52.49, 35.26, 32.22, 40.84, 8.81, -2.29, -16.11, -6.11, -7.37, -13.23, -23.83, -25.34, -25.9, -25.9, -24.41, -25.42, -24.58, -26.35, -26.35, -26.08, -23.9, -19.55, -6.97, -2.47, 8.64, 32.18, 42.01, 53.97, 58.46, 59.46, 60.4, 57.38, 56.32, 55.08, 55.79, 56.16, 62.5, 63.15], "lstm": [75.89, 69.56, 63.89, 53.41, 50.73, 45.71, 49.1, 58.35, 53.62, 64.43, 74.83, 62.57, 42.26, 28.44, 13.67, 0.92, -5.09, -5.32, -8.34, -12.76, -16.25, -14.0, -14.97, -16.72, -12.49, -15.16, -19.47, -17.73, -17.24, -9.68, -9.89, -1.93, -5.14, 4.56, 12.81, 37.28, 57.1, 90.16, 95.73, 90.89, 91.56, 82.46, 82.89, 70.83, 76.07, 62.0, 79.45, 75.67]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [-32.97, 10.07, 10.07, 10.07, -12.35, -43.06, -73.63, -73.63, -33.24, -8.38, 27.66, 25.37, 27.81, 64.62, 64.62, 65.58, 66.61, 67.67, 69.02, 72.51, 72.51, 75.53, 146.16, 105.61, 195.17, 145.67, 145.67, 226.09, 394.65, 496.57, 481.88, 481.88, 481.88, 563.61, 678.98, 682.73, 685.43, 686.31, 684.42, 687.32, 687.09, 693.42, 699.08, 699.08, 702.39, 705.58, 706.66, 707.52], "profit_aud": 707.52}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-32.97, 10.07, 10.07, 10.07, -12.35, -43.06, -53.21, -86.14, -45.75, -10.24, 25.8, 5.37, 5.64, 42.45, 42.45, 43.41, 53.76, 45.52, 45.52, 47.26, 48.95, 79.17, 24.36, 70.03, -19.54, 12.36, 76.99, 157.41, 325.97, 427.89, 377.0, 310.57, 377.81, 459.53, 471.07, 474.82, 477.52, 468.72, 466.59, 463.69, 463.28, 456.96, 451.3, 451.3, 452.4, 449.21, 448.13, 447.27], "profit_aud": 447.27}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -22.42, -53.13, -63.28, -96.2, -55.82, -20.31, 15.73, 13.45, 15.89, 52.69, 52.69, 53.65, 64.0, 54.57, 55.92, 57.66, 59.35, 62.37, 133.01, 169.55, 169.55, 169.55, 169.55, 249.96, 418.53, 520.45, 527.01, 533.65, 540.37, 548.55, 548.55, 548.55, 548.55, 548.55, 548.55, 545.65, 545.24, 545.24, 545.24, 545.24, 545.24, 545.24, 544.15, 543.3], "profit_aud": 543.3}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0, 2.5, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 2.0, 0.75, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -13.8, -36.21, -66.93, -97.49, -97.49, -97.49, -61.98, -25.94, -5.5, -5.5, -5.5, -5.5, -5.5, -4.47, -3.41, -2.06, -0.32, 16.6, 16.6, 16.6, 62.27, -27.29, 23.75, 88.37, 168.79, 337.36, 337.36, 350.47, 291.48, 358.72, 358.72, 358.72, 358.72, 358.72, 349.92, 347.79, 344.89, 344.48, 344.48, 344.48, 344.48, 344.48, 347.67, 346.59, 346.59], "profit_aud": 346.59}}} \ No newline at end of file diff --git a/results/daily/2025-12-25.json b/results/daily/2025-12-25.json new file mode 100644 index 0000000..6726a08 --- /dev/null +++ b/results/daily/2025-12-25.json @@ -0,0 +1 @@ +{"date": "2025-12-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.54, -2.67, -2.68, -4.63, -7.0, -7.29, -7.9, -7.9, -7.53, -7.1, -2.61, -7.77, -12.87, -27.22, -123.09, -181.67, -223.07, -162.98, -191.87, -204.25, -187.32, -143.81, -183.12, -174.17, -233.22, -264.98, -250.18, -251.49, -213.92, -196.13, -181.23, -163.09, -106.73, -65.85, -57.85, -38.15, -28.65, -12.71, -10.97, -6.72, -6.2, -7.09, -7.54, -8.11, -7.14, -7.36, -7.03, -5.11], "forecast_price": {"naive": [26.38, 38.25, 30.86, 33.24, 17.93, 24.57, 24.45, 26.34, 32.31, 28.41, 28.83, 16.35, -1.95, 29.45, 14.41, -7.67, -8.28, -8.5, -10.77, -13.94, -13.54, -24.18, -56.51, -36.53, -71.65, -51.04, -51.7, -64.33, -134.85, -81.54, -52.46, -53.14, -53.79, -65.38, -92.3, -30.03, -21.58, -7.04, -1.7, -2.32, -0.33, 5.06, 4.53, 0.0, -2.65, -2.55, -0.86, -0.68], "lightgbm": [12.84, 14.3, 12.79, 15.74, 13.41, 13.63, 13.63, 13.85, 15.31, 14.06, 17.45, 15.87, 5.29, 6.69, -0.32, -12.18, -14.14, -14.95, -18.87, -22.41, -22.09, -25.08, -42.36, -28.05, -42.36, -40.67, -30.15, -41.03, -41.84, -42.36, -36.65, -23.52, -16.85, -11.51, -0.23, 17.82, 35.71, 46.06, 46.22, 46.36, 46.36, 47.67, 47.07, 46.46, 46.46, 46.6, 44.94, 44.94], "lstm": [14.59, 15.95, 8.23, 4.36, -0.42, -3.84, -2.52, 2.37, 3.21, 10.44, 14.01, 14.0, 1.52, -13.11, -26.54, -48.36, -54.5, -60.61, -60.7, -57.19, -63.96, -62.81, -65.96, -67.93, -63.96, -69.33, -76.81, -67.93, -69.94, -60.43, -58.2, -50.86, -53.3, -35.39, -23.76, -6.8, 12.13, 38.99, 50.77, 48.62, 45.42, 41.64, 37.74, 36.62, 30.75, 28.31, 39.95, 38.29]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 1.38, 0.12, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 1.5, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.12, 2.88, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0], "cumulative_profit_aud": [0.32, 0.65, 0.99, 1.56, 2.44, 3.35, 13.22, 23.1, 23.1, 18.17, 14.9, 14.9, 16.51, 19.92, 35.3, 80.72, 359.55, 155.83, 275.75, 531.06, 531.06, 351.3, 351.3, 351.3, 642.83, 974.05, 1286.77, 1601.13, 1734.84, 1759.35, 1782.01, 1802.39, 1815.73, 1823.97, 1831.2, 1835.97, 1839.55, 1841.14, 1842.51, 1836.9, 1829.15, 1829.15, 1838.57, 1848.71, 1848.71, 1850.55, 1851.43, 1852.07], "profit_aud": 1852.07}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [3.17, 0.17, 0.17, 0.17, 8.93, 18.04, 27.91, 27.91, 18.49, 12.28, 9.01, 10.1, 26.19, -7.83, -7.83, 14.88, 42.76, 63.13, 87.12, 138.18, 138.18, 156.16, 385.05, 191.73, 483.26, 226.23, 226.23, 540.59, 807.99, 1053.15, 1002.41, 1002.41, 1002.41, 1084.72, 1157.03, 1161.8, 1165.38, 1166.97, 1154.8, 1163.2, 1158.89, 1150.03, 1140.61, 1130.47, 1139.39, 1148.6, 1157.38, 1163.77], "profit_aud": 1163.77}, "lightgbm": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 1.0, 2.12, 3.25, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [3.17, 3.17, 6.52, 0.74, 9.49, 18.6, 22.98, 22.98, 13.57, 13.57, 10.3, 0.6, 16.69, -13.93, 1.45, 24.16, 52.04, 72.42, 96.4, 147.46, 147.46, 165.44, 394.33, 201.01, 492.54, 823.76, 511.04, 825.4, 1092.81, 1337.97, 1473.89, 1494.27, 1507.61, 1515.85, 1523.08, 1523.08, 1523.08, 1523.08, 1523.08, 1523.08, 1523.08, 1514.22, 1504.8, 1504.8, 1495.87, 1486.67, 1486.67, 1486.67], "profit_aud": 1486.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, 8.76, 17.87, 27.74, 37.62, 31.97, 23.1, 19.83, 10.12, 10.12, 13.53, 28.91, 51.62, 79.5, 99.88, 147.84, 147.84, 194.67, 194.67, 217.56, 435.27, 435.27, 766.5, 1079.22, 1267.84, 1535.24, 1559.76, 1582.41, 1582.41, 1609.09, 1617.32, 1624.56, 1629.33, 1629.33, 1629.33, 1615.62, 1607.22, 1599.47, 1590.61, 1590.61, 1590.61, 1599.53, 1608.74, 1599.95, 1594.84], "profit_aud": 1594.84}}} \ No newline at end of file diff --git a/results/daily/2025-12-26.json b/results/daily/2025-12-26.json new file mode 100644 index 0000000..257d942 --- /dev/null +++ b/results/daily/2025-12-26.json @@ -0,0 +1 @@ +{"date": "2025-12-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-6.57, -5.62, -6.96, -7.04, -7.01, -5.18, -6.86, -6.89, -6.95, -5.92, -6.85, -6.58, -13.52, -15.52, -26.12, -67.52, -120.21, -166.34, -241.68, -269.29, -230.68, -164.78, -234.67, -239.97, -203.99, -167.95, -198.71, -166.46, -164.05, -167.35, -101.82, -88.79, -83.7, -56.83, -94.31, -76.75, -85.94, -13.54, 4.16, 6.75, 7.98, 8.35, -0.42, 0.0, -1.73, 0.29, 3.81, 8.18], "forecast_price": {"naive": [-2.54, -2.67, -2.68, -4.63, -7.0, -7.29, -7.9, -7.9, -7.53, -7.1, -2.61, -7.77, -12.87, -27.22, -123.09, -181.67, -223.07, -162.98, -191.87, -204.25, -187.32, -143.81, -183.12, -174.17, -233.22, -264.98, -250.18, -251.49, -213.92, -196.13, -181.23, -163.09, -106.73, -65.85, -57.85, -38.15, -28.65, -12.71, -10.97, -6.72, -6.2, -7.09, -7.54, -8.11, -7.14, -7.36, -7.03, -5.11], "lightgbm": [16.98, 18.11, 16.79, 14.22, 12.43, 10.05, 10.05, 10.05, 11.15, 14.08, 15.46, 9.57, -2.55, -7.23, -18.07, -19.62, -25.2, -17.56, -23.68, -29.07, -40.37, -43.6, -44.42, -45.52, -44.42, -45.65, -44.42, -44.42, -43.21, -43.57, -38.86, -33.0, -25.06, -15.16, -3.76, 20.75, 26.95, 45.42, 44.23, 53.79, 53.79, 51.0, 48.86, 47.41, 48.91, 46.34, 50.46, 51.95], "lstm": [13.5, 11.59, 6.27, 1.35, -2.02, -7.4, -5.59, -2.93, -1.75, 5.04, 5.61, 10.29, -7.9, -27.85, -43.47, -58.65, -66.98, -63.41, -64.51, -58.97, -62.59, -59.39, -60.1, -60.85, -63.74, -65.25, -69.96, -56.91, -55.17, -43.7, -42.37, -37.69, -32.74, -19.6, -4.84, 7.11, 22.84, 43.45, 52.21, 46.61, 43.83, 37.57, 36.78, 33.46, 29.19, 32.78, 36.34, 35.23]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.5, 0.0, 2.5, 2.5, 1.75, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.88, 2.0, 3.12, 1.88, 1.75, 1.62, 1.5, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 3.88, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 4.88, 3.62, 4.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [8.21, 1.97, 8.94, 17.74, 26.5, 20.03, 20.03, 20.03, 20.03, 12.62, 12.62, 12.62, 14.31, 16.25, 19.51, 27.95, 42.98, 63.77, 365.87, 702.48, 990.82, 784.85, 1078.19, 1378.14, 1531.14, 1344.71, 1593.1, 1593.1, 1593.1, 1655.86, 1668.59, 1679.68, 1679.68, 1608.65, 1726.53, 1662.44, 1769.87, 1771.56, 1776.77, 1785.21, 1795.18, 1805.62, 1806.15, 1806.15, 1808.31, 1808.56, 1813.32, 1823.54], "profit_aud": 1823.54}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 1.38, 0.12, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 1.5, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.12, 2.88, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0], "cumulative_profit_aud": [0.82, 1.52, 2.39, 3.27, 4.15, 4.8, 13.37, 21.98, 21.98, 17.86, 9.29, 9.29, 10.98, 12.92, 16.19, 33.07, 183.33, -24.59, 126.45, 463.06, 463.06, 257.09, 257.09, 257.09, 512.08, 722.01, 970.4, 1178.48, 1281.01, 1301.93, 1314.66, 1325.76, 1336.22, 1343.33, 1355.11, 1364.71, 1375.45, 1377.14, 1376.62, 1382.26, 1392.24, 1392.24, 1392.76, 1392.76, 1392.76, 1392.69, 1392.22, 1391.19], "profit_aud": 1391.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, 6.47, 15.04, 16.97, 16.97, 9.56, 1.0, 1.0, 2.69, 4.63, 7.89, 24.77, 175.03, -32.89, -2.68, 30.98, 59.82, 80.41, 373.75, 673.71, 928.7, 1138.64, 1262.83, 1283.64, 1283.64, 1325.48, 1338.21, 1349.31, 1359.77, 1366.87, 1378.66, 1378.66, 1378.66, 1378.66, 1378.66, 1387.1, 1397.08, 1407.51, 1407.51, 1407.51, 1407.51, 1407.51, 1407.51, 1417.73], "profit_aud": 1417.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.12, 2.0, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 8.76, 15.23, 23.8, 32.41, 27.58, 20.18, 11.61, 3.38, 5.07, 7.01, 10.28, 18.72, 168.98, 189.77, 491.86, 491.86, 491.86, 491.86, 491.86, 491.86, 746.85, 956.79, 1205.18, 1225.99, 1246.49, 1267.41, 1280.14, 1291.24, 1301.7, 1308.8, 1320.59, 1320.59, 1320.59, 1303.67, 1308.87, 1317.31, 1327.29, 1327.29, 1327.29, 1327.29, 1329.45, 1329.45, 1333.74, 1333.74], "profit_aud": 1333.74}}} \ No newline at end of file diff --git a/results/daily/2025-12-27.json b/results/daily/2025-12-27.json new file mode 100644 index 0000000..3639e59 --- /dev/null +++ b/results/daily/2025-12-27.json @@ -0,0 +1 @@ +{"date": "2025-12-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [1.72, 1.89, -0.64, -0.43, 0.51, 1.44, 1.55, 4.69, 1.59, 0.07, 7.14, 0.53, -13.52, -14.74, -14.56, -36.75, -84.33, -65.05, -72.96, -81.17, -89.46, -96.38, -102.46, -131.97, -148.32, -145.53, -111.06, -91.39, -129.73, -114.91, -82.37, -63.56, -24.39, -13.64, -8.19, -7.26, 23.7, 106.16, 111.56, 115.37, 92.84, 86.58, 70.73, 41.07, 42.87, 45.39, 53.28, 41.63], "forecast_price": {"naive": [-6.57, -5.62, -6.96, -7.04, -7.01, -5.18, -6.86, -6.89, -6.95, -5.92, -6.85, -6.58, -13.52, -15.52, -26.12, -67.52, -120.21, -166.34, -241.68, -269.29, -230.68, -164.78, -234.67, -239.97, -203.99, -167.95, -198.71, -166.46, -164.05, -167.35, -101.82, -88.79, -83.7, -56.83, -94.31, -76.75, -85.94, -13.54, 4.16, 6.75, 7.98, 8.35, -0.42, 0.0, -1.73, 0.29, 3.81, 8.18], "lightgbm": [14.05, 14.74, 12.21, 12.69, 10.71, 11.39, 10.71, 10.71, 10.71, 10.82, 12.81, 8.5, -4.99, -6.24, -11.11, -48.98, -50.76, -47.03, -48.73, -50.04, -53.03, -52.5, -50.32, -51.62, -54.28, -54.28, -54.28, -54.28, -54.28, -54.28, -50.08, -44.35, -29.73, -17.47, -3.94, 7.09, 13.99, 45.85, 56.43, 57.28, 55.37, 56.47, 51.54, 52.59, 52.59, 52.59, 54.33, 53.99], "lstm": [15.99, 17.69, 8.35, 2.48, -1.97, -5.46, -3.06, -1.29, 0.61, 9.15, 12.0, 15.3, 2.21, -14.76, -30.89, -43.51, -54.43, -52.8, -56.99, -57.08, -57.51, -50.92, -56.85, -58.23, -58.36, -55.51, -58.26, -47.92, -55.23, -39.75, -36.67, -36.66, -26.86, -20.84, -4.85, 10.55, 26.78, 45.54, 56.77, 53.81, 46.32, 45.85, 42.4, 35.82, 33.95, 36.98, 38.65, 39.84]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.8, 1.34, 0.7, 0.7, 1.86, 7.72, 9.72, 9.63, 18.56, 18.56, 20.25, 23.93, 23.93, 28.53, 133.94, 61.74, 70.86, 81.01, 92.19, 104.23, 117.04, 282.0, 467.4, 649.32, 732.61, 618.37, 780.54, 924.18, 934.47, 942.42, 945.47, 947.17, 948.19, 949.1, 949.1, 1081.81, 1221.25, 1365.46, 1481.51, 1481.51, 1481.51, 1430.18, 1424.18, 1424.18, 1490.78, 1490.78], "profit_aud": 1490.78}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.5, 0.0, 2.5, 2.5, 1.75, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.88, 2.0, 3.12, 1.88, 1.75, 1.62, 1.5, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 3.88, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 4.88, 3.62, 4.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-2.15, -0.05, 0.59, 1.13, 0.49, 2.3, 2.3, 2.3, 2.3, 2.38, 2.38, 2.38, 4.07, 5.91, 7.73, 12.33, 22.87, 31.0, 122.2, 223.66, 335.49, 215.02, 343.1, 508.06, 619.3, 457.76, 596.58, 596.58, 596.58, 639.67, 649.97, 657.91, 657.91, 640.87, 651.11, 645.04, 615.42, 602.15, 741.59, 885.8, 1001.86, 1110.09, 1021.68, 970.34, 916.75, 956.47, 1023.07, 1075.1], "profit_aud": 1075.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 1.5, 2.5, 2.5, 2.5, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.25, 0.12, 0.0, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.66, -2.65, -2.65, 6.28, 6.28, 7.97, 9.81, 11.63, 16.23, 58.39, 58.39, 58.39, 58.39, 103.12, 103.12, 103.12, 103.12, 288.52, 470.43, 609.26, 723.5, 804.58, 818.94, 829.24, 837.18, 840.23, 841.94, 842.96, 842.96, 842.96, 842.96, 982.41, 1126.61, 1242.67, 1350.9, 1350.9, 1350.9, 1350.9, 1350.9, 1350.9, 1350.9], "profit_aud": 1350.9}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.0, 2.5, 0.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.88, 2.0, 3.12, 1.88, 1.75, 2.88, 4.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -0.64, -2.44, -4.38, -10.24, -11.12, -11.04, -2.11, -1.44, -18.35, -16.51, -14.69, -10.09, 10.99, 10.99, 83.95, 185.41, 297.24, 176.77, 176.77, 341.73, 527.13, 527.13, 665.95, 564.51, 726.67, 741.04, 751.33, 759.28, 762.33, 764.03, 765.05, 765.05, 765.05, 765.05, 904.5, 1048.71, 1164.76, 1272.99, 1272.99, 1267.24, 1213.65, 1213.65, 1213.65, 1265.68], "profit_aud": 1265.68}}} \ No newline at end of file diff --git a/results/daily/2025-12-28.json b/results/daily/2025-12-28.json new file mode 100644 index 0000000..c72f00c --- /dev/null +++ b/results/daily/2025-12-28.json @@ -0,0 +1 @@ +{"date": "2025-12-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [40.74, 39.29, 28.47, 23.87, 20.97, 19.58, 13.99, 16.12, 15.38, 18.26, 12.13, -2.34, -7.99, -17.11, -14.62, -15.57, -34.17, -41.72, -49.39, -28.63, -16.24, -20.56, -12.12, -7.68, -4.98, -3.32, -0.82, 0.36, -5.65, -1.2, -7.08, -8.08, -4.87, -3.54, 13.37, 75.21, 99.86, 113.47, 115.67, 111.09, 97.54, 121.89, 235.07, 56.32, 62.01, 3539.91, 48.24, 50.45], "forecast_price": {"naive": [1.72, 1.89, -0.64, -0.43, 0.51, 1.44, 1.55, 4.69, 1.59, 0.07, 7.14, 0.53, -13.52, -14.74, -14.56, -36.75, -84.33, -65.05, -72.96, -81.17, -89.46, -96.38, -102.46, -131.97, -148.32, -145.53, -111.06, -91.39, -129.73, -114.91, -82.37, -63.56, -24.39, -13.64, -8.19, -7.26, 23.7, 106.16, 111.56, 115.37, 92.84, 86.58, 70.73, 41.07, 42.87, 45.39, 53.28, 41.63], "lightgbm": [31.81, 31.81, 30.14, 31.45, 28.11, 28.11, 28.11, 30.87, 28.11, 27.01, 26.82, 22.73, 18.17, 15.16, 5.79, -18.46, -36.66, -37.74, -39.68, -42.78, -43.45, -50.7, -50.31, -50.31, -50.31, -50.31, -49.16, -50.31, -49.95, -43.84, -38.77, -37.15, -13.28, -3.87, 13.3, 26.74, 40.56, 72.36, 76.52, 80.55, 73.05, 67.55, 59.37, 42.01, 46.56, 48.43, 53.59, 48.73], "lstm": [50.12, 48.66, 42.36, 35.0, 28.94, 26.28, 27.01, 27.84, 24.63, 29.49, 31.97, 27.53, 12.25, -6.93, -23.15, -35.43, -45.43, -41.32, -39.06, -39.08, -44.38, -40.14, -40.84, -43.26, -42.21, -35.97, -40.88, -35.36, -32.87, -25.64, -19.63, -15.46, -8.81, 2.82, 20.1, 38.8, 56.11, 74.68, 78.33, 67.18, 62.75, 52.44, 48.25, 42.11, 42.71, 43.79, 45.66, 47.45]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 4.25, 3.0, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.38, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -17.48, -17.48, -19.64, 3.19, 3.19, 3.49, 4.48, 25.87, 11.69, 11.69, 54.4, 106.55, 168.28, 204.07, 195.06, 220.75, 222.27, 223.23, 223.85, 221.55, 220.53, 220.98, 228.04, 226.54, 235.39, 245.49, 251.58, 252.02, 252.02, 252.02, 252.02, 393.86, 538.45, 663.42, 541.5, 693.86, 987.7, 917.3, 908.62, 5333.5, 5333.5, 5333.5], "profit_aud": 5333.5}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -35.59, -65.43, -91.64, -91.64, -81.15, -61.0, -41.77, -64.6, -49.44, -49.44, -48.44, -44.17, -44.17, -42.22, 0.49, -45.81, -39.64, -36.06, -34.03, -31.46, -29.95, -20.35, -14.12, -9.97, -9.36, -8.91, -1.85, -0.35, 0.54, 1.54, 2.15, 2.6, 0.93, -8.48, -8.48, 133.36, 277.95, 416.81, 538.74, 538.74, 538.74, 468.34, 459.66, 459.66, 519.95, 519.95], "profit_aud": 519.95}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95, 6.22, 11.43, 17.61, 21.18, 23.21, 48.91, 64.05, 73.65, 79.88, 81.96, 81.96, 81.87, 82.57, 82.72, 83.61, 84.62, 85.23, 85.67, 85.67, 85.67, 85.67, 227.51, 372.09, 510.96, 632.88, 632.88, 632.88, 562.48, 553.8, 553.8, 614.1, 614.1], "profit_aud": 614.1}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.12, 2.0, 1.88, 3.0, 2.88, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -24.48, -24.48, -24.48, -43.7, -25.44, -10.28, -10.28, -10.28, -8.14, -6.31, -4.36, 38.35, 85.28, 85.28, 85.28, 105.57, 105.57, 105.57, 115.17, 121.4, 117.72, 118.74, 118.7, 119.4, 119.55, 120.44, 121.45, 122.06, 122.06, 122.06, 122.06, 122.06, 263.89, 408.48, 547.34, 669.27, 669.27, 669.27, 598.87, 598.87, 598.87, 598.87, 655.62], "profit_aud": 655.62}}} \ No newline at end of file diff --git a/results/daily/2025-12-29.json b/results/daily/2025-12-29.json new file mode 100644 index 0000000..7008132 --- /dev/null +++ b/results/daily/2025-12-29.json @@ -0,0 +1 @@ +{"date": "2025-12-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [28.94, 25.56, 23.17, 30.15, 23.2, 19.86, 25.5, 30.86, 29.47, 38.59, 38.5, 6.04, -5.55, -9.12, -7.4, -7.5, -8.21, -10.19, -10.39, -7.74, -5.83, 11.62, 6.82, 11.12, 12.02, 13.14, 17.74, 22.73, 12.77, 16.03, 67.75, 98.99, 112.76, 114.41, 158.75, 162.6, 176.17, 372.24, 362.49, 156.98, 113.46, 62.84, 61.62, 48.98, 48.11, 32.56, 19.19, 40.65], "forecast_price": {"naive": [40.74, 39.29, 28.47, 23.87, 20.97, 19.58, 13.99, 16.12, 15.38, 18.26, 12.13, -2.34, -7.99, -17.11, -14.62, -15.57, -34.17, -41.72, -49.39, -28.63, -16.24, -20.56, -12.12, -7.68, -4.98, -3.32, -0.82, 0.36, -5.65, -1.2, -7.08, -8.08, -4.87, -3.54, 13.37, 75.21, 99.86, 113.47, 115.67, 111.09, 97.54, 121.89, 235.07, 56.32, 62.01, 3539.91, 48.24, 50.45], "lightgbm": [63.37, 66.41, 67.93, 63.08, 60.23, 59.3, 61.3, 61.3, 61.3, 58.57, 58.88, 58.38, 63.08, 73.23, 45.49, 13.53, 2.4, 1.53, -5.92, -11.16, -6.63, -7.67, -8.03, -0.99, 0.49, 0.49, 8.26, 1.8, 0.49, 0.49, 3.32, 3.62, 5.95, 12.34, 26.35, 36.94, 45.23, 60.28, 64.52, 66.62, 65.63, 63.14, 69.28, 58.13, 61.06, 76.31, 59.53, 54.57], "lstm": [110.52, 100.76, 90.75, 89.47, 93.57, 80.3, 92.95, 91.88, 102.36, 96.53, 100.96, 111.88, 89.0, 70.23, 45.66, 25.98, 21.72, 16.87, 13.7, 6.25, -1.21, 3.64, 6.57, 3.79, 9.42, 6.23, 2.76, -0.26, 1.68, 6.02, 7.39, 9.84, 13.35, 30.87, 43.63, 65.1, 93.6, 138.06, 131.96, 117.66, 106.82, 95.46, 90.26, 82.52, 81.81, 80.33, 79.79, 89.13]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.25, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 3.12, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 2.0, 3.12, 4.25, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -31.95, -60.9, -23.22, -52.22, -77.05, -108.93, -70.35, -51.93, -3.69, 44.43, 44.43, 45.13, 56.53, 56.53, 56.53, 66.8, 79.54, 92.53, 99.3, 100.02, 113.1, 104.58, 104.58, 104.58, 104.58, 104.58, 132.99, 117.02, 114.78, 114.78, 114.78, 114.78, 114.78, 114.78, 318.03, 538.25, 1003.54, 1456.66, 1456.66, 1456.66, 1456.66, 1456.66, 1456.66, 1456.66, 1452.1, 1428.11, 1478.92], "profit_aud": 1478.92}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 4.25, 3.0, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.38, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -31.88, -31.88, -36.0, 12.23, 12.23, 11.48, 12.17, 23.58, 16.4, 16.4, 26.66, 39.4, 52.39, 62.06, 58.82, 44.3, 43.45, 42.06, 40.56, 49.69, 71.86, 100.27, 84.31, 104.34, 19.66, -104.08, -245.03, -259.33, -259.33, -259.33, -259.33, 205.97, 659.08, 835.68, 693.86, 772.41, 849.43, 788.21, 781.48, 822.18, 822.18, 822.18], "profit_aud": 822.18}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.4, -5.4, -12.96, -12.96, -24.36, -24.36, -24.36, -24.36, -24.36, -17.87, -8.2, -0.91, -15.43, -23.95, -25.34, -25.34, -25.34, -3.17, 19.56, 3.6, -16.44, -16.44, -16.44, -16.44, -16.44, -16.44, -16.44, -16.44, -16.44, -16.44, 179.79, 321.61, 321.61, 398.63, 398.63, 398.63, 439.33, 439.33, 439.33], "profit_aud": 439.33}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 1.12, 2.25, 2.25, 3.38, 3.38, 3.38, 2.12, 2.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.75, 2.88, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -28.96, -66.64, -66.64, -91.47, -91.47, -91.47, -54.64, -54.64, -20.95, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -6.1, -20.62, -17.22, -31.11, -16.09, -16.09, -38.26, -66.67, -82.64, -82.64, -82.64, -82.64, -82.64, -82.64, -82.64, -82.64, -82.64, 382.66, 835.77, 1032.0, 1173.82, 1173.82, 1173.82, 1173.82, 1173.82, 1173.82, 1149.83, 1195.56], "profit_aud": 1195.56}}} \ No newline at end of file diff --git a/results/daily/2025-12-30.json b/results/daily/2025-12-30.json new file mode 100644 index 0000000..1a84172 --- /dev/null +++ b/results/daily/2025-12-30.json @@ -0,0 +1 @@ +{"date": "2025-12-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [32.59, 53.88, 58.45, 63.04, 48.53, 54.58, 54.5, 64.4, 65.27, 47.43, 56.19, 30.64, 0.05, -2.12, -5.21, -7.71, -8.1, -8.44, -13.62, -17.29, -19.87, -19.29, -16.12, -9.07, -12.18, -9.92, -13.24, -12.43, -11.29, -8.93, -7.13, -5.29, -5.9, -5.45, -3.8, 0.56, 9.35, 9.21, 25.55, 35.42, 34.3, 20.16, 42.25, 11.41, 5.59, 11.52, 33.06, 40.54], "forecast_price": {"naive": [28.94, 25.56, 23.17, 30.15, 23.2, 19.86, 25.5, 30.86, 29.47, 38.59, 38.5, 6.04, -5.55, -9.12, -7.4, -7.5, -8.21, -10.19, -10.39, -7.74, -5.83, 11.62, 6.82, 11.12, 12.02, 13.14, 17.74, 22.73, 12.77, 16.03, 67.75, 98.99, 112.76, 114.41, 158.75, 162.6, 176.17, 372.24, 362.49, 156.98, 113.46, 62.84, 61.62, 48.98, 48.11, 32.56, 19.19, 40.65], "lightgbm": [66.37, 67.15, 64.9, 55.54, 55.87, 55.39, 54.41, 54.48, 56.34, 58.6, 54.8, 51.9, 54.69, 56.34, 24.78, 9.08, 1.95, -5.37, -6.63, -7.87, -6.58, -5.21, -6.91, -4.29, -5.09, -5.09, -2.47, -2.47, -4.29, -3.85, 18.31, 31.8, 42.27, 58.3, 68.33, 97.15, 107.26, 108.94, 108.94, 108.25, 96.3, 66.43, 63.99, 50.72, 50.51, 55.45, 49.67, 52.44], "lstm": [18.85, 15.51, 8.13, 3.27, 4.46, 0.17, 1.02, 3.3, 5.32, 9.34, 15.06, 23.5, 16.54, 13.73, 2.31, 1.09, 1.55, -8.21, -15.84, -14.18, -11.33, -7.86, -10.91, -2.63, -5.01, -0.56, 5.76, 8.72, 11.36, 18.05, 23.04, 23.48, 23.04, 31.91, 39.47, 57.5, 78.51, 94.64, 106.55, 85.64, 82.56, 66.93, 60.56, 49.65, 44.8, 49.93, 54.84, 55.52]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.83, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 2.12, 2.12, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-40.74, -108.09, -108.09, -29.29, -89.95, -89.95, -112.57, -32.06, 49.53, -9.75, 53.47, 53.47, 53.47, 53.73, 54.38, 55.35, 56.36, 57.41, 65.92, 87.54, 112.38, 136.49, 156.64, 145.29, 149.86, 137.46, 154.01, 169.55, 170.96, 172.08, 172.97, 167.1, 174.47, 175.15, 175.63, 175.63, 175.63, 175.63, 207.57, 251.84, 294.72, 294.72, 347.54, 333.27, 326.28, 323.05, 364.38, 415.06], "profit_aud": 415.06}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.25, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 3.12, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 2.0, 3.12, 4.25, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -67.35, -140.41, -61.61, -122.27, -190.5, -258.62, -178.12, -137.32, -78.04, -7.79, -7.79, -7.8, -5.15, -5.15, -5.15, 4.97, 15.53, 32.55, 47.68, 50.16, 28.46, 48.61, 48.61, 48.61, 48.61, 48.61, 33.08, 47.18, 48.43, 48.43, 48.43, 48.43, 48.43, 48.43, 49.13, 60.82, 72.33, 104.27, 104.27, 104.27, 104.27, 104.27, 104.27, 104.27, 102.66, 61.33, 112.01], "profit_aud": 112.01}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 3.75, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.33, 23.35, 44.97, 69.81, 69.81, 89.96, 78.61, 81.66, 94.06, 77.51, 65.45, 79.56, 90.73, 90.73, 90.73, 90.73, 90.73, 90.73, 90.73, 102.42, 113.93, 145.87, 190.14, 190.14, 190.14, 190.14, 190.14, 190.14, 190.14, 190.14, 190.14], "profit_aud": 190.14}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -78.8, -105.74, -173.97, -242.09, -322.6, -322.6, -322.6, -252.36, -214.05, -213.99, -216.65, -216.65, -207.01, -216.12, -209.78, -192.76, -171.15, -146.31, -146.31, -126.16, -136.23, -121.0, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -119.76, -108.25, -76.31, -32.04, 10.85, 10.85, 10.85, 9.25, 2.26, 2.26, 2.26, 52.93], "profit_aud": 52.93}}} \ No newline at end of file diff --git a/results/daily/2025-12-31.json b/results/daily/2025-12-31.json new file mode 100644 index 0000000..2aaaa6d --- /dev/null +++ b/results/daily/2025-12-31.json @@ -0,0 +1 @@ +{"date": "2025-12-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [14.76, -1.83, -4.8, -6.84, -7.11, -7.3, -7.33, -7.52, -6.94, -6.64, -6.67, -7.23, -8.05, -18.45, -45.41, -49.54, -69.0, -57.6, -95.75, -69.37, -67.35, -55.64, -74.39, -84.75, -58.42, -51.38, -51.8, -71.45, -73.28, -83.6, -131.15, -213.72, -262.76, -171.08, -143.94, -64.36, -53.11, -4.65, -4.95, -3.03, -4.16, -4.1, -2.64, -4.73, -5.01, 0.13, 3.99, 28.58], "forecast_price": {"naive": [32.59, 53.88, 58.45, 63.04, 48.53, 54.58, 54.5, 64.4, 65.27, 47.43, 56.19, 30.64, 0.05, -2.12, -5.21, -7.71, -8.1, -8.44, -13.62, -17.29, -19.87, -19.29, -16.12, -9.07, -12.18, -9.92, -13.24, -12.43, -11.29, -8.93, -7.13, -5.29, -5.9, -5.45, -3.8, 0.56, 9.35, 9.21, 25.55, 35.42, 34.3, 20.16, 42.25, 11.41, 5.59, 11.52, 33.06, 40.54], "lightgbm": [29.2, 30.59, 31.08, 31.46, 27.83, 29.81, 29.81, 31.37, 31.37, 31.11, 33.1, 29.66, 23.84, 22.78, 14.39, 6.92, 4.56, -0.07, -7.13, -10.86, -11.38, -12.09, -11.11, -7.0, -10.15, -7.0, -11.11, -11.11, -10.15, -6.75, 1.56, 7.54, 7.96, 14.86, 26.17, 39.12, 49.07, 53.04, 53.04, 50.28, 50.28, 45.77, 46.41, 42.28, 42.87, 41.74, 42.92, 43.68], "lstm": [32.52, 32.57, 26.13, 23.38, 21.56, 17.65, 20.61, 23.35, 27.86, 34.63, 40.86, 44.83, 35.11, 26.47, 10.56, 2.14, 0.68, -5.04, -12.53, -9.88, -7.83, -9.5, -9.97, -7.53, -10.35, -8.54, -8.39, -8.2, -11.04, -4.65, -6.01, -5.03, -5.49, -0.3, 4.17, 20.22, 37.99, 58.88, 62.87, 57.65, 61.3, 52.33, 52.04, 44.51, 41.61, 40.28, 48.94, 50.12]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 1.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.75, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 5.0, 3.75, 4.12, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25], "cumulative_profit_aud": [0.0, 0.23, 0.83, 1.68, 2.57, 3.48, 4.4, 13.8, 13.8, 9.18, 9.18, 9.18, 10.18, 12.49, 18.17, 24.36, 110.61, 46.67, 166.36, 253.08, 295.17, 225.63, 318.62, 424.55, 351.53, 287.3, 222.55, 231.48, 240.65, 251.1, 333.06, 600.21, 928.65, 1142.5, 1322.43, 1330.48, 1337.11, 1337.11, 1338.35, 1334.57, 1336.65, 1336.65, 1333.35, 1339.26, 1345.52, 1345.69, 1350.67, 1386.4], "profit_aud": 1386.4}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.83, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 2.12, 2.12, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-18.45, -16.16, -16.16, -24.71, -15.82, -15.82, -12.78, -22.17, -30.86, -22.55, -30.05, -30.05, -30.05, -27.75, -22.07, -15.88, -7.25, -0.05, 59.79, 146.51, 230.7, 300.24, 393.23, 287.3, 309.21, 244.98, 309.72, 399.04, 408.2, 418.65, 435.04, 197.81, 526.26, 547.64, 565.63, 565.63, 565.63, 565.63, 559.45, 555.66, 550.46, 550.46, 547.16, 553.07, 559.33, 559.29, 564.28, 600.01], "profit_aud": 600.01}, "lightgbm": {"charge_mw": [0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.75, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-2.07, -2.07, -2.07, -2.07, 6.82, 6.82, 6.82, 6.82, 6.82, 6.82, -1.51, -1.51, -1.51, -1.51, -1.51, -1.51, -1.51, 5.69, 17.66, 104.37, 188.56, 258.11, 351.1, 245.16, 296.28, 232.05, 296.8, 386.11, 395.27, 405.72, 405.72, 405.72, 405.72, 405.72, 405.72, 405.72, 405.72, 399.91, 393.72, 389.94, 384.74, 384.74, 384.74, 384.74, 384.74, 384.74, 384.74, 384.74], "profit_aud": 384.74}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 1.75, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 3.12, 4.25, 4.12, 4.0, 3.88, 5.0, 3.75, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 3.8, 12.69, 21.81, 30.97, 40.36, 40.36, 32.06, 23.72, 14.68, 4.63, 4.63, 4.63, 4.63, 4.63, 11.83, 131.52, 218.23, 218.23, 287.78, 380.77, 274.84, 347.86, 347.86, 347.86, 347.86, 439.47, 334.97, 498.9, 498.9, 597.43, 618.82, 618.82, 618.82, 618.82, 613.01, 606.82, 603.04, 597.83, 597.83, 597.83, 597.83, 604.09, 603.93, 607.92, 643.65], "profit_aud": 643.65}}} \ No newline at end of file diff --git a/results/daily/2026-01-01.json b/results/daily/2026-01-01.json new file mode 100644 index 0000000..11ca2fd --- /dev/null +++ b/results/daily/2026-01-01.json @@ -0,0 +1 @@ +{"date": "2026-01-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [36.06, 26.36, 25.07, 26.67, 21.09, 8.88, 3.97, 7.1, 11.66, 17.59, 24.53, 8.86, -8.52, -12.9, -20.57, -81.6, -81.85, -62.47, -76.67, -90.67, -97.21, -112.09, -181.01, -127.66, -97.54, -101.4, -98.99, -96.42, -92.14, -72.64, -76.81, -65.42, -57.89, -25.32, -13.65, -8.65, -6.7, 26.82, 37.64, 35.08, 26.55, 26.3, 23.31, 23.8, 22.04, 21.16, 30.11, 28.38], "forecast_price": {"naive": [14.76, -1.83, -4.8, -6.84, -7.11, -7.3, -7.33, -7.52, -6.94, -6.64, -6.67, -7.23, -8.05, -18.45, -45.41, -49.54, -69.0, -57.6, -95.75, -69.37, -67.35, -55.64, -74.39, -84.75, -58.42, -51.38, -51.8, -71.45, -73.28, -83.6, -131.15, -213.72, -262.76, -171.08, -143.94, -64.36, -53.11, -4.65, -4.95, -3.03, -4.16, -4.1, -2.64, -4.73, -5.01, 0.13, 3.99, 28.58], "lightgbm": [3.86, 0.39, 0.23, 1.1, -0.83, 0.06, 0.06, 0.98, 2.93, -0.67, 0.06, -0.61, -0.14, -8.47, -29.7, -35.75, -39.09, -39.44, -42.0, -41.58, -44.94, -44.02, -45.68, -43.17, -45.68, -41.31, -43.54, -45.68, -45.68, -43.17, -37.36, -34.13, -27.2, -17.53, -14.21, -10.01, -9.13, 38.46, 35.81, 39.18, 39.18, 40.96, 34.95, 35.58, 39.53, 36.99, 38.7, 39.14], "lstm": [19.71, 24.92, 14.75, 10.31, 7.89, 2.13, 2.71, 3.83, 9.2, 15.51, 15.81, 20.19, 11.58, -4.05, -19.12, -39.47, -49.24, -50.03, -55.06, -52.84, -57.99, -60.17, -64.06, -67.26, -62.09, -57.85, -62.71, -58.53, -59.51, -46.01, -41.77, -43.22, -37.16, -30.91, -17.48, 0.54, 19.92, 38.1, 46.38, 40.67, 41.24, 36.94, 32.74, 31.69, 26.49, 25.48, 28.72, 32.22]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -11.11, -16.07, -24.94, -14.75, 7.24, 37.9, 37.9, 38.96, 40.58, 43.15, 73.75, 176.06, 97.98, 97.98, 109.31, 121.46, 261.58, 487.84, 647.42, 647.42, 774.17, 848.41, 860.47, 871.98, 871.98, 891.19, 899.36, 906.6, 909.76, 911.47, 912.55, 913.39, 946.91, 993.97, 1037.82, 1071.0, 1071.0, 1064.48, 1064.48, 1036.93, 1010.48, 1048.12, 1083.59], "profit_aud": 1083.59}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 1.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.75, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 5.0, 3.75, 4.12, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25], "cumulative_profit_aud": [0.0, -3.3, -6.43, -9.76, -12.4, -13.51, -14.01, -22.88, -22.88, -10.66, -10.66, -10.66, -9.6, -7.98, -5.41, 4.79, 107.11, 37.77, 133.6, 246.94, 307.69, 167.58, 393.84, 553.42, 431.49, 304.74, 181.01, 193.06, 204.58, 213.66, 261.66, 343.44, 415.8, 447.45, 464.51, 465.59, 466.42, 466.42, 457.01, 500.86, 487.59, 487.59, 516.73, 486.98, 459.43, 485.88, 523.52, 558.99], "profit_aud": 558.99}, "lightgbm": {"charge_mw": [0.0, 0.28, 2.5, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.25, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.12, 1.25, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.0, 0.88, 2.0, 1.88, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 2.38, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, -3.69, -35.03, -1.7, -28.06, -30.55, -35.51, -26.63, -12.06, -34.05, -6.45, -17.52, -26.98, -25.36, -22.79, -12.59, -2.36, 5.45, 24.61, 24.61, 133.98, 133.98, 360.24, 360.24, 482.16, 482.16, 482.16, 602.69, 717.86, 726.94, 736.54, 744.71, 751.95, 755.11, 756.82, 757.9, 758.74, 758.74, 758.74, 802.59, 835.77, 868.65, 839.52, 839.52, 867.07, 867.07, 867.07, 898.99], "profit_aud": 898.99}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 4.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-45.08, -15.42, -15.42, -15.42, -41.78, -52.88, -57.84, -66.72, -73.19, -51.21, -20.55, -9.47, -20.12, -18.51, -15.93, -5.73, 4.5, 12.31, 31.47, 31.47, 43.63, 127.7, 353.96, 513.54, 635.46, 635.46, 759.2, 759.2, 782.23, 791.31, 791.31, 807.67, 814.91, 818.07, 819.78, 819.78, 819.78, 853.3, 900.35, 944.2, 977.39, 977.39, 977.39, 977.39, 974.3, 947.86, 947.86, 983.33], "profit_aud": 983.33}}} \ No newline at end of file diff --git a/results/daily/2026-01-02.json b/results/daily/2026-01-02.json new file mode 100644 index 0000000..757bff1 --- /dev/null +++ b/results/daily/2026-01-02.json @@ -0,0 +1 @@ +{"date": "2026-01-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [25.25, 25.6, 26.88, 19.54, 25.1, 29.8, 27.3, 25.66, 30.91, 35.08, 32.69, 26.49, 1.22, -9.55, -15.16, -11.01, -11.95, -42.11, -52.5, -55.59, -49.67, -27.33, -18.81, -34.22, -17.78, -16.88, -20.08, -30.11, -67.67, -163.7, -85.79, -162.24, -58.59, -8.0, -1.17, 24.68, 42.48, 65.05, 88.94, 90.06, 97.03, 103.55, 123.29, 114.44, 124.03, 119.41, 132.66, 144.0], "forecast_price": {"naive": [36.06, 26.36, 25.07, 26.67, 21.09, 8.88, 3.97, 7.1, 11.66, 17.59, 24.53, 8.86, -8.52, -12.9, -20.57, -81.6, -81.85, -62.47, -76.67, -90.67, -97.21, -112.09, -181.01, -127.66, -97.54, -101.4, -98.99, -96.42, -92.14, -72.64, -76.81, -65.42, -57.89, -25.32, -13.65, -8.65, -6.7, 26.82, 37.64, 35.08, 26.55, 26.3, 23.31, 23.8, 22.04, 21.16, 30.11, 28.38], "lightgbm": [12.0, 6.53, 6.36, 5.78, 5.57, 5.43, 2.56, 3.85, 5.57, 6.45, 7.0, 6.65, 3.9, -4.52, -9.65, -30.12, -30.68, -32.12, -32.25, -31.82, -32.73, -33.7, -34.38, -34.38, -34.38, -34.38, -34.38, -34.38, -34.38, -34.38, -29.72, -25.1, -20.1, 6.41, 16.18, 34.53, 37.35, 45.0, 46.91, 46.36, 46.18, 46.18, 46.02, 43.27, 43.0, 43.0, 42.89, 42.32], "lstm": [33.8, 30.56, 23.7, 19.16, 16.01, 13.34, 12.75, 17.19, 19.89, 24.94, 29.76, 34.43, 24.32, 13.14, -0.48, -9.69, -18.03, -15.95, -22.93, -23.35, -24.96, -20.59, -24.71, -22.83, -25.02, -19.38, -22.84, -18.54, -18.78, -11.77, -9.37, -8.13, -4.84, 0.44, 7.04, 23.76, 37.44, 60.52, 70.27, 63.29, 58.34, 55.38, 52.61, 49.08, 45.84, 46.99, 47.78, 52.69]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 4.5, 3.25, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.0, 2.75, 3.88, 2.62, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-31.56, -63.56, -63.56, -87.99, -119.36, -82.11, -82.11, -96.35, -57.71, -13.85, 27.0, 27.0, 27.0, 28.2, 47.15, 36.47, 36.47, 89.1, 154.73, 224.22, 286.31, 274.96, 251.45, 294.23, 272.01, 250.91, 225.81, 225.81, 310.4, 515.02, 622.26, 825.05, 861.68, 862.67, 862.82, 862.82, 862.82, 862.82, 862.82, 862.82, 862.82, 862.82, 1016.94, 1016.94, 1171.97, 1171.97, 1337.8, 1517.8], "profit_aud": 1517.8}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -37.26, -71.39, -103.46, -76.41, -32.56, 8.3, 8.3, 8.15, 9.34, 11.24, 15.37, 30.31, -22.33, -22.33, -15.38, -9.17, 24.99, 48.5, 91.28, 91.28, 112.38, 127.44, 131.2, 139.66, 139.66, 161.11, 181.39, 188.71, 189.71, 189.86, 186.78, 181.46, 262.78, 373.96, 486.54, 607.83, 607.83, 573.31, 573.31, 418.27, 269.01, 434.84, 614.84], "profit_aud": 614.84}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -10.42, -47.67, -81.8, -113.87, -113.87, -70.02, -29.16, 3.95, 3.95, 5.15, 7.04, 8.42, 9.91, 15.18, 28.3, 28.3, 34.51, 37.93, 61.44, 104.21, 126.43, 147.53, 160.08, 163.85, 172.31, 192.77, 203.49, 223.77, 231.1, 231.1, 231.1, 231.1, 231.1, 231.1, 342.27, 454.85, 576.14, 705.58, 705.58, 705.58, 705.58, 705.58, 705.58, 705.58], "profit_aud": 705.58}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.88, 4.0, 3.88, 5.0, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -10.85, -42.22, -79.48, -113.61, -145.68, -145.68, -101.83, -60.97, -27.85, -26.33, -26.33, -24.43, -23.06, -8.12, -54.85, 10.77, 80.27, 142.35, 131.01, 154.52, 154.52, 176.74, 158.0, 183.1, 183.1, 200.02, 220.48, 231.21, 251.49, 258.81, 258.81, 258.81, 258.81, 258.81, 340.13, 451.31, 563.88, 685.17, 685.17, 685.17, 685.17, 530.14, 513.42, 513.42, 693.42], "profit_aud": 693.42}}} \ No newline at end of file diff --git a/results/daily/2026-01-03.json b/results/daily/2026-01-03.json new file mode 100644 index 0000000..210ac14 --- /dev/null +++ b/results/daily/2026-01-03.json @@ -0,0 +1 @@ +{"date": "2026-01-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [173.9, 336.06, 185.48, 153.16, 138.04, 115.26, 121.84, 144.07, 150.15, 134.19, 159.82, 133.61, 152.92, 95.83, -2.14, 9.48, -7.62, -8.38, -7.8, -7.45, -7.97, -9.19, -9.8, -50.82, -40.76, -6.94, -5.9, -7.21, -31.77, -33.69, -74.46, -72.08, -72.08, -74.3, -24.02, -3.3, 43.21, 44.02, 58.81, 58.45, 58.59, 58.23, 57.61, 57.31, 58.46, 58.63, 62.95, 75.49], "forecast_price": {"naive": [25.25, 25.6, 26.88, 19.54, 25.1, 29.8, 27.3, 25.66, 30.91, 35.08, 32.69, 26.49, 1.22, -9.55, -15.16, -11.01, -11.95, -42.11, -52.5, -55.59, -49.67, -27.33, -18.81, -34.22, -17.78, -16.88, -20.08, -30.11, -67.67, -163.7, -85.79, -162.24, -58.59, -8.0, -1.17, 24.68, 42.48, 65.05, 88.94, 90.06, 97.03, 103.55, 123.29, 114.44, 124.03, 119.41, 132.66, 144.0], "lightgbm": [39.17, 39.17, 39.24, 36.97, 36.26, 37.06, 36.48, 37.77, 37.77, 38.05, 37.3, 33.63, 33.55, 27.5, 14.0, -4.55, -7.81, -20.8, -26.11, -28.6, -28.83, -14.93, -11.47, -16.69, -8.65, -8.65, -9.37, -12.55, -28.57, -27.66, -24.81, -20.49, -13.45, 26.48, 30.11, 41.64, 49.44, 76.41, 93.9, 94.94, 97.49, 90.73, 97.04, 91.93, 93.67, 91.93, 94.58, 97.82], "lstm": [122.72, 120.5, 101.04, 92.48, 88.87, 79.82, 81.16, 82.51, 76.32, 77.14, 78.37, 71.02, 46.12, 21.19, 4.87, -13.73, -21.23, -17.24, -19.8, -26.57, -34.33, -31.22, -28.52, -35.63, -28.84, -27.78, -35.81, -34.37, -39.1, -30.4, -23.74, -20.45, -10.53, -5.43, 5.56, 32.43, 49.0, 80.3, 87.48, 83.49, 73.11, 71.17, 67.17, 70.2, 69.61, 62.24, 67.46, 70.44]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.0, 0.12, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-217.37, 160.7, 160.7, 160.7, 160.7, 16.62, -135.69, -135.69, 52.0, -3.68, 196.09, 29.08, 220.23, 220.23, 222.91, 233.57, 234.52, 245.0, 245.0, 238.78, 238.78, 243.37, 255.63, 319.15, 370.1, 361.42, 354.05, 345.04, 349.01, 370.06, 463.14, 553.23, 643.33, 736.21, 739.21, 739.62, 739.62, 739.62, 813.14, 813.14, 813.14, 813.14, 813.14, 813.14, 813.14, 886.42, 965.12, 1059.48], "profit_aud": 1059.48}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 4.5, 3.25, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.0, 2.75, 3.88, 2.62, 1.38, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-217.37, -637.45, -637.45, -828.9, -1001.45, -857.37, -857.37, -937.33, -749.64, -581.91, -382.13, -382.13, -382.13, -394.11, -391.43, -382.24, -382.24, -371.77, -362.01, -352.7, -342.73, -346.54, -358.8, -295.27, -346.22, -354.9, -362.27, -362.27, -322.56, -280.45, -187.37, -97.28, -52.23, -42.94, -39.94, -39.94, -39.94, -39.94, -39.94, -39.94, -39.94, -39.94, 32.07, 32.07, 105.14, 105.14, 183.83, 278.19], "profit_aud": 278.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 3.62, 2.38, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18, -0.23, 10.24, 20.0, 29.31, 39.28, 45.02, 32.77, 96.29, 45.35, 36.67, 29.3, 25.29, 65.01, 107.11, 200.19, 290.29, 299.3, 299.3, 299.3, 299.3, 299.3, 299.3, 299.3, 372.36, 445.6, 445.6, 517.61, 517.61, 517.61, 517.61, 517.61, 611.97], "profit_aud": 611.97}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.0, 1.88, 3.0, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18, 8.34, -0.96, 0.02, 0.95, 10.92, 20.11, 20.11, 83.63, 83.63, 74.95, 82.33, 91.34, 131.05, 135.26, 144.57, 153.58, 162.59, 171.88, 171.88, 171.88, 171.88, 226.9, 300.42, 373.48, 446.72, 446.72, 446.72, 446.72, 446.72, 373.43, 373.43, 458.35], "profit_aud": 458.35}}} \ No newline at end of file diff --git a/results/daily/2026-01-04.json b/results/daily/2026-01-04.json new file mode 100644 index 0000000..223352b --- /dev/null +++ b/results/daily/2026-01-04.json @@ -0,0 +1 @@ +{"date": "2026-01-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [73.4, 79.22, 73.99, 77.67, 78.19, 76.27, 72.19, 69.19, 63.8, 65.02, 60.16, 28.88, 3.82, -1.32, -8.62, -9.83, -8.0, -14.74, -43.11, -35.93, -75.37, -94.72, -94.56, -143.96, -167.3, -72.94, -206.21, -220.4, -251.58, -115.42, -225.47, -152.79, -21.12, -8.17, -44.46, -24.15, -4.34, 33.1, 57.44, 56.16, 43.62, 45.92, 45.8, 50.44, 57.43, 50.55, 55.04, 54.5], "forecast_price": {"naive": [173.9, 336.06, 185.48, 153.16, 138.04, 115.26, 121.84, 144.07, 150.15, 134.19, 159.82, 133.61, 152.92, 95.83, -2.14, 9.48, -7.62, -8.38, -7.8, -7.45, -7.97, -9.19, -9.8, -50.82, -40.76, -6.94, -5.9, -7.21, -31.77, -33.69, -74.46, -72.08, -72.08, -74.3, -24.02, -3.3, 43.21, 44.02, 58.81, 58.45, 58.59, 58.23, 57.61, 57.31, 58.46, 58.63, 62.95, 75.49], "lightgbm": [50.6, 48.08, 46.58, 47.71, 46.38, 47.45, 45.04, 40.78, 40.78, 44.53, 40.3, 43.72, 37.88, 40.67, 8.97, 7.11, -4.31, -4.87, -7.98, -11.19, -13.74, -18.64, -17.07, -34.04, -28.33, -9.67, -10.4, -10.35, -19.27, -20.37, -33.99, -29.19, -22.52, -16.87, 8.24, 37.78, 51.84, 54.66, 59.71, 59.26, 59.71, 58.96, 58.7, 50.59, 51.41, 56.71, 50.69, 58.69], "lstm": [80.51, 79.16, 73.37, 64.68, 61.19, 54.62, 56.8, 60.79, 50.05, 58.09, 60.57, 47.41, 23.64, 3.57, -10.91, -26.35, -32.13, -29.62, -25.92, -32.29, -36.23, -28.92, -30.56, -30.97, -27.64, -25.48, -31.16, -24.89, -27.24, -24.01, -15.88, -10.27, -7.29, -3.92, 5.8, 29.32, 46.88, 73.27, 84.03, 80.18, 80.28, 70.19, 68.51, 67.17, 68.35, 56.99, 69.87, 70.75]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.0, 2.5, 0.75, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 0.75, 1.88, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.62, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.17, 1.24, 13.53, 4.65, 6.49, 60.38, 20.49, 29.91, 53.59, 53.59, 179.55, 388.68, 297.51, 555.27, 830.77, 1145.25, 1000.97, 1282.81, 1473.8, 1453.31, 1443.1, 1498.67, 1528.86, 1529.4, 1529.4, 1601.2, 1671.4, 1616.87, 1616.87, 1610.45, 1610.45, 1682.24, 1682.24, 1751.04, 1819.16], "profit_aud": 1819.16}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.0, 0.12, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-91.75, -2.63, -2.63, -2.63, -2.63, -97.97, -188.2, -188.2, -108.46, -135.44, -60.24, -96.34, -91.57, -91.57, -80.79, -91.85, -90.85, -72.43, -72.43, -102.43, -102.43, -55.07, 63.13, 243.07, 452.21, 361.03, 103.27, -172.22, -140.77, -68.63, 213.21, 404.2, 430.6, 440.82, 446.37, 449.39, 449.39, 449.39, 521.19, 521.19, 521.19, 521.19, 521.19, 521.19, 521.19, 584.37, 653.17, 721.3], "profit_aud": 721.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.84, 8.23, 12.72, 22.14, 140.54, 187.82, 367.77, 576.9, 485.73, 227.97, -47.53, 109.71, 253.99, 535.84, 726.83, 753.23, 754.25, 754.25, 754.25, 754.25, 754.25, 826.05, 896.25, 950.78, 1008.17, 1008.17, 945.12, 945.12, 995.67, 926.87, 994.99], "profit_aud": 994.99}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.75, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.88, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 4.88, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -95.34, -95.34, -17.5, -97.24, -97.24, -29.56, -29.56, -29.56, -29.56, -28.49, -27.26, -17.26, -4.37, -58.25, -13.33, 80.88, 80.88, 199.08, 379.02, 379.02, 308.27, 566.03, 566.03, 628.93, 643.36, 671.54, 690.64, 693.28, 694.3, 694.3, 694.3, 694.3, 735.68, 807.48, 877.68, 932.21, 932.21, 932.21, 932.21, 932.21, 869.03, 869.03, 930.34], "profit_aud": 930.34}}} \ No newline at end of file diff --git a/results/daily/2026-01-05.json b/results/daily/2026-01-05.json new file mode 100644 index 0000000..47ff076 --- /dev/null +++ b/results/daily/2026-01-05.json @@ -0,0 +1 @@ +{"date": "2026-01-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [60.44, 61.32, 48.04, 49.62, 45.3, 38.23, 42.82, 50.29, 50.78, 49.94, 52.66, 49.74, 35.85, 15.46, -7.56, -65.82, -65.52, -63.72, -52.51, -50.8, -36.52, -62.72, -66.18, -64.76, -21.89, -9.84, -47.03, -41.09, -64.34, -118.95, -85.57, -24.34, -8.25, -8.04, -7.21, -3.97, 24.99, 107.09, 101.79, 97.61, 90.51, 75.23, 76.34, 77.12, 73.47, 69.82, 71.12, 83.76], "forecast_price": {"naive": [73.4, 79.22, 73.99, 77.67, 78.19, 76.27, 72.19, 69.19, 63.8, 65.02, 60.16, 28.88, 3.82, -1.32, -8.62, -9.83, -8.0, -14.74, -43.11, -35.93, -75.37, -94.72, -94.56, -143.96, -167.3, -72.94, -206.21, -220.4, -251.58, -115.42, -225.47, -152.79, -21.12, -8.17, -44.46, -24.15, -4.34, 33.1, 57.44, 56.16, 43.62, 45.92, 45.8, 50.44, 57.43, 50.55, 55.04, 54.5], "lightgbm": [33.54, 39.37, 36.0, 36.01, 40.2, 36.0, 32.44, 31.79, 32.27, 36.89, 43.01, 42.55, 43.4, 42.11, 18.07, 11.88, 11.48, 1.85, -10.57, -10.42, -19.54, -17.37, -16.89, -22.14, -22.14, -16.89, -17.77, -13.08, -22.21, -21.95, -8.34, -3.2, 19.57, 39.96, 26.48, 41.31, 68.31, 77.04, 81.04, 79.04, 67.7, 58.73, 57.57, 57.09, 59.24, 55.33, 55.92, 60.3], "lstm": [77.15, 69.48, 66.29, 56.61, 53.36, 47.43, 53.23, 61.0, 61.21, 69.99, 84.47, 77.08, 60.24, 46.35, 26.01, 8.92, -0.21, -2.37, -2.26, -10.14, -15.73, -14.57, -14.95, -12.24, -12.86, -14.01, -19.05, -17.03, -15.78, -13.8, -10.59, -2.75, -6.81, 8.41, 14.22, 38.41, 63.64, 89.11, 92.45, 86.02, 87.57, 80.54, 79.25, 73.39, 72.2, 59.73, 73.48, 77.28]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -12.68, -60.48, -114.01, -114.01, -50.53, -50.53, 15.3, 15.3, 15.3, 15.3, 16.25, 98.52, 180.42, 260.07, 260.07, 245.85, 200.2, 278.6, 361.33, 442.28, 414.92, 402.62, 426.14, 374.78, 455.2, 603.89, 710.85, 713.9, 714.93, 715.93, 716.84, 717.33, 717.33, 851.19, 978.43, 1100.44, 1213.57, 1213.57, 1213.57, 1213.57, 1213.57, 1126.3, 1116.34, 1221.04], "profit_aud": 1221.04}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.0, 2.5, 0.75, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 0.75, 1.88, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.62, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.93, -0.99, 81.29, 8.57, 16.53, 82.17, 25.77, 30.34, 46.02, 46.02, 102.68, 130.04, 117.75, 176.53, 227.89, 308.32, 159.63, 266.6, 297.02, 289.02, 278.97, 287.98, 292.95, 289.82, 289.82, 417.06, 539.07, 425.93, 425.93, 415.25, 415.25, 507.08, 507.08, 595.99, 700.68], "profit_aud": 700.68}, "lightgbm": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.25, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 2.25, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.0, 0.88, 2.0, 3.12, 3.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-75.55, -75.55, -135.6, -135.6, -78.98, -105.55, -159.08, -221.95, -285.43, -285.43, -219.6, -157.42, -112.61, -93.28, -93.28, -93.28, -93.28, -93.28, -80.16, -80.16, -34.51, -34.51, -34.51, 46.44, 73.8, 73.8, 126.71, 75.35, 155.78, 304.47, 315.16, 318.2, 318.2, 309.16, 318.17, 318.17, 349.41, 483.27, 610.5, 732.51, 732.51, 732.51, 732.51, 732.51, 732.51, 732.51, 732.51, 732.51], "profit_aud": 732.51}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -20.59, -77.22, -125.01, -178.54, -178.54, -178.54, -116.11, -50.28, 11.9, 11.9, 11.9, 11.9, 11.9, 20.08, 36.02, 36.02, 42.37, 88.01, 166.41, 249.14, 168.19, 162.06, 162.06, 220.84, 272.2, 352.63, 367.5, 378.2, 351.18, 361.49, 361.49, 361.49, 361.49, 361.49, 495.35, 622.59, 744.6, 857.73, 857.73, 857.73, 857.73, 857.73, 770.46, 770.46, 864.69], "profit_aud": 864.69}}} \ No newline at end of file diff --git a/results/daily/2026-01-06.json b/results/daily/2026-01-06.json new file mode 100644 index 0000000..1ab70a4 --- /dev/null +++ b/results/daily/2026-01-06.json @@ -0,0 +1 @@ +{"date": "2026-01-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [82.22, 81.15, 81.44, 72.3, 67.13, 66.87, 79.96, 76.77, 76.21, 76.5, 76.09, 68.28, 15.55, 6.13, -4.44, -8.46, -7.75, -9.7, -8.05, -22.28, -9.83, -8.53, -3.41, -6.58, -6.25, -4.47, -8.17, -2.63, 10.47, 38.58, 60.95, 85.25, 89.98, 115.42, 122.3, 193.43, 226.58, 330.17, 4819.29, 14577.94, 3844.87, 371.15, 248.17, 250.98, 344.55, 234.81, 271.98, 203.16], "forecast_price": {"naive": [60.44, 61.32, 48.04, 49.62, 45.3, 38.23, 42.82, 50.29, 50.78, 49.94, 52.66, 49.74, 35.85, 15.46, -7.56, -65.82, -65.52, -63.72, -52.51, -50.8, -36.52, -62.72, -66.18, -64.76, -21.89, -9.84, -47.03, -41.09, -64.34, -118.95, -85.57, -24.34, -8.25, -8.04, -7.21, -3.97, 24.99, 107.09, 101.79, 97.61, 90.51, 75.23, 76.34, 77.12, 73.47, 69.82, 71.12, 83.76], "lightgbm": [39.32, 41.56, 38.23, 40.55, 38.36, 38.47, 38.72, 40.6, 38.81, 39.06, 40.67, 37.27, 32.18, 26.96, 17.26, -5.82, -9.0, -10.22, -11.21, -13.61, -12.48, -19.14, -19.98, -19.88, -9.7, -6.54, -16.61, -14.81, -19.88, -19.62, -17.79, 2.31, 13.37, 23.01, 27.31, 36.37, 44.66, 85.33, 84.3, 84.3, 80.73, 70.21, 70.26, 67.73, 62.11, 61.24, 62.17, 73.41], "lstm": [89.09, 80.24, 73.09, 61.26, 60.02, 55.47, 58.28, 67.83, 63.57, 71.79, 76.11, 72.26, 54.18, 43.84, 24.92, 11.87, 8.15, 7.85, 6.68, -1.08, -2.09, -0.36, -0.41, 2.33, 7.44, 6.09, 6.16, 9.82, 8.81, 12.27, 14.38, 22.1, 19.76, 29.38, 34.13, 60.49, 82.49, 117.84, 115.82, 100.75, 99.93, 95.27, 90.46, 84.79, 81.34, 75.18, 85.06, 84.76]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -83.91, -167.49, -67.55, 9.23, 9.23, 9.23, 9.23, 9.23, 9.23, 9.23, 9.78, 17.18, 17.18, 29.31, 29.31, 57.17, 69.46, 80.11, 75.85, 84.08, 85.64, 80.68, 90.89, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 91.22, 6115.33, 24337.76, 29143.85, 29607.79, 29297.58, 29262.44, 29693.13, 29399.61, 29705.59, 29705.59], "profit_aud": 29705.59}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -18.8, -102.38, -202.33, -202.33, -107.07, -107.07, -11.95, -11.95, -11.95, -11.95, -11.4, -0.82, 8.86, 20.99, 20.99, 14.75, 2.47, 13.13, 17.39, 25.62, 17.8, 12.21, 16.3, 13.01, -0.08, -48.3, -124.49, -135.15, -146.39, -160.82, -176.11, -200.29, -200.29, 212.42, 6236.54, 24458.96, 29265.06, 29265.06, 29265.06, 29265.06, 29265.06, 28971.54, 28933.46, 29187.42], "profit_aud": 29187.42}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06, 2.03, 3.24, 4.25, 9.82, 9.82, 20.48, 24.74, 32.97, 25.15, 19.56, 29.77, 29.03, 15.95, -32.27, -108.46, -108.46, -108.46, -108.46, -108.46, -108.46, -108.46, 304.25, 6328.36, 24550.79, 29356.88, 29356.88, 29356.88, 29356.88, 29308.64, 29015.13, 29015.13, 29269.09], "profit_aud": 29269.09}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -30.01, -113.92, -197.5, -297.45, -297.45, -297.45, -201.82, -106.7, -21.35, -21.35, -21.35, -21.35, -21.35, -21.35, -21.35, -21.35, 6.51, 18.79, 29.45, 33.71, 37.37, 29.55, 35.15, 36.29, 33.33, 20.24, 20.24, 20.24, 116.15, 3.68, 3.68, 3.68, 3.68, 3.68, 416.39, 6440.5, 24662.93, 29469.02, 29469.02, 29469.02, 29469.02, 29469.02, 29175.51, 29481.49, 29481.49], "profit_aud": 29481.49}}} \ No newline at end of file diff --git a/results/daily/2026-01-07.json b/results/daily/2026-01-07.json new file mode 100644 index 0000000..386642a --- /dev/null +++ b/results/daily/2026-01-07.json @@ -0,0 +1 @@ +{"date": "2026-01-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [175.06, 161.49, 143.43, 165.03, 138.0, 142.21, 69.85, 33.72, 31.42, 30.99, 28.85, 19.36, 3.2, -5.0, -10.42, -9.22, -8.56, -7.57, -9.11, -8.24, -7.69, -5.2, 0.0, -0.15, 16.41, 14.05, 87.8, 108.84, 251.66, 187.43, 251.0, 219.61, 138.98, 142.14, 155.45, 258.12, 302.08, 333.54, 534.3, 749.65, 1097.71, 488.49, 273.18, 190.59, 183.51, 138.85, 142.88, 167.99], "forecast_price": {"naive": [82.22, 81.15, 81.44, 72.3, 67.13, 66.87, 79.96, 76.77, 76.21, 76.5, 76.09, 68.28, 15.55, 6.13, -4.44, -8.46, -7.75, -9.7, -8.05, -22.28, -9.83, -8.53, -3.41, -6.58, -6.25, -4.47, -8.17, -2.63, 10.47, 38.58, 60.95, 85.25, 89.98, 115.42, 122.3, 193.43, 226.58, 330.17, 4819.29, 14577.94, 3844.87, 371.15, 248.17, 250.98, 344.55, 234.81, 271.98, 203.16], "lightgbm": [95.05, 93.61, 93.23, 74.57, 69.3, 71.2, 91.38, 83.17, 83.07, 83.07, 83.91, 75.08, 67.8, 61.49, 31.19, 29.61, 25.44, 17.43, 15.17, 14.15, 9.46, 9.92, 7.49, 6.14, 6.14, 6.44, 5.45, 5.87, 7.67, 17.05, 25.29, 32.47, 38.41, 57.16, 72.67, 81.85, 84.45, 112.65, 112.65, 112.65, 112.65, 103.03, 101.67, 104.39, 107.15, 100.92, 100.48, 111.65], "lstm": [103.01, 107.1, 83.14, 84.23, 80.68, 64.87, 63.31, 66.67, 60.34, 62.87, 67.87, 66.67, 46.0, 28.76, 18.18, 11.99, 8.66, 1.34, -11.42, -13.21, -7.32, -10.44, -8.82, -6.79, -3.17, -1.97, 4.54, 4.23, 8.63, 16.63, 19.8, 31.88, 27.22, 33.82, 39.68, 71.63, 100.13, 145.19, 161.27, 131.0, 127.8, 108.22, 109.79, 98.38, 100.73, 88.13, 97.99, 91.3]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -179.29, 6.37, 6.37, 6.37, 6.37, 6.37, 6.37, 6.37, 6.37, 6.37, 6.37, 7.0, 20.02, 31.54, 42.25, 42.25, 53.63, 59.81, 60.78, 61.43, 61.43, 61.62, 80.08, 62.52, 62.52, 62.52, 377.09, 299.3, 613.05, 887.56, 713.84, 536.16, 341.85, 341.85, 341.85, 341.85, 1009.73, 1946.79, 3318.93, 3929.54, 3929.54, 3929.54, 3929.54, 3755.98, 3735.98, 3945.96], "profit_aud": 3945.96}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.5, -350.26, -262.95, -229.22, -229.22, -229.22, -229.22, -229.22, -229.22, -229.22, -227.92, -219.85, -219.85, -210.39, -210.39, -200.09, -190.47, -183.97, -183.97, -183.78, -187.88, -172.29, -282.04, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, -295.65, 372.23, 1309.29, 2681.43, 3292.04, 2950.57, 2923.89, 3153.27, 2979.71, 3140.45, 3140.45], "profit_aud": 3140.45}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -206.29, -378.79, -556.55, -469.24, -439.73, -439.73, -439.73, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.67, -403.48, -423.99, -431.79, -541.54, -677.59, -677.59, -677.59, -677.59, -677.59, -677.59, -677.59, -677.59, -677.59, -677.59, -260.67, 407.21, 1344.27, 2716.41, 2716.41, 2716.41, 2716.41, 2716.41, 2716.41, 2537.81, 2726.79], "profit_aud": 2726.79}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -39.27, -39.27, -6.82, -6.82, -6.82, -6.82, -6.82, -6.82, -6.82, -6.82, 4.57, 14.87, 19.68, 26.18, 26.17, 26.19, 24.14, 22.38, 22.38, 22.38, 22.38, 22.38, 22.38, 269.45, 95.73, 95.73, 95.73, 95.73, 95.73, 512.64, 1180.52, 2117.58, 3489.72, 3489.72, 3489.72, 3489.72, 3489.72, 3316.16, 3476.9, 3476.9], "profit_aud": 3476.9}}} \ No newline at end of file diff --git a/results/daily/2026-01-08.json b/results/daily/2026-01-08.json new file mode 100644 index 0000000..1a26ac0 --- /dev/null +++ b/results/daily/2026-01-08.json @@ -0,0 +1 @@ +{"date": "2026-01-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [157.39, 183.16, 150.58, 155.12, 168.64, 139.02, 114.95, 106.27, 90.98, 98.99, 103.76, 115.4, 64.08, 35.68, 31.01, 21.6, -6.71, -7.46, -12.02, -9.74, -8.29, -6.92, -7.01, -7.0, -6.67, -6.25, -4.7, 121.65, 204.06, 449.22, 532.1, 284.72, 861.25, 274.67, 237.74, 275.12, 305.41, 338.89, 313.59, 299.93, 228.84, 164.15, 138.01, 117.07, 97.38, 90.69, 94.3, 212.48], "forecast_price": {"naive": [175.06, 161.49, 143.43, 165.03, 138.0, 142.21, 69.85, 33.72, 31.42, 30.99, 28.85, 19.36, 3.2, -5.0, -10.42, -9.22, -8.56, -7.57, -9.11, -8.24, -7.69, -5.2, 0.0, -0.15, 16.41, 14.05, 87.8, 108.84, 251.66, 187.43, 251.0, 219.61, 138.98, 142.14, 155.45, 258.12, 302.08, 333.54, 534.3, 749.65, 1097.71, 488.49, 273.18, 190.59, 183.51, 138.85, 142.88, 167.99], "lightgbm": [107.37, 107.23, 108.61, 100.16, 95.45, 94.82, 66.18, 66.04, 67.63, 69.07, 70.09, 75.89, 65.46, 55.85, 38.54, 25.73, 25.86, 21.27, 14.0, 13.54, 12.3, 11.5, 11.04, 9.63, 13.76, 13.3, 38.39, 48.23, 66.51, 69.71, 79.98, 103.81, 107.75, 132.95, 138.18, 145.65, 152.41, 154.27, 154.27, 154.27, 154.27, 153.29, 148.05, 142.95, 142.95, 137.7, 137.7, 136.33], "lstm": [100.8, 101.11, 79.22, 83.67, 85.04, 69.74, 72.74, 75.25, 76.38, 82.21, 90.48, 87.48, 69.07, 65.73, 51.63, 40.58, 39.45, 31.21, 17.38, 11.72, 16.7, 22.45, 24.88, 24.16, 29.97, 37.7, 40.23, 37.36, 43.84, 46.83, 60.57, 71.75, 60.5, 56.02, 59.99, 82.78, 113.76, 168.19, 224.09, 181.25, 160.79, 137.96, 124.14, 122.85, 110.87, 100.8, 110.49, 119.97]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 2.38, 3.5, 3.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-196.74, 9.31, -178.91, -178.91, 10.81, 10.81, 10.81, 10.81, -102.92, -116.78, -116.78, 27.47, 27.47, 27.47, 27.47, 27.47, 28.31, 37.63, 52.66, 64.84, 75.2, 75.2, 80.46, 81.33, 82.17, 82.95, 83.54, 83.54, 83.54, 645.06, 1310.18, 1310.18, 2386.75, 2043.42, 1746.24, 1746.24, 2051.65, 2475.27, 2867.25, 2867.25, 2867.25, 2867.25, 2867.25, 2867.25, 2867.25, 2753.89, 2740.69, 3006.29], "profit_aud": 3006.29}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -188.22, -13.71, -13.71, -13.71, -13.71, -13.71, -13.71, -13.71, -13.71, -13.71, -13.71, -18.17, -56.93, -83.93, -75.55, -75.55, -60.52, -53.21, -52.17, -51.31, -59.2, -50.44, -57.95, -50.13, -50.13, -50.13, 204.94, 18.52, 683.63, 1039.53, -37.03, -380.37, -677.54, -677.54, -677.54, -677.54, -285.55, 89.36, 375.4, 580.59, 580.59, 580.59, 580.59, 467.23, 454.03, 719.63], "profit_aud": 719.63}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -16.09, -148.93, -148.93, -148.93, -148.93, -4.68, -4.68, -4.68, -4.68, -4.68, -4.68, -4.68, -4.68, -4.68, 5.68, 14.34, 23.1, 31.85, 31.85, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 35.32, 458.94, 850.92, 1225.83, 1511.88, 1511.88, 1511.88, 1511.88, 1511.88, 1511.88, 1511.88, 1511.88], "profit_aud": 1511.88}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -173.78, -317.46, -347.22, -347.22, -347.22, -217.52, -73.27, -73.27, -73.27, -73.27, -73.27, -73.27, -73.27, -58.24, -46.06, -35.7, -27.05, -27.05, -23.16, -23.16, -23.16, -23.16, -23.16, -23.16, -23.16, -23.16, 332.74, 332.74, -10.59, -43.88, -43.88, -43.88, 379.74, 771.73, 1146.64, 1432.68, 1432.68, 1432.68, 1432.68, 1432.68, 1319.32, 1319.32, 1558.36], "profit_aud": 1558.36}}} \ No newline at end of file diff --git a/results/daily/2026-01-09.json b/results/daily/2026-01-09.json new file mode 100644 index 0000000..9abe335 --- /dev/null +++ b/results/daily/2026-01-09.json @@ -0,0 +1 @@ +{"date": "2026-01-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [106.65, 211.34, 101.56, 53.15, 55.02, 61.97, 75.81, 97.43, 135.32, 117.18, 106.88, 65.76, 30.62, 9.51, -10.11, -39.83, -16.08, -27.57, -30.76, -12.22, -9.79, -9.06, -14.88, -8.85, -7.81, -5.85, -8.48, -20.0, -12.84, -7.8, -8.36, -9.03, -10.84, -7.53, -7.45, 3.46, 67.07, 75.54, 77.8, 63.98, 37.4, 60.23, 66.98, 55.98, 62.31, 59.61, 29.24, 8.55], "forecast_price": {"naive": [157.39, 183.16, 150.58, 155.12, 168.64, 139.02, 114.95, 106.27, 90.98, 98.99, 103.76, 115.4, 64.08, 35.68, 31.01, 21.6, -6.71, -7.46, -12.02, -9.74, -8.29, -6.92, -7.01, -7.0, -6.67, -6.25, -4.7, 121.65, 204.06, 449.22, 532.1, 284.72, 861.25, 274.67, 237.74, 275.12, 305.41, 338.89, 313.59, 299.93, 228.84, 164.15, 138.01, 117.07, 97.38, 90.69, 94.3, 212.48], "lightgbm": [110.49, 106.71, 104.3, 96.1, 89.71, 93.01, 86.76, 78.14, 74.2, 78.14, 78.74, 87.25, 65.87, 58.45, 40.41, 28.18, 22.43, 18.33, 12.66, 7.77, 7.6, 6.89, 7.19, 5.88, 5.6, 5.6, 15.25, 45.31, 61.62, 65.42, 71.15, 88.15, 96.37, 125.01, 128.15, 134.6, 143.66, 160.03, 186.55, 186.55, 162.21, 147.25, 144.77, 126.36, 112.1, 102.84, 111.16, 158.01], "lstm": [86.62, 83.83, 71.55, 70.35, 67.3, 58.84, 60.85, 62.22, 71.83, 68.07, 79.17, 78.76, 65.31, 50.02, 41.12, 37.3, 31.29, 20.73, 8.07, 5.28, 7.84, 11.51, 15.83, 14.94, 14.39, 24.9, 21.6, 24.42, 31.69, 31.34, 43.97, 50.96, 46.52, 44.83, 44.83, 55.47, 80.79, 110.88, 149.04, 127.17, 124.97, 109.74, 104.52, 97.32, 99.14, 107.34, 103.79, 113.44]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.75, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 3.88, 5.0, 4.88, 3.62, 2.38, 2.25, 3.38, 4.5, 3.25, 3.12, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 1.25, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-133.31, 104.45, 104.45, 38.01, -30.77, -108.23, -202.98, -129.91, 39.23, 185.71, 319.31, 319.31, 319.31, 319.31, 320.58, 370.36, 390.47, 424.93, 463.38, 471.02, 471.02, 462.23, 480.82, 480.82, 471.06, 463.75, 463.75, 488.75, 504.79, 495.05, 495.05, 502.95, 516.5, 517.44, 518.37, 518.37, 602.2, 696.62, 793.87, 865.85, 819.1, 819.1, 902.83, 832.85, 902.95, 902.95, 902.95, 902.95], "profit_aud": 902.95}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 2.38, 3.5, 3.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-133.31, 104.45, -22.5, -22.5, 39.4, 39.4, 39.4, 39.4, -129.75, -146.15, -146.15, -63.95, -63.95, -63.95, -63.95, -63.95, -61.94, -27.48, 10.97, 26.25, 38.48, 38.48, 49.64, 50.75, 51.72, 52.45, 53.51, 53.51, 53.51, 43.77, 33.31, 33.31, 19.76, 29.17, 38.49, 38.49, 105.56, 199.98, 297.22, 297.22, 297.22, 297.22, 297.22, 297.22, 297.22, 222.71, 218.61, 229.3], "profit_aud": 229.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -169.15, -185.55, -185.55, -103.35, -103.35, -103.35, -103.35, -103.35, -103.35, -103.35, -103.35, -103.35, -103.35, -92.02, -83.77, -72.71, -62.95, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, -55.63, 38.78, 136.03, 216.01, 262.75, 262.75, 262.75, 262.75, 262.75, 188.24, 184.14, 194.83], "profit_aud": 194.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -77.46, -172.22, -294.0, -175.6, -175.6, -41.99, 40.21, 40.21, 40.21, 40.21, 40.21, 40.21, 40.21, 78.67, 93.94, 106.17, 117.5, 117.5, 117.5, 121.83, 115.25, 125.84, 125.84, 125.84, 125.84, 125.84, 114.56, 114.56, 123.97, 125.02, 125.02, 125.02, 219.44, 316.68, 396.66, 443.4, 443.4, 443.4, 373.43, 364.7, 364.7, 364.7, 375.39], "profit_aud": 375.39}}} \ No newline at end of file diff --git a/results/daily/2026-01-10.json b/results/daily/2026-01-10.json new file mode 100644 index 0000000..4c1bb68 --- /dev/null +++ b/results/daily/2026-01-10.json @@ -0,0 +1 @@ +{"date": "2026-01-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [3.61, -0.34, 0.45, -3.44, -5.92, -5.85, -6.64, -7.03, -7.38, -6.32, 3.03, 8.48, -1.09, -8.31, -8.08, -12.96, -14.1, -16.56, -29.98, -38.6, -45.76, -45.98, -52.53, -53.27, -52.02, -56.23, -55.26, -61.0, -54.72, -53.56, -60.77, -48.01, -27.03, -15.75, -10.52, -6.33, -5.38, -4.36, -2.4, 4.89, 10.3, 17.64, 18.5, 20.76, 18.53, 17.0, 16.9, 18.49], "forecast_price": {"naive": [106.65, 211.34, 101.56, 53.15, 55.02, 61.97, 75.81, 97.43, 135.32, 117.18, 106.88, 65.76, 30.62, 9.51, -10.11, -39.83, -16.08, -27.57, -30.76, -12.22, -9.79, -9.06, -14.88, -8.85, -7.81, -5.85, -8.48, -20.0, -12.84, -7.8, -8.36, -9.03, -10.84, -7.53, -7.45, 3.46, 67.07, 75.54, 77.8, 63.98, 37.4, 60.23, 66.98, 55.98, 62.31, 59.61, 29.24, 8.55], "lightgbm": [45.65, 54.42, 42.32, 45.12, 44.15, 43.08, 40.31, 37.95, 34.83, 37.78, 38.65, 42.11, 28.31, 23.74, 0.14, -14.3, -16.78, -22.89, -26.53, -27.91, -28.41, -31.69, -31.01, -31.63, -31.02, -29.77, -31.28, -43.03, -43.25, -57.86, -45.89, -39.51, -39.78, -29.11, -15.42, 11.27, 30.46, 33.63, 36.25, 30.34, 26.45, 30.74, 37.06, 34.15, 35.87, 34.63, 31.99, 27.2], "lstm": [31.28, 35.99, 27.5, 22.49, 22.65, 18.27, 18.68, 19.72, 22.11, 25.36, 37.33, 26.71, 9.02, -10.94, -27.7, -39.91, -44.97, -63.71, -74.81, -70.15, -69.4, -78.8, -78.42, -76.35, -82.2, -71.61, -66.14, -64.85, -67.55, -56.09, -41.06, -37.15, -26.06, -20.56, -19.09, 5.97, 24.83, 47.33, 64.81, 62.39, 69.32, 66.78, 59.74, 59.65, 52.71, 52.82, 55.22, 62.8]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.43, 0.93, 1.36, 2.84, 2.84, 11.14, 19.93, 29.15, 32.31, 36.1, 46.7, 45.33, 47.41, 47.41, 49.03, 50.79, 52.86, 56.61, 61.43, 67.15, 72.9, 79.47, 92.78, 92.78, 163.07, 232.15, 308.4, 349.44, 349.44, 425.4, 431.4, 434.78, 436.75, 438.07, 438.86, 439.53, 440.07, 440.37, 440.37, 440.37, 440.37, 463.49, 489.44, 512.6, 512.6, 512.6, 535.71], "profit_aud": 535.71}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.75, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 3.88, 5.0, 4.88, 3.62, 2.38, 2.25, 3.38, 4.5, 3.25, 3.12, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 1.25, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-4.51, -4.9, -4.9, -0.59, 6.81, 14.12, 22.43, 17.16, 7.93, 0.04, 3.82, 3.82, 3.82, 3.82, 4.83, 21.03, 38.66, 59.36, 96.84, 120.96, 120.96, 76.37, 142.03, 142.03, 76.99, 6.71, 6.71, 82.96, 151.36, 84.41, 84.41, 126.43, 160.22, 162.19, 163.5, 163.5, 156.78, 151.33, 148.34, 153.84, 140.97, 140.97, 164.09, 138.15, 158.99, 158.99, 158.99, 158.99], "profit_aud": 158.99}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 0.38, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-4.51, -4.9, -4.9, -4.9, -4.9, -4.9, -4.9, -4.9, 4.33, 5.21, 5.21, 15.81, 15.81, 15.81, 15.81, 17.43, 19.2, 21.27, 25.01, 29.84, 35.56, 70.04, 70.04, 70.04, 70.04, 70.04, 70.04, 146.29, 214.69, 281.64, 357.6, 357.6, 377.88, 379.84, 381.16, 381.16, 381.16, 381.16, 378.16, 377.48, 364.61, 364.61, 387.73, 413.68, 436.84, 458.08, 458.08, 458.08], "profit_aud": 458.08}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 1.75, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-4.51, -4.9, -4.9, -4.9, -4.9, 2.41, 10.72, 19.5, 22.56, 14.67, 18.45, 29.05, 29.05, 30.09, 31.1, 32.72, 34.48, 36.55, 62.78, 62.78, 62.78, 120.26, 185.91, 252.5, 317.53, 324.56, 324.56, 324.56, 345.09, 351.78, 359.38, 365.38, 368.76, 370.73, 372.04, 372.04, 372.04, 372.04, 369.04, 375.16, 388.03, 410.08, 410.08, 410.08, 386.92, 384.54, 384.54, 407.64], "profit_aud": 407.64}}} \ No newline at end of file diff --git a/results/daily/2026-01-11.json b/results/daily/2026-01-11.json new file mode 100644 index 0000000..a75d123 --- /dev/null +++ b/results/daily/2026-01-11.json @@ -0,0 +1 @@ +{"date": "2026-01-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [16.26, 21.7, 11.26, 7.13, 11.28, 9.2, 8.64, 6.96, 3.77, 3.51, 3.76, 3.47, -0.76, -3.79, -6.04, -13.02, -6.66, -7.56, -13.35, -34.0, -39.46, -52.73, -56.84, -58.47, -59.94, -76.52, -81.61, -81.19, -82.33, -75.54, -58.48, -51.32, -42.38, -17.76, -10.72, -5.9, -0.77, 24.22, 31.98, 28.89, 32.5, 32.02, 25.61, 29.17, 29.04, 21.09, 21.02, 23.48], "forecast_price": {"naive": [3.61, -0.34, 0.45, -3.44, -5.92, -5.85, -6.64, -7.03, -7.38, -6.32, 3.03, 8.48, -1.09, -8.31, -8.08, -12.96, -14.1, -16.56, -29.98, -38.6, -45.76, -45.98, -52.53, -53.27, -52.02, -56.23, -55.26, -61.0, -54.72, -53.56, -60.77, -48.01, -27.03, -15.75, -10.52, -6.33, -5.38, -4.36, -2.4, 4.89, 10.3, 17.64, 18.5, 20.76, 18.53, 17.0, 16.9, 18.49], "lightgbm": [8.96, 8.6, 7.4, 8.49, 5.56, 4.94, 3.68, 1.98, 1.63, 3.67, 4.26, 8.09, 4.83, -5.02, -9.02, -10.03, -9.26, -9.06, -15.33, -18.12, -24.03, -24.85, -32.73, -30.97, -30.97, -33.45, -31.04, -30.55, -29.81, -27.15, -26.94, -18.27, 1.92, 12.47, 17.01, 35.69, 49.2, 50.09, 58.5, 58.77, 54.89, 54.28, 55.41, 51.35, 53.51, 50.65, 53.22, 53.98], "lstm": [32.96, 35.91, 31.53, 27.69, 26.76, 25.11, 26.85, 27.57, 28.17, 33.05, 43.76, 34.88, 15.14, 0.73, -17.7, -32.28, -42.1, -51.16, -53.43, -57.81, -52.34, -59.83, -63.01, -62.72, -62.72, -61.06, -68.55, -66.47, -69.08, -70.8, -53.48, -49.79, -39.29, -26.56, -15.76, 1.62, 26.63, 43.31, 54.99, 56.73, 60.77, 56.14, 50.02, 44.41, 41.2, 45.81, 48.21, 55.32]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 2.38, 1.12, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-20.32, 4.09, 4.09, -4.83, 7.86, 7.86, 7.86, 7.86, 7.86, 7.86, 7.86, 7.86, 7.95, 8.43, 9.18, 25.45, 18.06, 19.0, 20.67, 24.92, 29.86, 36.45, 43.55, 50.86, 58.35, 154.01, 256.02, 357.51, 460.42, 507.63, 514.94, 521.36, 526.65, 528.87, 530.21, 530.95, 531.05, 531.05, 571.02, 571.02, 611.64, 651.66, 619.64, 656.11, 688.77, 685.82, 659.54, 688.89], "profit_aud": 688.89}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -27.12, -14.46, -15.35, -18.17, -18.17, -28.97, -37.67, -42.39, -44.14, -39.44, -35.09, -36.04, -35.09, -35.09, -33.46, -32.63, -31.69, -30.02, -25.77, -20.83, -14.24, -7.14, 7.48, 7.48, 103.13, 205.15, 306.64, 368.38, 368.38, 441.48, 447.9, 453.2, 455.42, 456.76, 457.49, 457.59, 454.56, 450.57, 450.57, 450.57, 450.57, 482.58, 519.04, 555.34, 555.34, 555.34, 584.69], "profit_aud": 584.69}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 1.75, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -14.07, -6.05, -6.05, -6.05, -9.63, -18.33, -23.05, -27.43, -22.72, -18.38, -19.33, -18.85, -18.1, -13.22, -13.22, -13.22, -11.55, -7.3, -2.36, 4.23, 75.28, 148.37, 185.83, 281.48, 383.5, 393.65, 403.94, 413.38, 420.69, 427.1, 427.1, 427.1, 427.1, 427.1, 427.1, 427.1, 467.08, 503.19, 543.81, 543.81, 575.83, 575.83, 575.83, 575.83, 575.83, 575.83], "profit_aud": 575.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.88, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -14.1, -25.6, -36.4, -39.28, -39.28, -34.9, -30.2, -25.86, -25.86, -25.86, -25.1, -23.47, -22.64, -21.7, -20.03, -11.53, -11.53, -4.94, 51.91, 51.91, 51.91, 51.91, 153.92, 255.41, 358.32, 452.74, 460.05, 466.46, 471.76, 473.98, 475.32, 475.32, 475.32, 475.32, 515.29, 551.41, 592.03, 632.05, 632.05, 627.97, 591.67, 591.67, 591.67, 621.02], "profit_aud": 621.02}}} \ No newline at end of file diff --git a/results/daily/2026-01-12.json b/results/daily/2026-01-12.json new file mode 100644 index 0000000..d2293bd --- /dev/null +++ b/results/daily/2026-01-12.json @@ -0,0 +1 @@ +{"date": "2026-01-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [21.54, 19.41, 26.18, 25.63, 27.32, 29.09, 29.99, 33.53, 33.55, 35.6, 43.05, 49.83, 50.45, 37.11, 17.78, -6.03, -8.08, -5.24, -11.82, -40.53, -51.91, -68.07, -50.49, -59.03, -19.56, -29.4, -43.13, -37.23, -109.8, -58.59, -11.68, -58.17, -8.12, -21.46, -7.01, -9.89, 180.11, 58.16, 56.79, 58.16, 62.99, 61.47, 55.26, 57.9, 56.92, 56.8, 60.6, 65.18], "forecast_price": {"naive": [16.26, 21.7, 11.26, 7.13, 11.28, 9.2, 8.64, 6.96, 3.77, 3.51, 3.76, 3.47, -0.76, -3.79, -6.04, -13.02, -6.66, -7.56, -13.35, -34.0, -39.46, -52.73, -56.84, -58.47, -59.94, -76.52, -81.61, -81.19, -82.33, -75.54, -58.48, -51.32, -42.38, -17.76, -10.72, -5.9, -0.77, 24.22, 31.98, 28.89, 32.5, 32.02, 25.61, 29.17, 29.04, 21.09, 21.02, 23.48], "lightgbm": [11.75, 11.75, 9.99, 4.8, 9.13, 7.69, 7.1, 4.64, 2.27, 4.29, 10.59, 11.48, 10.63, 12.25, 5.03, -5.76, 1.49, -3.51, -10.12, -18.42, -26.56, -34.95, -35.69, -37.83, -36.75, -36.19, -37.83, -37.83, -37.83, -35.72, -33.96, -26.57, -18.51, 0.45, 5.43, 27.37, 34.29, 47.83, 47.62, 45.95, 44.44, 43.17, 41.49, 40.9, 40.74, 40.5, 40.5, 40.2], "lstm": [32.21, 40.28, 32.14, 25.3, 25.29, 25.72, 31.65, 29.99, 38.63, 48.37, 66.48, 65.53, 52.96, 45.36, 22.83, 5.6, -5.02, -13.42, -19.77, -29.6, -24.02, -29.94, -32.53, -33.64, -34.84, -33.48, -43.07, -38.01, -45.75, -48.71, -38.94, -36.03, -26.44, -12.4, -4.13, 13.79, 39.46, 56.42, 64.18, 62.98, 63.4, 66.17, 56.34, 49.5, 49.74, 49.27, 53.5, 58.79]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 0.28, 2.5, 0.28, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 2.75, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-26.92, -51.18, -83.9, -115.94, -131.1, -131.1, -131.1, -131.1, -131.1, -131.1, -77.29, -15.01, 48.05, 94.44, 94.44, 95.95, 106.05, 99.51, 100.98, 106.05, 170.93, 256.02, 319.13, 392.93, 368.47, 331.73, 385.65, 375.22, 512.48, 585.71, 572.74, 645.46, 636.45, 663.27, 655.49, 667.85, 892.99, 892.99, 892.99, 892.99, 971.72, 1048.57, 1048.57, 1048.57, 1048.57, 1048.57, 1048.57, 1130.04], "profit_aud": 1130.04}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 2.38, 1.12, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-26.92, -5.09, -5.09, -37.12, -6.39, -6.39, -6.39, -6.39, -6.39, -6.39, -6.39, -6.39, -12.69, -17.33, -19.56, -12.02, -20.99, -20.33, -18.85, -13.79, -7.3, 1.21, 7.52, 14.9, 17.35, 54.09, 108.01, 154.54, 291.8, 328.41, 329.87, 337.15, 338.16, 340.84, 341.72, 342.96, 320.44, 320.44, 391.43, 391.43, 470.16, 547.01, 477.94, 550.31, 614.34, 606.39, 530.64, 612.12], "profit_aud": 612.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -32.04, -1.3, -17.44, -54.93, -96.85, -138.78, -183.28, -129.47, -67.18, -4.13, 42.26, 42.26, 49.8, 40.71, 41.37, 42.84, 47.91, 54.4, 62.91, 69.22, 143.01, 157.68, 157.68, 211.6, 258.14, 395.39, 402.71, 404.17, 411.45, 412.46, 412.46, 412.46, 412.46, 412.46, 485.16, 556.15, 628.85, 707.58, 707.58, 707.58, 707.58, 707.58, 707.58, 707.58, 707.58], "profit_aud": 707.58}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-26.92, -5.09, -5.09, -37.12, -71.27, -107.63, -124.28, -166.19, -166.19, -121.7, -67.88, -5.6, 57.46, 57.46, 57.46, 57.46, 58.47, 59.12, 60.6, 111.26, 53.64, 62.15, 68.46, 75.84, 80.73, 80.73, 134.65, 157.92, 295.17, 368.4, 383.01, 390.28, 391.29, 393.97, 394.85, 394.85, 394.85, 394.85, 465.84, 538.54, 617.28, 694.12, 694.12, 686.01, 686.01, 615.01, 615.01, 696.49], "profit_aud": 696.49}}} \ No newline at end of file diff --git a/results/daily/2026-01-13.json b/results/daily/2026-01-13.json new file mode 100644 index 0000000..8a89ecd --- /dev/null +++ b/results/daily/2026-01-13.json @@ -0,0 +1 @@ +{"date": "2026-01-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [68.22, 71.56, 79.72, 88.68, 83.29, 96.11, 88.54, 83.86, 104.76, 112.57, 107.45, 139.78, 120.65, 66.82, 55.9, 76.1, -11.62, -46.1, -30.1, -49.65, -37.53, -31.62, -10.04, -18.67, -7.67, -8.7, -6.22, -8.33, -10.94, -4.27, -13.88, -63.83, -92.97, -25.75, -10.15, 20.28, 34.39, 79.02, 82.09, 84.84, 74.9, 76.97, 72.79, 70.92, 70.61, 68.66, 71.36, 74.89], "forecast_price": {"naive": [21.54, 19.41, 26.18, 25.63, 27.32, 29.09, 29.99, 33.53, 33.55, 35.6, 43.05, 49.83, 50.45, 37.11, 17.78, -6.03, -8.08, -5.24, -11.82, -40.53, -51.91, -68.07, -50.49, -59.03, -19.56, -29.4, -43.13, -37.23, -109.8, -58.59, -11.68, -58.17, -8.12, -21.46, -7.01, -9.89, 180.11, 58.16, 56.79, 58.16, 62.99, 61.47, 55.26, 57.9, 56.92, 56.8, 60.6, 65.18], "lightgbm": [40.94, 40.94, 39.37, 36.7, 38.35, 38.53, 38.53, 39.23, 38.8, 41.13, 42.02, 41.76, 38.81, 35.92, 24.12, 8.41, 3.71, 7.69, -2.26, -11.87, -17.67, -21.69, -21.62, -24.46, -11.51, -15.14, -19.81, -15.89, -19.57, -14.02, -2.81, -6.75, 12.74, 15.51, 31.69, 37.12, 133.84, 69.54, 67.8, 69.03, 70.97, 67.16, 62.76, 60.89, 59.9, 59.7, 61.81, 65.05], "lstm": [68.8, 71.37, 63.09, 57.2, 51.36, 52.11, 59.51, 55.89, 63.4, 78.22, 91.1, 91.9, 76.22, 65.72, 31.98, 15.89, 1.88, -4.9, -13.24, -21.4, -18.86, -25.3, -30.69, -27.18, -29.42, -29.84, -29.55, -24.56, -29.16, -26.92, -22.11, -16.01, -5.37, 8.21, 22.06, 41.26, 74.11, 97.4, 99.76, 89.21, 83.83, 81.57, 74.29, 65.72, 63.34, 63.96, 67.48, 66.55]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 4.5, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-85.27, -174.72, -274.37, -274.37, -378.48, -318.41, -318.41, -423.24, -423.24, -282.53, -148.22, 26.51, 177.31, 167.96, 98.09, 193.21, 194.67, 252.3, 271.11, 333.17, 380.08, 419.61, 408.46, 431.8, 422.21, 412.56, 404.79, 394.37, 408.04, 402.71, 420.07, 499.86, 616.07, 648.25, 654.59, 654.59, 654.59, 753.37, 855.98, 962.03, 962.03, 1058.25, 1058.25, 1058.25, 1058.25, 1058.25, 1058.25, 1058.25], "profit_aud": 1058.25}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 0.28, 2.5, 0.28, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 2.75, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-85.27, -174.72, -274.37, -385.22, -431.44, -431.44, -431.44, -431.44, -431.44, -431.44, -297.13, -122.4, 28.41, 111.93, 111.93, 92.9, 107.43, 49.8, 53.56, 59.77, 106.68, 146.2, 158.76, 182.09, 172.51, 161.64, 169.41, 167.08, 180.75, 186.09, 170.68, 250.47, 147.27, 179.46, 168.2, 142.84, 185.83, 185.83, 185.83, 185.83, 279.45, 375.67, 375.67, 375.67, 375.67, 375.67, 375.67, 469.28], "profit_aud": 469.28}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.94, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.88, 4.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -110.85, -110.85, -110.85, -110.85, -110.85, -110.85, -110.85, 10.03, 10.03, 10.03, 10.03, 10.03, 10.03, 24.56, -27.31, -23.55, -17.34, 29.57, 69.09, 81.64, 104.98, 95.4, 92.96, 100.74, 100.74, 114.41, 114.94, 99.53, 179.32, 179.32, 179.32, 179.32, 179.32, 222.31, 321.08, 321.08, 427.13, 520.76, 520.76, 520.76, 520.76, 520.76, 520.76, 520.76, 520.76], "profit_aud": 520.76}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -110.85, -214.96, -335.09, -384.23, -489.06, -489.06, -348.36, -214.05, -39.32, 111.49, 111.49, 111.49, 111.49, 111.49, 117.25, 121.02, 183.08, 141.42, 145.37, 157.93, 157.93, 167.51, 178.38, 186.15, 182.7, 196.37, 196.9, 198.64, 206.62, 218.24, 218.24, 218.24, 218.24, 218.24, 317.01, 419.62, 525.68, 619.3, 619.3, 619.3, 619.3, 619.3, 619.3, 619.3, 619.3], "profit_aud": 619.3}}} \ No newline at end of file diff --git a/results/daily/2026-01-14.json b/results/daily/2026-01-14.json new file mode 100644 index 0000000..fdbc012 --- /dev/null +++ b/results/daily/2026-01-14.json @@ -0,0 +1 @@ +{"date": "2026-01-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.38, 74.48, 70.0, 64.92, 61.4, 64.78, 62.26, 62.06, 60.74, 60.07, 72.45, 82.41, 88.68, 30.64, 2.37, -12.74, -13.49, -13.35, -9.99, -8.08, -7.75, -9.49, -11.17, -10.07, -1.52, -4.71, -7.34, -7.74, -7.24, -8.54, -10.91, -19.76, -11.99, -7.74, -22.83, -4.63, 38.29, 73.16, 79.1, 118.4, 128.1, 146.49, 97.27, 88.08, 100.42, 116.85, 135.16, 120.42], "forecast_price": {"naive": [68.22, 71.56, 79.72, 88.68, 83.29, 96.11, 88.54, 83.86, 104.76, 112.57, 107.45, 139.78, 120.65, 66.82, 55.9, 76.1, -11.62, -46.1, -30.1, -49.65, -37.53, -31.62, -10.04, -18.67, -7.67, -8.7, -6.22, -8.33, -10.94, -4.27, -13.88, -63.83, -92.97, -25.75, -10.15, 20.28, 34.39, 79.02, 82.09, 84.84, 74.9, 76.97, 72.79, 70.92, 70.61, 68.66, 71.36, 74.89], "lightgbm": [64.75, 64.44, 60.5, 59.02, 58.55, 58.6, 48.7, 49.54, 49.02, 56.33, 60.39, 61.9, 62.23, 48.9, 39.49, 39.08, -0.02, -8.86, -6.71, -19.1, -12.25, -12.88, -6.8, -7.76, -3.34, -5.25, 2.62, -4.03, -0.63, 11.07, 3.53, -3.15, -0.14, 17.87, 34.45, 59.44, 63.74, 100.06, 103.75, 103.06, 92.25, 90.63, 83.28, 80.21, 79.98, 79.74, 79.74, 83.88], "lstm": [75.03, 77.74, 72.56, 66.93, 63.82, 62.58, 67.73, 65.93, 74.4, 82.7, 95.9, 102.98, 85.62, 71.49, 34.0, 19.89, 7.5, -0.45, -8.58, -16.75, -13.3, -19.59, -20.0, -19.65, -21.41, -19.48, -20.91, -19.51, -24.39, -20.34, -16.83, -8.62, -1.18, 9.54, 24.19, 46.57, 76.35, 100.78, 98.06, 94.62, 81.66, 75.97, 74.57, 68.48, 68.35, 59.97, 66.44, 67.49]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.75, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.38, 1.25, 0.0, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -76.76, -76.76, -76.76, -102.51, -178.44, -253.53, -162.97, -59.96, 50.89, 50.89, 50.89, 66.81, 83.68, 100.36, 112.85, 102.76, 93.07, 101.38, 115.35, 127.93, 126.03, 120.14, 111.99, 111.99, 102.94, 109.34, 122.98, 147.68, 162.67, 162.67, 191.21, 191.79, 191.79, 191.79, 191.79, 339.79, 499.92, 683.03, 561.45, 451.34, 423.22, 569.28, 738.23, 888.76], "profit_aud": 888.76}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 4.5, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-89.22, -182.32, -269.82, -269.82, -346.58, -306.09, -306.09, -383.67, -383.67, -308.58, -218.02, -115.0, -4.16, -8.45, -11.41, -27.34, -25.65, -8.97, -2.72, 7.37, 17.05, 28.92, 16.52, 29.1, 27.2, 21.97, 12.79, 3.12, 12.18, 1.51, 15.14, 39.84, 54.83, 64.51, 78.77, 78.77, 78.77, 170.23, 269.1, 417.1, 417.1, 600.22, 600.22, 600.22, 600.22, 600.22, 600.22, 600.22], "profit_aud": 600.22}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -77.82, -155.4, -231.32, -231.32, -167.93, -64.92, 45.93, 45.93, 45.93, 45.93, 47.62, 64.3, 60.15, 70.25, 79.93, 91.8, 91.8, 104.38, 102.69, 108.58, 99.41, 109.07, 110.89, 100.21, 89.3, 114.0, 128.99, 128.99, 128.99, 128.99, 128.99, 220.45, 319.32, 467.32, 627.45, 627.45, 627.45, 627.45, 627.45, 627.45, 627.45, 627.45], "profit_aud": 627.45}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 0.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.88, 0.75, 1.88, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -81.15, -157.9, -238.88, -273.43, -351.01, -351.01, -275.92, -185.36, -82.34, 28.5, 28.5, 28.5, 28.5, 28.5, 30.17, 31.42, 41.52, 32.92, 34.1, 45.28, 45.28, 47.18, 47.18, 56.35, 56.35, 65.41, 76.08, 77.44, 79.91, 81.41, 81.41, 81.41, 81.41, 81.41, 172.87, 271.74, 419.74, 579.87, 579.87, 579.87, 579.87, 579.87, 433.81, 433.81, 569.29], "profit_aud": 569.29}}} \ No newline at end of file diff --git a/results/daily/2026-01-15.json b/results/daily/2026-01-15.json new file mode 100644 index 0000000..187c8d4 --- /dev/null +++ b/results/daily/2026-01-15.json @@ -0,0 +1 @@ +{"date": "2026-01-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [88.39, 74.21, 74.7, 71.27, 62.53, 65.11, 56.14, 54.7, 60.94, 53.76, 60.57, 61.93, 58.57, 41.5, 21.96, -4.58, -6.79, -8.16, -12.29, -69.86, -61.62, -9.51, -21.66, -15.14, -7.97, -7.95, -8.33, -7.92, -13.21, -9.74, -10.85, -19.4, -10.18, -11.9, -6.61, -6.2, 0.84, 3.46, 29.56, 31.66, 31.88, 24.47, 32.15, 37.32, 29.89, 33.45, 34.18, 35.77], "forecast_price": {"naive": [71.38, 74.48, 70.0, 64.92, 61.4, 64.78, 62.26, 62.06, 60.74, 60.07, 72.45, 82.41, 88.68, 30.64, 2.37, -12.74, -13.49, -13.35, -9.99, -8.08, -7.75, -9.49, -11.17, -10.07, -1.52, -4.71, -7.34, -7.74, -7.24, -8.54, -10.91, -19.76, -11.99, -7.74, -22.83, -4.63, 38.29, 73.16, 79.1, 118.4, 128.1, 146.49, 97.27, 88.08, 100.42, 116.85, 135.16, 120.42], "lightgbm": [70.37, 67.73, 66.9, 66.11, 64.39, 66.07, 66.66, 66.14, 66.03, 70.25, 77.35, 84.76, 71.95, 50.14, 37.43, 36.21, 13.31, 5.94, 3.59, 6.3, 5.49, 3.05, -0.16, -1.08, 8.79, 8.79, 5.53, 13.57, 15.86, 17.91, 17.11, 18.54, 24.76, 30.58, 37.83, 52.92, 61.99, 91.55, 99.64, 123.43, 123.01, 115.99, 98.75, 90.89, 91.71, 98.97, 103.21, 106.37], "lstm": [107.2, 104.84, 97.88, 95.82, 89.83, 90.82, 95.33, 93.92, 97.84, 106.41, 110.25, 111.29, 81.98, 61.47, 33.97, 12.26, 0.3, -3.01, -8.41, -16.16, -18.01, -20.18, -19.26, -19.91, -17.12, -21.11, -22.31, -22.35, -27.54, -23.13, -18.35, -9.02, -0.08, 9.63, 24.23, 51.03, 75.55, 109.34, 104.14, 110.3, 94.22, 87.74, 81.59, 78.52, 70.56, 69.44, 70.77, 76.05]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -68.37, -7.43, -74.63, -74.63, 2.78, 2.78, 2.78, 2.78, 3.36, 4.21, 5.22, 20.59, 107.91, 184.93, 179.65, 206.73, 225.66, 215.69, 205.75, 195.34, 185.44, 201.95, 201.95, 215.51, 239.76, 247.39, 262.27, 263.09, 263.87, 263.87, 263.87, 263.87, 263.87, 299.74, 269.15, 269.15, 315.8, 315.8, 357.61, 400.33, 445.05], "profit_aud": 445.05}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.75, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.38, 1.25, 0.0, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -78.16, -78.16, -78.16, -100.86, -177.03, -244.23, -168.52, -91.1, -17.89, -17.89, -17.89, -12.18, -3.68, 6.51, 21.88, -65.44, -142.47, -134.14, -107.07, -88.14, -98.1, -108.04, -117.29, -117.29, -133.8, -126.49, -112.93, -88.69, -75.96, -75.96, -67.7, -66.92, -66.92, -66.92, -66.92, -27.34, 12.51, 43.11, 2.92, -43.72, -52.09, -10.28, 32.45, 77.16], "profit_aud": 77.16}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -78.16, -96.39, -96.39, -96.39, -172.57, -172.57, -96.85, -19.44, -19.44, -19.44, -19.44, -19.44, -19.44, -19.44, -4.07, -47.73, 29.29, 41.18, 68.26, 87.19, 87.19, 78.24, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 88.65, 128.23, 168.09, 198.68, 198.68, 152.03, 147.85, 147.85, 190.57, 235.28], "profit_aud": 235.28}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -78.16, -159.55, -182.85, -251.22, -251.22, -184.02, -108.31, -30.9, -30.9, -30.9, -30.9, -30.9, -30.9, -29.88, -28.34, -19.61, -11.91, -0.01, -0.01, 5.66, -4.3, 0.67, 11.08, 20.97, 37.48, 49.66, 51.02, 53.44, 54.71, 54.71, 54.71, 54.71, 54.71, 59.03, 95.99, 135.57, 175.43, 175.43, 175.43, 175.43, 175.43, 175.43, 175.43, 175.43], "profit_aud": 175.43}}} \ No newline at end of file diff --git a/results/daily/2026-01-16.json b/results/daily/2026-01-16.json new file mode 100644 index 0000000..2bcb060 --- /dev/null +++ b/results/daily/2026-01-16.json @@ -0,0 +1 @@ +{"date": "2026-01-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [34.97, 34.88, 39.6, 40.33, 31.62, 37.36, 35.76, 35.27, 48.79, 47.28, 47.65, 34.56, 21.64, -4.25, -6.95, -11.32, -11.4, -12.77, -10.22, -14.98, -11.46, -15.2, -16.34, -43.16, -19.98, -17.69, -24.94, -23.98, -67.8, -78.26, -44.86, -97.76, -67.48, -35.42, -7.99, -4.8, -1.11, -2.21, 13.06, 34.25, 32.85, 27.66, 27.78, 26.78, 18.73, 17.24, 19.96, 24.46], "forecast_price": {"naive": [88.39, 74.21, 74.7, 71.27, 62.53, 65.11, 56.14, 54.7, 60.94, 53.76, 60.57, 61.93, 58.57, 41.5, 21.96, -4.58, -6.79, -8.16, -12.29, -69.86, -61.62, -9.51, -21.66, -15.14, -7.97, -7.95, -8.33, -7.92, -13.21, -9.74, -10.85, -19.4, -10.18, -11.9, -6.61, -6.2, 0.84, 3.46, 29.56, 31.66, 31.88, 24.47, 32.15, 37.32, 29.89, 33.45, 34.18, 35.77], "lightgbm": [40.47, 39.65, 36.08, 30.79, 30.33, 30.91, 31.97, 39.26, 37.6, 43.23, 51.11, 42.95, 40.25, 30.24, 12.76, 3.14, -0.34, -6.12, -11.0, -29.81, -30.82, -12.91, -15.71, -15.32, -10.36, -8.77, -13.46, -10.87, -14.68, -11.61, -9.69, -6.54, 0.91, 7.14, 19.77, 36.37, 47.75, 51.78, 54.85, 56.77, 48.63, 50.97, 54.14, 49.34, 49.67, 49.8, 46.7, 47.87], "lstm": [31.81, 32.78, 28.31, 23.76, 23.41, 22.54, 23.58, 24.24, 29.77, 32.76, 43.2, 46.42, 36.73, 19.95, 2.55, -9.54, -18.91, -25.24, -31.46, -35.39, -29.78, -29.09, -31.8, -29.23, -30.8, -31.33, -29.66, -27.05, -32.4, -31.26, -23.92, -22.36, -16.48, -11.91, -3.77, 14.8, 33.2, 51.13, 60.83, 61.93, 58.71, 56.35, 52.5, 47.31, 44.59, 49.34, 47.55, 53.86]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 2.0, 2.5, 2.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 2.12, 2.12, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-43.71, -87.3, -87.3, -36.89, -76.42, -76.42, -96.27, -140.36, -79.37, -20.27, 39.29, 39.29, 39.29, 39.82, 40.69, 42.11, 44.96, 60.92, 48.14, 66.87, 54.15, 56.05, 58.09, 112.04, 117.04, 94.92, 101.16, 101.16, 185.91, 283.74, 311.78, 433.98, 518.33, 522.75, 523.75, 524.35, 523.12, 525.88, 525.88, 568.69, 609.75, 644.33, 679.05, 679.05, 676.43, 654.87, 654.87, 685.45], "profit_aud": 685.45}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -44.09, 4.7, -54.41, -54.41, -11.21, -11.21, -11.21, -11.21, -9.79, -8.37, -6.77, 6.0, 24.73, 39.06, 30.62, 51.05, 105.0, 80.03, 57.92, 26.75, -3.23, 81.52, 81.52, 137.59, 259.79, 310.4, 354.67, 355.67, 356.27, 356.27, 356.27, 356.27, 356.27, 393.22, 358.65, 358.65, 392.13, 392.13, 413.68, 438.64, 469.21], "profit_aud": 469.21}, "lightgbm": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 3.5, 4.62, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -21.98, -72.39, -111.92, -158.62, -203.32, -203.32, -203.32, -144.22, -84.66, -41.46, -14.41, -14.41, -14.41, -14.41, -12.98, -11.39, -10.11, 8.62, 22.94, 32.44, 52.87, 106.82, 81.85, 59.73, 90.91, 90.91, 175.66, 214.79, 220.4, 232.62, 232.62, 232.62, 232.62, 232.62, 232.62, 229.86, 246.18, 288.99, 288.99, 288.99, 323.71, 323.71, 323.71, 323.71, 323.71, 323.71], "profit_aud": 323.71}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 3.0, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -50.41, -89.95, -136.65, -181.35, -200.92, -200.92, -141.82, -82.26, -39.06, -12.01, -12.01, -12.01, -10.59, -9.17, -7.57, 5.2, 23.93, 23.93, 23.93, 44.36, 44.36, 46.85, 68.97, 68.97, 38.99, 123.74, 221.57, 227.18, 239.4, 247.83, 252.26, 253.26, 253.26, 253.26, 253.26, 269.58, 312.39, 353.45, 388.02, 388.02, 384.27, 360.86, 360.86, 360.86, 391.44], "profit_aud": 391.44}}} \ No newline at end of file diff --git a/results/daily/2026-01-17.json b/results/daily/2026-01-17.json new file mode 100644 index 0000000..f2662db --- /dev/null +++ b/results/daily/2026-01-17.json @@ -0,0 +1 @@ +{"date": "2026-01-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [21.9, 15.54, 11.6, 0.76, -5.5, -6.0, -5.98, -4.46, -5.78, 6.51, 27.04, 22.23, 14.68, -4.24, -7.4, -12.96, -9.94, -12.05, -11.08, -16.14, -18.32, -14.93, -20.92, -21.42, -24.4, -50.84, -55.0, -101.58, -124.34, -78.42, -44.5, -8.22, -8.2, -7.51, -6.18, -4.19, 0.79, 22.39, 32.05, 39.78, 32.79, 27.48, 27.42, 21.89, 18.82, 19.8, 22.25, 19.64], "forecast_price": {"naive": [34.97, 34.88, 39.6, 40.33, 31.62, 37.36, 35.76, 35.27, 48.79, 47.28, 47.65, 34.56, 21.64, -4.25, -6.95, -11.32, -11.4, -12.77, -10.22, -14.98, -11.46, -15.2, -16.34, -43.16, -19.98, -17.69, -24.94, -23.98, -67.8, -78.26, -44.86, -97.76, -67.48, -35.42, -7.99, -4.8, -1.11, -2.21, 13.06, 34.25, 32.85, 27.66, 27.78, 26.78, 18.73, 17.24, 19.96, 24.46], "lightgbm": [26.6, 26.5, 24.09, 22.7, 20.36, 22.18, 24.14, 27.04, 30.15, 25.01, 25.66, 21.31, 17.01, 16.87, 0.96, -5.27, -7.71, -7.87, -11.74, -13.96, -14.83, -16.92, -16.59, -30.38, -17.39, -17.39, -18.34, -17.85, -39.58, -38.58, -24.32, -25.18, -22.02, 4.57, 16.99, 36.96, 43.81, 44.23, 44.83, 48.99, 48.25, 45.59, 44.74, 43.94, 42.07, 42.07, 42.07, 43.46], "lstm": [18.94, 22.58, 16.18, 12.55, 9.95, 10.31, 9.13, 11.91, 13.75, 18.18, 30.77, 25.22, 9.83, -3.82, -23.49, -34.51, -45.64, -54.76, -62.77, -60.97, -62.27, -63.31, -64.0, -66.79, -66.15, -62.28, -61.28, -60.16, -62.93, -59.33, -46.49, -44.22, -31.62, -28.37, -17.8, 3.75, 23.32, 40.55, 52.93, 52.72, 49.56, 48.95, 45.87, 38.68, 35.47, 37.81, 40.97, 46.07]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 6.87, 14.37, 21.84, 24.63, 31.85, 39.99, 73.78, 101.57, 119.92, 120.45, 121.37, 137.57, 126.54, 129.55, 129.55, 131.57, 154.46, 137.89, 140.5, 143.18, 146.23, 178.01, 246.75, 373.73, 529.15, 627.18, 632.74, 633.77, 634.79, 635.73, 636.51, 637.03, 637.03, 637.03, 677.09, 726.82, 767.81, 802.16, 802.16, 802.16, 778.63, 775.86, 803.67, 803.67], "profit_aud": 803.67}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 2.0, 2.5, 2.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 2.12, 2.12, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-27.38, -46.8, -46.8, -45.85, -38.98, -38.98, -35.67, -30.1, -37.32, -29.18, 4.62, 4.62, 4.62, 5.15, 6.07, 7.69, 10.18, 25.24, 11.4, 31.57, 11.23, 13.1, 15.71, 42.49, 48.59, -14.97, -1.22, -1.22, 154.2, 252.23, 280.04, 290.32, 300.58, 301.52, 302.29, 302.81, 303.69, 275.7, 275.7, 325.43, 366.42, 400.77, 435.04, 435.04, 432.41, 407.66, 407.66, 432.2], "profit_aud": 432.2}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.0, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.95, 5.92, 13.42, 13.42, 7.85, 0.63, 0.63, 24.29, 24.29, 24.29, 24.29, 24.29, 25.91, 27.15, 28.66, 30.04, 32.06, 34.35, 38.08, 38.08, 64.86, 64.86, 29.52, 29.52, 29.52, 184.94, 282.97, 338.59, 348.87, 354.0, 354.0, 354.0, 354.0, 354.0, 354.0, 394.06, 443.79, 484.78, 519.13, 519.13, 519.13, 519.13, 519.13, 519.13, 519.13], "profit_aud": 519.13}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 4.25, 4.12, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-27.38, -9.9, -9.9, -9.9, -3.04, 4.47, 11.94, 17.51, 13.18, 21.32, 55.11, 82.89, 82.89, 83.42, 84.35, 85.97, 87.21, 88.72, 92.87, 92.87, 92.87, 111.53, 137.68, 164.45, 194.95, 194.95, 194.95, 194.95, 319.28, 329.09, 334.65, 335.68, 336.7, 337.64, 338.41, 338.41, 338.41, 338.41, 378.47, 428.2, 469.2, 503.54, 503.54, 503.54, 480.02, 477.25, 477.25, 501.79], "profit_aud": 501.79}}} \ No newline at end of file diff --git a/results/daily/2026-01-18.json b/results/daily/2026-01-18.json new file mode 100644 index 0000000..53b068d --- /dev/null +++ b/results/daily/2026-01-18.json @@ -0,0 +1 @@ +{"date": "2026-01-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [17.87, 23.2, 19.95, 23.79, 28.44, 29.68, 28.25, 25.67, 26.29, 26.36, 30.3, 18.52, 10.22, -4.3, -7.43, -13.51, -11.96, -13.22, -16.31, -12.26, -9.17, -7.83, -4.94, 0.37, 0.35, -2.35, 0.37, 1.1, 22.21, 5.7, 55.47, 26.03, 75.33, 70.84, 130.34, 151.26, 311.71, 3642.88, 3795.42, 1048.27, 286.56, 103.33, 60.27, 72.74, 80.64, 38.08, 49.02, 45.03], "forecast_price": {"naive": [21.9, 15.54, 11.6, 0.76, -5.5, -6.0, -5.98, -4.46, -5.78, 6.51, 27.04, 22.23, 14.68, -4.24, -7.4, -12.96, -9.94, -12.05, -11.08, -16.14, -18.32, -14.93, -20.92, -21.42, -24.4, -50.84, -55.0, -101.58, -124.34, -78.42, -44.5, -8.22, -8.2, -7.51, -6.18, -4.19, 0.79, 22.39, 32.05, 39.78, 32.79, 27.48, 27.42, 21.89, 18.82, 19.8, 22.25, 19.64], "lightgbm": [26.23, 25.76, 24.15, 16.56, 16.12, 12.96, 12.96, 15.69, 13.04, 15.73, 20.12, 20.64, 19.05, 13.47, 1.06, -4.32, -3.43, -5.07, -5.27, -9.17, -10.13, -11.2, -12.33, -12.37, -12.82, -33.67, -33.96, -34.67, -32.63, -28.46, -14.65, 7.33, 12.28, 19.04, 28.11, 41.3, 49.63, 50.87, 50.2, 50.94, 49.47, 47.32, 47.14, 45.5, 44.09, 44.34, 45.76, 44.34], "lstm": [26.92, 24.95, 23.38, 21.96, 16.9, 16.01, 17.69, 17.91, 16.73, 21.77, 28.78, 25.04, 11.55, -0.49, -18.78, -30.12, -43.52, -41.15, -45.04, -45.23, -43.6, -46.68, -50.08, -47.98, -43.9, -45.36, -45.74, -42.59, -41.37, -43.62, -32.18, -29.46, -20.47, -9.75, 1.79, 17.06, 37.9, 48.93, 53.84, 52.9, 49.14, 45.65, 41.48, 33.77, 31.35, 35.76, 35.71, 43.96]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-22.34, -51.35, -76.29, -106.02, -70.48, -33.38, -12.19, -12.19, -12.19, -12.19, 25.68, 25.68, 25.68, 26.22, 27.15, 44.04, 51.51, 68.04, 88.43, 103.75, 104.9, 105.88, 106.5, 106.91, 106.91, 109.85, 109.85, 109.85, 134.84, 127.71, 190.11, 157.58, 157.58, 157.58, 157.58, 157.58, 547.22, 5100.81, 9845.08, 11155.42, 11155.42, 11155.42, 11080.07, 11080.07, 11170.8, 11123.2, 11178.34, 11178.34], "profit_aud": 11178.34}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 2.0, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -35.55, -72.64, -107.95, -123.99, -156.86, -123.91, -86.03, -62.88, -50.1, -49.57, -48.64, -31.75, -45.02, -41.72, -41.72, -40.18, -28.72, -37.41, -36.79, -36.84, -36.88, -35.41, -35.87, -37.25, -65.01, -72.14, -79.07, -82.33, -91.74, -100.6, -116.89, -135.8, -135.8, -135.8, 4608.47, 5918.8, 6277.0, 6406.17, 6406.17, 6406.17, 6305.37, 6300.03, 6361.31, 6361.31], "profit_aud": 6361.31}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -37.1, -72.41, -83.06, -115.92, -115.92, -78.04, -54.89, -42.12, -42.12, -42.12, -25.22, -38.5, -36.85, -34.81, -33.28, -32.13, -31.15, -30.53, -30.58, -30.62, -27.68, -28.14, -29.52, -57.28, -60.85, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, 321.86, 4875.45, 9619.73, 10930.06, 10930.06, 10930.06, 10930.06, 10930.06, 10930.06, 10930.06, 10930.06, 10930.06], "profit_aud": 10930.06}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.5, 2.5, 1.75, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 3.25, 3.88, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -35.55, -72.64, -84.36, -84.36, -117.23, -84.28, -46.4, -23.25, -23.25, -22.72, -21.79, -20.1, -17.11, -17.11, -15.07, -12.01, -12.01, -2.22, 3.96, 3.5, 3.5, 5.26, 4.81, 4.81, 4.81, 2.67, -4.26, -7.52, -16.93, -25.79, -25.79, -25.79, -25.79, 4527.81, 9272.08, 10582.41, 10940.61, 10940.61, 10940.61, 10930.43, 10829.63, 10829.63, 10829.63, 10885.91], "profit_aud": 10885.91}}} \ No newline at end of file diff --git a/results/daily/2026-01-19.json b/results/daily/2026-01-19.json new file mode 100644 index 0000000..d440fb2 --- /dev/null +++ b/results/daily/2026-01-19.json @@ -0,0 +1 @@ +{"date": "2026-01-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [31.73, 26.25, 27.09, 28.22, 32.56, 28.09, 28.88, 27.8, 31.57, 32.08, 35.47, 34.79, 25.18, -6.48, 5.13, 4.26, -7.37, -11.88, -12.31, -9.83, -9.75, -11.76, -28.2, -47.23, -36.23, -55.14, -11.01, -71.75, -20.3, -7.49, -71.87, -7.58, -8.0, -8.33, -10.07, -6.06, 10.34, 47.62, 42.28, 47.51, 41.98, 45.23, 40.17, 38.81, 41.91, 30.72, 34.99, 53.8], "forecast_price": {"naive": [17.87, 23.2, 19.95, 23.79, 28.44, 29.68, 28.25, 25.67, 26.29, 26.36, 30.3, 18.52, 10.22, -4.3, -7.43, -13.51, -11.96, -13.22, -16.31, -12.26, -9.17, -7.83, -4.94, 0.37, 0.35, -2.35, 0.37, 1.1, 22.21, 5.7, 55.47, 26.03, 75.33, 70.84, 130.34, 151.26, 311.71, 3642.88, 3795.42, 1048.27, 286.56, 103.33, 60.27, 72.74, 80.64, 38.08, 49.02, 45.03], "lightgbm": [108.38, 105.78, 100.93, 97.53, 85.95, 81.99, 81.99, 84.43, 84.43, 86.4, 88.91, 101.01, 98.4, 99.24, 87.51, 71.36, 55.11, 60.92, 46.27, 41.46, 41.25, 41.14, 40.11, 39.19, 41.13, 36.49, 39.19, 39.19, 44.0, 46.04, 72.58, 62.47, 102.27, 99.64, 171.2, 184.3, 253.81, 168.38, 166.62, 166.5, 178.89, 146.48, 106.92, 105.03, 119.95, 85.23, 95.11, 95.14], "lstm": [41.59, 36.74, 29.51, 26.27, 27.47, 23.77, 26.69, 25.45, 25.4, 31.93, 40.25, 42.18, 36.09, 29.34, 15.44, 7.59, 3.95, 0.32, -10.0, -11.15, -11.13, -8.96, -11.58, -2.47, -3.45, 2.7, 13.14, 10.48, 21.06, 22.99, 36.25, 35.6, 34.22, 60.01, 64.56, 95.83, 122.23, 143.27, 141.48, 116.88, 97.28, 86.54, 75.71, 62.29, 62.87, 62.19, 66.55, 64.05]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.25, 4.38, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 5.0, 3.75, 4.88, 4.12, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -32.81, -66.67, -101.95, -61.25, -96.37, -96.37, -131.12, -111.39, -71.29, -26.95, 16.54, 16.54, 24.64, 30.41, 30.41, 31.33, 46.17, 61.56, 52.02, 39.83, 41.3, 76.55, 135.58, 180.86, 249.79, 236.03, 325.71, 340.94, 331.58, 421.42, 416.15, 416.15, 416.15, 428.74, 429.5, 429.5, 489.03, 541.88, 601.27, 601.27, 657.8, 657.8, 657.8, 657.8, 619.4, 614.5, 681.75], "profit_aud": 681.75}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-39.67, -72.48, -106.34, -141.62, -100.92, -65.8, -44.14, -44.14, -44.14, -44.14, 0.19, 0.19, 0.19, 1.01, 0.36, -4.96, -0.35, 14.49, 29.87, 42.17, 43.38, 44.85, 48.38, -4.75, -4.75, 64.18, 64.18, 64.18, 41.34, 50.7, -30.16, -20.69, -20.69, -20.69, -20.69, -20.69, -7.76, 51.77, 104.62, 164.0, 164.0, 164.0, 113.79, 113.79, 160.94, 122.53, 161.9, 161.9], "profit_aud": 161.9}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -35.12, -71.22, -105.98, -119.08, -119.08, -119.08, -75.59, -44.12, -52.22, -52.22, -52.22, -52.22, -52.22, -52.22, -52.22, -52.22, -52.22, -36.57, 22.46, 22.46, 91.39, 105.15, 194.84, 194.84, 194.84, 113.98, 123.45, 123.45, 123.45, 110.86, 103.29, 116.21, 116.21, 116.21, 116.21, 168.69, 168.69, 163.07, 114.55, 166.94, 128.54, 128.54, 189.06], "profit_aud": 189.06}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -35.28, -35.28, -70.4, -86.43, -121.18, -160.65, -120.54, -76.21, -32.72, -1.24, -1.24, -1.24, -1.24, -1.24, -1.24, 14.14, 26.43, 38.62, 45.97, 81.22, 28.8, 74.08, 74.08, 61.69, 151.38, 151.38, 151.38, 151.38, 151.38, 151.38, 151.38, 151.38, 151.38, 164.31, 223.83, 276.69, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07], "profit_aud": 336.07}}} \ No newline at end of file diff --git a/results/daily/2026-01-20.json b/results/daily/2026-01-20.json new file mode 100644 index 0000000..a083a36 --- /dev/null +++ b/results/daily/2026-01-20.json @@ -0,0 +1 @@ +{"date": "2026-01-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [54.4, 44.57, 49.1, 55.89, 55.49, 58.32, 62.5, 64.01, 68.36, 69.49, 73.16, 77.42, 70.02, 63.03, 55.01, 34.27, 10.52, 3.81, 4.65, 0.49, 8.84, 0.26, 4.5, 0.74, 1.11, 5.61, 4.12, 7.68, 5.49, 2.85, 13.45, 27.19, 39.52, 52.78, 53.48, 56.88, 62.46, 65.09, 66.58, 68.57, 67.58, 72.53, 67.29, 65.52, 66.03, 60.14, 61.12, 63.86], "forecast_price": {"naive": [31.73, 26.25, 27.09, 28.22, 32.56, 28.09, 28.88, 27.8, 31.57, 32.08, 35.47, 34.79, 25.18, -6.48, 5.13, 4.26, -7.37, -11.88, -12.31, -9.83, -9.75, -11.76, -28.2, -47.23, -36.23, -55.14, -11.01, -71.75, -20.3, -7.49, -71.87, -7.58, -8.0, -8.33, -10.07, -6.06, 10.34, 47.62, 42.28, 47.51, 41.98, 45.23, 40.17, 38.81, 41.91, 30.72, 34.99, 53.8], "lightgbm": [33.66, 33.41, 30.52, 29.85, 30.1, 29.34, 29.34, 29.17, 29.34, 33.95, 40.02, 41.72, 38.83, 29.73, 28.96, 25.23, -0.61, -5.92, -7.55, -7.9, -8.93, -11.52, -15.49, -20.41, -16.3, -24.85, -10.49, -24.85, -11.53, -3.41, -14.33, 1.5, 1.19, 1.17, 7.29, 31.49, 39.57, 55.17, 54.85, 56.23, 55.54, 58.36, 51.21, 51.35, 52.25, 47.75, 48.56, 57.49], "lstm": [40.92, 40.5, 36.87, 31.34, 26.59, 30.19, 32.74, 31.3, 37.82, 44.19, 62.93, 62.31, 53.2, 37.08, 15.0, 1.43, -9.65, -18.51, -29.17, -29.29, -26.12, -34.29, -38.91, -33.1, -37.46, -38.49, -38.46, -35.6, -41.12, -38.0, -31.75, -27.8, -19.19, -12.69, -2.09, 16.42, 40.74, 58.75, 65.45, 64.06, 61.12, 59.15, 56.36, 46.09, 43.9, 47.13, 49.15, 52.97]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 1.39, 2.5, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-68.0, -123.72, -185.1, -216.12, -285.48, -285.48, -285.48, -285.48, -285.48, -198.61, -107.17, -10.39, 77.14, 77.14, 77.14, 77.14, 77.14, 72.37, 72.37, 71.76, 82.81, 82.48, 79.36, 78.44, 77.06, 83.37, 78.21, 87.81, 87.04, 83.48, 83.48, 83.48, 83.48, 83.48, 83.48, 83.48, 83.48, 83.48, 83.48, 169.19, 253.66, 344.32, 428.43, 428.43, 428.43, 428.43, 428.43, 428.43], "profit_aud": 428.43}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.25, 4.38, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 5.0, 3.75, 4.88, 4.12, 4.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -55.72, -117.1, -186.96, -117.6, -190.49, -190.49, -270.5, -227.78, -140.91, -49.47, 47.31, 47.31, -31.47, 30.42, 30.42, 29.1, 24.34, 18.53, 19.0, 30.05, 30.02, 24.39, 23.47, 22.09, 15.08, 20.23, 10.63, 6.51, 10.08, -6.73, 12.16, 12.16, 12.16, -54.68, -61.79, -61.79, 19.57, 102.79, 188.5, 188.5, 279.16, 279.16, 279.16, 279.16, 203.99, 195.43, 275.26], "profit_aud": 275.26}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.28, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -31.02, -31.02, -103.91, -182.04, -262.05, -347.5, -260.63, -169.18, -72.41, 15.12, 15.12, 15.12, 15.12, 13.8, 13.33, 12.74, 12.68, 11.58, 11.55, 5.92, 5.0, 3.62, -3.39, -1.1, -10.7, -11.39, -8.22, -25.03, 8.95, 3.42, -62.56, -62.56, -62.56, -62.56, 18.8, 18.8, 104.5, 188.97, 279.64, 279.64, 279.64, 279.64, 204.46, 195.9, 275.73], "profit_aud": 275.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -69.86, -139.22, -212.12, -246.81, -326.82, -326.82, -239.95, -148.5, -51.73, 35.8, 35.8, 35.8, 35.8, 34.48, 34.01, 32.84, 32.24, 43.29, 43.25, 37.63, 38.45, 37.62, 30.61, 25.45, 25.45, 18.59, 15.03, 13.34, 9.95, 5.01, -1.59, -8.28, -8.28, -8.28, -8.28, 74.95, 160.66, 245.13, 335.79, 335.79, 326.61, 244.08, 244.08, 244.08, 323.91], "profit_aud": 323.91}}} \ No newline at end of file diff --git a/results/daily/2026-01-21.json b/results/daily/2026-01-21.json new file mode 100644 index 0000000..449174f --- /dev/null +++ b/results/daily/2026-01-21.json @@ -0,0 +1 @@ +{"date": "2026-01-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [62.94, 63.24, 64.18, 57.69, 63.41, 63.29, 69.16, 75.45, 71.97, 84.14, 90.17, 96.88, 77.57, 86.6, 60.72, 25.36, 10.08, 18.22, 0.16, 0.27, -3.62, -7.59, -8.05, -7.57, -9.44, -9.45, -8.55, -10.68, -8.63, -9.36, -12.96, -16.9, -10.27, -6.45, -5.64, -5.3, -7.0, 1.35, 24.68, 24.16, 25.0, 25.87, 21.05, 19.76, 21.69, 22.95, 28.56, 28.52], "forecast_price": {"naive": [54.4, 44.57, 49.1, 55.89, 55.49, 58.32, 62.5, 64.01, 68.36, 69.49, 73.16, 77.42, 70.02, 63.03, 55.01, 34.27, 10.52, 3.81, 4.65, 0.49, 8.84, 0.26, 4.5, 0.74, 1.11, 5.61, 4.12, 7.68, 5.49, 2.85, 13.45, 27.19, 39.52, 52.78, 53.48, 56.88, 62.46, 65.09, 66.58, 68.57, 67.58, 72.53, 67.29, 65.52, 66.03, 60.14, 61.12, 63.86], "lightgbm": [49.8, 47.23, 44.53, 42.21, 40.15, 41.75, 41.62, 42.23, 42.35, 46.43, 53.95, 60.03, 61.76, 47.83, 40.1, 24.14, 17.81, 11.64, 10.65, 9.21, 10.65, 8.11, 6.48, 7.15, 12.97, 12.97, 7.2, 8.99, 7.57, 7.88, 12.66, 19.69, 28.15, 41.86, 44.33, 55.46, 60.74, 67.7, 68.89, 77.16, 73.41, 75.96, 68.54, 66.24, 67.04, 66.26, 67.04, 70.75], "lstm": [68.23, 67.68, 65.2, 55.85, 53.94, 52.91, 56.19, 55.81, 62.21, 68.57, 77.87, 86.92, 76.03, 65.57, 35.63, 26.7, 18.34, 10.7, 1.5, -2.7, 1.9, -4.88, -2.95, -1.72, -1.18, -0.48, -0.3, 0.74, -4.64, -1.43, 2.41, 7.4, 10.87, 19.97, 29.24, 49.72, 77.46, 96.2, 90.77, 86.79, 76.67, 70.65, 67.61, 60.31, 59.29, 53.22, 59.5, 65.3]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.88, 0.75, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-78.68, -157.73, -157.73, -229.84, -265.04, -344.15, -344.15, -344.15, -344.15, -238.98, -126.26, -5.16, -5.16, 103.09, 103.09, 103.09, 90.49, 110.99, 110.79, 111.09, 111.54, 112.49, 114.51, 114.51, 115.69, 125.14, 125.14, 138.49, 138.49, 138.49, 154.69, 175.81, 188.65, 189.46, 189.46, 184.32, 193.07, 193.07, 223.92, 254.13, 285.38, 317.72, 291.41, 266.71, 260.64, 260.64, 296.34, 331.99], "profit_aud": 331.99}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 1.39, 2.5, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-78.68, -157.73, -237.95, -269.97, -349.23, -349.23, -349.23, -349.23, -349.23, -244.06, -131.34, -10.24, 86.72, 86.72, 86.72, 86.72, 86.72, 63.94, 63.94, 63.61, 59.08, 68.57, 74.17, 83.64, 95.44, 84.81, 95.5, 82.15, 83.36, 95.05, 95.05, 95.05, 95.05, 95.05, 95.05, 95.05, 95.05, 95.05, 95.05, 125.25, 156.5, 188.85, 215.16, 215.16, 215.16, 215.16, 215.16, 215.16], "profit_aud": 215.16}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 1.67, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -72.12, -151.38, -230.49, -316.94, -358.81, -358.81, -358.81, -246.1, -125.0, -28.03, 80.22, 80.22, 80.22, 80.22, 80.22, 80.22, 79.89, 75.81, 85.3, 95.37, 104.84, 93.03, 81.21, 91.9, 100.82, 111.6, 123.29, 123.29, 123.29, 123.29, 123.29, 123.29, 123.29, 123.29, 123.29, 123.29, 153.5, 184.75, 217.09, 217.09, 217.09, 217.09, 217.09, 217.09, 252.74], "profit_aud": 252.74}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -72.12, -151.38, -230.49, -268.87, -363.18, -363.18, -258.01, -145.3, -24.2, 72.77, 72.77, 72.77, 72.77, 72.77, 72.77, 72.75, 72.41, 67.88, 77.38, 87.44, 96.91, 108.72, 114.62, 106.33, 92.98, 103.77, 115.46, 115.46, 115.46, 115.46, 115.46, 115.46, 115.46, 106.71, 108.39, 139.24, 169.45, 169.45, 169.45, 169.45, 169.45, 169.45, 140.75, 140.75, 172.84], "profit_aud": 172.84}}} \ No newline at end of file diff --git a/results/daily/2026-01-22.json b/results/daily/2026-01-22.json new file mode 100644 index 0000000..58cf568 --- /dev/null +++ b/results/daily/2026-01-22.json @@ -0,0 +1 @@ +{"date": "2026-01-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [29.19, 27.32, 28.08, 30.1, 28.83, 30.81, 30.47, 32.1, 19.32, 29.21, 30.64, 29.51, 25.72, 12.62, -4.73, -7.11, -8.8, -13.74, -15.27, -19.62, -23.17, -19.28, -23.04, -23.06, -23.66, -24.82, -23.53, -21.19, -16.14, -12.93, -12.78, -7.9, -7.39, -5.05, -3.99, -1.62, 76.85, 79.5, 78.98, 74.22, 51.61, 42.51, 48.77, 51.65, 40.08, 43.03, 43.16, 57.75], "forecast_price": {"naive": [62.94, 63.24, 64.18, 57.69, 63.41, 63.29, 69.16, 75.45, 71.97, 84.14, 90.17, 96.88, 77.57, 86.6, 60.72, 25.36, 10.08, 18.22, 0.16, 0.27, -3.62, -7.59, -8.05, -7.57, -9.44, -9.45, -8.55, -10.68, -8.63, -9.36, -12.96, -16.9, -10.27, -6.45, -5.64, -5.3, -7.0, 1.35, 24.68, 24.16, 25.0, 25.87, 21.05, 19.76, 21.69, 22.95, 28.56, 28.52], "lightgbm": [51.29, 43.2, 41.18, 36.71, 35.47, 35.89, 35.98, 34.66, 38.09, 36.99, 46.51, 49.34, 47.06, 44.03, 36.57, 22.76, 18.34, 12.07, 8.68, 3.91, 4.49, -3.57, -5.31, -6.07, -7.6, -7.6, -8.02, -6.72, -8.02, -5.35, -1.59, 0.02, 7.02, 13.66, 20.76, 35.62, 39.39, 44.26, 45.1, 43.76, 42.88, 44.27, 40.97, 40.24, 39.59, 38.49, 38.84, 41.31], "lstm": [19.73, 20.9, 17.51, 13.34, 11.39, 13.36, 12.96, 14.24, 22.67, 26.95, 41.13, 44.41, 43.14, 33.47, 15.01, 1.33, -10.68, -16.08, -26.71, -29.4, -26.98, -28.15, -31.64, -28.79, -32.28, -28.07, -33.23, -30.57, -33.99, -33.27, -28.82, -24.04, -15.46, -11.35, -3.99, 12.47, 30.37, 45.54, 49.04, 51.82, 46.9, 48.25, 39.73, 33.69, 33.94, 34.37, 34.45, 43.43]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -34.15, -38.08, -38.08, -38.08, -38.08, -38.08, 2.05, -22.1, -22.1, 12.37, 12.37, 12.37, 12.37, 12.96, 13.85, 14.95, 16.66, 18.57, 21.03, 49.98, 28.58, 42.98, 71.81, 101.37, 132.4, 161.81, 164.45, 166.47, 168.09, 169.68, 170.67, 171.6, 172.23, 172.73, 172.93, 268.99, 368.37, 467.1, 559.87, 559.87, 506.73, 506.73, 564.84, 514.75, 508.72, 508.72, 580.9], "profit_aud": 580.9}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.88, 0.75, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-36.49, -70.64, -70.64, -108.26, -124.26, -162.78, -162.78, -162.78, -162.78, -126.27, -87.97, -51.09, -51.09, -35.31, -35.31, -35.31, -24.31, -39.77, -20.68, -42.76, -39.86, -37.45, -31.69, -31.69, -28.74, -3.92, -3.92, 22.56, 22.56, 22.56, 38.53, 48.41, 57.65, 58.28, 58.28, 56.7, -39.36, -39.36, 59.37, 152.14, 216.65, 269.78, 208.82, 144.25, 133.03, 133.03, 186.98, 259.16], "profit_aud": 259.16}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -16.71, -52.74, -91.26, -129.34, -169.46, -169.46, -169.46, -131.17, -94.28, -62.13, -46.36, -46.36, -46.36, -46.36, -46.36, -46.36, -21.83, -47.9, -45.49, -42.61, -39.72, -10.16, 20.87, 50.28, 63.52, 83.69, 85.31, 86.9, 86.9, 86.9, 86.9, 86.9, 86.9, 86.9, 186.28, 285.01, 377.78, 377.78, 430.91, 430.91, 430.91, 430.91, 430.91, 430.91, 430.91], "profit_aud": 430.91}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 1.0, 2.12, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -37.62, -73.66, -112.18, -150.26, -168.07, -168.07, -168.07, -129.78, -92.89, -60.75, -44.97, -44.97, -44.97, -43.87, -42.16, -40.25, -32.89, -32.89, -32.89, -4.09, -4.09, 25.48, 18.53, 47.94, 47.94, 68.12, 84.27, 85.87, 86.86, 87.78, 88.41, 88.91, 88.91, 88.91, 88.91, 187.64, 280.41, 344.92, 398.06, 398.06, 333.49, 327.88, 327.88, 327.88, 400.06], "profit_aud": 400.06}}} \ No newline at end of file diff --git a/results/daily/2026-01-23.json b/results/daily/2026-01-23.json new file mode 100644 index 0000000..201ef64 --- /dev/null +++ b/results/daily/2026-01-23.json @@ -0,0 +1 @@ +{"date": "2026-01-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [76.94, 88.87, 78.62, 32.74, 34.24, 40.09, 39.93, 39.55, 42.21, 42.2, 51.9, 47.5, 36.48, 18.37, -1.01, -2.26, -5.59, -5.9, -6.02, -6.35, -6.89, -7.75, -7.16, -7.28, -5.84, -6.75, -2.59, 2.85, 5.24, -0.24, 0.14, 4.69, 29.36, 119.81, 145.84, 136.75, 148.83, 158.82, 194.26, 170.83, 171.94, 148.82, 136.68, 138.03, 69.27, 45.88, 33.38, 26.41], "forecast_price": {"naive": [29.19, 27.32, 28.08, 30.1, 28.83, 30.81, 30.47, 32.1, 19.32, 29.21, 30.64, 29.51, 25.72, 12.62, -4.73, -7.11, -8.8, -13.74, -15.27, -19.62, -23.17, -19.28, -23.04, -23.06, -23.66, -24.82, -23.53, -21.19, -16.14, -12.93, -12.78, -7.9, -7.39, -5.05, -3.99, -1.62, 76.85, 79.5, 78.98, 74.22, 51.61, 42.51, 48.77, 51.65, 40.08, 43.03, 43.16, 57.75], "lightgbm": [31.44, 30.51, 29.23, 28.62, 26.36, 27.48, 26.63, 27.31, 26.68, 29.53, 34.81, 33.74, 31.2, 29.99, 14.3, 7.0, 4.0, 0.4, -1.24, -2.5, -4.16, -3.75, -6.62, -6.55, -6.75, -6.75, -6.36, -6.46, -5.19, -1.69, -0.11, 7.46, 11.33, 18.98, 26.89, 39.96, 73.46, 79.61, 78.63, 71.25, 51.11, 46.46, 49.72, 50.33, 44.31, 44.72, 44.72, 51.82], "lstm": [43.36, 43.45, 39.71, 33.93, 32.92, 31.46, 33.19, 33.74, 38.12, 42.44, 48.56, 57.06, 52.53, 37.2, 18.52, 6.1, -1.65, -5.96, -12.32, -16.21, -11.52, -14.07, -13.86, -12.36, -13.25, -11.37, -9.96, -7.61, -9.45, -10.92, -3.39, -2.71, 3.67, 12.51, 20.96, 36.35, 57.36, 72.95, 76.92, 69.71, 62.39, 59.69, 57.8, 50.27, 51.34, 54.25, 51.81, 56.9]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-96.18, 3.8, 3.8, -37.12, -79.92, -79.92, -79.92, -91.0, -91.0, -91.0, -26.13, 33.25, 33.25, 33.25, 33.38, 33.66, 34.36, 35.1, 35.85, 36.64, 45.25, 54.94, 63.9, 72.99, 69.75, 78.18, 78.51, 81.36, 87.9, 88.2, 88.02, 88.02, 88.02, 88.02, 88.02, 88.02, 88.02, 286.55, 529.37, 742.91, 957.83, 957.83, 957.83, 957.83, 957.83, 957.83, 957.83, 957.83], "profit_aud": 957.83}, "naive": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -111.08, -122.09, -122.09, -122.09, -122.09, -122.09, -72.65, -125.42, -125.42, -67.03, -67.03, -67.03, -67.03, -66.91, -66.62, -65.93, -65.19, -64.44, -63.64, -55.03, -63.64, -59.16, -50.07, -42.76, -34.33, -31.1, -31.45, -32.11, -32.08, -32.1, -32.68, -36.35, -51.33, -69.56, -86.65, 99.39, 297.91, 540.74, 754.27, 754.27, 568.25, 568.25, 723.54, 636.95, 630.53, 630.53, 663.53], "profit_aud": 663.53}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -42.8, -42.8, -92.71, -109.13, -161.89, -161.89, -97.02, -37.64, 7.96, 7.96, 7.96, 7.96, 7.96, 7.96, 8.71, 9.51, 11.23, 11.23, 20.18, 29.28, 36.58, 45.02, 45.02, 42.88, 42.22, 42.25, 42.24, 42.24, 42.24, 42.24, 42.24, 42.24, 228.28, 426.8, 669.62, 883.16, 883.16, 883.16, 883.16, 883.16, 796.57, 796.57, 791.9, 824.91], "profit_aud": 824.91}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 2.5, 2.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -18.17, -60.97, -111.08, -160.99, -210.43, -210.43, -157.68, -92.81, -33.43, 12.17, 12.17, 12.17, 12.17, 12.87, 13.6, 14.36, 22.29, 22.29, 31.98, 40.94, 46.39, 53.7, 54.54, 54.86, 58.43, 57.12, 57.42, 57.4, 56.81, 56.81, 56.81, 56.81, 56.81, 56.81, 255.34, 498.16, 711.7, 926.62, 926.62, 926.62, 754.08, 754.08, 754.08, 754.08, 783.79], "profit_aud": 783.79}}} \ No newline at end of file diff --git a/results/daily/2026-01-24.json b/results/daily/2026-01-24.json new file mode 100644 index 0000000..64e1761 --- /dev/null +++ b/results/daily/2026-01-24.json @@ -0,0 +1 @@ +{"date": "2026-01-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [17.42, 13.79, 27.32, 31.71, 28.51, 22.24, 17.96, 18.58, 20.4, 17.47, 16.29, 10.95, 4.68, -5.66, -9.08, -6.96, -6.63, -6.76, -7.37, -7.36, -7.28, -7.27, -8.21, -7.09, -6.67, -5.34, -1.7, -0.33, 6.82, 55.61, 66.66, 203.57, 198.6, 153.68, 159.63, 152.08, 148.83, 153.41, 154.23, 189.56, 148.01, 137.22, 143.6, 164.23, 178.31, 184.0, 185.38, 271.26], "forecast_price": {"naive": [76.94, 88.87, 78.62, 32.74, 34.24, 40.09, 39.93, 39.55, 42.21, 42.2, 51.9, 47.5, 36.48, 18.37, -1.01, -2.26, -5.59, -5.9, -6.02, -6.35, -6.89, -7.75, -7.16, -7.28, -5.84, -6.75, -2.59, 2.85, 5.24, -0.24, 0.14, 4.69, 29.36, 119.81, 145.84, 136.75, 148.83, 158.82, 194.26, 170.83, 171.94, 148.82, 136.68, 138.03, 69.27, 45.88, 33.38, 26.41], "lightgbm": [66.87, 68.18, 59.45, 44.18, 41.59, 41.67, 40.9, 40.56, 41.1, 39.63, 45.87, 43.27, 33.27, 21.69, 7.03, 2.23, -1.6, -5.44, -7.29, -14.04, -16.18, -19.78, -20.2, -20.06, -20.61, -21.33, -22.8, -22.61, -17.92, -17.59, -11.0, -0.95, 16.26, 53.78, 79.65, 95.94, 98.8, 99.82, 90.17, 92.03, 90.35, 95.49, 91.86, 91.98, 63.15, 48.71, 46.35, 40.61], "lstm": [33.73, 35.63, 28.16, 22.13, 22.02, 17.28, 19.37, 18.94, 21.62, 22.39, 27.69, 29.09, 20.82, 8.17, -6.13, -15.3, -18.03, -27.53, -36.96, -37.08, -37.97, -36.64, -37.71, -33.8, -33.43, -25.99, -16.28, -13.62, -12.68, -7.95, 3.09, 3.48, 15.15, 23.03, 31.47, 54.81, 75.93, 82.32, 81.78, 70.47, 67.92, 59.1, 54.46, 49.56, 44.89, 47.79, 50.04, 52.05]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.25, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.75, 1.88, 3.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.88, 2.88, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-21.77, -39.0, -39.0, 0.63, 29.14, 29.14, 6.68, 6.68, 29.64, 29.64, 29.64, 29.64, 29.64, 30.34, 41.69, 41.69, 41.69, 41.69, 50.91, 60.11, 68.3, 68.3, 78.56, 79.45, 80.28, 80.95, 81.16, 81.21, 81.21, 81.21, 81.21, 335.67, 583.91, 583.91, 583.91, 583.91, 522.15, 522.15, 522.15, 759.09, 574.08, 402.55, 223.06, 223.06, 445.94, 675.94, 907.66, 1246.74], "profit_aud": 1246.74}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-21.77, -6.26, -6.26, -45.9, -81.54, -81.54, -81.54, -86.74, -86.74, -86.74, -66.38, -52.69, -52.69, -52.69, -51.56, -50.69, -49.86, -49.01, -48.09, -47.17, -38.07, -28.98, -18.72, -9.85, -13.55, -6.87, -6.66, -7.0, 1.53, -67.97, -151.3, -151.3, -151.3, -151.3, -151.3, -151.3, -151.3, 40.47, 233.26, 470.21, 655.22, 655.22, 655.22, 655.22, 655.22, 655.22, 655.22, 655.22], "profit_aud": 655.22}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.6, -2.6, -24.44, -4.08, -4.08, -4.08, -4.08, -4.08, -4.08, -3.25, -2.41, -1.49, -0.57, 0.35, 1.25, 7.41, 7.41, 15.75, 22.43, 24.55, 24.97, 24.12, 17.17, 8.83, -16.61, -16.61, -16.61, -16.61, 173.48, 359.52, 551.28, 551.28, 551.28, 551.28, 722.81, 722.81, 722.81, 722.81, 722.81, 722.81, 722.81], "profit_aud": 722.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -27.8, -50.26, -73.48, -73.48, -58.19, -37.83, -24.15, -24.15, -24.15, -23.01, -22.14, -21.31, -20.47, -11.26, -2.05, 7.05, 11.6, 21.86, 22.74, 23.58, 24.24, 24.46, 24.5, 23.65, 16.7, 16.7, 16.7, 16.7, 16.7, 16.7, 16.7, 202.73, 394.5, 587.29, 824.23, 824.23, 824.23, 824.23, 824.23, 601.35, 601.35, 601.35, 906.52], "profit_aud": 906.52}}} \ No newline at end of file diff --git a/results/daily/2026-01-25.json b/results/daily/2026-01-25.json new file mode 100644 index 0000000..44cce2d --- /dev/null +++ b/results/daily/2026-01-25.json @@ -0,0 +1 @@ +{"date": "2026-01-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [214.95, 143.42, 166.89, 151.44, 138.0, 122.87, 110.06, 72.37, 73.85, 126.13, 142.29, 216.22, 56.53, 81.5, 88.91, 25.01, 29.93, 66.29, 1.36, -0.18, -0.92, -3.01, -4.41, -4.36, -5.55, -5.07, -3.37, 1.15, 5.05, 68.31, 150.04, 149.89, 145.25, 154.78, 137.86, 174.22, 148.33, 182.48, 175.65, 211.48, 148.18, 143.43, 143.43, 138.03, 260.98, 224.65, 293.2, 402.5], "forecast_price": {"naive": [17.42, 13.79, 27.32, 31.71, 28.51, 22.24, 17.96, 18.58, 20.4, 17.47, 16.29, 10.95, 4.68, -5.66, -9.08, -6.96, -6.63, -6.76, -7.37, -7.36, -7.28, -7.27, -8.21, -7.09, -6.67, -5.34, -1.7, -0.33, 6.82, 55.61, 66.66, 203.57, 198.6, 153.68, 159.63, 152.08, 148.83, 153.41, 154.23, 189.56, 148.01, 137.22, 143.6, 164.23, 178.31, 184.0, 185.38, 271.26], "lightgbm": [75.66, 75.66, 66.77, 60.98, 55.69, 55.51, 57.3, 54.84, 54.75, 50.8, 44.28, 43.81, 44.08, 27.12, 11.16, -4.04, -4.81, -9.42, -12.66, -18.74, -20.14, -20.27, -13.42, -12.61, -10.13, -10.76, -10.76, -8.77, -4.46, 3.77, 18.18, 34.87, 49.86, 60.12, 76.41, 95.94, 112.02, 108.81, 107.95, 121.51, 103.79, 84.25, 81.8, 83.35, 75.18, 72.27, 72.27, 69.4], "lstm": [174.82, 174.31, 165.42, 148.67, 138.79, 143.16, 144.62, 135.45, 128.05, 138.86, 122.47, 106.59, 84.15, 70.63, 47.7, 31.4, 28.26, 19.49, 17.41, 8.79, 12.25, 6.53, 13.34, 6.68, 14.53, 10.71, 9.07, 8.7, 13.26, 13.49, 21.25, 32.53, 41.18, 56.9, 78.52, 95.06, 129.44, 150.21, 155.45, 152.67, 136.91, 113.91, 102.33, 92.19, 89.54, 93.09, 95.63, 110.5]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -179.27, 8.47, 8.47, 8.47, 8.47, -129.1, -219.56, -311.87, -201.5, -23.64, 246.64, 175.98, 175.98, 276.0, 244.74, 240.55, 323.42, 323.42, 323.44, 323.55, 323.93, 329.44, 334.89, 341.83, 348.16, 350.27, 350.27, 350.27, 350.27, 350.27, 350.27, 350.27, 524.39, 352.06, 569.83, 487.51, 715.61, 935.17, 1199.52, 1014.3, 835.01, 655.72, 483.18, 809.41, 1090.22, 1456.72, 1959.85], "profit_aud": 1959.85}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.25, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.75, 1.88, 3.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.88, 2.88, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-268.69, -447.96, -447.96, -258.67, -120.67, -120.67, -258.24, -258.24, -175.16, -175.16, -175.16, -175.16, -175.16, -185.35, -296.48, -296.48, -296.48, -296.48, -298.18, -297.96, -296.93, -296.93, -291.42, -290.87, -290.18, -289.54, -289.12, -289.27, -289.27, -289.27, -289.27, -101.91, 79.66, 79.66, 79.66, 79.66, 18.1, 18.1, 18.1, 282.45, 97.22, -82.06, -261.35, -261.35, 64.88, 345.69, 712.19, 1215.31], "profit_aud": 1215.31}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 1.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.13, -6.87, -15.15, -16.0, -15.78, -14.63, -10.87, -5.36, -4.82, -4.82, -4.82, -3.56, -3.7, -4.33, -4.33, -4.33, -4.33, -4.33, -4.33, -4.33, -4.33, 181.08, 409.18, 628.75, 893.1, 893.1, 893.1, 893.1, 893.1, 893.1, 893.1, 893.1, 893.1], "profit_aud": 893.1}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.22, 0.22, 3.98, 1.78, 7.23, 0.3, 6.63, 10.84, 9.4, 9.4, 9.4, 9.4, 9.4, 9.4, 9.4, 9.4, 9.4, 9.4, 237.5, 457.06, 721.41, 906.64, 906.64, 906.64, 887.31, 561.09, 561.09, 561.09, 1064.21], "profit_aud": 1064.21}}} \ No newline at end of file diff --git a/results/daily/2026-01-26.json b/results/daily/2026-01-26.json new file mode 100644 index 0000000..9715954 --- /dev/null +++ b/results/daily/2026-01-26.json @@ -0,0 +1 @@ +{"date": "2026-01-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [318.74, 214.62, 108.63, 77.8, 52.69, 48.87, 48.28, 44.81, 52.18, 51.62, 39.02, 39.46, 29.62, 4.66, 1.57, 0.65, 1.99, 0.23, -0.84, -2.44, 1.52, 13.64, 21.81, 65.91, 97.5, 74.89, 109.92, 211.11, 176.42, 156.98, 163.17, 160.62, 212.4, 207.46, 425.69, 545.24, 3825.81, 5915.83, 18617.52, 19440.55, 18939.92, 20157.59, 18952.42, 5326.59, 277.26, 1954.48, 409.68, 364.78], "forecast_price": {"naive": [214.95, 143.42, 166.89, 151.44, 138.0, 122.87, 110.06, 72.37, 73.85, 126.13, 142.29, 216.22, 56.53, 81.5, 88.91, 25.01, 29.93, 66.29, 1.36, -0.18, -0.92, -3.01, -4.41, -4.36, -5.55, -5.07, -3.37, 1.15, 5.05, 68.31, 150.04, 149.89, 145.25, 154.78, 137.86, 174.22, 148.33, 182.48, 175.65, 211.48, 148.18, 143.43, 143.43, 138.03, 260.98, 224.65, 293.2, 402.5], "lightgbm": [99.99, 111.96, 106.31, 93.63, 87.32, 79.19, 77.98, 61.83, 64.71, 81.25, 89.06, 78.6, 48.81, 54.22, 56.93, 38.56, 23.6, 28.36, 18.83, 14.81, 13.37, 9.65, 5.19, 2.87, 2.4, 2.25, 6.9, 4.83, 8.71, 24.88, 41.72, 50.18, 56.64, 65.12, 70.05, 76.75, 76.45, 79.34, 79.92, 82.04, 76.08, 76.38, 74.48, 77.18, 81.72, 84.17, 84.74, 80.97], "lstm": [204.85, 204.28, 184.17, 177.92, 180.17, 181.85, 177.74, 171.83, 175.84, 186.2, 175.7, 159.87, 118.52, 107.37, 75.66, 57.94, 48.48, 35.8, 28.49, 22.61, 17.45, 7.19, 19.64, 11.22, 15.24, 11.8, 7.52, 4.95, 8.08, 9.82, 16.22, 29.34, 35.62, 53.46, 69.39, 81.84, 127.34, 156.74, 142.45, 142.99, 128.4, 125.05, 107.17, 104.08, 99.05, 101.51, 104.03, 119.98]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 4.88, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -56.01, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 1.61, 0.8, 3.29, 2.99, 4.04, 7.09, 5.2, 5.2, 5.2, 5.2, 114.89, 21.27, 21.27, 285.16, 285.16, 88.94, 88.94, 66.45, 66.45, 66.45, 66.45, 66.45, 66.45, 66.45, 66.45, 24367.14, 48042.04, 73239.03, 96929.55, 96929.55, 96582.98, 98781.77, 98781.77, 98781.77], "profit_aud": 98781.77}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -268.28, -146.07, -146.07, -146.07, -146.07, -206.42, -262.43, -327.66, -282.49, -233.72, -184.39, -221.41, -221.41, -219.65, -220.46, -220.74, -220.45, -220.45, -220.15, -220.34, -222.04, -249.3, -331.68, -453.56, -547.18, -615.88, -615.88, -615.88, -615.88, -615.88, -615.88, -615.88, -382.49, -914.61, -233.06, -2356.38, 5038.41, 28310.31, 52611.0, 28936.09, 3739.11, -19951.41, -26609.65, -26263.08, -23819.98, -23307.88, -22851.91], "profit_aud": -22851.91}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-398.42, -156.97, -156.97, -156.97, -156.97, -156.97, -156.97, -212.98, -278.21, -226.59, -177.82, -177.82, -214.84, -214.84, -213.08, -213.08, -215.57, -215.3, -215.3, -215.3, -215.3, -215.3, -242.56, -324.95, -446.82, -540.44, -471.74, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, -735.63, 23565.06, 23565.06, 23565.06, 23565.06, 23565.06, 23911.63, 26354.72, 26866.83, 26866.83], "profit_aud": 26866.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.21, -17.26, 10.0, -72.38, 37.3, -4.26, -141.66, -405.55, -626.08, -822.3, -822.3, -822.3, -822.3, -822.3, -822.3, -822.3, -822.3, 6572.49, 29844.39, 54145.08, 77819.98, 77819.98, 77819.98, 77819.98, 77473.41, 77199.78, 77199.78, 77655.75], "profit_aud": 77655.75}}} \ No newline at end of file diff --git a/results/daily/2026-01-27.json b/results/daily/2026-01-27.json new file mode 100644 index 0000000..8fb8bd9 --- /dev/null +++ b/results/daily/2026-01-27.json @@ -0,0 +1 @@ +{"date": "2026-01-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [469.97, 546.52, 679.2, 575.79, 515.39, 553.02, 503.09, 359.86, 906.59, 326.51, 318.4, 277.3, 3703.76, 863.89, 277.95, 499.35, 5388.34, 301.69, 196.66, 64.49, 44.87, 26.75, 19.18, 20.03, 22.86, 25.78, 10.85, 16.83, 49.48, 7.43, -7.23, -8.08, -5.85, 51.92, 90.95, 81.2, 604.06, 86.34, 135.33, 141.53, 112.76, 108.95, 110.44, 111.56, 168.26, 132.94, 102.22, 99.82], "forecast_price": {"naive": [318.74, 214.62, 108.63, 77.8, 52.69, 48.87, 48.28, 44.81, 52.18, 51.62, 39.02, 39.46, 29.62, 4.66, 1.57, 0.65, 1.99, 0.23, -0.84, -2.44, 1.52, 13.64, 21.81, 65.91, 97.5, 74.89, 109.92, 211.11, 176.42, 156.98, 163.17, 160.62, 212.4, 207.46, 425.69, 545.24, 3825.81, 5915.83, 18617.52, 19440.55, 18939.92, 20157.59, 18952.42, 5326.59, 277.26, 1954.48, 409.68, 364.78], "lightgbm": [224.52, 222.23, 150.82, 125.51, 82.64, 85.16, 82.99, 80.96, 86.62, 87.19, 82.93, 91.67, 82.96, 83.2, 76.04, 64.34, 49.06, 45.25, 48.81, 44.6, 44.86, 41.42, 34.94, 60.26, 70.03, 69.75, 69.34, 92.5, 89.37, 95.33, 87.35, 103.65, 132.14, 153.09, 159.23, 179.61, 182.61, 196.32, 208.87, 208.75, 195.64, 190.86, 196.08, 173.72, 186.67, 183.03, 183.31, 183.31], "lstm": [194.3, 211.07, 160.55, 169.47, 174.55, 161.59, 151.92, 142.94, 148.55, 166.75, 169.83, 160.92, 103.65, 99.8, 71.83, 61.93, 58.92, 45.83, 22.66, 16.75, 14.22, 15.9, 13.76, 14.56, 24.02, 26.08, 25.68, 22.7, 43.83, 43.49, 56.76, 65.48, 87.98, 93.54, 100.47, 149.36, 192.89, 309.83, 346.84, 325.86, 228.19, 237.05, 194.51, 189.27, 169.07, 138.44, 148.21, 164.69]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 4.88, 3.62, 2.38, 2.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-587.46, -663.97, 185.03, 185.03, 185.03, 185.03, 114.6, -335.23, 798.02, 389.88, -8.12, -354.74, 4274.96, 5354.82, 5007.38, 5381.9, 12117.32, 12117.32, 12117.32, 12117.32, 12117.32, 12117.32, 12093.35, 12068.31, 12091.16, 12123.39, 12109.82, 12098.13, 12159.98, 12150.7, 12159.74, 12169.84, 12177.15, 12177.15, 12279.47, 12177.97, 12933.05, 12825.13, 12994.29, 13171.2, 13171.2, 13155.95, 13155.95, 13155.95, 13366.28, 13532.45, 13532.45, 13532.45], "profit_aud": 13532.45}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 4.88, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -449.83, 570.09, 570.09, 570.09, 570.09, 570.09, 570.09, 376.92, -247.27, 6488.15, 6111.04, 5865.22, 5784.6, 5728.52, 5728.52, 5728.52, 5728.52, 5754.23, 5722.0, 5722.0, 5743.04, 5743.04, 5733.75, 5733.75, 5734.89, 5734.89, 5734.89, 5734.89, 5734.89, 5734.89, 5734.89, 5734.89, 5911.8, 6052.74, 6188.93, 6326.98, 6326.98, 6116.65, 6266.21, 6266.21, 6266.21], "profit_aud": 6266.21}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -449.83, -449.83, -449.83, -449.83, -137.87, -137.87, -137.87, -137.87, -137.87, -137.87, -305.3, -305.3, -385.92, -442.0, -475.45, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -499.42, -391.5, -222.34, -45.43, -45.43, -45.43, 92.62, 92.62, 92.62, 92.62, 92.62, 92.62], "profit_aud": 92.62}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -449.83, -1583.07, -1256.56, -858.56, -858.56, -858.56, -858.56, -858.56, -858.56, -858.56, -858.56, -858.56, -894.35, -950.44, -983.88, -1007.85, -1032.89, -1032.89, -1003.89, -1003.89, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -1024.92, -917.0, -747.84, -570.93, -570.93, -434.74, -434.74, -434.74, -434.74, -600.91, -615.22, -490.45], "profit_aud": -490.45}}} \ No newline at end of file diff --git a/results/daily/2026-01-28.json b/results/daily/2026-01-28.json new file mode 100644 index 0000000..9fd7c2b --- /dev/null +++ b/results/daily/2026-01-28.json @@ -0,0 +1 @@ +{"date": "2026-01-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [100.31, 97.58, 92.13, 94.66, 99.94, 94.56, 92.65, 97.58, 99.56, 104.79, 132.17, 133.04, 143.87, 123.98, 70.88, 41.15, 114.48, 11.32, 4.25, 4.14, 7.61, 3.58, -0.46, 2.16, 4.26, 5.23, 7.03, 15.25, 25.38, 37.71, 45.95, 54.97, 30.68, 44.78, 60.5, 68.8, 69.84, 66.29, 62.03, 63.21, 58.32, 58.13, 54.54, 32.07, 23.19, 29.64, 20.67, 17.73], "forecast_price": {"naive": [469.97, 546.52, 679.2, 575.79, 515.39, 553.02, 503.09, 359.86, 906.59, 326.51, 318.4, 277.3, 3703.76, 863.89, 277.95, 499.35, 5388.34, 301.69, 196.66, 64.49, 44.87, 26.75, 19.18, 20.03, 22.86, 25.78, 10.85, 16.83, 49.48, 7.43, -7.23, -8.08, -5.85, 51.92, 90.95, 81.2, 604.06, 86.34, 135.33, 141.53, 112.76, 108.95, 110.44, 111.56, 168.26, 132.94, 102.22, 99.82], "lightgbm": [233.65, 229.95, 216.09, 182.78, 173.51, 170.79, 186.93, 193.45, 187.92, 211.16, 224.62, 229.9, 222.98, 265.13, 201.44, 180.73, 172.58, 152.26, 113.36, 65.23, 53.31, 29.49, 20.98, 20.45, 20.85, 23.65, 15.07, 15.36, 29.65, 13.73, 10.5, 12.9, 17.34, 49.96, 83.16, 104.06, 144.62, 110.43, 151.7, 151.02, 124.47, 117.27, 118.08, 112.63, 137.35, 129.6, 105.9, 105.9], "lstm": [97.9, 109.01, 89.64, 80.76, 93.4, 75.39, 76.27, 69.18, 90.65, 98.23, 127.17, 117.21, 101.09, 91.48, 53.69, 31.5, 19.45, -0.92, -12.44, -30.31, -28.08, -42.97, -39.33, -53.73, -53.08, -48.56, -61.54, -65.89, -60.67, -56.17, -33.18, -27.11, -13.63, 0.13, 5.91, 29.76, 59.8, 100.63, 135.89, 133.57, 131.83, 131.59, 125.1, 119.46, 124.05, 97.5, 101.18, 125.23]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -54.16, -169.32, -287.65, -287.65, -405.85, -521.66, -521.66, -521.66, -521.66, -356.44, -190.14, -10.3, 144.68, 134.76, 83.32, 226.42, 226.42, 221.11, 215.94, 225.45, 220.97, 221.55, 218.86, 215.9, 215.9, 215.9, 215.9, 215.9, 215.9, 215.9, 284.61, 246.26, 239.99, 239.99, 325.99, 413.29, 496.16, 496.16, 575.17, 575.17, 575.17, 575.17, 575.17, 546.18, 579.53, 579.53, 579.53], "profit_aud": 579.53}, "naive": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 4.88, 3.62, 2.38, 2.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-125.39, -139.05, -23.89, -23.89, -23.89, -23.89, -36.86, -158.83, -34.39, -165.37, -330.59, -496.89, -317.06, -162.08, -250.68, -219.82, -76.71, -76.71, -76.71, -76.71, -76.71, -76.71, -76.13, -78.83, -74.57, -68.04, -76.82, -87.42, -55.69, -102.83, -160.27, -228.98, -267.33, -267.33, -199.27, -285.27, -197.97, -280.84, -203.3, -124.28, -124.28, -132.42, -132.42, -132.42, -103.43, -66.38, -66.38, -66.38], "profit_aud": -66.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38, 2.38, 2.38, 2.38, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -118.33, -243.26, -361.46, -477.27, -477.27, -532.52, -532.52, -367.31, -201.0, -21.17, 133.81, 133.81, 133.81, 133.81, 133.81, 133.81, 133.81, 133.81, 133.81, 133.81, 131.12, 130.52, 137.05, 128.27, 109.2, 140.93, 93.79, 36.36, -32.35, -53.68, -53.68, -53.68, -53.68, 33.62, -49.24, 28.3, 107.31, 107.31, 107.31, 107.31, 102.82, 131.81, 168.86, 168.86, 168.86], "profit_aud": 168.86}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-125.39, -15.61, -15.61, -133.94, -133.94, -252.15, -367.95, -489.93, -489.93, -411.34, -246.13, -79.82, 100.01, 100.01, 100.01, 100.01, 100.01, 98.6, 98.07, 97.03, 97.03, 96.14, 96.14, 94.25, 94.25, 94.25, 85.46, 66.4, 34.67, -12.47, -18.21, -25.08, -28.92, -28.92, -28.92, -28.92, -28.92, -28.92, 48.62, 127.64, 200.54, 273.21, 273.21, 273.21, 273.21, 236.16, 233.27, 255.43], "profit_aud": 255.43}}} \ No newline at end of file diff --git a/results/daily/2026-01-29.json b/results/daily/2026-01-29.json new file mode 100644 index 0000000..862fa52 --- /dev/null +++ b/results/daily/2026-01-29.json @@ -0,0 +1 @@ +{"date": "2026-01-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [14.63, 19.46, 25.5, 12.37, 12.68, 10.07, 9.3, 7.62, 10.97, 30.92, 49.66, 55.24, 53.64, 25.6, 12.07, 14.68, 24.02, 15.25, 11.04, 21.3, 19.08, 9.78, 8.53, 17.16, 18.24, 17.37, 20.81, 32.84, 49.46, 45.03, 35.99, 21.85, 17.45, 34.73, 51.78, 76.4, 93.81, 95.59, 97.13, 95.91, 96.54, 96.3, 96.32, 94.59, 87.17, 75.85, 89.86, 89.63], "forecast_price": {"naive": [100.31, 97.58, 92.13, 94.66, 99.94, 94.56, 92.65, 97.58, 99.56, 104.79, 132.17, 133.04, 143.87, 123.98, 70.88, 41.15, 114.48, 11.32, 4.25, 4.14, 7.61, 3.58, -0.46, 2.16, 4.26, 5.23, 7.03, 15.25, 25.38, 37.71, 45.95, 54.97, 30.68, 44.78, 60.5, 68.8, 69.84, 66.29, 62.03, 63.21, 58.32, 58.13, 54.54, 32.07, 23.19, 29.64, 20.67, 17.73], "lightgbm": [65.84, 65.84, 51.51, 46.38, 48.07, 46.15, 46.78, 47.67, 46.24, 56.92, 77.03, 86.2, 80.71, 80.91, 55.75, 31.31, 63.59, 21.68, 16.36, 14.29, 10.08, 7.42, 4.84, 4.47, 4.64, 4.64, 6.03, 6.0, 10.75, 15.39, 20.87, 31.32, 25.16, 37.23, 46.98, 68.56, 66.05, 71.17, 66.73, 66.72, 61.63, 57.54, 58.37, 52.19, 46.5, 46.1, 44.31, 49.27], "lstm": [24.28, 25.49, 20.24, 11.5, 15.28, 13.18, 12.7, 11.75, 22.11, 27.67, 44.26, 48.0, 49.49, 54.43, 31.17, 19.1, 11.62, -10.23, -19.42, -33.7, -26.5, -34.32, -38.51, -38.45, -38.01, -34.13, -33.96, -33.59, -28.56, -24.06, -12.22, -1.18, 5.8, 14.24, 17.65, 37.65, 56.82, 78.83, 101.4, 91.3, 90.03, 90.42, 76.53, 70.92, 69.82, 65.12, 65.14, 76.98]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 2.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-18.28, -21.01, 10.87, 4.0, 4.0, -8.59, -20.21, -29.73, -43.44, -4.8, 57.28, 126.33, 193.38, 193.38, 178.3, 159.95, 189.98, 170.92, 157.11, 183.75, 190.9, 178.68, 168.02, 146.57, 146.57, 146.57, 146.57, 146.57, 208.39, 264.68, 264.68, 237.37, 215.55, 205.83, 205.83, 205.83, 205.83, 205.83, 327.24, 327.24, 447.92, 568.3, 688.69, 688.69, 688.69, 593.88, 694.97, 694.97], "profit_aud": 694.97}, "naive": {"charge_mw": [0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -10.8, -42.68, -58.14, -58.14, -70.73, -82.35, -82.35, -82.35, -82.35, -20.28, 48.78, 115.83, 147.83, 146.14, 127.79, 157.82, 157.82, 144.01, 117.38, 141.23, 129.01, 118.35, 96.9, 84.23, 84.23, 84.23, 84.23, 84.23, 84.23, 84.23, 111.54, 89.73, 84.87, 84.87, 180.36, 297.62, 417.11, 417.11, 537.0, 537.0, 537.0, 537.0, 537.0, 428.04, 513.38, 513.38, 513.38], "profit_aud": 513.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, -0.0, -0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -15.46, -15.46, -28.05, -39.67, -43.9, -57.61, -57.61, 4.46, 73.52, 140.57, 172.57, 170.88, 152.53, 182.56, 182.56, 182.56, 182.56, 182.56, 182.56, 171.9, 150.45, 127.66, 105.94, 105.94, 87.71, 87.71, 87.71, 87.71, 112.3, 90.48, 90.48, 90.48, 185.98, 185.98, 305.46, 426.88, 546.77, 546.77, 546.77, 546.77, 546.77, 546.77, 546.77, 434.44, 535.28], "profit_aud": 535.28}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -15.46, -22.5, -35.09, -46.71, -56.24, -56.24, -56.24, 5.84, 74.89, 141.94, 173.94, 173.94, 173.94, 173.94, 172.03, 170.65, 144.02, 165.2, 152.98, 142.32, 120.87, 98.08, 87.22, 84.62, 80.51, 74.33, 68.7, 64.2, 61.47, 61.47, 61.47, 61.47, 61.47, 61.47, 61.47, 182.89, 302.78, 423.45, 543.83, 543.83, 543.83, 543.83, 449.01, 436.43, 548.47], "profit_aud": 548.47}}} \ No newline at end of file diff --git a/results/daily/2026-01-30.json b/results/daily/2026-01-30.json new file mode 100644 index 0000000..3f45911 --- /dev/null +++ b/results/daily/2026-01-30.json @@ -0,0 +1 @@ +{"date": "2026-01-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [79.14, 72.87, 68.79, 72.56, 76.95, 75.24, 77.27, 87.21, 96.44, 99.66, 103.5, 111.79, 114.38, 113.97, 111.58, 85.82, 77.59, 77.79, 77.84, 93.94, 98.67, 102.54, 127.72, 124.44, 154.43, 188.76, 144.38, 182.68, 216.12, 169.27, 153.72, 134.89, 97.29, 124.9, 118.4, 131.62, 134.71, 134.24, 127.02, 119.1, 107.42, 99.79, 98.3, 99.12, 94.84, 90.22, 97.18, 109.37], "forecast_price": {"naive": [14.63, 19.46, 25.5, 12.37, 12.68, 10.07, 9.3, 7.62, 10.97, 30.92, 49.66, 55.24, 53.64, 25.6, 12.07, 14.68, 24.02, 15.25, 11.04, 21.3, 19.08, 9.78, 8.53, 17.16, 18.24, 17.37, 20.81, 32.84, 49.46, 45.03, 35.99, 21.85, 17.45, 34.73, 51.78, 76.4, 93.81, 95.59, 97.13, 95.91, 96.54, 96.3, 96.32, 94.59, 87.17, 75.85, 89.86, 89.63], "lightgbm": [49.27, 49.95, 45.29, 33.28, 31.18, 31.91, 31.91, 32.01, 31.51, 35.98, 49.93, 53.09, 50.94, 38.51, 31.9, 24.42, 28.03, 18.82, 17.98, 13.69, 13.24, 9.17, 6.8, 6.18, 9.94, 9.94, 12.32, 20.55, 21.72, 21.14, 24.42, 21.63, 24.72, 40.83, 56.36, 85.77, 99.04, 98.49, 99.04, 97.77, 95.87, 92.44, 88.99, 86.03, 73.09, 65.72, 70.6, 72.93], "lstm": [112.14, 107.23, 93.15, 91.01, 91.23, 87.35, 87.7, 84.64, 86.94, 108.99, 120.72, 129.13, 114.37, 117.24, 83.46, 58.18, 50.96, 33.08, 22.56, 9.08, 15.4, 6.21, 6.48, 2.5, 6.53, 4.89, 3.88, 3.37, 8.44, 5.46, 18.38, 30.3, 30.1, 45.87, 54.09, 77.22, 104.64, 132.92, 146.49, 137.57, 121.95, 118.73, 115.88, 100.42, 115.69, 104.2, 107.71, 112.74]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -91.09, -177.07, -267.76, -310.47, -404.53, -404.53, -404.53, -404.53, -404.53, -404.53, -264.78, -121.81, 20.65, 160.14, 52.86, -44.12, -141.36, -238.66, -290.79, -290.79, -290.79, -290.79, -290.79, -290.79, -54.84, -54.84, 173.51, 443.66, 655.24, 655.24, 655.24, 533.63, 533.63, 385.63, 385.63, 554.02, 688.26, 688.26, 688.26, 688.26, 688.26, 688.26, 688.26, 674.98, 562.21, 562.21, 698.92], "profit_aud": 698.92}, "naive": {"charge_mw": [2.5, 0.28, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 2.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-98.93, -109.13, -23.15, -63.42, -63.42, -157.47, -254.07, -363.08, -483.63, -359.06, -229.68, -89.94, 53.03, 53.03, -86.45, -193.72, -96.73, -193.97, -291.27, -173.85, -136.85, -265.02, -424.67, -580.21, -580.21, -580.21, -580.21, -580.21, -310.06, -98.48, -98.48, -267.09, -388.7, -423.67, -423.67, -423.67, -423.67, -423.67, -264.89, -264.89, -130.62, -5.88, 117.0, 117.0, 117.0, 4.22, 113.56, 113.56], "profit_aud": 113.56}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -96.19, -190.24, -286.83, -335.24, -455.79, -455.79, -326.41, -186.66, -43.69, 98.77, 98.77, -8.5, 78.79, 78.79, 78.79, 78.79, 78.79, -49.38, -209.03, -364.57, -450.28, -686.23, -686.23, -686.23, -686.23, -686.23, -513.29, -681.9, -681.9, -681.9, -681.9, -681.9, -513.52, -345.72, -186.94, -38.07, -38.07, -38.07, -38.07, -38.07, -38.07, -38.07, -38.07, -38.07], "profit_aud": -38.07}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -40.27, -40.27, -134.32, -230.92, -339.93, -460.48, -460.48, -331.1, -191.36, -48.39, 94.08, 94.08, 94.08, 94.08, 94.08, 94.08, -23.34, 87.66, 30.75, 30.75, -124.79, -124.79, -360.74, -541.22, -769.57, -526.43, -738.02, -738.02, -738.02, -738.02, -738.02, -738.02, -738.02, -738.02, -570.22, -411.44, -262.56, -128.29, -128.29, -128.29, -252.19, -145.5, -145.5, -145.5, -145.5], "profit_aud": -145.5}}} \ No newline at end of file diff --git a/results/daily/2026-01-31.json b/results/daily/2026-01-31.json new file mode 100644 index 0000000..5e4ea3c --- /dev/null +++ b/results/daily/2026-01-31.json @@ -0,0 +1 @@ +{"date": "2026-01-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [113.64, 118.92, 121.32, 111.21, 97.85, 98.65, 101.22, 106.52, 112.75, 127.25, 142.81, 142.66, 111.38, 173.81, 163.34, 224.24, 247.9, 60.26, 32.56, 30.63, 43.55, 31.38, 31.61, 47.5, 50.75, 46.18, 76.56, 52.64, 43.02, 19.09, -2.83, -2.45, 1.24, 15.04, 22.34, 56.72, 77.1, 81.69, 78.04, 78.28, 79.04, 62.96, 50.81, 59.43, 48.64, 44.82, 55.0, 49.98], "forecast_price": {"naive": [79.14, 72.87, 68.79, 72.56, 76.95, 75.24, 77.27, 87.21, 96.44, 99.66, 103.5, 111.79, 114.38, 113.97, 111.58, 85.82, 77.59, 77.79, 77.84, 93.94, 98.67, 102.54, 127.72, 124.44, 154.43, 188.76, 144.38, 182.68, 216.12, 169.27, 153.72, 134.89, 97.29, 124.9, 118.4, 131.62, 134.71, 134.24, 127.02, 119.1, 107.42, 99.79, 98.3, 99.12, 94.84, 90.22, 97.18, 109.37], "lightgbm": [88.48, 77.85, 72.55, 68.17, 71.32, 65.86, 66.96, 70.77, 73.48, 70.48, 73.23, 75.61, 77.68, 71.37, 70.21, 61.5, 52.98, 44.32, 41.74, 40.85, 41.16, 39.27, 42.5, 42.19, 51.14, 52.19, 51.14, 52.19, 56.85, 68.69, 72.74, 91.4, 86.62, 100.6, 102.2, 115.67, 122.18, 117.27, 116.36, 112.17, 101.15, 92.53, 90.72, 86.49, 85.61, 83.04, 87.18, 91.25], "lstm": [103.5, 103.31, 86.48, 84.32, 85.27, 77.94, 77.37, 79.53, 79.75, 85.58, 92.41, 89.27, 69.28, 74.24, 57.5, 44.1, 42.49, 31.98, 26.24, 14.66, 15.16, 13.48, 13.98, 13.79, 16.41, 13.83, 16.44, 15.13, 14.55, 16.13, 23.0, 29.96, 36.64, 49.57, 54.23, 68.68, 94.81, 111.06, 110.37, 110.99, 97.54, 90.91, 87.15, 83.55, 82.09, 72.4, 86.01, 92.29]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -61.72, -184.03, -307.35, -433.87, -567.01, -567.01, -567.01, -406.35, -406.35, -545.58, -328.32, -124.15, 156.14, 466.01, 466.01, 425.32, 387.03, 387.03, 347.81, 308.29, 343.91, 407.35, 407.35, 503.05, 568.85, 568.85, 558.26, 561.8, 564.87, 563.32, 544.52, 544.52, 544.52, 544.52, 646.63, 744.18, 842.02, 940.83, 940.83, 877.31, 944.17, 937.37, 881.35, 950.1, 950.1], "profit_aud": 950.1}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -148.65, -300.3, -439.31, -493.62, -616.93, -616.93, -616.93, -616.93, -616.93, -616.93, -438.61, -299.38, -82.12, 122.05, -158.24, -468.11, -543.43, -584.13, -601.13, -601.13, -601.13, -601.13, -601.13, -601.13, -543.41, -543.41, -477.6, -423.83, -399.97, -399.97, -399.97, -401.52, -401.52, -429.46, -429.46, -333.08, -251.39, -251.39, -251.39, -251.39, -251.39, -251.39, -251.39, -258.2, -314.22, -314.22, -251.75], "profit_aud": -251.75}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -123.31, -249.84, -249.84, -249.84, -249.84, -249.84, -107.18, 32.05, 32.05, 32.05, 32.05, 32.05, 32.05, -8.64, -46.93, -101.37, -140.59, -140.59, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -166.95, -96.04, 0.34, 102.45, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0], "profit_aud": 200.0}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -123.31, -249.84, -279.66, -279.66, -279.66, -101.15, 77.18, 77.18, 77.18, 77.18, 77.18, 77.18, 77.18, 77.18, 38.89, 38.89, -0.33, -39.85, -99.21, -67.49, -125.22, -39.09, -39.09, -92.86, -92.86, -92.86, -92.86, -92.86, -92.86, -92.86, -92.86, -92.86, 9.25, 106.8, 204.65, 303.45, 303.45, 303.45, 303.45, 296.64, 240.62, 240.62, 303.09], "profit_aud": 303.09}}} \ No newline at end of file diff --git a/results/daily/2026-02-01.json b/results/daily/2026-02-01.json new file mode 100644 index 0000000..e1352cb --- /dev/null +++ b/results/daily/2026-02-01.json @@ -0,0 +1 @@ +{"date": "2026-02-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [45.22, 40.52, 47.03, 38.49, 41.65, 39.75, 44.63, 41.14, 38.44, 38.68, 35.34, 32.84, 40.57, 36.07, 42.53, 31.1, -5.64, -6.9, -6.86, -10.78, -24.96, -35.73, -37.11, -40.54, -47.08, -50.07, -41.97, -78.41, -56.49, -41.97, -38.82, -33.16, -20.17, -14.48, -10.47, -8.32, -6.92, -7.2, -6.36, -3.3, 0.0, 4.82, 7.36, 5.4, 4.47, 3.02, 11.85, 11.61], "forecast_price": {"naive": [113.64, 118.92, 121.32, 111.21, 97.85, 98.65, 101.22, 106.52, 112.75, 127.25, 142.81, 142.66, 111.38, 173.81, 163.34, 224.24, 247.9, 60.26, 32.56, 30.63, 43.55, 31.38, 31.61, 47.5, 50.75, 46.18, 76.56, 52.64, 43.02, 19.09, -2.83, -2.45, 1.24, 15.04, 22.34, 56.72, 77.1, 81.69, 78.04, 78.28, 79.04, 62.96, 50.81, 59.43, 48.64, 44.82, 55.0, 49.98], "lightgbm": [85.82, 82.62, 76.03, 79.35, 79.13, 76.52, 75.08, 65.74, 67.03, 67.96, 68.06, 72.45, 59.69, 61.15, 59.46, 41.51, 37.0, 21.13, 6.42, -2.3, -0.65, -2.64, -3.22, -1.19, -2.2, -3.48, 1.61, -1.61, 1.25, 3.97, -0.74, 5.81, 15.44, 22.42, 34.08, 62.94, 77.07, 84.66, 78.79, 78.37, 78.91, 66.07, 59.12, 60.34, 55.64, 53.23, 58.84, 57.16], "lstm": [42.76, 37.8, 36.66, 33.71, 40.03, 33.71, 33.98, 32.69, 37.83, 38.19, 47.32, 42.49, 35.21, 32.23, 13.23, 4.92, -1.65, -11.24, -12.78, -24.67, -25.17, -31.34, -27.82, -26.43, -27.59, -28.72, -29.84, -31.02, -22.07, -21.64, -12.85, -4.95, 4.23, 14.52, 20.59, 30.23, 53.95, 67.41, 74.03, 75.03, 70.74, 72.01, 66.59, 60.49, 59.15, 56.25, 60.12, 68.21]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -50.65, 2.25, -45.86, -45.86, -51.42, 4.36, 4.36, 4.36, 4.36, -39.81, -80.86, -30.15, -40.25, 12.91, 12.91, 13.62, 15.34, 15.34, 16.69, 19.81, 24.27, 28.91, 33.98, 92.83, 155.41, 181.64, 279.65, 350.26, 355.51, 360.36, 364.51, 367.03, 368.84, 370.15, 371.19, 371.19, 372.99, 373.78, 374.19, 374.19, 379.62, 388.82, 395.57, 395.57, 391.8, 406.61, 421.12], "profit_aud": 421.12}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -21.36, -73.43, -123.11, -178.9, -230.32, -230.32, -230.32, -190.56, -190.56, -241.27, -196.19, -143.02, -104.14, -111.19, -111.19, -102.61, -89.14, -89.14, -44.48, 1.91, -28.5, -87.35, -87.35, -139.81, -237.82, -237.82, -214.53, -166.0, -124.55, -99.34, -81.24, -81.24, -81.24, -81.24, -90.24, -98.19, -102.31, -102.3, -102.3, -111.5, -105.42, -106.05, -109.82, -95.0, -95.0], "profit_aud": -95.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.47, -14.24, 30.42, 76.81, 102.14, 160.99, 223.58, 171.11, 269.12, 277.03, 229.81, 278.34, 278.34, 278.34, 278.34, 278.34, 278.34, 278.34, 269.34, 261.4, 257.27, 257.28, 257.28, 257.28, 257.28, 257.28, 257.28, 257.28, 257.28], "profit_aud": 257.28}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -48.11, -1.26, -50.94, -106.73, -158.15, -158.15, -124.3, -80.13, -39.08, -39.08, -39.08, -39.08, -39.08, -38.37, -37.51, -36.65, -35.3, -32.18, 12.47, 44.94, 44.94, 44.94, 107.53, 159.99, 258.0, 265.06, 270.31, 275.16, 279.3, 279.3, 279.3, 279.3, 279.3, 279.3, 279.3, 271.36, 267.23, 267.24, 273.27, 273.27, 273.27, 272.64, 268.87, 268.87, 283.38], "profit_aud": 283.38}}} \ No newline at end of file diff --git a/results/daily/2026-02-02.json b/results/daily/2026-02-02.json new file mode 100644 index 0000000..79ef485 --- /dev/null +++ b/results/daily/2026-02-02.json @@ -0,0 +1 @@ +{"date": "2026-02-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [8.86, 9.68, 10.53, 8.17, 8.02, 8.06, 8.14, 15.12, 18.05, 27.55, 42.86, 49.15, 48.0, 31.1, 1.8, -8.24, -15.12, -23.26, -18.34, -39.71, -30.25, -25.75, -25.64, -23.43, -17.69, -18.13, -12.38, -12.43, -10.17, -8.6, -7.87, -7.39, -6.51, -5.82, 0.78, 3.97, 38.36, 64.87, 66.89, 61.92, 63.66, 62.46, 51.61, 38.66, 35.24, 39.92, 48.46, 53.94], "forecast_price": {"naive": [45.22, 40.52, 47.03, 38.49, 41.65, 39.75, 44.63, 41.14, 38.44, 38.68, 35.34, 32.84, 40.57, 36.07, 42.53, 31.1, -5.64, -6.9, -6.86, -10.78, -24.96, -35.73, -37.11, -40.54, -47.08, -50.07, -41.97, -78.41, -56.49, -41.97, -38.82, -33.16, -20.17, -14.48, -10.47, -8.32, -6.92, -7.2, -6.36, -3.3, 0.0, 4.82, 7.36, 5.4, 4.47, 3.02, 11.85, 11.61], "lightgbm": [28.63, 28.01, 27.09, 23.85, 20.23, 19.5, 19.4, 18.7, 19.7, 22.26, 28.69, 30.5, 33.05, 30.6, 28.24, 24.54, 16.61, 9.33, 9.21, -0.06, -1.03, -9.67, -10.45, -6.53, -8.64, -9.45, -3.28, -7.53, -8.5, -8.74, -9.67, -1.25, 7.86, 16.14, 30.25, 38.46, 47.48, 48.33, 50.2, 51.22, 51.55, 47.94, 48.75, 44.82, 44.83, 44.57, 47.15, 46.89], "lstm": [7.19, 6.61, 3.6, -1.8, -0.12, 1.65, 1.14, 2.77, 12.44, 21.04, 34.88, 40.33, 50.11, 57.35, 32.2, 25.22, 15.1, 2.33, -6.85, -12.39, -10.52, -17.86, -16.99, -20.2, -18.31, -17.68, -27.13, -24.32, -21.06, -25.99, -17.47, -12.32, -5.77, 5.5, 5.97, 18.59, 36.82, 52.23, 62.79, 60.76, 64.32, 67.87, 58.89, 45.98, 49.39, 49.85, 51.05, 60.52]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-11.08, -11.08, -4.5, -14.71, -24.73, -34.81, -44.98, -44.98, -44.98, -44.98, 8.59, 70.03, 130.03, 168.9, 168.9, 169.93, 171.82, 200.9, 180.54, 230.18, 268.0, 300.19, 332.24, 346.88, 346.88, 351.42, 351.42, 354.52, 355.79, 356.87, 357.85, 358.78, 359.59, 360.32, 360.32, 360.32, 360.32, 441.41, 525.02, 525.02, 604.59, 682.67, 682.67, 634.35, 590.3, 579.12, 639.69, 707.11], "profit_aud": 707.11}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 1.12, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -12.1, -0.25, -10.46, -10.46, -11.59, -1.41, -1.41, -1.41, -1.41, -54.99, -116.42, -56.43, -65.13, -62.89, -62.89, -61.0, -55.18, -55.18, -50.22, -46.44, -43.22, -40.01, -37.08, -14.97, 7.7, 15.43, 30.97, 43.68, 44.76, 45.74, 46.67, 47.48, 48.21, 48.11, 47.61, 47.61, 31.4, 23.04, 15.3, 15.3, 85.56, 150.08, 198.4, 198.4, 148.5, 209.07, 276.49], "profit_aud": 276.49}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 1.94, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 2.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -4.45, -14.53, -24.7, -43.6, -66.16, -66.16, -12.59, 48.85, 108.85, 147.72, 147.72, 147.72, 147.72, 147.72, 147.72, 152.68, 156.46, 188.65, 220.7, 191.42, 213.53, 236.2, 220.72, 217.24, 229.96, 240.72, 250.56, 251.48, 251.48, 251.48, 251.48, 251.48, 251.48, 251.48, 335.09, 412.49, 492.07, 492.07, 556.58, 556.58, 556.58, 556.58, 556.58, 556.58], "profit_aud": 556.58}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 1.12, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -10.21, -20.23, -30.31, -40.48, -48.88, -48.88, -48.88, 4.7, 66.13, 126.13, 165.0, 165.0, 165.0, 165.0, 165.0, 167.29, 216.94, 183.36, 189.8, 189.8, 219.08, 219.08, 211.56, 227.03, 242.57, 255.28, 266.04, 267.02, 267.95, 268.76, 268.76, 268.76, 268.76, 268.76, 268.76, 352.37, 429.77, 509.34, 587.42, 587.42, 539.1, 534.17, 534.17, 534.17, 601.59], "profit_aud": 601.59}}} \ No newline at end of file diff --git a/results/daily/2026-02-03.json b/results/daily/2026-02-03.json new file mode 100644 index 0000000..61f1a65 --- /dev/null +++ b/results/daily/2026-02-03.json @@ -0,0 +1 @@ +{"date": "2026-02-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [59.08, 54.2, 55.87, 52.39, 48.56, 53.05, 52.7, 56.4, 55.58, 57.03, 52.4, 46.0, 48.27, 31.64, 11.26, -1.84, -5.3, -5.4, -6.46, -6.59, -6.34, -6.96, -7.85, -6.86, -10.16, -6.6, -6.51, -6.0, -2.6, 1.96, 21.78, 47.71, 57.91, 85.25, 83.34, 96.81, 104.28, 108.88, 105.34, 99.99, 93.81, 92.71, 79.24, 87.4, 92.22, 99.79, 104.99, 105.95], "forecast_price": {"naive": [8.86, 9.68, 10.53, 8.17, 8.02, 8.06, 8.14, 15.12, 18.05, 27.55, 42.86, 49.15, 48.0, 31.1, 1.8, -8.24, -15.12, -23.26, -18.34, -39.71, -30.25, -25.75, -25.64, -23.43, -17.69, -18.13, -12.38, -12.43, -10.17, -8.6, -7.87, -7.39, -6.51, -5.82, 0.78, 3.97, 38.36, 64.87, 66.89, 61.92, 63.66, 62.46, 51.61, 38.66, 35.24, 39.92, 48.46, 53.94], "lightgbm": [33.83, 33.81, 28.64, 20.34, 21.99, 21.81, 21.9, 22.78, 22.78, 31.39, 44.91, 51.97, 49.61, 44.03, 36.16, 27.46, 21.43, 14.37, 8.69, 0.58, -1.34, -1.89, -2.48, -3.28, -2.22, -2.22, -1.69, -1.69, -1.12, 2.61, 5.08, 8.32, 19.25, 27.42, 42.09, 48.13, 60.22, 72.75, 76.18, 72.83, 73.05, 70.58, 62.16, 53.05, 53.16, 54.17, 58.92, 62.88], "lstm": [55.35, 48.66, 47.03, 42.37, 42.48, 41.29, 46.13, 44.57, 51.95, 65.51, 74.48, 83.08, 90.82, 99.99, 64.96, 48.48, 36.07, 24.54, 13.49, 7.48, 10.88, 1.33, -0.02, 2.27, 5.78, 2.97, 3.74, 8.1, 4.99, 5.21, 10.39, 18.88, 22.35, 32.98, 37.11, 51.03, 75.57, 88.16, 88.73, 79.49, 80.8, 76.25, 73.42, 61.44, 64.4, 61.78, 64.51, 70.57]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -60.7, -60.7, -60.7, -60.7, -60.7, 3.46, 3.46, 3.46, 3.46, 3.46, 3.46, 3.69, 4.35, 5.03, 5.83, 7.48, 7.48, 16.19, 26.0, 34.57, 47.28, 51.4, 52.21, 52.96, 53.29, 53.29, 53.29, 53.29, 53.29, 53.29, 53.29, 53.29, 183.63, 319.73, 451.4, 551.39, 551.39, 551.39, 452.35, 343.09, 343.09, 343.09, 474.33, 606.77], "profit_aud": 606.77}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-73.85, -73.85, -38.92, -104.41, -165.11, -231.42, -297.3, -297.3, -297.3, -297.3, -231.8, -174.31, -113.97, -74.42, -74.42, -74.19, -73.52, -66.77, -73.94, -65.7, -57.78, -49.07, -39.26, -34.97, -34.97, -33.32, -33.32, -31.82, -31.5, -31.74, -34.46, -40.43, -47.67, -58.32, -58.32, -58.32, -58.32, 77.77, 209.44, 209.44, 326.71, 442.59, 442.59, 333.34, 218.06, 190.12, 321.36, 453.8], "profit_aud": 453.8}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -65.48, -126.19, -192.5, -258.37, -289.67, -289.67, -289.67, -224.18, -166.68, -106.35, -66.79, -66.79, -66.79, -66.79, -66.79, -66.79, -66.79, -66.0, -61.65, -51.83, -43.26, -30.56, -22.31, -22.31, -20.81, -20.49, -20.49, -20.49, -20.49, -20.49, -20.49, -20.49, -20.49, -20.49, 115.61, 247.28, 372.27, 489.54, 489.54, 489.54, 380.28, 367.37, 367.37, 367.37, 499.81], "profit_aud": 499.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -65.48, -126.19, -192.5, -221.75, -292.24, -292.24, -292.24, -226.75, -169.25, -108.92, -69.36, -69.36, -69.36, -69.36, -69.36, -69.36, -61.12, -68.25, -59.55, -49.73, -41.16, -47.51, -39.27, -31.13, -38.63, -35.38, -35.66, -35.66, -35.66, -35.66, -35.66, -35.66, -35.66, -35.66, 100.44, 232.11, 357.1, 474.37, 474.37, 474.37, 365.12, 365.12, 351.15, 351.15, 483.59], "profit_aud": 483.59}}} \ No newline at end of file diff --git a/results/daily/2026-02-04.json b/results/daily/2026-02-04.json new file mode 100644 index 0000000..647cfb1 --- /dev/null +++ b/results/daily/2026-02-04.json @@ -0,0 +1 @@ +{"date": "2026-02-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [102.16, 106.47, 105.77, 114.58, 137.38, 119.28, 100.26, 92.36, 87.1, 88.84, 85.08, 91.71, 81.28, 80.36, 19.77, 45.16, -0.98, 2.5, 1.59, 0.84, 55.96, -32.22, -8.92, -8.5, -4.52, -6.35, -6.02, -10.75, 48.4, 109.45, 9.36, -8.24, 2.83, 118.62, 249.6, 136.12, 151.63, 164.82, 155.66, 142.84, 136.43, 134.44, 134.34, 122.44, 88.79, 109.87, 122.38, 124.97], "forecast_price": {"naive": [59.08, 54.2, 55.87, 52.39, 48.56, 53.05, 52.7, 56.4, 55.58, 57.03, 52.4, 46.0, 48.27, 31.64, 11.26, -1.84, -5.3, -5.4, -6.46, -6.59, -6.34, -6.96, -7.85, -6.86, -10.16, -6.6, -6.51, -6.0, -2.6, 1.96, 21.78, 47.71, 57.91, 85.25, 83.34, 96.81, 104.28, 108.88, 105.34, 99.99, 93.81, 92.71, 79.24, 87.4, 92.22, 99.79, 104.99, 105.95], "lightgbm": [61.46, 60.08, 56.76, 52.38, 48.4, 53.12, 53.12, 53.38, 53.38, 55.71, 59.08, 53.96, 56.79, 47.64, 42.06, 30.17, 35.44, 18.6, 14.64, 12.3, 11.39, 7.11, 5.32, 7.78, 3.75, 8.84, 8.84, 8.84, 12.62, 17.45, 24.96, 35.58, 39.44, 55.31, 71.12, 89.11, 88.7, 97.34, 96.11, 92.9, 91.1, 85.93, 73.93, 72.67, 75.22, 81.06, 82.29, 83.53], "lstm": [91.61, 92.17, 89.56, 79.95, 76.74, 75.76, 79.37, 78.27, 82.88, 94.76, 101.3, 108.76, 105.97, 105.37, 71.09, 54.82, 43.18, 32.77, 22.21, 15.45, 20.58, 12.39, 13.47, 14.51, 17.14, 14.83, 16.07, 18.34, 13.52, 16.34, 22.98, 27.98, 34.32, 44.77, 52.89, 73.89, 99.62, 112.91, 102.91, 99.48, 94.24, 85.03, 82.44, 71.94, 76.92, 67.48, 74.71, 83.93]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.88, 5.0, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-127.71, -157.52, -289.73, -289.73, -118.0, 31.1, 31.1, 31.1, 31.1, 31.1, 31.1, 31.1, 31.1, 31.1, 6.38, 57.19, 58.41, 61.22, 61.0, 59.95, 129.9, 170.18, 181.33, 191.96, 186.31, 194.25, 198.76, 212.2, 272.7, 409.51, 406.89, 417.19, 413.65, 413.65, 725.65, 725.65, 915.19, 1121.22, 1315.8, 1315.8, 1315.8, 1315.8, 1315.8, 1315.8, 1204.82, 1067.47, 1189.86, 1346.07], "profit_aud": 1346.07}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -171.73, -171.73, -171.73, -171.73, -171.73, -71.78, -71.78, -71.78, -71.78, -71.78, -71.78, -77.43, -77.31, -77.62, -77.82, -78.03, -78.03, -37.75, -26.6, -15.97, -10.32, -6.35, -5.6, -4.26, -10.31, -10.31, -10.31, -10.31, -10.31, -10.31, -10.31, -10.31, 179.23, 385.25, 579.84, 722.68, 722.68, 722.68, 554.75, 401.7, 401.7, 401.7, 554.68, 710.89], "profit_aud": 710.89}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -16.04, -187.77, -187.77, -187.77, -187.77, -187.77, -187.77, -81.43, -81.43, -81.43, -81.43, -81.43, -137.88, -138.98, -138.98, -138.98, -138.98, -138.98, -98.7, -87.55, -76.92, -71.28, -71.28, -71.28, -65.31, -65.31, -65.31, -65.31, -65.31, -65.31, -65.31, -65.31, -65.31, -65.31, 140.71, 335.3, 513.85, 684.38, 684.38, 516.45, 363.4, 363.4, 363.4, 485.79, 642.0], "profit_aud": 642.0}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -63.59, -235.32, -384.42, -509.74, -625.19, -625.19, -625.19, -518.84, -404.2, -302.6, -202.15, -202.15, -202.15, -202.15, -202.15, -202.15, -203.2, -140.24, -99.97, -88.82, -78.19, -78.19, -70.25, -66.91, -80.35, -140.85, -156.17, -156.17, -156.17, -156.17, -156.17, -156.17, -156.17, 33.37, 239.39, 433.97, 612.52, 612.52, 612.52, 612.52, 595.38, 595.38, 458.04, 458.04, 614.25], "profit_aud": 614.25}}} \ No newline at end of file diff --git a/results/daily/2026-02-05.json b/results/daily/2026-02-05.json new file mode 100644 index 0000000..7e7d703 --- /dev/null +++ b/results/daily/2026-02-05.json @@ -0,0 +1 @@ +{"date": "2026-02-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [134.92, 136.26, 139.1, 142.78, 151.0, 161.35, 165.75, 154.34, 176.47, 204.66, 181.88, 191.3, 178.45, 132.89, 111.1, 134.17, 31.32, -10.81, -11.31, -9.6, -16.86, -22.43, -11.86, -12.26, -18.88, -14.45, -46.63, -57.29, -7.58, -5.89, -3.85, 0.59, 11.78, 8.27, 15.74, 48.82, 136.52, 133.01, 144.94, 135.28, 124.12, 120.05, 106.82, 98.28, 99.36, 97.28, 99.29, 109.4], "forecast_price": {"naive": [102.16, 106.47, 105.77, 114.58, 137.38, 119.28, 100.26, 92.36, 87.1, 88.84, 85.08, 91.71, 81.28, 80.36, 19.77, 45.16, -0.98, 2.5, 1.59, 0.84, 55.96, -32.22, -8.92, -8.5, -4.52, -6.35, -6.02, -10.75, 48.4, 109.45, 9.36, -8.24, 2.83, 118.62, 249.6, 136.12, 151.63, 164.82, 155.66, 142.84, 136.43, 134.44, 134.34, 122.44, 88.79, 109.87, 122.38, 124.97], "lightgbm": [80.1, 79.76, 75.93, 70.81, 71.93, 69.8, 69.68, 67.07, 67.07, 74.64, 82.97, 84.79, 84.74, 81.12, 43.6, 47.47, 31.26, 19.35, 17.96, 13.12, 27.56, 1.39, 1.15, -0.72, 5.47, 4.34, 5.25, 2.26, 24.37, 42.2, 16.0, 12.93, 19.7, 67.33, 92.4, 128.54, 129.54, 129.54, 129.54, 129.05, 126.31, 119.06, 114.67, 100.78, 88.01, 92.49, 100.21, 101.47], "lstm": [105.99, 101.91, 99.63, 92.3, 87.95, 87.05, 88.44, 84.97, 94.05, 98.19, 109.12, 110.43, 108.43, 101.16, 78.72, 50.3, 38.29, 25.7, 15.9, 8.33, 8.09, 3.39, 3.17, 7.16, 6.39, 6.62, 8.51, 9.87, 7.9, 12.54, 21.35, 33.11, 40.67, 54.61, 67.79, 99.44, 117.35, 132.95, 124.57, 122.07, 110.03, 96.25, 90.16, 80.78, 79.96, 73.31, 75.64, 86.6]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-168.65, -338.99, -512.86, -691.34, -775.15, -775.15, -775.15, -775.15, -775.15, -519.32, -291.96, -52.84, 170.23, 170.23, 31.34, 182.29, 182.29, 184.99, 199.13, 187.14, 208.21, 236.25, 221.42, 216.33, 239.93, 257.99, 316.28, 387.89, 388.83, 389.57, 390.05, 390.05, 403.3, 392.96, 392.96, 392.96, 563.62, 729.89, 911.06, 1080.15, 1080.15, 1080.15, 1080.15, 1066.39, 1066.39, 944.8, 944.8, 1081.55], "profit_aud": 1081.55}, "naive": {"charge_mw": [2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 3.88, 5.0, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-168.65, -206.81, -380.69, -380.69, -191.94, 9.75, 9.75, 9.75, 9.75, 9.75, 9.75, 9.75, 9.75, 9.75, -129.13, 21.82, -17.34, -29.5, -27.91, -15.92, -36.99, -8.95, 5.88, 21.21, -2.39, 15.68, 50.65, 122.26, 112.78, 105.41, 106.49, 105.75, 91.03, 91.03, 110.7, 110.7, 281.36, 447.63, 628.8, 628.8, 628.8, 628.8, 628.8, 628.8, 504.6, 383.0, 482.29, 619.04], "profit_aud": 619.04}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -79.25, -79.25, -280.94, -488.12, -681.05, -901.64, -901.64, -674.29, -435.17, -212.1, -45.99, -45.99, -45.99, -45.99, -45.99, -44.41, -32.41, -53.48, -25.44, -10.61, 4.72, -7.08, 10.98, 10.98, 82.59, 73.11, 65.75, 70.56, 69.82, 66.52, 66.52, 66.52, 66.52, 237.18, 403.44, 584.62, 753.71, 753.71, 753.71, 753.71, 753.71, 629.51, 629.51, 629.51, 752.59], "profit_aud": 752.59}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -188.75, -390.44, -597.62, -790.55, -790.55, -790.55, -563.2, -324.08, -101.01, -1.35, -1.35, -1.35, -1.35, -1.35, -1.35, -1.35, -1.35, 26.7, 41.52, 48.33, 71.92, 89.98, 89.98, 25.54, 35.01, 35.01, 35.01, 35.01, 35.01, 35.01, 35.01, 35.01, 205.67, 371.94, 553.11, 722.2, 722.2, 722.2, 722.2, 722.2, 722.2, 600.61, 586.71, 723.46], "profit_aud": 723.46}}} \ No newline at end of file diff --git a/results/daily/2026-02-06.json b/results/daily/2026-02-06.json new file mode 100644 index 0000000..03846f5 --- /dev/null +++ b/results/daily/2026-02-06.json @@ -0,0 +1 @@ +{"date": "2026-02-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [129.59, 132.98, 139.17, 134.01, 139.07, 155.83, 159.55, 154.42, 155.62, 157.72, 164.54, 180.72, 154.94, 96.43, 58.42, 50.24, 15.55, -7.42, -39.97, -21.01, -9.93, -0.67, -17.28, -15.84, -15.22, -14.81, -20.24, 1.24, 6.46, 5.2, -5.74, -99.35, -28.42, -5.52, -6.75, 33.54, 83.3, 139.46, 170.52, 149.5, 153.11, 181.98, 215.22, 211.56, 224.57, 221.53, 170.44, 176.56], "forecast_price": {"naive": [134.92, 136.26, 139.1, 142.78, 151.0, 161.35, 165.75, 154.34, 176.47, 204.66, 181.88, 191.3, 178.45, 132.89, 111.1, 134.17, 31.32, -10.81, -11.31, -9.6, -16.86, -22.43, -11.86, -12.26, -18.88, -14.45, -46.63, -57.29, -7.58, -5.89, -3.85, 0.59, 11.78, 8.27, 15.74, 48.82, 136.52, 133.01, 144.94, 135.28, 124.12, 120.05, 106.82, 98.28, 99.36, 97.28, 99.29, 109.4], "lightgbm": [99.35, 91.35, 84.14, 77.11, 83.16, 81.78, 82.94, 82.94, 78.18, 82.7, 88.69, 92.43, 90.7, 95.03, 83.45, 80.25, 42.61, 16.08, 13.22, 7.86, 8.17, -4.25, -4.23, -5.87, -4.36, -4.42, -5.75, -6.6, 5.22, -1.36, 9.0, 9.83, 20.85, 21.63, 30.57, 62.25, 107.12, 98.24, 105.05, 108.61, 97.92, 92.4, 85.82, 84.3, 84.06, 83.81, 83.81, 87.01], "lstm": [111.9, 105.0, 105.71, 103.49, 95.68, 93.41, 94.54, 89.58, 94.35, 104.1, 115.55, 119.44, 112.82, 86.66, 55.08, 31.77, 17.13, 3.19, -4.83, -12.66, -11.45, -20.86, -19.19, -19.61, -20.34, -23.65, -21.37, -21.31, -19.44, -16.27, -6.8, 4.89, 11.65, 22.04, 36.65, 62.93, 86.15, 103.33, 110.18, 112.76, 106.32, 100.03, 98.63, 87.19, 91.31, 87.78, 84.89, 89.46]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-161.99, -328.2, -405.44, -572.96, -746.8, -746.8, -547.36, -547.36, -547.36, -350.22, -144.55, 81.35, 81.35, 81.35, 81.35, 81.35, 81.35, 82.28, 132.24, 158.5, 148.87, 148.04, 169.64, 189.44, 208.46, 217.72, 243.02, 244.56, 252.64, 259.13, 262.72, 386.9, 422.42, 422.42, 430.86, 430.86, 430.86, 430.86, 644.01, 457.13, 435.7, 435.7, 704.72, 969.17, 1249.88, 1526.79, 1526.79, 1526.79], "profit_aud": 1526.79}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-161.99, -328.2, -502.17, -669.69, -746.87, -746.87, -746.87, -746.87, -746.87, -549.73, -344.06, -118.16, 75.51, 75.51, 2.48, 59.0, 59.0, 60.85, 110.81, 84.54, 96.95, 97.79, 76.19, 69.61, 88.64, 107.15, 132.45, 130.91, 130.1, 129.45, 130.17, 130.17, 98.2, 105.09, 105.09, 105.09, 209.22, 383.54, 596.69, 783.57, 783.57, 783.57, 783.57, 753.95, 753.95, 477.03, 477.03, 697.74], "profit_aud": 697.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 1.38, 1.38, 1.38, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -167.52, -167.52, -211.15, -211.15, -211.15, -405.68, -405.68, -405.68, -179.78, -179.78, -59.24, -59.24, -59.24, -59.24, -59.24, -59.24, -59.24, -59.24, -59.07, -59.07, -39.27, -29.76, -11.25, 14.05, 12.5, 19.77, 13.27, 13.27, 13.27, 13.27, 13.27, 13.27, 13.27, 117.39, 291.71, 504.86, 691.74, 691.74, 691.74, 691.74, 691.74, 691.74, 691.74, 691.74, 691.74], "profit_aud": 691.75}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 0.0, 2.5, 2.5, 0.75, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.0, 0.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -194.79, -261.01, -454.03, -648.56, -648.56, -442.89, -216.99, -23.32, -23.32, -23.32, -23.32, -23.32, -23.32, -18.33, -13.07, -13.07, -12.24, -12.24, -12.24, 1.08, 19.59, 44.89, 43.34, 42.54, 41.89, 42.6, 42.6, 42.6, 42.6, 42.6, 42.6, 42.6, 216.92, 430.08, 616.96, 808.34, 808.34, 808.34, 808.34, 808.34, 808.34, 808.34, 808.34], "profit_aud": 808.34}}} \ No newline at end of file diff --git a/results/daily/2026-02-07.json b/results/daily/2026-02-07.json new file mode 100644 index 0000000..0fb9e03 --- /dev/null +++ b/results/daily/2026-02-07.json @@ -0,0 +1 @@ +{"date": "2026-02-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [90.68, 126.71, 96.68, 122.04, 119.7, 108.24, 93.1, 85.71, 63.26, 59.77, 3983.8, 76.24, 64.11, 49.73, 44.93, 88.36, 163.33, 6.55, 9.6, 21.72, 16.7, 29.34, 36.84, 33.7, 51.95, 42.56, 42.99, 82.37, 77.7, 178.18, 44.58, 101.75, 112.73, 87.62, 80.01, 81.32, 79.73, 86.33, 96.92, 95.83, 124.73, 123.13, 92.4, 70.76, 62.51, 59.34, 49.6, 64.82], "forecast_price": {"naive": [129.59, 132.98, 139.17, 134.01, 139.07, 155.83, 159.55, 154.42, 155.62, 157.72, 164.54, 180.72, 154.94, 96.43, 58.42, 50.24, 15.55, -7.42, -39.97, -21.01, -9.93, -0.67, -17.28, -15.84, -15.22, -14.81, -20.24, 1.24, 6.46, 5.2, -5.74, -99.35, -28.42, -5.52, -6.75, 33.54, 83.3, 139.46, 170.52, 149.5, 153.11, 181.98, 215.22, 211.56, 224.57, 221.53, 170.44, 176.56], "lightgbm": [109.99, 111.88, 115.52, 97.22, 98.86, 97.0, 96.31, 94.38, 94.47, 98.68, 98.47, 100.72, 90.43, 78.2, 56.88, 51.47, 55.19, 14.13, -3.01, -9.54, -4.05, -3.09, -14.4, -11.34, -11.58, -11.34, -7.26, 6.8, -1.15, -7.92, -4.13, -16.44, -3.38, 17.71, 24.62, 48.51, 77.82, 108.47, 108.43, 108.39, 106.03, 96.23, 87.48, 87.08, 85.84, 85.59, 90.16, 91.02], "lstm": [168.2, 161.48, 144.34, 145.17, 133.51, 127.44, 124.34, 123.81, 114.4, 122.9, 126.47, 109.7, 76.97, 50.67, 22.41, 3.52, -8.69, -16.94, -24.29, -34.71, -39.55, -45.67, -41.43, -47.95, -42.91, -46.2, -44.4, -46.22, -43.29, -33.76, -21.45, -9.36, 2.84, 11.52, 29.55, 60.33, 86.02, 109.05, 118.38, 127.82, 121.01, 111.26, 105.69, 103.34, 97.91, 92.11, 91.81, 96.67]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38, 2.38, 3.5, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-113.35, 29.19, -91.66, 45.63, 45.63, 45.63, 45.63, 45.63, -33.44, -108.15, 4871.6, 4947.84, 4929.89, 4867.73, 4811.57, 4922.02, 5126.19, 5118.0, 5106.0, 5078.85, 5057.97, 5041.69, 5041.69, 5041.69, 5106.63, 5053.43, 5047.41, 5047.41, 5047.41, 5270.14, 5214.42, 5341.61, 5482.52, 5482.52, 5382.51, 5348.76, 5249.1, 5249.1, 5370.25, 5490.03, 5645.95, 5799.85, 5799.85, 5799.85, 5799.85, 5799.85, 5737.85, 5810.77], "profit_aud": 5810.77}, "naive": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-113.35, -271.74, -325.4, -477.94, -627.57, -627.57, -511.2, -511.2, -511.2, -436.49, 4543.26, 4638.56, 4638.56, 4638.56, 4638.56, 4638.56, 4638.56, 4637.74, 4625.74, 4598.59, 4614.79, 4651.46, 4605.41, 4563.29, 4498.35, 4471.75, 4418.02, 4520.98, 4618.1, 4840.83, 4812.97, 4685.78, 4544.86, 4544.86, 4444.85, 4444.85, 4444.85, 4444.85, 4565.99, 4446.21, 4428.75, 4428.75, 4544.25, 4632.7, 4710.84, 4785.01, 4785.01, 4785.01], "profit_aud": 4785.01}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 1.75, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2, -28.35, -32.53, 4.14, -41.9, -84.03, -148.96, -202.16, -229.03, -126.07, -28.95, -251.67, -268.39, -395.58, -409.67, -409.67, -409.67, -409.67, -409.67, -301.76, -180.61, -60.83, 95.08, 95.08, 95.08, 95.08, 95.08, 95.08, 95.08, 95.08], "profit_aud": 95.08}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 0.75, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 2.0, 3.12, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -20.42, -21.24, -22.44, -25.15, -27.24, -63.91, -63.91, -106.03, -106.03, -159.23, -196.85, -299.81, -309.52, -331.8, -337.37, -350.09, -350.09, -350.09, -350.09, -350.09, -350.09, -350.09, -228.94, -109.16, 46.76, 200.66, 200.66, 200.66, 200.66, 200.66, 200.66, 200.66], "profit_aud": 200.66}}} \ No newline at end of file diff --git a/results/daily/2026-02-08.json b/results/daily/2026-02-08.json new file mode 100644 index 0000000..342597e --- /dev/null +++ b/results/daily/2026-02-08.json @@ -0,0 +1 @@ +{"date": "2026-02-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [87.5, 74.74, 101.56, 116.36, 147.1, 140.91, 122.17, 137.88, 148.84, 141.1, 135.74, 133.98, 147.22, 66.87, 35.12, 2.76, -1.91, -4.15, -4.11, 3.01, 21.18, 22.47, 21.53, 32.16, 37.13, 33.1, 38.26, 30.86, 23.85, 30.36, 69.89, 233.99, 97.07, 83.85, 109.16, 119.76, 123.11, 131.88, 165.9, 148.4, 161.0, 135.33, 103.68, 86.17, 105.71, 107.86, 110.86, 139.45], "forecast_price": {"naive": [90.68, 126.71, 96.68, 122.04, 119.7, 108.24, 93.1, 85.71, 63.26, 59.77, 3983.8, 76.24, 64.11, 49.73, 44.93, 88.36, 163.33, 6.55, 9.6, 21.72, 16.7, 29.34, 36.84, 33.7, 51.95, 42.56, 42.99, 82.37, 77.7, 178.18, 44.58, 101.75, 112.73, 87.62, 80.01, 81.32, 79.73, 86.33, 96.92, 95.83, 124.73, 123.13, 92.4, 70.76, 62.51, 59.34, 49.6, 64.82], "lightgbm": [51.08, 53.76, 50.75, 43.38, 41.27, 37.1, 39.4, 33.0, 37.63, 30.07, 36.61, 34.06, 30.7, 23.7, 17.9, 25.31, 32.49, -13.92, -12.23, -23.07, -20.34, -18.03, -8.9, -5.42, -1.14, -5.17, -5.09, 3.78, 4.64, 33.8, 13.92, 27.59, 38.96, 46.91, 52.17, 70.64, 71.4, 68.86, 70.84, 71.18, 74.33, 72.44, 58.18, 60.38, 55.32, 53.93, 48.59, 57.97], "lstm": [70.67, 69.51, 63.73, 58.09, 62.72, 58.6, 50.17, 53.53, 52.54, 53.15, 58.88, 50.79, 39.69, 27.0, 8.64, 0.49, -4.59, -15.38, -18.69, -27.06, -20.83, -29.44, -24.39, -21.21, -19.6, -16.65, -12.98, -12.17, -7.76, -4.03, 6.21, 12.63, 18.71, 27.27, 33.23, 50.66, 76.14, 83.59, 97.71, 91.99, 93.81, 84.56, 75.38, 71.62, 68.5, 67.2, 69.23, 79.11]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 2.62, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-109.38, -202.81, -329.75, -475.2, -291.32, -203.25, -355.97, -355.97, -169.92, 6.46, 6.46, 6.46, 190.49, 190.49, 190.49, 187.03, 189.42, 194.6, 199.74, 198.07, 198.07, 198.07, 198.07, 198.07, 244.48, 244.48, 292.31, 283.67, 253.86, 215.9, 215.9, 508.39, 494.8, 389.98, 389.98, 389.98, 389.98, 389.98, 597.36, 782.86, 984.1, 1153.26, 1138.75, 1031.03, 1031.03, 1031.03, 1031.03, 1205.34], "profit_aud": 1205.34}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38, 2.38, 3.5, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-109.38, -25.3, -152.24, -21.34, -21.34, -21.34, -21.34, -21.34, -207.39, -383.76, -214.09, -80.11, -121.33, -204.92, -248.81, -245.36, -247.74, -242.55, -237.42, -241.18, -267.66, -280.13, -280.13, -280.13, -233.71, -275.09, -280.45, -280.45, -280.45, -242.49, -329.86, -37.37, 83.96, 83.96, -52.49, -102.2, -256.08, -256.08, -48.71, 136.79, 338.04, 507.2, 507.2, 507.2, 507.2, 507.2, 368.62, 525.5], "profit_aud": 525.5}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -172.34, -4.9, -181.27, -28.57, -28.57, -28.57, -37.93, -81.82, -81.82, -84.21, -79.02, -76.45, -80.21, -106.69, -134.78, -137.47, -141.49, -95.08, -136.45, -146.02, -146.02, -146.02, -108.06, -195.43, -228.19, -228.19, -228.19, -228.19, -228.19, -74.3, -74.3, -74.3, 111.2, 312.45, 481.61, 481.61, 481.61, 481.61, 481.61, 343.03, 499.91], "profit_aud": 499.91}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -152.72, -152.72, -173.55, -173.55, -3.88, -3.88, -3.88, -3.88, -3.88, -3.88, -3.64, -3.12, -2.61, -6.37, -19.61, -47.69, -74.61, -114.82, -119.46, -123.59, -128.38, -132.24, -135.22, -139.01, -139.01, -139.01, -139.01, -139.01, -139.01, -139.01, -139.01, -139.01, 68.36, 253.86, 455.11, 624.27, 624.27, 624.27, 609.47, 474.64, 474.64, 648.95], "profit_aud": 648.95}}} \ No newline at end of file diff --git a/results/daily/2026-02-09.json b/results/daily/2026-02-09.json new file mode 100644 index 0000000..c152bcc --- /dev/null +++ b/results/daily/2026-02-09.json @@ -0,0 +1 @@ +{"date": "2026-02-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [138.0, 153.4, 159.29, 139.54, 140.0, 138.0, 138.0, 138.0, 138.0, 129.41, 129.9, 144.0, 138.39, 123.71, 99.32, 88.29, 80.15, 25.82, 46.64, 3.28, -3.87, -6.67, 16.07, 25.97, 19.19, 24.42, 16.2, 23.88, 22.31, -33.1, -94.41, -32.65, 8.36, 40.8, 72.89, 113.17, 122.56, 124.02, 156.62, 130.05, 117.14, 103.56, 98.48, 95.11, 97.36, 126.8, 123.96, 121.33], "forecast_price": {"naive": [87.5, 74.74, 101.56, 116.36, 147.1, 140.91, 122.17, 137.88, 148.84, 141.1, 135.74, 133.98, 147.22, 66.87, 35.12, 2.76, -1.91, -4.15, -4.11, 3.01, 21.18, 22.47, 21.53, 32.16, 37.13, 33.1, 38.26, 30.86, 23.85, 30.36, 69.89, 233.99, 97.07, 83.85, 109.16, 119.76, 123.11, 131.88, 165.9, 148.4, 161.0, 135.33, 103.68, 86.17, 105.71, 107.86, 110.86, 139.45], "lightgbm": [84.7, 82.23, 88.11, 92.06, 94.36, 95.08, 91.3, 95.12, 92.13, 94.46, 84.53, 115.95, 119.8, 95.27, 69.08, 58.44, 58.15, 46.39, 38.64, 32.42, 35.89, 33.73, 28.83, 30.78, 33.29, 32.07, 29.68, 31.47, 30.49, 23.91, 45.25, 76.41, 60.49, 64.71, 93.85, 110.96, 113.99, 117.84, 131.79, 127.37, 125.5, 117.83, 90.89, 81.91, 86.95, 87.48, 86.98, 109.27], "lstm": [125.35, 117.64, 107.07, 103.32, 97.96, 101.71, 103.97, 103.98, 109.6, 111.4, 122.94, 120.61, 124.9, 118.55, 84.4, 70.55, 55.83, 52.22, 42.24, 28.19, 25.77, 22.71, 27.17, 25.27, 33.76, 36.75, 36.42, 32.43, 40.77, 43.24, 44.52, 61.53, 59.39, 79.09, 79.62, 108.75, 137.17, 155.17, 142.47, 127.4, 128.15, 124.1, 108.77, 106.62, 96.99, 97.71, 108.34, 118.23]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.12, 1.88, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-172.5, -172.5, 6.7, 6.7, 6.7, 6.7, 6.7, 6.7, 6.7, -155.06, -155.06, 6.94, 6.94, 6.94, 6.94, 6.94, 6.94, -25.34, 27.12, 23.03, 27.86, 36.2, 16.11, 48.57, 50.97, 81.5, 61.24, 91.09, 118.98, 160.35, 278.37, 319.17, 308.72, 308.72, 308.72, 308.72, 461.93, 616.95, 812.73, 975.29, 975.29, 932.32, 809.21, 690.33, 568.62, 727.13, 882.07, 1033.73], "profit_aud": 1033.73}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 2.62, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-172.5, -364.24, -563.36, -737.79, -562.79, -476.54, -649.04, -649.04, -476.54, -314.78, -314.78, -314.78, -141.79, -141.79, -141.79, -252.15, -352.34, -384.61, -442.91, -444.73, -444.73, -444.73, -444.73, -444.73, -420.74, -420.74, -400.48, -407.17, -435.06, -393.68, -393.68, -434.49, -435.66, -486.65, -486.65, -486.65, -486.65, -486.65, -290.88, -128.32, 18.11, 147.55, 133.76, 14.88, 14.88, 14.88, 14.88, 166.54], "profit_aud": 166.54}, "lightgbm": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-172.5, -364.24, -364.24, -364.24, -364.24, -364.24, -364.24, -364.24, -364.24, -364.24, -526.62, -346.62, -173.64, -65.39, -65.39, -65.39, -65.39, -65.39, -65.39, -65.39, -65.39, -65.39, -85.48, -99.89, -99.89, -99.89, -120.14, -120.14, -148.03, -106.66, -106.66, -147.46, -157.91, -163.62, -163.62, -163.62, -163.62, -8.6, 187.18, 349.74, 496.16, 496.16, 496.16, 377.28, 363.65, 363.65, 363.65, 515.31], "profit_aud": 515.31}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -174.43, -349.43, -521.93, -694.43, -771.02, -771.02, -771.02, -608.65, -428.65, -255.66, -101.03, -101.03, -101.03, -101.03, -101.03, -101.03, -102.84, -98.01, -89.68, -109.77, -142.23, -142.23, -114.75, -114.75, -144.59, -144.59, -144.59, -144.59, -144.59, -144.59, -144.59, -144.59, -144.59, 8.61, 163.64, 359.41, 359.41, 505.83, 505.83, 505.83, 505.83, 384.13, 366.38, 366.38, 518.04], "profit_aud": 518.04}}} \ No newline at end of file diff --git a/results/daily/2026-02-10.json b/results/daily/2026-02-10.json new file mode 100644 index 0000000..dc6a753 --- /dev/null +++ b/results/daily/2026-02-10.json @@ -0,0 +1 @@ +{"date": "2026-02-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [136.71, 149.52, 137.92, 135.82, 128.42, 153.14, 155.61, 160.78, 151.5, 153.78, 155.74, 166.85, 172.18, 134.33, 89.61, 67.3, 30.16, 10.74, 4.17, 24.45, -3.53, -6.54, 2.05, 41.25, 30.31, 42.11, -5.92, -6.38, -7.25, -3.55, 1.58, 45.79, 122.85, 126.74, 146.16, 169.02, 221.03, 338.82, 302.34, 663.02, 418.88, 299.8, 288.14, 259.48, 182.81, 220.79, 199.27, 186.74], "forecast_price": {"naive": [138.0, 153.4, 159.29, 139.54, 140.0, 138.0, 138.0, 138.0, 138.0, 129.41, 129.9, 144.0, 138.39, 123.71, 99.32, 88.29, 80.15, 25.82, 46.64, 3.28, -3.87, -6.67, 16.07, 25.97, 19.19, 24.42, 16.2, 23.88, 22.31, -33.1, -94.41, -32.65, 8.36, 40.8, 72.89, 113.17, 122.56, 124.02, 156.62, 130.05, 117.14, 103.56, 98.48, 95.11, 97.36, 126.8, 123.96, 121.33], "lightgbm": [105.08, 102.94, 99.04, 92.16, 91.18, 90.8, 90.8, 90.8, 90.8, 95.43, 104.04, 108.08, 111.02, 101.98, 83.1, 61.17, 52.49, 11.93, 15.94, 2.85, 6.16, 0.52, 3.18, 3.57, 5.67, 4.84, 4.31, 5.3, 10.12, -3.76, 2.87, 7.76, 32.4, 43.79, 64.4, 98.57, 110.03, 111.53, 119.32, 110.15, 103.3, 91.19, 86.16, 85.56, 85.47, 95.85, 95.85, 94.7], "lstm": [128.68, 119.78, 113.75, 105.49, 104.21, 98.51, 97.56, 97.07, 105.15, 109.16, 120.73, 125.05, 119.95, 103.83, 67.77, 48.0, 31.1, 21.94, 13.08, -0.88, -0.38, -7.27, -6.7, -5.32, -2.49, -3.31, -3.78, -1.9, 0.97, 4.24, 9.95, 19.99, 28.76, 39.42, 49.59, 74.12, 110.23, 125.97, 127.3, 121.86, 121.47, 116.46, 118.77, 103.64, 95.25, 90.7, 99.78, 113.36]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 3.25, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-170.89, -170.89, -343.29, -513.06, -673.58, -673.58, -673.58, -472.61, -472.61, -472.61, -355.8, -147.24, 67.98, 67.98, 67.98, 67.98, 67.98, 62.02, 56.81, 87.37, 91.77, 99.95, 97.39, 148.95, 186.83, 239.47, 246.86, 254.83, 263.89, 268.33, 267.45, 267.45, 267.45, 267.45, 267.45, 267.45, 267.45, 690.97, 1068.9, 1897.67, 2421.27, 2421.27, 2421.27, 2421.27, 2192.76, 2441.15, 2441.15, 2441.15], "profit_aud": 2441.15}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.12, 1.88, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-170.89, -170.89, -15.72, -15.72, -15.72, -15.72, -15.72, -15.72, -15.72, -207.94, -207.94, -20.24, -20.24, -20.24, -20.24, -20.24, -20.24, -33.67, -28.97, -59.53, -55.13, -46.95, -49.51, 2.05, 5.83, 58.47, 65.87, 57.9, 48.84, 53.28, 51.31, -5.93, -159.49, -159.49, -159.49, -159.49, 116.8, 540.31, 918.24, 1747.02, 1747.02, 1622.6, 1262.42, 938.07, 709.56, 985.55, 1234.63, 1468.07], "profit_aud": 1468.07}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.67, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.12, 2.88, 4.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -71.27, -262.7, -457.21, -658.18, -847.56, -847.56, -652.89, -444.33, -229.1, -61.2, -61.2, -61.2, -61.2, -74.63, -69.93, -100.49, -104.46, -96.29, -98.85, -150.41, -112.53, -147.69, -140.29, -140.29, -149.36, -144.92, -146.89, -146.89, -146.89, -146.89, -146.89, -146.89, 129.4, 552.92, 930.85, 1759.62, 1759.62, 1759.62, 1678.94, 1354.59, 1126.08, 1402.07, 1651.15, 1651.15], "profit_aud": 1651.15}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -53.29, -244.72, -439.23, -640.21, -640.21, -640.21, -445.53, -236.97, -21.75, -21.75, -21.75, -21.75, -21.75, -21.75, -21.75, -52.31, -56.22, -48.04, -50.61, -102.17, -85.35, -137.99, -130.59, -129.79, -129.79, -129.79, -129.79, -129.79, -129.79, -129.79, -129.79, -129.79, -129.79, 293.73, 671.66, 1500.43, 2024.02, 2024.02, 2024.02, 2024.02, 1998.43, 1722.44, 1722.44, 1955.87], "profit_aud": 1955.87}}} \ No newline at end of file diff --git a/results/daily/2026-02-11.json b/results/daily/2026-02-11.json new file mode 100644 index 0000000..7aea6ab --- /dev/null +++ b/results/daily/2026-02-11.json @@ -0,0 +1 @@ +{"date": "2026-02-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [157.48, 140.66, 135.81, 142.65, 133.03, 115.43, 123.42, 117.87, 128.99, 127.91, 93.93, 82.54, 89.4, 79.94, 43.85, 35.49, 59.92, 7.97, -5.56, -4.98, -7.82, -20.59, -12.29, -9.64, -9.85, 7.59, 66.69, -4.67, -4.92, -16.43, -11.35, -9.83, 45.34, 57.56, 93.66, 109.81, 65.0, 28.18, 77.02, 59.16, 73.1, 71.46, 90.29, 77.26, 68.9, 51.74, 59.26, 70.06], "forecast_price": {"naive": [136.71, 149.52, 137.92, 135.82, 128.42, 153.14, 155.61, 160.78, 151.5, 153.78, 155.74, 166.85, 172.18, 134.33, 89.61, 67.3, 30.16, 10.74, 4.17, 24.45, -3.53, -6.54, 2.05, 41.25, 30.31, 42.11, -5.92, -6.38, -7.25, -3.55, 1.58, 45.79, 122.85, 126.74, 146.16, 169.02, 221.03, 338.82, 302.34, 663.02, 418.88, 299.8, 288.14, 259.48, 182.81, 220.79, 199.27, 186.74], "lightgbm": [146.81, 146.87, 139.31, 127.87, 117.72, 124.58, 125.29, 124.7, 123.09, 126.42, 134.91, 142.17, 144.58, 143.87, 97.37, 93.22, 58.79, 32.17, 31.1, 25.43, 38.94, 11.53, 13.67, 17.21, 21.5, 21.75, 15.05, 13.05, 33.44, 44.15, 31.73, 45.41, 81.56, 106.35, 147.46, 158.38, 171.36, 204.49, 184.1, 199.49, 194.85, 173.16, 169.96, 155.49, 147.28, 150.6, 154.62, 152.75], "lstm": [204.71, 204.85, 197.3, 178.44, 155.07, 157.36, 164.57, 151.9, 162.4, 165.91, 186.29, 171.83, 167.79, 139.16, 100.28, 71.56, 53.43, 42.19, 32.11, 16.02, 13.33, 6.77, 11.04, 6.41, 14.52, 9.63, 10.93, 8.52, 18.43, 21.15, 26.29, 39.5, 49.1, 64.45, 77.23, 119.32, 160.64, 181.02, 175.56, 166.81, 172.73, 156.47, 143.87, 124.12, 131.79, 107.76, 124.99, 140.47]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.75, 3.88, 2.62, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -144.29, -144.29, -144.29, 0.82, 0.82, 0.82, 0.82, 0.82, 0.82, -5.31, -49.68, 25.21, 25.21, 32.17, 26.65, 31.53, 57.26, 72.62, 84.67, 96.98, 106.47, 189.83, 186.59, 186.59, 207.13, 221.32, 233.6, 233.6, 233.6, 350.67, 487.93, 469.73, 434.5, 530.77, 456.82, 548.19, 548.19, 661.06, 757.64, 757.64, 692.97, 684.67, 772.26], "profit_aud": 772.26}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 3.25, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-196.85, -196.85, -366.6, -544.91, -711.2, -711.2, -711.2, -563.86, -563.86, -563.86, -493.42, -390.25, -278.5, -278.5, -278.5, -278.5, -278.5, -282.92, -275.97, -282.19, -272.42, -246.68, -231.33, -243.37, -255.68, -246.19, -329.55, -323.71, -317.57, -297.02, -290.72, -290.72, -290.72, -290.72, -290.72, -290.72, -290.72, -255.49, -159.23, -85.27, 6.1, 6.1, 6.1, 6.1, -80.03, -21.83, -21.83, -21.83], "profit_aud": -21.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 3.38, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -166.29, -310.57, -310.57, -359.49, -520.72, -520.72, -520.72, -417.55, -305.8, -205.88, -205.88, -205.88, -205.88, -205.88, -205.1, -198.88, -208.64, -182.91, -167.55, -155.5, -155.5, -150.76, -234.12, -228.28, -228.28, -246.77, -232.58, -232.58, -232.58, -232.58, -232.58, -232.58, -232.58, -197.35, -101.08, -27.13, 64.25, 64.25, 64.25, 64.25, 64.25, 64.25, 64.25, 64.25], "profit_aud": 64.25}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -18.62, -18.62, -18.62, -165.96, -165.96, -165.96, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -48.55, -22.82, -14.28, -2.23, -14.54, -24.03, -107.39, -101.55, -101.55, -101.55, -101.55, -101.55, -101.55, -101.55, -101.55, -101.55, -101.55, -66.32, 29.95, 103.9, 195.27, 195.27, 195.27, 184.46, 184.46, 119.79, 119.79, 207.37], "profit_aud": 207.37}}} \ No newline at end of file diff --git a/results/daily/2026-02-12.json b/results/daily/2026-02-12.json new file mode 100644 index 0000000..b71be0d --- /dev/null +++ b/results/daily/2026-02-12.json @@ -0,0 +1 @@ +{"date": "2026-02-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [62.19, 61.43, 50.53, 36.26, 9.62, 36.28, 21.4, 27.86, 42.84, 19.53, 15.5, 31.27, 31.12, 10.36, -6.48, -8.76, -10.19, -12.54, -14.14, -15.95, -91.54, -87.76, -104.18, -99.52, -114.18, -83.38, -97.7, -181.26, -145.34, -194.85, -257.02, -299.25, -258.93, -109.3, -21.99, -74.39, 6.71, 42.19, 54.18, 54.94, 55.42, 40.49, 26.52, 28.93, 11.37, 0.86, 1.12, 13.27], "forecast_price": {"naive": [157.48, 140.66, 135.81, 142.65, 133.03, 115.43, 123.42, 117.87, 128.99, 127.91, 93.93, 82.54, 89.4, 79.94, 43.85, 35.49, 59.92, 7.97, -5.56, -4.98, -7.82, -20.59, -12.29, -9.64, -9.85, 7.59, 66.69, -4.67, -4.92, -16.43, -11.35, -9.83, 45.34, 57.56, 93.66, 109.81, 65.0, 28.18, 77.02, 59.16, 73.1, 71.46, 90.29, 77.26, 68.9, 51.74, 59.26, 70.06], "lightgbm": [69.23, 67.95, 68.86, 63.2, 67.64, 69.31, 70.17, 70.69, 67.09, 64.16, 86.49, 90.08, 94.29, 90.56, 65.5, 59.18, 46.24, 16.38, 9.27, 11.51, 3.55, -3.42, -6.34, -5.0, -5.15, 4.56, 12.86, 1.7, 2.67, -2.42, 2.35, 10.26, 32.36, 38.01, 59.4, 80.38, 67.09, 58.16, 75.69, 66.41, 68.72, 65.8, 76.91, 68.66, 65.75, 60.77, 64.41, 65.75], "lstm": [68.96, 62.15, 60.02, 54.64, 53.38, 52.56, 50.42, 51.66, 58.48, 57.35, 68.59, 71.58, 73.8, 60.54, 39.13, 21.49, 11.3, 2.43, -4.33, -16.3, -15.72, -16.36, -18.09, -16.03, -15.25, -12.25, -12.19, -9.8, -7.25, -1.95, 3.86, 14.2, 20.69, 29.03, 37.08, 64.02, 77.95, 94.27, 103.04, 98.12, 91.98, 91.84, 80.28, 80.53, 76.12, 72.56, 81.2, 89.06]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.83, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 1.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.5, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.38, 0.25, 1.38, 0.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -12.02, 28.79, 2.04, -9.52, 44.03, 19.61, 0.23, 39.32, 78.22, 78.22, 79.03, 80.13, 81.4, 82.97, 84.73, 86.73, 109.61, 109.61, 161.7, 161.7, 304.43, 200.2, 200.2, 426.77, 346.1, 589.67, 910.94, 1285.0, 1608.66, 1622.32, 1597.91, 1690.9, 1690.9, 1743.64, 1811.36, 1880.04, 1949.32, 1949.32, 1949.32, 1949.32, 1949.32, 1948.24, 1948.08, 1964.67], "profit_aud": 1964.67}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.75, 3.88, 2.62, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -45.34, -45.34, -45.34, 2.85, 2.85, 2.85, 2.85, 2.85, 2.85, 3.76, 14.71, 1.98, 1.98, 19.65, 1.95, 59.16, 168.85, 299.08, 423.48, 566.2, 461.97, 339.84, 213.87, 213.87, 457.44, 778.71, 1152.77, 1152.77, 1152.77, 1125.28, 1032.3, 1030.42, 977.68, 1045.4, 976.72, 1046.0, 1046.0, 1079.16, 1115.32, 1115.32, 1114.25, 1114.09, 1130.68], "profit_aud": 1130.68}, "lightgbm": {"charge_mw": [0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 0.5, 1.62, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 3.62, 3.62, 2.38, 2.38, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -34.09, -34.09, -79.41, -91.43, -91.43, -91.43, -91.43, -144.98, -169.4, -150.02, -110.93, -72.03, -59.08, -59.08, -59.08, -59.08, -59.08, -41.4, -59.35, -59.35, 50.35, 180.57, 304.97, 447.7, 343.47, 221.34, 447.9, 393.4, 636.96, 958.24, 958.24, 958.24, 958.24, 958.24, 865.25, 865.25, 812.51, 880.23, 880.23, 949.51, 949.51, 982.67, 1015.22, 1015.22, 1015.22, 1015.22, 1015.22], "profit_aud": 1015.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -12.02, -57.36, -84.11, -118.93, -118.93, -118.93, -99.55, -60.47, -21.56, -13.8, -13.8, -13.8, -13.8, -13.8, -12.03, 7.91, 65.13, 174.82, 305.05, 429.45, 443.72, 454.14, 466.36, 489.01, 507.18, 531.54, 531.54, 531.54, 531.54, 531.54, 531.54, 531.54, 531.54, 584.27, 651.99, 720.67, 789.95, 789.95, 789.95, 789.95, 788.36, 787.28, 787.28, 803.87], "profit_aud": 803.87}}} \ No newline at end of file diff --git a/results/daily/2026-02-13.json b/results/daily/2026-02-13.json new file mode 100644 index 0000000..db4a315 --- /dev/null +++ b/results/daily/2026-02-13.json @@ -0,0 +1 @@ +{"date": "2026-02-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [38.29, 36.71, 40.32, 43.81, 42.95, 43.97, 38.52, 37.2, 39.5, 38.41, 49.74, 56.99, 45.54, 7.05, -4.8, -14.49, -6.47, -6.64, -6.34, -7.36, -7.72, -8.39, -118.84, -109.03, -112.98, -123.17, -191.57, -137.42, -41.97, -41.97, -166.78, -172.19, -188.36, -69.31, -9.83, -31.06, -6.06, 25.92, 28.27, 30.74, 24.48, 26.6, 26.56, 23.89, 10.05, 21.0, 24.95, 28.11], "forecast_price": {"naive": [62.19, 61.43, 50.53, 36.26, 9.62, 36.28, 21.4, 27.86, 42.84, 19.53, 15.5, 31.27, 31.12, 10.36, -6.48, -8.76, -10.19, -12.54, -14.14, -15.95, -91.54, -87.76, -104.18, -99.52, -114.18, -83.38, -97.7, -181.26, -145.34, -194.85, -257.02, -299.25, -258.93, -109.3, -21.99, -74.39, 6.71, 42.19, 54.18, 54.94, 55.42, 40.49, 26.52, 28.93, 11.37, 0.86, 1.12, 13.27], "lightgbm": [39.68, 38.74, 35.13, 30.58, 30.01, 34.49, 33.8, 35.13, 34.57, 35.17, 43.05, 45.61, 45.95, 39.06, 19.03, 0.67, -12.56, -24.75, -32.84, -37.77, -61.89, -65.36, -67.77, -71.41, -70.34, -62.82, -57.48, -69.25, -67.25, -63.57, -63.7, -54.04, -40.82, -29.32, 1.75, 3.23, 56.88, 66.4, 80.4, 74.01, 76.5, 72.4, 70.09, 66.61, 63.84, 62.21, 62.72, 65.91], "lstm": [18.89, 20.78, 16.44, 11.01, 9.62, 11.81, 12.17, 13.64, 17.58, 24.98, 33.43, 38.14, 41.53, 23.07, 4.07, -10.92, -30.39, -36.73, -51.36, -64.68, -57.84, -58.38, -70.04, -69.54, -69.41, -75.78, -75.9, -65.37, -63.73, -60.62, -52.45, -44.13, -28.67, -23.55, -9.47, 9.35, 34.81, 54.06, 73.49, 74.37, 76.73, 74.16, 69.94, 60.5, 57.22, 64.0, 64.29, 69.98]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.62, 1.62, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.0, 0.0, 0.0, 0.0, 1.0, 0.88, 0.75, 1.88, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-47.86, -93.76, -93.76, -66.38, -66.38, -11.41, -59.56, -106.07, -106.07, -154.08, -91.91, -20.67, 36.26, 36.26, 36.86, 54.97, 54.97, 54.97, 49.68, 50.6, 51.56, 52.61, 186.31, 186.31, 186.31, 340.26, 579.72, 751.5, 699.04, 646.57, 855.05, 1070.29, 1305.74, 1314.4, 1303.49, 1342.32, 1343.08, 1343.08, 1378.42, 1416.85, 1416.85, 1450.11, 1483.3, 1483.3, 1470.74, 1444.5, 1469.44, 1504.58], "profit_aud": 1504.58}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.83, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 1.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.5, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.38, 0.25, 1.38, 0.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -53.69, -4.22, -52.37, -67.81, -18.43, -66.45, -128.62, -57.38, -0.46, -0.46, 0.14, 1.95, 2.76, 3.59, 4.38, 5.3, 7.23, 7.23, 66.65, 66.65, 207.88, 53.92, 53.92, 225.69, 202.4, 254.86, 463.34, 678.58, 914.03, 922.69, 911.78, 950.61, 950.61, 983.01, 1018.35, 1056.78, 1087.38, 1087.38, 1087.38, 1087.38, 1087.38, 1061.13, 1057.64, 1092.78], "profit_aud": 1092.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.75, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -54.76, -108.45, -163.41, -211.56, -211.56, -233.48, -233.48, -171.31, -100.07, -43.15, -34.33, -34.33, -34.33, -33.53, -32.7, -31.9, -30.98, -30.02, -22.68, 125.87, 262.15, 403.38, 403.38, 163.92, 335.69, 388.15, 388.15, 429.85, 451.37, 474.92, 483.58, 483.58, 483.58, 483.58, 483.58, 518.92, 557.35, 587.95, 621.2, 621.2, 621.2, 621.2, 621.2, 621.2, 621.2], "profit_aud": 621.2}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -54.76, -108.45, -163.41, -211.56, -232.21, -232.21, -184.2, -122.02, -50.79, 6.14, 6.14, 6.14, 7.95, 8.76, 9.59, 10.38, 19.59, 12.1, 12.1, 160.65, 296.93, 367.54, 521.5, 760.96, 778.14, 783.38, 788.63, 809.48, 831.0, 854.55, 863.21, 864.44, 864.44, 864.44, 864.44, 899.78, 938.21, 968.8, 1002.06, 1002.06, 998.72, 986.15, 986.15, 986.15, 1021.29], "profit_aud": 1021.29}}} \ No newline at end of file diff --git a/results/daily/2026-02-14.json b/results/daily/2026-02-14.json new file mode 100644 index 0000000..8ace874 --- /dev/null +++ b/results/daily/2026-02-14.json @@ -0,0 +1 @@ +{"date": "2026-02-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [23.48, 17.56, 19.73, 18.85, 10.35, 10.82, 12.14, 15.15, 23.76, 27.71, 28.26, 28.0, 26.8, 12.47, -6.12, -9.02, -11.38, -64.3, -132.4, -136.63, -109.38, -23.6, -20.03, -127.19, -95.1, -99.23, -99.78, -116.99, -25.19, -17.65, -11.8, -9.73, -9.05, -5.91, -4.03, 4.96, 26.67, 32.96, 40.96, 36.57, 39.24, 39.74, 38.02, 30.89, 37.49, 32.03, 38.12, 34.86], "forecast_price": {"naive": [38.29, 36.71, 40.32, 43.81, 42.95, 43.97, 38.52, 37.2, 39.5, 38.41, 49.74, 56.99, 45.54, 7.05, -4.8, -14.49, -6.47, -6.64, -6.34, -7.36, -7.72, -8.39, -118.84, -109.03, -112.98, -123.17, -191.57, -137.42, -41.97, -41.97, -166.78, -172.19, -188.36, -69.31, -9.83, -31.06, -6.06, 25.92, 28.27, 30.74, 24.48, 26.6, 26.56, 23.89, 10.05, 21.0, 24.95, 28.11], "lightgbm": [39.23, 39.22, 34.4, 32.94, 32.91, 31.78, 31.37, 32.27, 33.32, 32.45, 39.6, 41.05, 33.39, 24.62, 16.86, 7.38, 11.05, -4.39, -4.44, -8.98, -8.63, -10.88, -19.98, -22.36, -18.2, -20.7, -20.3, -17.61, -14.76, -17.09, -8.28, -3.55, 2.23, 9.62, 35.57, 34.26, 61.29, 64.34, 64.81, 64.05, 62.96, 62.91, 60.46, 55.95, 53.63, 53.12, 52.14, 56.91], "lstm": [23.21, 26.41, 21.09, 14.77, 13.3, 14.91, 15.23, 18.62, 18.06, 23.46, 31.26, 28.96, 20.67, 4.22, -14.63, -31.89, -49.23, -55.25, -68.85, -79.01, -74.81, -72.12, -86.39, -87.65, -88.85, -89.81, -87.97, -78.13, -78.03, -71.77, -65.44, -55.0, -32.45, -27.97, -12.77, 7.29, 32.34, 49.43, 68.0, 67.92, 68.66, 67.16, 62.54, 57.1, 51.21, 53.29, 60.6, 63.9]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -21.95, -9.62, -9.62, -22.56, -36.1, -51.27, -70.2, -70.2, -35.57, -0.24, 34.76, 68.26, 68.26, 69.03, 70.15, 71.58, 79.61, 245.12, 415.9, 552.62, 523.12, 498.08, 657.07, 657.07, 756.3, 881.03, 1027.26, 1030.41, 1032.62, 1034.09, 1035.31, 1036.44, 1037.18, 1037.68, 1037.68, 1037.68, 1037.68, 1088.88, 1088.88, 1137.93, 1187.61, 1235.14, 1196.53, 1234.02, 1193.98, 1241.62, 1241.62], "profit_aud": 1241.62}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 1.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 1.62, 1.62, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 0.88, 0.0, 0.0, 0.0, 0.0, 1.0, 0.88, 0.75, 1.88, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-29.34, -51.3, -51.3, -39.52, -39.52, -25.98, -41.16, -60.09, -60.09, -94.73, -59.4, -24.4, 9.1, 9.1, 9.86, 21.14, 21.14, 21.14, -89.42, -72.34, -58.67, -55.72, -33.19, -33.19, -33.19, 90.85, 215.58, 361.82, 330.33, 308.27, 323.03, 335.19, 346.49, 347.23, 342.76, 336.56, 333.23, 333.23, 384.43, 430.14, 430.14, 479.82, 527.35, 527.35, 480.48, 440.44, 478.56, 522.13], "profit_aud": 522.13}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -13.53, -28.71, -32.95, -32.95, -32.95, 2.38, 37.38, 37.38, 37.38, 37.38, 48.66, 35.86, 43.89, 60.44, 94.6, 94.6, 97.55, 122.59, 281.58, 341.02, 465.06, 589.79, 604.41, 576.45, 598.51, 599.99, 601.21, 601.21, 601.21, 601.21, 601.21, 601.21, 642.4, 693.6, 739.31, 788.36, 788.36, 788.36, 788.36, 788.36, 788.36, 788.36, 788.36], "profit_aud": 788.36}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-29.34, -9.58, -9.58, -33.15, -46.09, -59.62, -74.8, -74.8, -87.98, -53.35, -18.02, 16.99, 50.48, 50.48, 51.25, 52.37, 53.8, 61.83, 78.38, 129.62, 129.62, 129.62, 142.14, 301.13, 420.01, 544.05, 668.78, 683.4, 686.55, 688.75, 690.23, 691.45, 692.58, 693.32, 693.82, 693.82, 693.82, 693.82, 745.02, 790.73, 839.78, 889.45, 889.45, 889.45, 842.59, 802.55, 840.66, 884.23], "profit_aud": 884.23}}} \ No newline at end of file diff --git a/results/daily/2026-02-15.json b/results/daily/2026-02-15.json new file mode 100644 index 0000000..8976332 --- /dev/null +++ b/results/daily/2026-02-15.json @@ -0,0 +1 @@ +{"date": "2026-02-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [35.76, 36.74, 38.51, 37.4, 36.89, 36.99, 34.54, 34.76, 30.75, 30.23, 32.87, 36.48, 29.3, 12.95, 0.13, -3.01, -6.41, -13.66, -12.95, -8.82, -8.32, -8.09, -9.75, -9.75, -3.94, -3.35, -3.02, 3.6, -0.32, -4.12, -2.45, -0.11, 4.54, 5.6, 33.79, 89.23, 154.29, 150.17, 133.67, 105.38, 128.07, 91.86, 63.13, 58.19, 56.56, 35.41, 33.19, 29.95], "forecast_price": {"naive": [23.48, 17.56, 19.73, 18.85, 10.35, 10.82, 12.14, 15.15, 23.76, 27.71, 28.26, 28.0, 26.8, 12.47, -6.12, -9.02, -11.38, -64.3, -132.4, -136.63, -109.38, -23.6, -20.03, -127.19, -95.1, -99.23, -99.78, -116.99, -25.19, -17.65, -11.8, -9.73, -9.05, -5.91, -4.03, 4.96, 26.67, 32.96, 40.96, 36.57, 39.24, 39.74, 38.02, 30.89, 37.49, 32.03, 38.12, 34.86], "lightgbm": [25.83, 25.63, 23.09, 21.65, 21.05, 20.24, 21.56, 22.04, 22.29, 21.9, 22.52, 21.64, 23.14, 20.46, 3.82, -6.13, -7.52, -25.75, -23.68, -21.94, -16.23, -6.08, -0.47, -16.0, -12.17, -13.64, -9.94, -11.36, -1.32, 5.56, 10.74, 15.33, 23.63, 36.66, 48.57, 58.38, 70.35, 70.32, 69.07, 69.22, 64.79, 63.27, 64.21, 57.96, 61.42, 60.64, 61.42, 61.48], "lstm": [47.92, 41.54, 42.78, 37.12, 34.65, 33.34, 33.56, 33.3, 32.26, 32.89, 36.22, 33.82, 31.3, 18.41, 0.33, -13.07, -21.2, -22.49, -27.3, -36.37, -33.85, -28.39, -35.42, -33.05, -33.83, -29.57, -25.86, -22.64, -15.84, -15.03, -9.22, -1.74, 8.44, 24.7, 35.36, 52.64, 77.69, 90.38, 90.46, 79.93, 75.83, 66.27, 62.58, 55.53, 55.24, 59.83, 63.51, 65.67]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.75, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.31, -42.1, -42.1, 3.51, 3.51, 3.51, 3.51, 3.88, 4.69, 21.77, 37.96, 45.67, 45.67, 45.67, 57.86, 70.05, 70.54, 70.96, 71.34, 75.85, 75.54, 80.68, 83.74, 83.76, 83.76, 83.76, 83.76, 83.76, 276.62, 464.33, 631.42, 631.42, 791.51, 791.51, 791.51, 791.51, 791.51, 791.51, 791.51, 791.51], "profit_aud": 791.51}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -45.93, -21.86, -21.86, -67.97, -114.22, -157.39, -200.84, -200.84, -163.05, -121.96, -76.36, -39.74, -39.74, -39.75, -39.38, -38.57, -36.87, -20.68, -9.65, 0.75, -9.36, -21.55, -9.36, -9.36, -6.01, -2.24, -6.75, -6.71, -6.19, -5.89, -5.87, -6.44, -7.14, -11.37, -11.37, -11.37, -11.37, 155.73, 155.73, 315.82, 430.65, 509.56, 436.83, 493.38, 449.12, 490.6, 490.6], "profit_aud": 490.6}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.75, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -46.24, -46.24, -46.24, -46.24, -46.24, -46.24, -46.24, -13.28, -13.28, -13.28, -12.91, -12.11, 4.97, 21.16, 32.19, 42.59, 32.48, 20.29, 32.48, 35.93, 40.12, 36.77, 32.26, 32.3, 32.3, 32.3, 32.3, 32.3, 32.3, 32.3, 32.3, 225.16, 412.88, 579.97, 711.7, 711.7, 711.7, 711.7, 711.7, 711.7, 711.7, 711.7, 711.7], "profit_aud": 711.7}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -38.44, -38.44, -1.46, -1.46, -1.46, -1.46, -1.46, -1.09, -0.28, 1.42, 3.04, 14.07, 24.47, 19.98, 32.17, 44.36, 49.29, 49.71, 50.08, 49.63, 49.67, 50.19, 50.49, 50.51, 50.51, 50.51, 50.51, 50.51, 243.37, 431.08, 598.17, 729.9, 729.9, 729.9, 729.9, 657.17, 586.47, 586.47, 619.66, 657.1], "profit_aud": 657.1}}} \ No newline at end of file diff --git a/results/daily/2026-02-16.json b/results/daily/2026-02-16.json new file mode 100644 index 0000000..e6c873e --- /dev/null +++ b/results/daily/2026-02-16.json @@ -0,0 +1 @@ +{"date": "2026-02-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [33.22, 30.97, 23.41, 20.85, 22.36, 26.65, 26.97, 27.61, 36.3, 40.24, 50.07, 51.32, 58.52, 38.01, 1.74, 31.35, -4.63, -4.44, -7.28, -7.79, -7.77, -7.57, -7.8, -7.88, -7.87, -9.6, -7.82, -7.32, -7.5, 120.65, 207.64, 19.5, 64.96, 145.41, 75.1, 139.48, 207.36, 348.34, 155.3, 150.11, 131.22, 104.0, 81.75, 62.1, 48.83, 28.7, 27.88, 24.12], "forecast_price": {"naive": [35.76, 36.74, 38.51, 37.4, 36.89, 36.99, 34.54, 34.76, 30.75, 30.23, 32.87, 36.48, 29.3, 12.95, 0.13, -3.01, -6.41, -13.66, -12.95, -8.82, -8.32, -8.09, -9.75, -9.75, -3.94, -3.35, -3.02, 3.6, -0.32, -4.12, -2.45, -0.11, 4.54, 5.6, 33.79, 89.23, 154.29, 150.17, 133.67, 105.38, 128.07, 91.86, 63.13, 58.19, 56.56, 35.41, 33.19, 29.95], "lightgbm": [41.98, 41.3, 42.26, 41.33, 41.13, 41.19, 41.68, 41.68, 40.67, 41.27, 49.39, 52.06, 50.85, 49.07, 41.26, 39.38, 34.14, 15.62, 11.15, 5.6, 3.34, -0.67, -0.45, -1.1, 9.15, 9.31, 8.86, 11.09, 9.84, 8.53, 10.95, 14.17, 21.43, 25.4, 44.29, 95.81, 113.75, 113.38, 110.07, 103.98, 103.05, 91.88, 70.52, 65.05, 64.34, 54.12, 54.12, 51.44], "lstm": [40.64, 35.29, 32.81, 24.9, 29.5, 25.09, 27.91, 28.35, 32.95, 36.47, 39.42, 48.03, 58.19, 52.03, 34.19, 24.95, 15.75, 10.35, 6.2, -2.09, -6.33, -3.45, -5.59, -1.22, -0.87, 3.28, 7.01, 5.39, 10.95, 13.82, 17.16, 24.07, 26.3, 48.32, 56.27, 75.53, 104.52, 117.17, 103.01, 93.66, 80.57, 66.69, 67.94, 57.71, 59.49, 60.4, 64.09, 67.16]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -29.26, -55.32, -83.27, -116.59, -131.55, -131.55, -131.55, -81.26, -18.67, 45.47, 118.62, 118.62, 116.44, 151.71, 152.87, 152.87, 153.78, 156.7, 156.7, 156.7, 161.58, 171.42, 181.26, 193.26, 203.03, 203.03, 204.91, 325.56, 585.11, 560.73, 479.54, 643.12, 549.24, 549.24, 808.45, 1243.87, 1437.99, 1625.63, 1625.63, 1625.63, 1625.63, 1625.63, 1625.63, 1625.63, 1625.63, 1625.63], "profit_aud": 1625.63}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.75, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.08, -55.38, -55.38, 8.77, 8.77, 8.77, 8.77, 4.85, 5.43, 10.98, 20.08, 26.9, 26.9, 26.9, 36.66, 46.5, 47.48, 48.68, 49.66, 40.52, 33.24, -117.57, -377.12, -379.56, -379.56, -379.56, -379.56, -379.56, -120.35, 315.07, 509.19, 509.19, 673.22, 673.22, 673.22, 673.22, 673.22, 673.22, 673.22, 673.22], "profit_aud": 673.22}, "lightgbm": {"charge_mw": [0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 0.5, 0.5, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -17.19, -17.19, -17.19, -45.13, -78.45, -78.45, -78.45, -123.82, -174.12, -111.53, -47.39, 25.76, 73.27, 73.27, 73.27, 73.27, 73.27, 73.27, 77.6, 87.31, 96.78, 106.53, 116.38, 116.38, 116.38, 116.38, 107.23, 108.28, -42.53, -42.53, -42.53, -42.53, -42.53, -42.53, -42.53, 216.67, 652.1, 846.22, 1033.85, 1033.85, 1033.85, 1033.85, 1033.85, 1033.85, 1033.85, 1033.85, 1033.85], "profit_aud": 1033.85}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -26.06, -38.47, -71.79, -105.5, -140.01, -140.01, -140.01, -77.43, -13.28, 59.87, 107.38, 107.38, 107.38, 107.38, 107.38, 107.38, 117.12, 126.83, 136.3, 146.06, 150.98, 151.96, 151.96, 143.17, 152.31, 152.31, 152.31, 152.31, 152.31, 152.31, 152.31, 152.31, 152.31, 411.52, 846.94, 1041.06, 1228.7, 1228.7, 1228.7, 1228.7, 1151.07, 1144.23, 1144.23, 1144.23, 1174.38], "profit_aud": 1174.38}}} \ No newline at end of file diff --git a/results/daily/2026-02-17.json b/results/daily/2026-02-17.json new file mode 100644 index 0000000..e389f53 --- /dev/null +++ b/results/daily/2026-02-17.json @@ -0,0 +1 @@ +{"date": "2026-02-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [21.63, 3.35, 0.07, -0.39, 0.13, -0.75, -3.24, -3.49, -1.9, 1.25, -0.05, 27.24, 30.15, 13.84, -1.14, -3.28, -4.31, -3.34, -5.18, -5.02, -4.4, -4.23, -4.24, -2.68, -5.97, -7.56, -8.52, -2.94, 259.17, -2.9, -78.04, -43.12, -18.44, -165.02, 10.42, 39.42, 53.72, 61.27, 65.25, 65.0, 61.03, 62.9, 62.45, 67.8, 63.18, 60.78, 54.62, 53.39], "forecast_price": {"naive": [33.22, 30.97, 23.41, 20.85, 22.36, 26.65, 26.97, 27.61, 36.3, 40.24, 50.07, 51.32, 58.52, 38.01, 1.74, 31.35, -4.63, -4.44, -7.28, -7.79, -7.77, -7.57, -7.8, -7.88, -7.87, -9.6, -7.82, -7.32, -7.5, 120.65, 207.64, 19.5, 64.96, 145.41, 75.1, 139.48, 207.36, 348.34, 155.3, 150.11, 131.22, 104.0, 81.75, 62.1, 48.83, 28.7, 27.88, 24.12], "lightgbm": [79.53, 80.33, 77.72, 72.78, 71.49, 69.2, 69.2, 68.85, 66.67, 67.72, 69.34, 71.49, 73.19, 74.62, 69.89, 60.18, 38.56, 19.66, 12.48, 12.91, 5.82, 3.18, 0.22, 6.6, 5.6, 1.3, -2.39, 1.22, 0.0, 29.23, 40.82, 24.48, 50.27, 85.52, 68.45, 112.18, 132.91, 234.66, 138.91, 136.15, 123.77, 99.23, 83.74, 62.76, 58.64, 50.83, 50.83, 49.61], "lstm": [27.21, 21.2, 19.86, 13.24, 14.5, 11.11, 15.09, 13.3, 16.51, 21.34, 23.87, 34.71, 40.28, 40.42, 25.63, 20.06, 11.53, 3.31, -5.59, -10.66, -8.81, -7.49, -14.55, -7.91, -7.5, -6.58, 0.69, 3.78, 7.65, 12.89, 17.59, 22.76, 28.96, 40.16, 49.87, 67.0, 91.82, 98.86, 89.54, 79.15, 72.89, 59.63, 60.4, 49.05, 49.73, 50.93, 52.31, 55.65]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.25, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.38, 2.25, 2.12, 0.88, 2.0, 3.12, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -0.01, 0.47, 0.64, 1.58, 5.62, 9.98, 12.37, 13.93, 13.96, 48.01, 85.69, 102.99, 103.13, 103.54, 108.93, 105.22, 111.7, 117.97, 119.07, 119.07, 119.07, 115.72, 123.19, 132.63, 143.28, 139.6, 463.56, 459.95, 557.5, 611.4, 634.45, 840.72, 840.72, 840.72, 840.72, 840.72, 922.29, 1003.54, 1003.54, 1003.54, 1003.54, 1088.28, 1167.25, 1167.25, 1167.25, 1167.25], "profit_aud": 1167.25}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -0.08, 0.4, 0.24, 1.18, 2.98, 2.98, 2.98, 4.54, 4.48, 38.53, 76.21, 76.21, 77.64, 73.95, 75.03, 75.03, 75.68, 77.56, 77.56, 77.56, 80.21, 83.55, 91.02, 100.47, 111.11, 111.11, 46.32, 43.43, -54.13, -0.23, 22.81, -162.83, -175.86, -175.86, -108.7, -32.12, 49.45, 130.69, 130.69, 130.69, 130.69, 130.69, 130.69, 130.69, 130.69, 130.69], "profit_aud": 130.69}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.38, 2.38, 2.38, 2.38, 2.38, 17.95, 17.95, 17.95, 17.95, 17.95, 17.95, 17.95, 17.95, 23.23, 28.54, 25.19, 22.21, 31.65, 42.3, 45.98, -277.98, -277.98, -365.78, -311.88, -311.88, -497.53, -510.56, -510.56, -443.4, -366.82, -285.25, -204.01, -204.01, -204.01, -204.01, -204.01, -204.01, -204.01, -204.01, -204.01], "profit_aud": -204.01}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.48, 0.32, 1.26, 3.06, 7.42, 7.42, 7.42, 7.42, 41.47, 79.16, 96.45, 95.03, 95.03, 95.03, 95.03, 95.67, 101.95, 107.44, 107.44, 112.75, 116.09, 120.57, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 121.51, 188.67, 265.25, 346.82, 428.07, 428.07, 428.07, 428.07, 343.32, 334.48, 334.48, 334.48, 401.21], "profit_aud": 401.21}}} \ No newline at end of file diff --git a/results/daily/2026-02-18.json b/results/daily/2026-02-18.json new file mode 100644 index 0000000..78727cc --- /dev/null +++ b/results/daily/2026-02-18.json @@ -0,0 +1 @@ +{"date": "2026-02-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [49.46, 69.47, 84.79, 78.5, 87.18, 89.01, 89.6, 88.99, 122.93, 105.29, 83.3, 107.98, 94.92, 100.2, 196.67, 537.22, 145.36, 62.57, -9.44, -18.31, -19.17, -20.92, -20.0, -40.48, -41.97, -35.57, -25.59, -19.9, -16.13, -20.78, -13.73, -42.0, -20.71, -15.0, -10.49, 10.81, 63.15, 78.25, 87.81, 82.24, 75.87, 75.1, 75.19, 80.44, 79.51, 82.34, 86.28, 86.26], "forecast_price": {"naive": [21.63, 3.35, 0.07, -0.39, 0.13, -0.75, -3.24, -3.49, -1.9, 1.25, -0.05, 27.24, 30.15, 13.84, -1.14, -3.28, -4.31, -3.34, -5.18, -5.02, -4.4, -4.23, -4.24, -2.68, -5.97, -7.56, -8.52, -2.94, 259.17, -2.9, -78.04, -43.12, -18.44, -165.02, 10.42, 39.42, 53.72, 61.27, 65.25, 65.0, 61.03, 62.9, 62.45, 67.8, 63.18, 60.78, 54.62, 53.39], "lightgbm": [42.43, 36.7, 35.11, 31.4, 30.68, 30.65, 30.65, 30.65, 30.65, 31.65, 35.42, 44.07, 44.1, 41.46, 26.11, 22.28, 22.69, 4.73, -1.66, -6.84, -7.55, -9.12, -11.26, -12.25, -16.58, -14.65, -17.28, -10.83, 20.44, -11.94, -38.25, -13.2, 1.62, -5.39, 31.97, 44.08, 54.08, 46.47, 67.54, 63.55, 60.95, 60.12, 64.0, 59.37, 53.2, 48.57, 48.61, 49.54], "lstm": [56.73, 56.72, 50.4, 42.83, 48.57, 40.13, 44.13, 43.34, 50.02, 55.22, 56.73, 65.38, 70.77, 60.39, 36.09, 22.9, 15.6, 7.65, 0.04, -3.73, -5.66, -5.93, -9.07, -6.71, -6.51, -6.68, -2.23, -5.83, -4.57, -0.02, 3.89, 3.99, 10.01, 22.58, 30.58, 48.62, 81.47, 94.74, 87.63, 84.14, 80.22, 66.99, 71.19, 56.44, 60.57, 52.83, 57.92, 66.23]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 3.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.62, 4.75, 3.5, 4.62, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-61.82, -148.66, -254.64, -352.77, -401.16, -401.16, -401.16, -401.16, -247.49, -247.49, -351.61, -216.63, -229.92, -229.92, 15.91, 687.44, 869.15, 869.15, 870.33, 872.62, 875.01, 890.7, 890.7, 941.3, 993.76, 1038.22, 1070.21, 1070.21, 1050.05, 1076.03, 1058.86, 1111.36, 1121.72, 1123.59, 1124.91, 1124.91, 1124.91, 1124.91, 1234.67, 1234.67, 1234.67, 1234.67, 1234.67, 1234.67, 1234.67, 1337.59, 1445.44, 1553.26], "profit_aud": 1553.26}, "naive": {"charge_mw": [0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.25, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.38, 2.25, 2.12, 0.88, 2.0, 3.12, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -11.87, -110.0, -1.02, -112.28, -224.28, -335.51, -489.18, -357.57, -409.63, -274.65, -156.0, -30.75, -55.34, -122.49, -304.2, -234.74, -222.95, -200.06, -195.26, -195.26, -195.26, -245.86, -193.4, -148.93, -116.94, -141.81, -161.97, -187.95, -170.78, -118.28, -92.39, -73.65, -73.65, -73.65, -73.65, -73.65, 36.12, 138.92, 138.92, 138.92, 138.92, 239.46, 338.85, 338.85, 338.85, 338.85], "profit_aud": 338.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.12, 2.88, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -48.39, -159.64, -271.64, -382.88, -536.55, -536.55, -432.43, -297.45, -178.81, -53.56, -53.56, -53.56, -53.56, -53.56, -52.38, -50.09, -47.69, -45.08, -42.58, 8.02, 60.48, 104.95, 136.93, 131.36, 111.2, 111.2, 128.37, 180.87, 157.57, 176.32, 176.32, 176.32, 247.36, 149.55, 259.31, 362.11, 456.95, 456.95, 550.94, 550.94, 550.94, 550.94, 550.94, 550.94], "profit_aud": 550.94}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -98.13, -146.51, -257.77, -369.77, -481.01, -481.01, -481.01, -376.89, -241.91, -123.27, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 4.27, 6.67, 19.74, 44.74, 95.33, 147.79, 192.26, 160.27, 185.14, 189.18, 191.77, 191.77, 191.77, 191.77, 191.77, 191.77, 191.77, 270.71, 368.52, 478.28, 581.08, 581.08, 581.08, 581.08, 569.82, 569.82, 466.9, 466.9, 574.72], "profit_aud": 574.72}}} \ No newline at end of file diff --git a/results/daily/2026-02-19.json b/results/daily/2026-02-19.json new file mode 100644 index 0000000..340db17 --- /dev/null +++ b/results/daily/2026-02-19.json @@ -0,0 +1 @@ +{"date": "2026-02-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [87.94, 80.32, 73.34, 71.62, 73.5, 62.86, 59.08, 54.76, 59.99, 76.4, 80.52, 80.99, 82.75, 51.02, 37.14, 17.42, 1.11, -37.79, -38.52, -46.06, -8.59, -18.56, -11.96, -15.67, -13.74, -7.75, -4.6, -4.93, -6.92, -43.7, -108.84, 25.23, 49.52, 13.57, 53.21, 99.5, 123.03, 138.52, 148.05, 125.35, 108.77, 97.87, 90.82, 88.11, 92.98, 77.55, 82.95, 81.41], "forecast_price": {"naive": [49.46, 69.47, 84.79, 78.5, 87.18, 89.01, 89.6, 88.99, 122.93, 105.29, 83.3, 107.98, 94.92, 100.2, 196.67, 537.22, 145.36, 62.57, -9.44, -18.31, -19.17, -20.92, -20.0, -40.48, -41.97, -35.57, -25.59, -19.9, -16.13, -20.78, -13.73, -42.0, -20.71, -15.0, -10.49, 10.81, 63.15, 78.25, 87.81, 82.24, 75.87, 75.1, 75.19, 80.44, 79.51, 82.34, 86.28, 86.26], "lightgbm": [66.18, 70.65, 71.11, 60.13, 58.95, 56.25, 55.89, 56.25, 56.91, 57.21, 61.92, 63.33, 66.25, 63.66, 49.08, 43.58, 42.01, 26.11, -0.35, -4.98, -9.38, -10.54, -12.32, -17.13, -18.07, -13.61, -14.39, -9.52, -11.59, -7.65, -4.74, -4.84, 5.01, 12.47, 15.07, 42.09, 71.7, 91.0, 95.55, 93.61, 86.61, 82.79, 81.77, 81.21, 83.42, 78.67, 78.21, 81.85], "lstm": [74.7, 70.5, 66.86, 62.35, 64.38, 61.66, 59.16, 61.83, 73.1, 73.41, 82.72, 87.98, 94.44, 79.0, 50.16, 28.79, 13.4, 4.38, -4.3, -8.63, -14.26, -16.47, -15.14, -13.26, -16.19, -16.63, -17.62, -18.47, -17.5, -16.08, -13.13, -4.89, 2.64, 14.1, 25.39, 46.24, 74.44, 94.34, 94.14, 95.03, 86.03, 84.45, 76.87, 69.55, 63.38, 63.83, 66.88, 73.8]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.67, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -78.58, -152.43, -220.88, -295.86, -238.56, -137.91, -36.67, 66.77, 66.77, 66.77, 66.77, 66.77, 114.0, 162.16, 219.73, 209.0, 232.19, 227.23, 246.82, 263.99, 264.96, 259.21, 253.04, 255.64, 310.26, 446.31, 446.31, 502.02, 485.06, 485.06, 485.06, 638.85, 812.0, 997.07, 1153.76, 1153.76, 1153.76, 1153.76, 1153.76, 1153.76, 1153.76, 1153.76, 1153.76], "profit_aud": 1153.76}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.5, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 3.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.62, 4.75, 3.5, 4.62, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-109.92, -210.33, -302.0, -391.53, -432.32, -432.32, -432.32, -432.32, -357.33, -357.33, -457.99, -356.75, -368.33, -368.33, -321.91, -300.14, -298.75, -298.75, -293.94, -288.18, -287.11, -273.19, -273.19, -253.6, -236.43, -226.74, -220.99, -220.99, -229.63, -175.01, -311.07, -342.6, -367.36, -369.06, -375.71, -375.71, -375.71, -375.71, -190.64, -190.64, -190.64, -190.64, -190.64, -190.64, -190.64, -93.7, 9.99, 111.75], "profit_aud": 111.75}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -78.58, -152.43, -220.88, -245.77, -245.77, -245.77, -144.53, -41.09, 22.68, 22.68, 22.68, 22.68, 22.68, 27.5, 33.26, 34.33, 36.65, 44.13, 63.72, 80.89, 90.58, 96.33, 90.85, 99.5, 104.96, 104.96, 98.65, 98.65, 98.65, 98.65, 98.65, 98.65, 271.81, 456.87, 613.56, 749.53, 749.53, 749.53, 749.53, 749.53, 749.53, 749.53, 749.53], "profit_aud": 749.53}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -89.53, -130.32, -208.89, -282.75, -351.2, -351.2, -351.2, -250.54, -149.3, -45.86, 17.92, 17.92, 17.92, 17.92, 17.92, 22.73, 28.49, 29.56, 52.76, 55.75, 36.16, 44.75, 54.43, 60.18, 66.35, 75.0, 80.46, 94.06, 90.91, 90.91, 90.91, 90.91, 90.91, 90.91, 264.07, 449.13, 605.82, 741.79, 741.79, 741.79, 741.79, 625.56, 614.7, 614.7, 716.46], "profit_aud": 716.46}}} \ No newline at end of file diff --git a/results/daily/2026-02-20.json b/results/daily/2026-02-20.json new file mode 100644 index 0000000..c184e9a --- /dev/null +++ b/results/daily/2026-02-20.json @@ -0,0 +1 @@ +{"date": "2026-02-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [83.69, 84.25, 86.23, 87.86, 86.51, 89.32, 88.71, 88.6, 96.44, 107.87, 121.46, 128.67, 145.52, 131.28, 72.0, 15.68, -5.32, -5.08, -4.33, -3.25, -3.56, 12.13, 14.08, 32.5, 71.52, 50.53, 77.55, 83.59, 65.83, 104.46, 78.21, 65.85, 86.18, 96.87, 142.49, 169.45, 153.94, 139.12, 152.81, 128.7, 101.96, 87.37, 83.69, 87.2, 97.57, 91.6, 125.08, 136.28], "forecast_price": {"naive": [87.94, 80.32, 73.34, 71.62, 73.5, 62.86, 59.08, 54.76, 59.99, 76.4, 80.52, 80.99, 82.75, 51.02, 37.14, 17.42, 1.11, -37.79, -38.52, -46.06, -8.59, -18.56, -11.96, -15.67, -13.74, -7.75, -4.6, -4.93, -6.92, -43.7, -108.84, 25.23, 49.52, 13.57, 53.21, 99.5, 123.03, 138.52, 148.05, 125.35, 108.77, 97.87, 90.82, 88.11, 92.98, 77.55, 82.95, 81.41], "lightgbm": [61.82, 67.37, 60.12, 58.15, 57.48, 55.85, 55.21, 53.79, 55.09, 60.87, 68.46, 71.26, 70.81, 56.12, 45.58, 30.18, 31.36, 5.55, -0.03, -9.7, -9.6, -12.67, -13.81, -14.62, -13.58, -8.19, -3.08, -3.25, -6.1, -13.18, -15.04, 14.86, 28.93, 29.63, 48.51, 97.01, 109.14, 123.55, 123.32, 109.33, 103.97, 95.95, 88.36, 80.97, 83.09, 76.37, 80.58, 78.52], "lstm": [91.47, 79.14, 75.43, 72.1, 71.54, 69.27, 71.47, 71.8, 74.39, 74.47, 73.96, 82.43, 89.49, 67.92, 44.84, 28.2, 19.79, 13.66, 7.21, -0.97, -5.86, -2.89, -5.73, -4.78, -0.64, -1.92, 1.63, -1.56, 3.41, 6.89, 13.71, 20.46, 25.23, 38.14, 48.66, 72.66, 97.66, 112.92, 105.16, 100.98, 96.66, 89.93, 90.54, 75.09, 76.08, 80.53, 81.68, 87.05]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-104.61, -209.92, -317.71, -366.48, -474.61, -474.61, -474.61, -474.61, -474.61, -474.61, -322.79, -161.96, 19.94, 184.04, 184.04, 184.04, 190.69, 197.04, 202.46, 204.49, 208.94, 208.94, 208.94, 208.94, 289.39, 226.23, 226.23, 320.27, 237.98, 368.56, 357.61, 275.3, 275.3, 275.3, 453.41, 665.22, 857.65, 857.65, 1048.67, 1048.67, 1048.67, 939.45, 834.84, 725.84, 811.22, 811.22, 967.57, 1137.92], "profit_aud": 1137.92}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.67, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -111.65, -222.54, -333.29, -453.84, -372.94, -221.12, -60.29, 121.61, 121.61, 121.61, 121.61, 121.61, 127.97, 133.38, 137.45, 133.0, 117.84, 123.68, 83.06, -6.34, -12.65, 84.29, 188.78, 164.09, 33.51, -64.26, -64.26, 32.7, -88.4, -88.4, -88.4, 104.04, 277.94, 468.95, 629.82, 629.82, 629.82, 629.82, 629.82, 629.82, 629.82, 629.82, 629.82], "profit_aud": 629.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -37.07, -147.96, -258.71, -379.26, -379.26, -227.44, -66.6, 115.29, 115.29, 115.29, 115.29, 115.29, 115.29, 115.84, 118.28, 118.28, 103.11, 85.51, 44.89, -44.5, -50.82, 46.13, 150.61, 125.92, -4.66, -102.42, -102.42, -102.42, -102.42, -102.42, -102.42, 90.01, 263.91, 454.92, 615.79, 615.79, 615.79, 615.79, 615.79, 615.79, 615.79, 615.79, 615.79], "profit_aud": 615.79}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -24.22, -135.87, -246.76, -246.76, -246.76, -246.76, -246.76, -85.93, 95.97, 95.97, 95.97, 95.97, 95.97, 95.97, 95.97, 98.0, 102.45, 87.29, 69.69, 29.07, 108.45, 45.29, 132.54, 28.06, 28.06, 28.06, 28.06, 28.06, 28.06, 28.06, 28.06, 28.06, 220.49, 394.39, 585.4, 746.27, 746.27, 746.27, 746.27, 637.28, 623.62, 623.62, 623.62, 793.97], "profit_aud": 793.97}}} \ No newline at end of file diff --git a/results/daily/2026-02-21.json b/results/daily/2026-02-21.json new file mode 100644 index 0000000..00b4dc4 --- /dev/null +++ b/results/daily/2026-02-21.json @@ -0,0 +1 @@ +{"date": "2026-02-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [118.43, 133.24, 128.39, 130.38, 86.94, 81.35, 74.12, 72.81, 80.13, 78.26, 79.33, 76.03, 68.4, 50.65, 17.56, -2.29, -12.0, -10.08, -11.58, -13.75, -16.39, -10.94, -12.04, -11.24, -6.67, -5.83, -4.0, -2.81, 27.05, 32.97, 168.8, 228.1, 185.67, 212.4, 190.76, 178.65, 190.96, 162.65, 154.08, 171.28, 138.46, 138.02, 135.6, 144.17, 141.18, 125.14, 104.96, 112.15], "forecast_price": {"naive": [83.69, 84.25, 86.23, 87.86, 86.51, 89.32, 88.71, 88.6, 96.44, 107.87, 121.46, 128.67, 145.52, 131.28, 72.0, 15.68, -5.32, -5.08, -4.33, -3.25, -3.56, 12.13, 14.08, 32.5, 71.52, 50.53, 77.55, 83.59, 65.83, 104.46, 78.21, 65.85, 86.18, 96.87, 142.49, 169.45, 153.94, 139.12, 152.81, 128.7, 101.96, 87.37, 83.69, 87.2, 97.57, 91.6, 125.08, 136.28], "lightgbm": [89.44, 90.19, 86.08, 82.24, 78.08, 75.95, 72.96, 73.57, 77.51, 84.87, 84.93, 85.75, 83.88, 75.84, 51.87, 14.59, 9.92, 1.43, 3.53, 0.42, -3.91, 1.09, -0.89, 3.65, 10.01, 12.63, 10.48, 19.5, 18.66, 16.55, 23.04, 35.65, 47.59, 60.14, 105.78, 130.82, 132.01, 127.21, 124.98, 113.82, 99.62, 88.28, 83.89, 81.13, 87.3, 83.89, 94.17, 104.25], "lstm": [116.12, 116.33, 100.13, 91.44, 89.11, 88.46, 89.71, 87.41, 87.63, 79.39, 80.05, 76.06, 71.0, 57.11, 44.67, 29.94, 25.12, 19.52, 15.53, 4.71, 2.33, 3.75, 3.82, 2.51, 7.92, 10.54, 13.85, 14.63, 16.76, 21.78, 29.21, 36.01, 47.89, 58.01, 67.6, 91.84, 114.28, 122.19, 110.48, 105.91, 105.39, 93.35, 88.84, 85.78, 79.56, 75.63, 85.62, 93.1]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-148.04, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 1.86, 2.15, 17.15, 5.96, 20.44, 37.63, 58.12, 58.12, 73.18, 81.61, 82.44, 83.17, 83.67, 84.02, 84.02, 84.02, 84.02, 369.15, 369.15, 634.65, 873.11, 873.11, 1111.8, 1111.8, 919.2, 1111.89, 1111.89, 1111.89, 1111.89, 1111.89, 1111.89, 1111.89, 1111.89, 1111.89], "profit_aud": 1111.89}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-148.04, -314.59, -475.09, -547.44, -656.11, -656.11, -656.11, -656.11, -656.11, -656.11, -556.95, -461.92, -376.42, -313.12, -313.12, -313.12, -298.11, -285.52, -271.03, -262.44, -241.95, -241.95, -241.95, -241.95, -249.45, -242.16, -242.16, -245.32, -279.14, -237.93, -261.56, -546.69, -546.69, -546.69, -308.24, -84.93, 153.77, 153.77, 346.37, 346.37, 346.37, 173.84, 4.35, -175.87, -52.34, -52.34, 78.87, 219.05], "profit_aud": 219.05}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -101.69, -194.34, -285.35, -285.35, -216.87, -117.72, -22.68, -22.68, -22.68, -22.68, -22.68, -22.68, -10.09, -17.33, -0.14, 20.35, 34.03, 49.09, 49.09, 49.09, 42.53, 47.53, 44.36, 44.36, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 226.46, 465.15, 668.46, 861.06, 861.06, 861.06, 861.06, 691.56, 511.35, 511.35, 476.31, 607.51, 747.69], "profit_aud": 747.69}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.63, 28.12, 41.8, 56.86, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 70.92, 309.61, 512.92, 705.52, 919.62, 919.62, 919.62, 919.62, 919.62, 899.85, 743.43, 743.43, 883.61], "profit_aud": 883.61}}} \ No newline at end of file diff --git a/results/daily/2026-02-22.json b/results/daily/2026-02-22.json new file mode 100644 index 0000000..a1703c0 --- /dev/null +++ b/results/daily/2026-02-22.json @@ -0,0 +1 @@ +{"date": "2026-02-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [92.68, 138.0, 130.41, 97.2, 90.56, 125.09, 148.81, 69.73, 57.72, 63.34, 100.54, 99.35, 154.26, 175.03, 208.97, 168.61, 126.64, 53.0, 42.52, 10.74, 69.12, 145.51, 63.09, 11.92, -4.14, -1.87, -0.62, 0.28, 7.26, 66.61, 55.04, 64.12, 67.88, 56.69, 47.62, 36.57, 11.07, 31.24, 48.73, 55.4, 58.48, 58.9, 57.09, 55.23, 48.42, 39.74, 31.58, 42.59], "forecast_price": {"naive": [118.43, 133.24, 128.39, 130.38, 86.94, 81.35, 74.12, 72.81, 80.13, 78.26, 79.33, 76.03, 68.4, 50.65, 17.56, -2.29, -12.0, -10.08, -11.58, -13.75, -16.39, -10.94, -12.04, -11.24, -6.67, -5.83, -4.0, -2.81, 27.05, 32.97, 168.8, 228.1, 185.67, 212.4, 190.76, 178.65, 190.96, 162.65, 154.08, 171.28, 138.46, 138.02, 135.6, 144.17, 141.18, 125.14, 104.96, 112.15], "lightgbm": [109.66, 108.9, 102.53, 100.73, 89.76, 86.98, 84.29, 82.75, 84.6, 77.67, 76.81, 76.01, 63.49, 50.43, 34.45, 28.58, 18.15, 5.83, 2.96, 0.01, -2.54, -3.89, -5.04, -4.86, -3.63, -1.63, -4.42, -2.49, 2.78, 14.33, 41.61, 54.19, 76.93, 100.99, 102.38, 121.34, 139.08, 134.13, 131.13, 130.26, 127.13, 119.69, 109.7, 110.33, 108.93, 99.53, 89.11, 96.79], "lstm": [108.71, 100.28, 100.03, 88.5, 83.21, 82.09, 80.57, 76.03, 76.8, 68.68, 70.26, 62.55, 59.81, 42.86, 26.98, 18.18, 12.5, 7.26, 5.16, -4.51, -2.89, -2.79, -1.34, 0.29, 1.39, 6.38, 11.24, 13.23, 20.8, 22.33, 33.54, 40.12, 50.47, 68.72, 71.89, 98.18, 122.28, 129.58, 125.08, 111.51, 104.0, 97.08, 87.02, 83.32, 76.79, 83.64, 84.94, 98.43]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-115.85, 39.4, 39.4, -82.11, -195.3, -70.21, 115.8, 28.64, -43.5, -122.68, -178.48, -302.67, -109.84, 108.95, 370.16, 580.92, 580.92, 514.68, 461.53, 448.11, 534.5, 716.39, 771.59, 771.59, 776.76, 779.1, 779.88, 779.53, 775.5, 858.75, 858.75, 938.91, 1023.75, 1094.61, 1035.09, 989.38, 975.54, 936.5, 909.45, 978.7, 1051.8, 1125.43, 1196.79, 1196.79, 1196.79, 1196.79, 1157.31, 1205.22], "profit_aud": 1205.22}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-115.85, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 39.4, 18.32, -139.97, -81.15, -134.29, -147.72, -234.11, -234.11, -312.98, -321.92, -321.4, -321.17, -321.09, -321.13, -321.13, -321.13, -321.13, -240.98, -240.98, -170.12, -110.59, -110.59, -96.75, -96.75, -157.67, -95.34, -95.34, -95.34, -95.34, -95.34, -95.34, -95.34, -95.34, -95.34], "profit_aud": -95.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -43.2, -225.09, -303.95, -318.86, -313.69, -316.02, -315.24, -315.31, -315.31, -315.31, -315.31, -315.31, -315.31, -315.31, -315.31, -315.31, -301.47, -262.43, -201.52, -132.26, -132.26, -132.26, -132.26, -132.26, -132.26, -132.26, -132.26, -132.26], "profit_aud": -132.26}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -13.42, -99.82, -281.71, -360.57, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -367.19, -353.35, -314.31, -253.39, -184.14, -184.14, -184.14, -184.14, -191.87, -252.4, -252.4, -252.4, -199.17], "profit_aud": -199.17}}} \ No newline at end of file diff --git a/results/daily/2026-02-23.json b/results/daily/2026-02-23.json new file mode 100644 index 0000000..5ed936b --- /dev/null +++ b/results/daily/2026-02-23.json @@ -0,0 +1 @@ +{"date": "2026-02-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [46.81, 59.06, 61.62, 58.47, 59.8, 57.77, 60.13, 61.04, 65.76, 61.14, 65.6, 66.74, 62.78, 66.24, 58.43, 40.03, 18.47, -5.67, -7.0, -14.98, -26.39, -52.36, -78.16, -105.34, -108.19, -107.85, -101.02, -86.87, -23.66, -78.77, -7.17, 51.66, -46.57, -17.63, 21.02, 64.73, 96.19, 114.04, 110.96, 108.18, 74.63, 68.52, 66.63, 70.42, 64.95, 70.98, 93.13, 120.97], "forecast_price": {"naive": [92.68, 138.0, 130.41, 97.2, 90.56, 125.09, 148.81, 69.73, 57.72, 63.34, 100.54, 99.35, 154.26, 175.03, 208.97, 168.61, 126.64, 53.0, 42.52, 10.74, 69.12, 145.51, 63.09, 11.92, -4.14, -1.87, -0.62, 0.28, 7.26, 66.61, 55.04, 64.12, 67.88, 56.69, 47.62, 36.57, 11.07, 31.24, 48.73, 55.4, 58.48, 58.9, 57.09, 55.23, 48.42, 39.74, 31.58, 42.59], "lightgbm": [96.55, 93.76, 95.33, 93.81, 90.78, 91.15, 87.8, 87.94, 85.75, 94.74, 118.43, 123.01, 114.59, 109.67, 103.18, 108.46, 92.19, 72.28, 56.68, 53.42, 69.52, 75.78, 61.11, 44.43, 37.28, 35.96, 37.28, 38.37, 45.49, 77.41, 71.55, 53.57, 62.69, 76.93, 68.61, 73.32, 73.7, 80.42, 99.07, 96.35, 100.92, 102.51, 94.99, 85.74, 75.84, 73.04, 70.96, 73.99], "lstm": [38.17, 39.46, 34.31, 26.54, 31.18, 31.62, 27.75, 32.36, 41.02, 40.48, 53.32, 63.71, 74.5, 75.89, 56.62, 42.52, 29.86, 19.02, 10.99, 1.59, 4.32, -3.16, 1.29, 2.69, -1.51, 2.59, -0.53, 5.28, 4.41, 3.21, 5.0, 13.93, 17.26, 30.12, 31.91, 43.54, 64.98, 79.08, 77.31, 76.38, 74.42, 71.84, 64.33, 60.77, 57.92, 62.62, 66.46, 74.67]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.83, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.5, 1.5, 2.62, 2.62, 3.75, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-58.51, -83.02, -83.02, -156.11, -156.11, -228.32, -228.32, -228.32, -146.12, -146.12, -146.12, -62.69, -62.69, 20.11, 20.11, 20.11, 20.11, 20.82, 21.7, 23.57, 26.87, 33.41, 43.18, 174.86, 310.11, 444.92, 571.2, 625.49, 599.22, 697.69, 690.73, 755.32, 813.52, 835.56, 835.56, 835.56, 955.8, 1098.35, 1237.06, 1372.28, 1372.28, 1353.09, 1269.81, 1269.81, 1188.62, 1188.62, 1305.04, 1456.25], "profit_aud": 1456.25}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [-58.51, 7.93, 7.93, -65.17, -139.91, -82.15, -6.98, -83.29, -165.48, -241.91, -278.32, -361.75, -283.28, -200.47, -127.44, -77.4, -77.4, -70.31, -61.56, -42.83, -75.82, -141.27, -209.66, -209.66, -74.42, 60.4, 186.67, 295.26, 308.39, 209.92, 209.92, 274.5, 216.3, 194.26, 167.98, 87.06, -33.18, -175.73, -237.31, -102.09, -8.8, 76.85, 160.14, 160.14, 160.14, 160.14, 43.72, 179.82], "profit_aud": 179.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -74.75, -106.81, -181.97, -258.28, -340.48, -340.48, -258.47, -175.04, -96.57, -13.76, -13.76, -13.76, -13.76, -13.76, -5.01, 13.71, -12.67, -78.12, -78.12, -19.66, 115.58, 250.4, 376.68, 485.26, 485.26, 386.79, 379.62, 315.04, 373.25, 353.41, 327.13, 327.13, 327.13, 327.13, 465.83, 601.06, 694.35, 780.0, 780.0, 780.0, 780.0, 780.0, 780.0, 780.0], "profit_aud": 780.0}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -73.09, -147.84, -220.05, -295.21, -329.09, -329.09, -329.09, -329.09, -245.66, -167.19, -84.38, -11.35, -11.35, -11.35, -11.35, -11.35, 7.38, -22.31, 43.14, 140.84, 140.84, 276.08, 335.94, 462.22, 353.63, 356.94, 455.41, 455.41, 455.41, 455.41, 455.41, 455.41, 455.41, 455.41, 597.96, 736.66, 871.89, 965.18, 965.18, 965.18, 955.32, 874.13, 874.13, 874.13, 1025.35], "profit_aud": 1025.35}}} \ No newline at end of file diff --git a/results/daily/2026-02-24.json b/results/daily/2026-02-24.json new file mode 100644 index 0000000..231c962 --- /dev/null +++ b/results/daily/2026-02-24.json @@ -0,0 +1 @@ +{"date": "2026-02-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [163.73, 146.9, 96.27, 92.37, 96.81, 98.31, 98.8, 102.64, 98.65, 91.01, 100.16, 107.19, 108.14, 87.74, 73.62, 84.45, 68.43, 66.98, 62.98, 56.95, 44.16, 51.5, 54.57, 41.28, 41.77, 44.5, 50.56, 50.95, 49.68, 55.11, 37.16, 50.38, 47.92, 53.2, 70.92, 80.36, 74.04, 75.77, 69.86, 68.11, 68.18, 66.88, 70.83, 70.0, 56.5, 57.14, 65.61, 55.37], "forecast_price": {"naive": [46.81, 59.06, 61.62, 58.47, 59.8, 57.77, 60.13, 61.04, 65.76, 61.14, 65.6, 66.74, 62.78, 66.24, 58.43, 40.03, 18.47, -5.67, -7.0, -14.98, -26.39, -52.36, -78.16, -105.34, -108.19, -107.85, -101.02, -86.87, -23.66, -78.77, -7.17, 51.66, -46.57, -17.63, 21.02, 64.73, 96.19, 114.04, 110.96, 108.18, 74.63, 68.52, 66.63, 70.42, 64.95, 70.98, 93.13, 120.97], "lightgbm": [49.02, 53.06, 50.04, 49.9, 46.66, 49.7, 48.56, 47.71, 46.86, 47.88, 54.95, 58.47, 58.24, 56.43, 44.28, 33.29, 28.45, 11.13, 11.24, 2.28, -0.59, -14.34, -12.55, -11.36, -15.13, -13.9, -14.81, -13.22, 9.37, -8.55, 6.66, 28.21, -0.73, 18.2, 42.17, 71.58, 110.4, 115.88, 109.62, 106.72, 87.24, 79.16, 72.7, 74.72, 69.33, 73.69, 88.26, 98.19], "lstm": [109.24, 99.48, 95.1, 88.8, 91.96, 88.88, 81.41, 82.24, 87.96, 103.37, 104.02, 119.69, 128.08, 131.68, 86.37, 61.04, 39.29, 25.06, 12.74, 3.63, 3.72, -7.86, -6.64, -5.69, -5.08, -6.77, -4.65, -1.53, 0.01, 0.94, 7.41, 17.77, 29.27, 44.13, 56.06, 72.89, 118.75, 127.56, 120.18, 112.35, 116.96, 110.58, 111.05, 95.49, 86.2, 90.04, 95.62, 104.25]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.25, 1.38, 1.38, 1.38, 1.38, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.62, 1.75, 2.88, 4.0, 4.0, 4.0, 4.0, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -26.96, -142.42, -142.42, -142.42, -142.42, -142.42, -142.42, -256.18, -256.18, -122.19, 12.98, 12.98, -79.05, 15.96, 15.96, 15.96, 15.96, 15.96, -39.24, -39.24, -11.96, -63.56, -115.77, -171.4, -171.4, -171.4, -171.4, -102.52, -148.97, -148.97, -208.86, -208.86, -120.22, -19.76, 72.79, 167.51, 167.51, 167.51, 167.51, 167.51, 167.51, 167.51, 96.88, 88.88, 170.9, 170.9], "profit_aud": 170.9}, "naive": {"charge_mw": [2.5, 0.83, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 1.5, 1.5, 2.62, 2.62, 3.75, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-204.67, -265.63, -265.63, -381.09, -381.09, -503.98, -503.98, -503.98, -380.66, -380.66, -380.66, -246.67, -246.67, -136.99, -136.99, -136.99, -136.99, -145.36, -153.23, -160.35, -165.87, -172.31, -179.13, -230.72, -282.94, -338.57, -401.77, -433.62, -378.47, -447.36, -411.31, -348.33, -408.23, -474.72, -474.72, -474.72, -382.17, -287.45, -200.12, -114.98, -114.98, -133.71, -222.24, -222.24, -292.87, -292.87, -210.86, -141.65], "profit_aud": -141.65}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -121.01, -121.01, -175.85, -304.14, -427.46, -541.22, -416.01, -282.02, -146.85, -37.17, -37.17, -37.17, -37.17, -37.17, -37.17, -37.17, -42.69, -107.06, -107.06, -89.93, -142.15, -197.78, -260.98, -324.67, -262.57, -331.46, -336.66, -273.68, -333.57, -341.02, -341.02, -341.02, -248.47, -153.75, -66.42, 18.72, 18.72, 18.72, -69.82, -69.82, -140.44, -156.44, -74.43, -5.22], "profit_aud": -5.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -115.46, -115.46, -170.02, -293.52, -421.82, -545.14, -545.14, -419.93, -285.94, -150.77, -41.09, -41.09, -41.09, -41.09, -41.09, -41.09, -41.09, -41.09, -105.46, -173.67, -225.27, -251.38, -307.0, -313.32, -319.69, -319.69, -319.69, -319.69, -319.69, -319.69, -319.69, -319.69, -319.69, -227.14, -132.42, -45.09, -45.09, 40.13, 40.13, 40.13, 40.13, -30.5, -38.5, -38.5, 30.7], "profit_aud": 30.7}}} \ No newline at end of file diff --git a/results/daily/2026-02-25.json b/results/daily/2026-02-25.json new file mode 100644 index 0000000..824a85a --- /dev/null +++ b/results/daily/2026-02-25.json @@ -0,0 +1 @@ +{"date": "2026-02-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [53.08, 62.63, 58.77, 51.39, 38.91, 36.88, 40.11, 43.57, 36.2, 38.05, 58.6, 70.94, 69.69, 49.74, 26.3, 26.54, 0.81, -4.67, -6.04, -7.25, -9.8, -11.09, -19.14, -18.47, -19.93, -19.96, -19.98, -20.0, -16.81, -7.76, -8.62, -9.91, -6.69, -4.92, -8.46, -7.18, -4.84, 20.69, 26.21, 27.49, 18.79, 16.38, 18.01, 20.37, 21.94, 8.16, 24.17, 30.65], "forecast_price": {"naive": [163.73, 146.9, 96.27, 92.37, 96.81, 98.31, 98.8, 102.64, 98.65, 91.01, 100.16, 107.19, 108.14, 87.74, 73.62, 84.45, 68.43, 66.98, 62.98, 56.95, 44.16, 51.5, 54.57, 41.28, 41.77, 44.5, 50.56, 50.95, 49.68, 55.11, 37.16, 50.38, 47.92, 53.2, 70.92, 80.36, 74.04, 75.77, 69.86, 68.11, 68.18, 66.88, 70.83, 70.0, 56.5, 57.14, 65.61, 55.37], "lightgbm": [91.57, 89.76, 88.68, 79.96, 82.03, 80.72, 81.22, 81.0, 82.35, 85.39, 91.99, 98.3, 99.27, 96.92, 83.4, 89.52, 77.94, 58.73, 45.14, 39.05, 29.49, 36.42, 36.66, 22.02, 21.9, 24.19, 30.23, 34.73, 35.3, 38.15, 31.65, 41.29, 41.62, 48.09, 59.76, 92.77, 92.29, 92.0, 88.24, 83.65, 80.27, 76.73, 76.31, 74.82, 66.36, 69.2, 75.12, 72.55], "lstm": [60.78, 58.63, 54.17, 46.24, 49.35, 45.24, 45.07, 48.98, 57.21, 55.28, 62.6, 76.82, 81.77, 83.66, 60.84, 46.52, 36.69, 28.21, 18.61, 10.07, 12.66, 9.57, 10.93, 13.77, 12.25, 11.04, 14.98, 16.44, 14.3, 19.34, 18.71, 27.74, 31.5, 43.69, 50.16, 62.48, 84.51, 96.93, 85.03, 86.07, 79.68, 71.65, 67.31, 61.95, 61.08, 55.16, 64.34, 73.37]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 2.5, 2.5, 0.0, 1.75, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 4.88, 3.62, 4.75, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-66.35, 4.11, 4.11, 4.11, -44.52, -90.62, -112.88, -112.88, -158.14, -205.7, -132.45, -43.78, 43.33, 105.5, 105.5, 105.5, 105.5, 106.09, 106.84, 107.75, 108.97, 110.36, 124.72, 124.72, 149.63, 174.58, 199.56, 224.56, 226.66, 216.96, 219.11, 231.5, 231.5, 225.35, 235.93, 238.62, 239.22, 265.09, 297.85, 332.21, 332.21, 311.74, 289.22, 307.05, 334.48, 324.28, 354.49, 392.8], "profit_aud": 392.8}, "naive": {"charge_mw": [0.0, 0.0, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.25, 1.38, 1.38, 1.38, 1.38, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.62, 1.75, 2.88, 4.0, 4.0, 4.0, 4.0, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -16.46, -80.7, -80.7, -80.7, -80.7, -80.7, -80.7, -128.25, -128.25, -39.58, 47.53, 47.53, 14.66, 44.52, 44.52, 44.52, 44.52, 44.52, 56.77, 56.77, 47.2, 70.29, 95.2, 120.15, 120.15, 120.15, 120.15, 110.45, 121.23, 121.23, 129.6, 129.6, 119.02, 110.05, 104.0, 129.87, 129.87, 129.87, 129.87, 129.87, 129.87, 129.87, 102.44, 101.29, 131.5, 131.5], "profit_aud": 131.5}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -64.24, -85.83, -131.93, -182.07, -236.54, -236.54, -236.54, -163.3, -74.62, 12.49, 74.66, 74.66, 74.66, 74.66, 74.66, 74.66, 74.66, 86.91, 86.91, 74.95, 98.03, 122.95, 147.9, 172.87, 172.87, 172.87, 164.14, 174.92, 174.92, 174.92, 174.92, 174.92, 165.95, 159.91, 185.77, 218.54, 218.54, 218.54, 218.54, 218.54, 218.54, 191.1, 191.1, 218.29, 218.29], "profit_aud": 218.29}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -64.24, -85.83, -131.93, -182.07, -236.54, -236.54, -236.54, -163.3, -74.62, 12.49, 74.66, 74.66, 74.66, 74.66, 74.66, 74.66, 83.72, 83.72, 97.58, 121.51, 109.97, 134.88, 159.83, 159.83, 137.33, 158.34, 158.34, 158.34, 158.34, 158.34, 158.34, 158.34, 158.34, 152.3, 178.16, 210.92, 245.29, 245.29, 245.29, 245.29, 245.29, 242.21, 232.01, 232.01, 270.32], "profit_aud": 270.32}}} \ No newline at end of file diff --git a/results/daily/2026-02-26.json b/results/daily/2026-02-26.json new file mode 100644 index 0000000..6f631ef --- /dev/null +++ b/results/daily/2026-02-26.json @@ -0,0 +1 @@ +{"date": "2026-02-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [13.59, 16.55, 1.22, 0.0, 0.1, 0.0, -0.01, 0.0, 9.53, 10.76, 22.65, 35.93, 49.18, 31.46, 16.85, -1.86, -1.35, -4.91, -4.65, -6.7, -8.09, -9.2, -10.32, -22.46, -17.09, -20.91, -26.33, -14.3, -9.62, -4.38, -4.13, -2.0, 10.07, 15.46, 29.04, 61.04, 71.58, 78.06, 94.89, 109.69, 84.55, 83.43, 76.3, 98.4, 74.9, 101.28, 89.73, 113.28], "forecast_price": {"naive": [53.08, 62.63, 58.77, 51.39, 38.91, 36.88, 40.11, 43.57, 36.2, 38.05, 58.6, 70.94, 69.69, 49.74, 26.3, 26.54, 0.81, -4.67, -6.04, -7.25, -9.8, -11.09, -19.14, -18.47, -19.93, -19.96, -19.98, -20.0, -16.81, -7.76, -8.62, -9.91, -6.69, -4.92, -8.46, -7.18, -4.84, 20.69, 26.21, 27.49, 18.79, 16.38, 18.01, 20.37, 21.94, 8.16, 24.17, 30.65], "lightgbm": [36.74, 30.83, 30.99, 28.8, 30.16, 29.73, 26.59, 27.06, 27.65, 32.35, 40.19, 43.02, 42.72, 39.15, 28.21, 22.57, 17.02, 5.66, 1.76, -2.53, -7.92, -7.35, -9.09, -11.13, -11.29, -9.88, -5.48, -5.44, -9.41, -3.85, -6.04, 4.27, 13.17, 17.01, 24.13, 38.79, 49.24, 52.54, 52.79, 51.52, 49.41, 48.67, 47.83, 45.83, 44.22, 43.92, 45.11, 44.27], "lstm": [23.56, 21.49, 19.12, 16.4, 17.18, 17.04, 15.56, 17.97, 24.92, 26.8, 36.07, 44.2, 54.73, 47.64, 33.12, 18.61, 8.38, 0.48, -8.29, -13.13, -10.46, -11.95, -14.16, -10.92, -13.34, -13.17, -13.64, -8.55, -11.17, -9.76, -7.89, -0.98, 6.07, 9.98, 16.69, 30.82, 49.37, 57.48, 61.7, 62.05, 60.23, 57.47, 51.18, 45.98, 45.01, 46.44, 50.14, 55.62]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 3.62, 2.38, 3.5, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-16.99, 1.63, 1.63, 1.62, 1.56, 1.56, 1.57, 1.56, 1.56, 1.56, 29.87, 74.78, 136.25, 175.57, 175.57, 177.9, 176.4, 177.63, 177.63, 178.47, 179.48, 180.63, 181.92, 210.0, 231.37, 257.51, 290.42, 299.35, 300.55, 301.1, 301.62, 301.87, 301.87, 301.87, 301.87, 301.87, 301.87, 301.87, 420.48, 557.59, 557.59, 557.59, 462.21, 585.21, 491.58, 618.17, 707.91, 849.51], "profit_aud": 849.51}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 2.5, 2.5, 0.0, 1.75, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 4.88, 3.62, 4.75, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-16.99, 1.63, 1.63, 1.63, 1.49, 1.49, 1.5, 1.5, -10.42, -23.88, 4.43, 49.34, 110.81, 150.13, 150.13, 150.13, 150.13, 150.74, 151.33, 152.16, 153.18, 154.32, 162.06, 162.06, 183.43, 209.57, 242.48, 260.35, 261.55, 256.07, 257.11, 259.6, 259.6, 278.92, 242.62, 219.73, 210.78, 308.35, 426.96, 564.08, 564.08, 459.79, 364.41, 450.51, 544.14, 417.55, 529.72, 671.32], "profit_aud": 671.32}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.01, -0.01, -0.01, 0.0, -0.0, -11.92, -11.92, 16.39, 61.3, 122.77, 162.09, 162.09, 162.09, 162.09, 162.09, 162.09, 162.93, 169.0, 169.0, 181.9, 209.98, 231.34, 257.49, 257.49, 243.62, 255.64, 250.78, 255.94, 255.94, 255.94, 255.94, 255.94, 255.94, 255.94, 353.52, 472.13, 609.24, 714.93, 714.93, 714.93, 714.93, 714.93, 714.93, 714.93, 714.93], "profit_aud": 714.93}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.01, -0.14, -0.14, -0.13, -0.13, -0.13, -0.13, 28.18, 73.08, 134.56, 173.88, 173.88, 173.88, 173.88, 173.88, 174.46, 182.83, 173.85, 180.75, 193.65, 193.65, 215.01, 241.16, 274.06, 256.2, 268.22, 269.31, 269.83, 270.08, 270.08, 270.08, 270.08, 270.08, 270.08, 367.66, 486.26, 623.38, 729.06, 729.06, 729.06, 715.29, 621.66, 621.66, 621.66, 763.26], "profit_aud": 763.26}}} \ No newline at end of file diff --git a/results/daily/2026-02-27.json b/results/daily/2026-02-27.json new file mode 100644 index 0000000..cd6d35f --- /dev/null +++ b/results/daily/2026-02-27.json @@ -0,0 +1 @@ +{"date": "2026-02-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [135.83, 127.48, 163.73, 157.38, 146.0, 109.96, 118.34, 98.75, 133.6, 151.62, 133.12, 150.41, 133.38, 129.23, 90.15, 34.5, 33.3, 15.7, 14.54, 12.15, 9.36, 5.94, 9.32, 10.29, 24.41, 50.24, 59.65, 108.37, 143.83, 188.72, 160.16, 158.31, 202.03, 144.69, 236.44, 232.29, 230.44, 210.98, 245.96, 209.64, 218.19, 229.1, 151.42, 120.29, 147.34, 117.53, 126.7, 174.73], "forecast_price": {"naive": [13.59, 16.55, 1.22, 0.0, 0.1, 0.0, -0.01, 0.0, 9.53, 10.76, 22.65, 35.93, 49.18, 31.46, 16.85, -1.86, -1.35, -4.91, -4.65, -6.7, -8.09, -9.2, -10.32, -22.46, -17.09, -20.91, -26.33, -14.3, -9.62, -4.38, -4.13, -2.0, 10.07, 15.46, 29.04, 61.04, 71.58, 78.06, 94.89, 109.69, 84.55, 83.43, 76.3, 98.4, 74.9, 101.28, 89.73, 113.28], "lightgbm": [44.93, 45.56, 39.95, 37.22, 35.33, 35.35, 35.35, 35.56, 39.3, 39.43, 44.17, 49.15, 59.83, 44.78, 41.94, 23.29, 19.47, 11.78, 10.26, 6.19, -1.37, -1.01, -2.77, -5.23, -6.01, -5.51, -9.1, -4.99, -3.23, 13.87, 15.18, 19.23, 26.98, 36.1, 45.06, 69.44, 80.01, 85.66, 98.67, 100.21, 89.46, 84.67, 74.25, 83.95, 72.97, 86.03, 80.79, 88.04], "lstm": [118.28, 102.94, 92.87, 95.45, 90.75, 86.27, 86.68, 87.76, 89.22, 98.31, 95.16, 105.73, 121.01, 108.49, 85.13, 58.83, 47.03, 40.28, 30.6, 23.07, 20.95, 17.44, 17.46, 16.1, 21.54, 14.02, 16.09, 18.39, 19.1, 18.75, 23.67, 30.69, 34.09, 52.49, 58.39, 76.56, 101.75, 117.68, 103.73, 103.63, 98.24, 89.4, 93.32, 77.68, 83.52, 82.57, 85.33, 94.03]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-169.79, -329.15, -124.49, 32.89, 32.89, -104.55, -252.48, -375.92, -259.02, -69.5, -69.5, 118.51, 118.51, 118.51, 118.51, 118.51, 118.51, 118.51, 118.51, 111.77, 100.06, 92.64, 80.99, 68.12, 68.12, 68.12, 68.12, 68.12, 68.12, 304.03, 281.61, 83.72, 311.01, 130.14, 425.69, 716.05, 1004.1, 1004.1, 1311.55, 1311.55, 1311.55, 1311.55, 1311.55, 1161.19, 1326.95, 1180.04, 1162.31, 1380.72], "profit_aud": 1380.72}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 3.62, 2.38, 3.5, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-169.79, -26.37, -26.37, -223.09, -304.12, -441.57, -589.49, -712.93, -712.93, -712.93, -546.54, -358.53, -191.8, -30.26, -30.26, -73.39, -36.43, -40.35, -40.35, -41.87, -43.04, -43.78, -44.95, -57.81, -88.33, -151.13, -225.69, -293.42, -311.4, -334.99, -355.01, -374.8, -374.8, -374.8, -374.8, -374.8, -374.8, -374.8, -67.34, 194.71, 194.71, 194.71, 5.43, 155.8, -28.38, 118.53, 245.22, 463.64], "profit_aud": 463.64}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 1.5, 0.25, 0.25, 1.38, 1.38, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -87.34, -269.84, -407.29, -555.21, -678.65, -678.65, -678.65, -512.26, -324.25, -157.52, 4.02, 4.02, 4.02, 4.02, 4.02, 4.02, 4.02, -7.69, -1.09, -2.26, -15.12, -45.63, -108.44, -183.0, -250.73, -268.71, -268.71, -268.71, -268.71, -268.71, -268.71, -268.71, -268.71, -268.71, -57.73, 249.73, 511.78, 784.52, 784.52, 595.25, 595.25, 411.07, 557.98, 557.98, 776.39], "profit_aud": 776.39}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -137.45, -285.37, -408.81, -464.26, -464.26, -464.26, -276.25, -109.52, 52.02, 52.02, 52.02, 52.02, 52.02, 52.02, 52.02, 52.02, 44.59, 32.94, 20.08, 50.6, -12.2, -86.77, -162.09, -162.09, -162.09, -162.09, -162.09, -162.09, -162.09, -162.09, -162.09, 125.96, 389.69, 697.14, 959.2, 959.2, 959.2, 959.2, 808.84, 808.84, 792.38, 792.38, 1010.8], "profit_aud": 1010.8}}} \ No newline at end of file diff --git a/results/daily/2026-02-28.json b/results/daily/2026-02-28.json new file mode 100644 index 0000000..0c0a8c5 --- /dev/null +++ b/results/daily/2026-02-28.json @@ -0,0 +1 @@ +{"date": "2026-02-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [167.39, 203.0, 227.19, 170.44, 252.65, 201.15, 199.33, 181.14, 143.22, 135.2, 128.18, 135.2, 132.42, 168.02, 134.57, 130.64, 107.86, 34.73, 0.66, 0.94, 9.05, 14.97, 12.5, 9.69, 12.68, 14.96, 16.53, 26.96, 69.32, 94.39, 79.95, 74.11, 72.26, 77.85, 76.56, 74.74, 68.56, 68.86, 67.32, 51.23, 48.53, 47.58, 49.21, 39.29, 41.24, 45.63, 46.36, 50.47], "forecast_price": {"naive": [135.83, 127.48, 163.73, 157.38, 146.0, 109.96, 118.34, 98.75, 133.6, 151.62, 133.12, 150.41, 133.38, 129.23, 90.15, 34.5, 33.3, 15.7, 14.54, 12.15, 9.36, 5.94, 9.32, 10.29, 24.41, 50.24, 59.65, 108.37, 143.83, 188.72, 160.16, 158.31, 202.03, 144.69, 236.44, 232.29, 230.44, 210.98, 245.96, 209.64, 218.19, 229.1, 151.42, 120.29, 147.34, 117.53, 126.7, 174.73], "lightgbm": [110.72, 107.47, 103.21, 97.78, 92.05, 86.45, 83.91, 78.4, 84.31, 85.97, 82.26, 84.36, 75.13, 69.81, 54.58, 21.67, 12.02, 3.43, 2.04, -0.75, -3.14, -6.72, -7.85, -8.54, -4.32, 9.98, 8.36, 4.73, 22.88, 31.25, 39.1, 54.13, 87.2, 92.07, 121.59, 131.26, 143.85, 128.51, 144.23, 142.32, 126.04, 122.0, 104.43, 102.06, 100.91, 100.07, 101.68, 111.91], "lstm": [132.42, 142.37, 119.3, 109.47, 105.21, 104.21, 104.53, 102.23, 102.58, 92.59, 94.62, 88.16, 84.7, 72.99, 62.65, 46.36, 40.3, 33.47, 27.43, 16.49, 13.17, 13.89, 14.53, 14.1, 16.09, 18.28, 22.96, 23.73, 25.46, 29.27, 36.42, 41.17, 56.39, 70.72, 75.62, 100.5, 123.55, 134.89, 116.89, 114.41, 110.95, 100.49, 94.63, 91.27, 82.64, 81.87, 92.04, 104.97]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-209.24, -266.08, 17.92, -195.13, 120.68, 120.68, 120.68, 120.68, 120.68, 120.68, -39.55, -39.55, -58.09, 151.93, 151.93, 151.93, 151.93, 151.93, 151.11, 149.94, 138.62, 157.34, 141.71, 129.6, 120.78, 120.78, 120.78, 120.78, 120.78, 238.77, 338.71, 338.71, 338.71, 436.02, 531.72, 531.72, 531.72, 531.72, 531.72, 531.72, 531.72, 531.72, 531.72, 482.61, 431.06, 431.06, 477.42, 540.51], "profit_aud": 540.51}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-209.24, -462.99, -179.0, -8.56, -8.56, -260.0, -509.16, -735.58, -610.27, -441.27, -441.27, -272.27, -272.27, -272.27, -272.27, -272.27, -272.27, -272.27, -272.27, -272.79, -284.1, -302.81, -318.44, -330.56, -330.56, -330.56, -330.56, -330.56, -330.56, -212.57, -223.76, -316.4, -235.11, -332.42, -236.72, -143.29, -57.59, -57.59, 26.56, 26.56, 26.56, 26.56, 26.56, -22.55, 23.85, -33.19, -39.68, 23.41], "profit_aud": 23.41}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12, -5.77, -24.49, -40.11, -52.23, -68.09, -49.39, -51.7, -85.4, -85.4, -85.4, -85.4, -85.4, -85.4, -85.4, -85.4, 8.03, 93.73, 93.73, 177.88, 241.93, 241.93, 241.93, 241.93, 241.93, 241.93, 184.88, 184.88, 241.67], "profit_aud": 241.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -11.31, -30.02, -45.65, -57.77, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, -64.81, 20.89, 106.97, 191.13, 255.17, 255.17, 255.17, 255.17, 255.17, 203.62, 146.58, 192.94, 256.03], "profit_aud": 256.03}}} \ No newline at end of file diff --git a/results/daily/2026-03-01.json b/results/daily/2026-03-01.json new file mode 100644 index 0000000..853a11d --- /dev/null +++ b/results/daily/2026-03-01.json @@ -0,0 +1 @@ +{"date": "2026-03-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [52.5, 54.38, 44.66, 29.52, 28.78, 26.0, 24.86, 35.63, 20.16, 28.02, 21.24, 24.9, 26.16, 25.66, 58.55, 112.84, 64.87, 46.99, 105.12, 154.31, 85.72, 181.56, 95.32, 86.68, 134.14, 116.66, 109.48, 150.6, 230.99, 345.22, 222.55, 164.54, 84.73, 89.86, 107.58, 49.77, 39.02, 44.12, 50.59, 49.51, 32.44, 29.88, 30.31, 28.89, 27.52, 26.32, 37.95, 29.97], "forecast_price": {"naive": [167.39, 203.0, 227.19, 170.44, 252.65, 201.15, 199.33, 181.14, 143.22, 135.2, 128.18, 135.2, 132.42, 168.02, 134.57, 130.64, 107.86, 34.73, 0.66, 0.94, 9.05, 14.97, 12.5, 9.69, 12.68, 14.96, 16.53, 26.96, 69.32, 94.39, 79.95, 74.11, 72.26, 77.85, 76.56, 74.74, 68.56, 68.86, 67.32, 51.23, 48.53, 47.58, 49.21, 39.29, 41.24, 45.63, 46.36, 50.47], "lightgbm": [110.74, 98.67, 93.64, 101.44, 95.87, 84.47, 85.59, 88.43, 83.98, 86.09, 84.85, 92.65, 77.15, 78.78, 81.15, 64.51, 65.33, 35.84, 14.9, -0.23, 20.33, 14.48, 14.97, -2.24, -2.73, -3.49, -4.39, -3.02, 18.79, 29.49, 34.58, 39.4, 46.16, 57.84, 65.87, 78.97, 73.47, 75.41, 71.39, 66.22, 62.05, 61.2, 56.52, 48.63, 51.27, 47.14, 47.33, 54.56], "lstm": [39.65, 39.15, 39.18, 34.89, 36.06, 29.92, 31.11, 30.53, 35.2, 27.97, 32.72, 33.64, 36.46, 25.11, 15.67, 8.75, 0.71, -7.04, -7.8, -17.87, -16.27, -18.43, -16.34, -13.2, -20.26, -10.7, -9.75, -2.92, -0.25, 0.71, 7.79, 14.01, 25.66, 33.91, 38.67, 54.95, 73.02, 73.8, 74.2, 66.52, 67.51, 64.77, 62.52, 57.28, 54.77, 56.12, 56.36, 66.6]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -18.07, -49.14, -4.6, -29.81, -29.81, -56.35, -87.49, -87.49, -119.56, -119.56, 21.49, 12.41, -46.33, -46.33, 146.56, 39.41, 266.36, 239.67, 131.32, 298.99, 282.66, 145.81, 145.81, 434.55, 866.08, 1144.26, 1349.94, 1244.03, 1231.45, 1365.92, 1365.92, 1317.14, 1261.99, 1325.23, 1374.74, 1374.74, 1374.74, 1374.74, 1374.74, 1370.88, 1337.98, 1385.41, 1385.41], "profit_aud": 1385.41}, "naive": {"charge_mw": [2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [1.12, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [-65.63, -80.86, -25.03, -61.92, -25.95, -25.95, -25.95, -25.95, -25.95, -25.95, -52.5, -52.5, -56.16, -24.08, -24.08, -24.08, -24.08, -24.08, -155.47, -348.36, -455.51, -228.56, -347.72, -456.07, -549.3, -549.3, -549.3, -549.3, -549.3, -117.77, 160.41, 160.41, 160.41, 272.74, 407.21, 407.21, 407.21, 407.21, 407.21, 407.21, 407.21, 407.21, 407.21, 371.09, 336.7, 336.7, 374.64, 412.1], "profit_aud": 412.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -14.72, -207.61, -100.46, -100.46, -100.46, -154.64, -322.31, -468.13, -604.98, -793.24, -793.24, -793.24, -793.24, -793.24, -793.24, -793.24, -793.24, -731.03, -682.25, -627.1, -563.86, -563.86, -563.86, -563.86, -563.86, -563.86, -563.86, -596.76, -602.07, -564.61], "profit_aud": -564.61}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.38, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -32.49, -32.49, -42.47, -17.27, -52.29, -52.29, -52.29, -19.59, -19.59, -19.59, -19.59, -19.59, -25.47, -38.61, -231.5, -338.65, -565.6, -684.75, -636.64, -804.32, -818.9, -832.58, -851.41, -880.28, -880.28, -880.28, -880.28, -880.28, -880.28, -880.28, -880.28, -831.51, -776.36, -713.12, -713.12, -672.56, -672.56, -672.56, -672.56, -706.96, -710.64, -710.64, -673.18], "profit_aud": -673.18}}} \ No newline at end of file diff --git a/results/daily/2026-03-02.json b/results/daily/2026-03-02.json new file mode 100644 index 0000000..81e800d --- /dev/null +++ b/results/daily/2026-03-02.json @@ -0,0 +1 @@ +{"date": "2026-03-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [34.05, 34.88, 37.0, 32.14, 46.09, 49.49, 48.2, 43.83, 44.69, 49.96, 48.42, 54.68, 53.15, 56.62, 67.66, 68.78, 83.12, 80.14, 87.78, 86.49, 98.96, 78.68, 66.38, 59.0, 45.25, 39.91, 36.9, 38.59, 45.98, 55.66, 64.96, 67.37, 66.59, 70.02, 72.73, 76.04, 78.51, 81.96, 88.39, 88.29, 84.91, 90.65, 99.69, 96.04, 93.67, 96.96, 101.91, 127.3], "forecast_price": {"naive": [52.5, 54.38, 44.66, 29.52, 28.78, 26.0, 24.86, 35.63, 20.16, 28.02, 21.24, 24.9, 26.16, 25.66, 58.55, 112.84, 64.87, 46.99, 105.12, 154.31, 85.72, 181.56, 95.32, 86.68, 134.14, 116.66, 109.48, 150.6, 230.99, 345.22, 222.55, 164.54, 84.73, 89.86, 107.58, 49.77, 39.02, 44.12, 50.59, 49.51, 32.44, 29.88, 30.31, 28.89, 27.52, 26.32, 37.95, 29.97], "lightgbm": [77.05, 82.49, 82.69, 77.6, 78.46, 76.96, 76.96, 75.82, 77.45, 75.99, 83.3, 88.94, 92.25, 98.66, 89.23, 90.14, 75.09, 42.26, 73.73, 64.57, 67.95, 58.44, 60.24, 57.97, 57.72, 57.85, 59.26, 58.47, 66.67, 66.5, 70.78, 81.48, 74.61, 74.9, 92.12, 70.03, 67.88, 70.46, 80.75, 73.41, 57.15, 55.32, 55.52, 53.65, 52.6, 53.82, 57.27, 56.04], "lstm": [38.86, 35.63, 28.88, 27.52, 28.15, 29.15, 26.92, 30.13, 32.87, 34.57, 39.28, 49.45, 65.66, 78.21, 68.22, 67.14, 60.06, 60.43, 49.45, 41.89, 42.83, 39.28, 46.92, 42.77, 43.89, 48.94, 48.92, 54.03, 54.22, 55.61, 53.54, 64.11, 59.43, 72.67, 71.03, 81.51, 80.63, 94.37, 86.25, 82.39, 69.54, 59.49, 62.31, 61.74, 60.03, 55.24, 61.29, 68.42]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-42.56, -86.17, -132.41, -172.59, -172.59, -141.66, -141.66, -196.44, -196.44, -196.44, -196.44, -196.44, -196.44, -196.44, -196.44, -196.44, -92.55, -92.55, 17.17, 125.29, 248.98, 248.98, 248.98, 248.98, 192.41, 142.53, 96.4, 48.16, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 22.65, 147.26, 147.26, 147.26, 268.46, 395.85, 554.97], "profit_aud": 554.97}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -34.39, -94.65, -39.86, -95.73, -95.73, -156.26, -224.61, -224.61, -295.38, -295.38, -209.4, -221.04, -321.22, -321.22, -213.1, -336.8, -238.45, -257.04, -330.79, -274.23, -279.81, -325.94, -325.94, -268.48, -198.9, -117.7, -33.49, -116.73, -126.53, -35.61, -35.61, -133.75, -236.21, -125.72, -37.43, -37.43, -37.43, -37.43, -37.43, -50.55, -171.74, -44.35, -44.35], "profit_aud": -44.35}, "lightgbm": {"charge_mw": [1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-18.9, -18.9, -18.9, -18.9, -18.9, -80.76, -141.01, -195.79, -195.79, -258.25, -258.25, -258.25, -191.81, -121.03, -36.45, 49.52, 49.52, -50.65, 48.09, 48.09, 48.09, -50.25, -50.25, -124.01, -180.57, -230.46, -230.46, -251.88, -251.88, -251.88, -251.88, -167.67, -167.67, -80.15, 10.77, 10.77, 10.77, 10.77, 121.26, 121.26, 121.26, 121.26, 121.26, 121.26, 121.26, 121.26, 121.26, 121.26], "profit_aud": 121.26}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -46.25, -86.42, -144.04, -171.5, -231.75, -231.75, -231.75, -231.75, -231.75, -231.75, -165.31, -94.54, -9.96, 76.02, 76.02, 76.02, 76.02, -32.09, -155.79, -254.14, -254.14, -327.89, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -353.01, -257.95, -257.95, -155.5, -45.01, 65.35, 65.35, 52.65, 52.65, 52.65, 52.65, -68.54, -68.54, 90.58], "profit_aud": 90.58}}} \ No newline at end of file diff --git a/results/daily/2026-03-03.json b/results/daily/2026-03-03.json new file mode 100644 index 0000000..ae56c7b --- /dev/null +++ b/results/daily/2026-03-03.json @@ -0,0 +1 @@ +{"date": "2026-03-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [126.21, 137.76, 128.57, 120.85, 125.28, 115.15, 115.43, 95.44, 109.07, 117.3, 137.78, 148.14, 160.71, 183.37, 161.68, 129.52, 124.38, 58.22, 47.48, 34.1, 14.84, -3.33, -3.0, -2.56, -2.0, -2.67, -2.67, -4.0, -4.48, -10.48, -8.0, -13.19, -8.54, 34.79, 52.51, 63.29, 73.37, 78.14, 81.46, 80.92, 78.56, 84.29, 80.16, 73.39, 66.86, 71.13, 76.5, 89.04], "forecast_price": {"naive": [34.05, 34.88, 37.0, 32.14, 46.09, 49.49, 48.2, 43.83, 44.69, 49.96, 48.42, 54.68, 53.15, 56.62, 67.66, 68.78, 83.12, 80.14, 87.78, 86.49, 98.96, 78.68, 66.38, 59.0, 45.25, 39.91, 36.9, 38.59, 45.98, 55.66, 64.96, 67.37, 66.59, 70.02, 72.73, 76.04, 78.51, 81.96, 88.39, 88.29, 84.91, 90.65, 99.69, 96.04, 93.67, 96.96, 101.91, 127.3], "lightgbm": [60.0, 59.92, 56.13, 50.58, 50.64, 54.21, 53.03, 50.79, 50.36, 57.5, 62.23, 68.16, 68.22, 67.68, 68.22, 76.73, 80.87, 72.34, 78.7, 73.21, 74.82, 57.92, 53.67, 49.05, 41.16, 40.12, 41.4, 40.77, 40.2, 47.43, 55.03, 59.62, 62.18, 68.45, 76.36, 84.23, 88.01, 91.15, 93.66, 91.74, 90.06, 88.0, 90.19, 86.64, 83.56, 86.32, 86.32, 93.43], "lstm": [91.77, 88.23, 80.87, 79.3, 75.59, 70.28, 71.24, 75.25, 83.27, 82.96, 94.11, 99.51, 107.63, 124.4, 110.26, 99.02, 95.42, 85.96, 73.31, 60.52, 65.12, 57.64, 57.55, 60.08, 61.17, 61.05, 60.21, 65.18, 62.53, 61.46, 59.77, 70.1, 71.32, 83.62, 82.18, 99.2, 102.76, 108.02, 96.14, 94.24, 95.7, 88.5, 88.15, 82.82, 78.72, 73.84, 82.09, 90.19]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.5, 0.25, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -143.94, -288.23, -407.53, -543.86, -608.96, -608.96, -423.8, -222.91, 6.31, 208.41, 208.41, 208.41, 208.41, 208.41, 208.41, 208.41, 212.57, 216.32, 214.54, 212.04, 212.04, 212.04, 212.54, 215.34, 228.44, 238.45, 254.93, 265.61, 265.61, 265.61, 265.61, 265.61, 265.61, 367.43, 468.58, 468.58, 573.94, 674.14, 674.14, 590.57, 580.61, 580.61, 691.91], "profit_aud": 691.91}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-157.76, -329.96, -490.68, -641.74, -641.74, -569.77, -569.77, -689.07, -689.07, -689.07, -689.07, -689.07, -689.07, -689.07, -689.07, -689.07, -533.59, -533.59, -474.24, -431.61, -413.06, -413.06, -413.06, -413.06, -410.56, -407.23, -403.9, -398.9, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -396.41, -296.21, -296.21, -296.21, -207.3, -111.68, -0.38], "profit_aud": -0.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -151.06, -307.66, -307.66, -371.73, -491.03, -627.36, -627.36, -627.36, -627.36, -627.36, -627.36, -627.36, -465.46, -309.98, -309.98, -250.63, -250.63, -232.08, -232.08, -232.08, -232.08, -229.58, -226.25, -224.77, -219.77, -214.16, -214.16, -214.16, -214.16, -214.16, -214.16, -214.16, -214.16, -214.16, -116.48, -14.65, 86.5, 86.5, 86.5, 86.5, 86.5, 86.5, 86.5, 86.5, 197.8], "profit_aud": 197.8}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -67.07, -223.67, -367.62, -511.9, -631.2, -631.2, -631.2, -631.2, -446.03, -245.14, -15.93, 186.17, 186.17, 186.17, 186.17, 186.17, 186.17, 186.17, 190.34, 194.09, 197.29, 197.29, 197.29, 198.77, 198.77, 198.77, 198.77, 208.78, 208.78, 208.78, 208.78, 208.78, 287.89, 379.6, 477.28, 579.11, 579.11, 579.11, 579.11, 579.11, 579.11, 569.75, 480.84, 480.84, 592.14], "profit_aud": 592.14}}} \ No newline at end of file diff --git a/results/daily/2026-03-04.json b/results/daily/2026-03-04.json new file mode 100644 index 0000000..4706184 --- /dev/null +++ b/results/daily/2026-03-04.json @@ -0,0 +1 @@ +{"date": "2026-03-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [120.66, 123.58, 119.06, 122.04, 115.24, 87.43, 90.04, 87.18, 89.76, 103.21, 99.7, 92.16, 91.34, 94.38, 97.86, 96.65, 87.8, 51.74, 40.75, 22.99, 20.75, -1.18, -3.85, -2.7, -3.67, -3.45, -2.85, -2.18, -2.29, -3.92, -4.22, -159.67, -23.01, 24.29, 35.7, 86.7, 99.73, 100.0, 101.03, 95.11, 97.98, 87.7, 91.99, 94.8, 91.82, 88.3, 84.76, 102.36], "forecast_price": {"naive": [126.21, 137.76, 128.57, 120.85, 125.28, 115.15, 115.43, 95.44, 109.07, 117.3, 137.78, 148.14, 160.71, 183.37, 161.68, 129.52, 124.38, 58.22, 47.48, 34.1, 14.84, -3.33, -3.0, -2.56, -2.0, -2.67, -2.67, -4.0, -4.48, -10.48, -8.0, -13.19, -8.54, 34.79, 52.51, 63.29, 73.37, 78.14, 81.46, 80.92, 78.56, 84.29, 80.16, 73.39, 66.86, 71.13, 76.5, 89.04], "lightgbm": [83.12, 79.46, 78.41, 74.9, 72.87, 71.56, 72.25, 76.25, 72.17, 74.49, 80.09, 82.15, 84.48, 82.44, 83.06, 79.38, 75.66, 49.74, 41.32, 27.85, 20.8, 15.73, 10.85, 8.05, 6.79, 5.09, 5.09, 5.59, 8.68, 3.52, 8.92, 11.95, 14.86, 40.24, 49.97, 72.69, 82.42, 91.61, 93.33, 92.24, 88.29, 89.7, 84.06, 72.91, 68.29, 71.53, 76.23, 78.26], "lstm": [68.89, 66.08, 60.88, 52.8, 53.92, 50.66, 48.66, 55.82, 61.57, 61.6, 72.87, 79.82, 93.72, 105.02, 82.21, 67.2, 57.42, 45.28, 34.25, 26.95, 24.19, 18.62, 18.85, 19.73, 16.75, 15.48, 14.31, 18.46, 17.34, 20.86, 20.96, 27.83, 33.59, 43.63, 52.22, 67.94, 79.06, 88.63, 79.19, 80.73, 89.84, 81.37, 78.42, 71.14, 66.16, 63.03, 71.91, 78.24]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.22, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.88, 2.0, 3.12, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -109.29, -109.29, -218.26, -218.26, -89.25, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.6, 15.42, 15.04, 19.62, 23.94, 23.94, 21.21, 18.35, 23.24, 28.51, 228.1, 256.87, 256.87, 256.87, 256.87, 381.54, 506.54, 632.82, 632.82, 755.3, 743.02, 743.02, 743.02, 743.02, 743.02, 637.08, 765.02], "profit_aud": 765.02}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.5, 0.25, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -109.29, -221.84, -330.81, -443.01, -500.3, -500.3, -385.09, -270.92, -152.94, -30.62, -30.62, -30.62, -30.62, -30.62, -30.62, -30.62, -29.15, -24.34, -26.21, -30.8, -30.8, -30.8, -30.52, -29.09, -24.2, -18.92, 180.66, 209.43, 209.43, 209.43, 209.43, 209.43, 209.43, 335.71, 454.6, 454.6, 564.23, 679.22, 679.22, 564.44, 552.08, 552.08, 680.02], "profit_aud": 680.02}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -144.04, -253.34, -365.89, -365.89, -478.09, -478.09, -478.09, -408.96, -294.79, -176.81, -54.49, -54.49, -54.49, -54.49, -54.49, -54.49, -54.49, -54.49, -54.49, -54.49, -49.9, -45.59, -42.03, -39.3, -40.73, -35.83, -35.83, -35.83, -35.83, -35.83, -35.83, -35.83, -35.83, 89.17, 215.45, 334.34, 334.34, 443.97, 443.97, 443.97, 329.19, 329.19, 329.19, 444.34], "profit_aud": 444.34}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -152.55, -296.59, -405.88, -518.43, -566.82, -566.82, -566.82, -566.82, -451.61, -337.44, -219.46, -97.14, -97.14, -97.14, -97.14, -97.14, -97.14, -97.14, -97.14, -97.14, -97.14, -92.55, -88.24, -84.68, -83.46, -80.6, -80.6, -80.6, -80.6, -80.6, -80.6, -80.6, -80.6, -80.6, 44.4, 44.4, 163.29, 285.77, 395.39, 395.39, 395.39, 382.54, 272.16, 272.16, 400.11], "profit_aud": 400.11}}} \ No newline at end of file diff --git a/results/daily/2026-03-05.json b/results/daily/2026-03-05.json new file mode 100644 index 0000000..38ab14e --- /dev/null +++ b/results/daily/2026-03-05.json @@ -0,0 +1 @@ +{"date": "2026-03-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [104.95, 108.64, 106.09, 107.82, 113.24, 115.73, 117.49, 117.69, 125.54, 129.99, 140.33, 128.94, 148.52, 152.58, 105.97, 67.44, 53.29, 20.03, -6.91, -15.03, -9.03, -8.75, -7.24, -14.74, -19.37, -8.48, -14.19, -11.99, -20.74, -17.7, -6.71, -5.85, -2.81, -3.22, 35.51, 94.36, 109.99, 109.22, 101.64, 104.58, 114.63, 97.94, 91.12, 69.46, 75.08, 74.09, 73.17, 78.33], "forecast_price": {"naive": [120.66, 123.58, 119.06, 122.04, 115.24, 87.43, 90.04, 87.18, 89.76, 103.21, 99.7, 92.16, 91.34, 94.38, 97.86, 96.65, 87.8, 51.74, 40.75, 22.99, 20.75, -1.18, -3.85, -2.7, -3.67, -3.45, -2.85, -2.18, -2.29, -3.92, -4.22, -159.67, -23.01, 24.29, 35.7, 86.7, 99.73, 100.0, 101.03, 95.11, 97.98, 87.7, 91.99, 94.8, 91.82, 88.3, 84.76, 102.36], "lightgbm": [75.5, 73.63, 71.23, 65.68, 63.55, 58.99, 59.47, 58.99, 58.13, 63.45, 75.39, 77.26, 83.53, 81.72, 76.06, 65.0, 55.84, 29.73, 20.88, 7.89, 4.74, -1.81, -1.08, -1.13, -0.53, -1.02, -1.95, -0.53, 0.36, 4.95, 9.65, -6.01, 10.44, 31.21, 47.31, 87.93, 98.99, 103.0, 105.05, 103.1, 100.14, 87.14, 86.21, 87.67, 81.05, 82.78, 80.22, 87.81], "lstm": [101.9, 89.83, 88.39, 81.82, 77.14, 74.78, 71.33, 78.59, 80.75, 86.44, 97.14, 102.12, 120.18, 126.2, 103.7, 74.74, 57.88, 48.46, 36.99, 25.37, 20.37, 16.55, 13.26, 15.7, 13.95, 10.87, 11.29, 14.43, 14.61, 18.99, 19.89, 31.66, 42.03, 55.89, 68.83, 95.38, 106.25, 115.91, 107.56, 105.91, 106.7, 100.67, 96.14, 91.63, 81.94, 78.88, 88.49, 93.01]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [-131.19, -267.0, -399.61, -534.39, -597.23, -597.23, -597.23, -597.23, -597.23, -434.75, -259.33, -259.33, -73.68, 117.05, 117.05, 117.05, 117.05, 117.05, 117.91, 136.7, 140.09, 140.09, 131.03, 149.46, 173.67, 163.07, 180.81, 189.8, 215.73, 237.85, 238.69, 239.42, 236.3, 240.33, 240.33, 240.33, 377.81, 514.33, 514.33, 645.06, 788.34, 788.34, 788.34, 701.52, 701.52, 701.52, 701.52, 789.64], "profit_aud": 789.64}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.22, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.88, 2.0, 3.12, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -144.66, -144.66, -291.77, -291.77, -129.28, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 11.05, 12.14, 21.19, 19.13, 43.34, 53.94, 53.94, 38.96, 13.03, 35.15, 43.53, 50.84, 54.36, 54.36, 54.36, 54.36, 191.84, 328.36, 455.41, 455.41, 598.7, 584.98, 584.98, 584.98, 584.98, 584.98, 493.52, 591.44], "profit_aud": 591.44}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -144.66, -291.52, -438.64, -595.56, -667.7, -667.7, -506.53, -320.87, -130.15, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 13.25, 22.31, 40.73, 29.98, 40.58, 58.32, 59.82, 59.82, 59.82, 52.27, 59.59, 59.59, 59.59, 59.59, 59.59, 59.59, 196.11, 323.15, 453.88, 597.17, 597.17, 597.17, 597.17, 597.17, 597.17, 597.17, 597.17], "profit_aud": 597.17}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -141.55, -286.21, -433.07, -580.18, -649.86, -649.86, -649.86, -488.68, -303.02, -112.3, 20.16, 20.16, 20.16, 20.16, 20.16, 20.16, 20.16, 20.16, 29.21, 29.21, 53.43, 64.03, 81.77, 88.42, 88.42, 88.42, 88.42, 88.42, 88.42, 88.42, 88.42, 88.42, 225.9, 362.43, 489.47, 489.47, 632.76, 632.76, 632.76, 632.76, 622.25, 529.63, 529.63, 627.54], "profit_aud": 627.54}}} \ No newline at end of file diff --git a/results/daily/2026-03-06.json b/results/daily/2026-03-06.json new file mode 100644 index 0000000..d66d602 --- /dev/null +++ b/results/daily/2026-03-06.json @@ -0,0 +1 @@ +{"date": "2026-03-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.77, 70.3, 76.7, 76.11, 79.52, 79.72, 82.61, 97.28, 96.36, 97.8, 97.09, 90.77, 107.89, 111.22, 82.08, 64.18, 5.59, -4.07, -6.16, -27.0, -8.81, -10.72, -19.16, -39.57, -30.15, -46.1, -29.74, -29.56, -13.97, -33.79, -27.05, -28.36, -18.11, -58.97, 28.36, 90.7, 89.52, 96.56, 88.96, 83.43, 71.05, 82.73, 79.37, 74.21, 75.05, 75.16, 77.12, 79.29], "forecast_price": {"naive": [104.95, 108.64, 106.09, 107.82, 113.24, 115.73, 117.49, 117.69, 125.54, 129.99, 140.33, 128.94, 148.52, 152.58, 105.97, 67.44, 53.29, 20.03, -6.91, -15.03, -9.03, -8.75, -7.24, -14.74, -19.37, -8.48, -14.19, -11.99, -20.74, -17.7, -6.71, -5.85, -2.81, -3.22, 35.51, 94.36, 109.99, 109.22, 101.64, 104.58, 114.63, 97.94, 91.12, 69.46, 75.08, 74.09, 73.17, 78.33], "lightgbm": [92.22, 92.11, 81.88, 81.53, 80.56, 88.58, 87.73, 88.58, 85.82, 93.79, 98.28, 107.72, 109.64, 109.64, 105.12, 75.68, 67.76, 27.33, 19.99, 7.1, 4.75, -0.05, 1.24, -5.1, -2.18, -1.18, -0.73, 0.71, 4.55, 4.71, 13.94, 16.6, 22.92, 31.09, 47.75, 106.28, 114.91, 114.91, 110.45, 108.76, 116.75, 102.57, 92.43, 73.64, 76.93, 76.64, 74.07, 79.14], "lstm": [76.0, 66.75, 65.97, 61.11, 58.22, 56.07, 56.59, 60.52, 60.71, 67.01, 70.69, 81.01, 95.21, 87.0, 63.46, 45.25, 32.99, 21.62, 13.79, 2.7, -0.21, -0.12, -6.75, -4.77, -2.59, -7.67, -4.69, -2.89, -1.24, 5.06, 8.92, 19.51, 27.83, 38.36, 51.13, 73.86, 88.37, 100.86, 95.77, 95.26, 94.98, 92.73, 92.92, 81.51, 79.82, 80.18, 83.84, 86.86]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 4.75, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-89.72, -177.6, -273.48, -368.62, -412.76, -412.76, -412.76, -291.16, -291.16, -168.92, -168.92, -168.92, -34.05, 104.97, 104.97, 104.97, 104.97, 105.48, 106.25, 140.0, 130.22, 131.56, 133.96, 183.42, 221.1, 278.73, 315.91, 334.38, 316.92, 359.15, 359.15, 369.79, 349.68, 423.39, 423.39, 536.76, 648.66, 769.37, 880.57, 880.57, 791.75, 884.82, 884.82, 884.82, 884.82, 884.82, 884.82, 884.82], "profit_aud": 884.82}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [-89.72, -177.6, -273.48, -368.62, -412.76, -412.76, -412.76, -412.76, -412.76, -290.51, -169.15, -169.15, -34.29, 104.73, 104.73, 104.73, 104.73, 104.73, 105.51, 139.26, 142.56, 142.56, 118.61, 168.08, 205.76, 148.13, 185.31, 207.48, 224.95, 267.18, 270.56, 274.11, 254.0, 327.71, 327.71, 327.71, 439.61, 560.32, 560.32, 664.61, 753.42, 753.42, 753.42, 660.66, 660.66, 660.66, 660.66, 749.85], "profit_aud": 749.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -95.88, -191.02, -290.43, -290.43, -336.28, -336.28, -456.73, -456.73, -456.73, -343.27, -208.4, -69.38, 33.22, 33.22, 33.22, 33.22, 33.22, 33.22, 33.22, 46.62, 25.06, 74.53, 112.21, 169.84, 207.02, 223.42, 223.42, 223.42, 223.42, 223.42, 223.42, 223.42, 223.42, 223.42, 335.32, 456.03, 567.23, 567.23, 656.04, 656.04, 656.04, 656.04, 656.04, 656.04, 656.04, 656.04], "profit_aud": 656.04}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -99.41, -199.05, -302.32, -423.91, -477.39, -477.39, -356.03, -242.57, -107.7, 31.32, 31.32, 31.32, 31.32, 31.32, 31.32, 31.32, 42.34, 30.44, 54.38, 103.85, 87.12, 144.74, 181.92, 218.87, 220.62, 220.62, 220.62, 220.62, 220.62, 220.62, 220.62, 220.62, 220.62, 341.32, 452.52, 556.82, 645.63, 645.63, 645.63, 645.63, 645.63, 645.63, 645.63, 645.63], "profit_aud": 645.63}}} \ No newline at end of file diff --git a/results/daily/2026-03-07.json b/results/daily/2026-03-07.json new file mode 100644 index 0000000..f93176d --- /dev/null +++ b/results/daily/2026-03-07.json @@ -0,0 +1 @@ +{"date": "2026-03-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [86.98, 87.08, 85.93, 82.63, 68.19, 66.44, 65.23, 60.56, 69.32, 67.77, 70.58, 67.96, 72.7, 68.51, 21.54, -3.87, -21.32, -53.81, -25.37, -19.9, -17.86, -33.04, -39.33, -42.32, -43.07, -64.51, -115.2, -134.97, -157.76, -75.61, -57.22, -143.61, -145.0, -64.41, -51.48, -0.92, 4.71, 8.54, 9.3, 4.45, 1.14, -0.03, -1.8, -5.08, -7.01, -5.54, -4.1, -4.04], "forecast_price": {"naive": [71.77, 70.3, 76.7, 76.11, 79.52, 79.72, 82.61, 97.28, 96.36, 97.8, 97.09, 90.77, 107.89, 111.22, 82.08, 64.18, 5.59, -4.07, -6.16, -27.0, -8.81, -10.72, -19.16, -39.57, -30.15, -46.1, -29.74, -29.56, -13.97, -33.79, -27.05, -28.36, -18.11, -58.97, 28.36, 90.7, 89.52, 96.56, 88.96, 83.43, 71.05, 82.73, 79.37, 74.21, 75.05, 75.16, 77.12, 79.29], "lightgbm": [68.76, 66.23, 64.92, 64.76, 59.61, 61.68, 62.7, 62.4, 65.1, 66.22, 71.96, 72.14, 73.48, 71.81, 63.91, 59.69, 36.32, 17.08, 0.36, -7.5, -6.97, -6.84, -7.87, -17.25, -12.97, -17.97, -11.99, -8.19, -3.25, -0.82, 3.23, 6.31, 17.06, 9.96, 46.91, 94.78, 93.66, 100.5, 93.23, 91.34, 78.75, 85.95, 83.58, 71.73, 71.45, 72.73, 72.83, 78.2], "lstm": [75.12, 69.05, 67.1, 58.87, 57.21, 56.45, 55.25, 55.68, 53.27, 58.04, 58.84, 62.04, 59.73, 42.66, 22.68, 8.21, -1.48, -12.05, -18.33, -28.94, -32.55, -31.96, -38.62, -39.23, -35.76, -37.22, -30.94, -28.75, -26.4, -18.67, -11.26, -3.62, 14.18, 17.94, 36.06, 57.47, 82.39, 90.11, 91.94, 90.89, 90.13, 88.36, 86.28, 82.5, 75.71, 73.21, 79.24, 81.39]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.13, -84.83, -84.83, -84.83, -84.83, -84.83, 6.05, 6.05, 6.05, 6.54, 9.2, 76.46, 108.17, 88.87, 66.54, 70.67, 75.59, 80.88, 86.26, 94.32, 238.33, 407.04, 604.24, 660.95, 589.43, 768.94, 950.2, 958.25, 964.69, 964.8, 970.69, 981.36, 992.99, 998.55, 998.55, 998.56, 998.78, 1005.13, 1013.9, 1020.81, 1025.94, 1028.47], "profit_aud": 1028.47}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 4.75, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-108.72, -217.57, -324.98, -428.27, -466.12, -466.12, -466.12, -390.42, -390.42, -305.71, -305.71, -305.71, -214.84, -129.2, -129.2, -129.2, -129.2, -122.47, -119.3, -94.42, -114.24, -110.11, -105.2, -52.3, 1.54, 82.18, 226.18, 310.54, 113.34, 207.85, 207.85, 261.7, 100.75, 181.25, 181.25, 180.1, 185.99, 196.66, 208.29, 208.29, 206.87, 206.83, 206.83, 206.83, 206.83, 206.83, 206.83, 206.83], "profit_aud": 206.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -85.24, -168.29, -249.82, -325.52, -325.52, -325.52, -237.3, -152.35, -61.47, -10.08, -10.08, -10.08, -10.08, -10.08, -10.08, -2.62, -2.62, -2.62, 2.3, 55.2, 109.03, 189.67, 333.67, 418.03, 437.75, 447.2, 447.2, 447.2, 284.07, 364.58, 364.58, 363.43, 369.31, 379.99, 391.62, 391.62, 391.62, 391.62, 391.62, 391.62, 391.62, 391.62, 391.62, 391.62], "profit_aud": 391.62}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.13, -9.13, -95.78, -95.78, -95.78, -10.83, -10.83, -10.83, -10.83, -10.83, -8.17, -1.44, 1.73, 4.22, 17.61, 17.61, 66.77, 119.67, 173.51, 254.15, 268.55, 285.42, 305.14, 314.59, 321.74, 339.69, 339.69, 339.69, 339.69, 339.69, 339.69, 350.37, 362.0, 367.56, 368.99, 368.99, 368.99, 368.99, 368.99, 375.91, 375.91, 371.36], "profit_aud": 371.36}}} \ No newline at end of file diff --git a/results/daily/2026-03-08.json b/results/daily/2026-03-08.json new file mode 100644 index 0000000..598183c --- /dev/null +++ b/results/daily/2026-03-08.json @@ -0,0 +1 @@ +{"date": "2026-03-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-4.8, -4.24, -5.08, -10.75, -13.64, -13.67, -13.85, -13.72, -14.38, -13.53, -8.1, -6.77, -4.74, -6.5, -15.56, -8.0, -8.57, -16.44, -25.72, -57.65, -83.16, -112.65, -147.25, -171.18, -159.98, -191.29, -59.94, -113.28, -84.28, -55.74, -55.55, -123.44, -148.28, -50.65, -6.77, 42.68, 66.64, 58.2, 63.41, 61.12, 47.92, 38.85, 35.94, 46.12, 33.46, 39.18, 59.27, 63.06], "forecast_price": {"naive": [86.98, 87.08, 85.93, 82.63, 68.19, 66.44, 65.23, 60.56, 69.32, 67.77, 70.58, 67.96, 72.7, 68.51, 21.54, -3.87, -21.32, -53.81, -25.37, -19.9, -17.86, -33.04, -39.33, -42.32, -43.07, -64.51, -115.2, -134.97, -157.76, -75.61, -57.22, -143.61, -145.0, -64.41, -51.48, -0.92, 4.71, 8.54, 9.3, 4.45, 1.14, -0.03, -1.8, -5.08, -7.01, -5.54, -4.1, -4.04], "lightgbm": [41.75, 41.71, 37.76, 38.39, 36.95, 35.9, 36.98, 34.08, 35.84, 33.48, 37.68, 39.29, 35.32, 32.58, 28.14, 24.63, 11.69, -5.63, -1.37, -4.77, -4.83, -12.86, -14.3, -15.06, -16.23, -17.17, -17.74, -18.12, -16.59, -16.05, -12.37, -5.49, 3.23, 13.07, 16.0, 49.41, 57.81, 58.69, 59.89, 59.87, 57.54, 56.98, 56.23, 56.37, 53.87, 55.92, 54.39, 54.26], "lstm": [3.26, 1.08, 2.9, -0.64, -4.49, -1.87, 0.79, -1.29, 0.14, 6.53, 12.4, 12.46, 9.83, -2.51, -20.19, -30.78, -49.04, -58.3, -64.02, -81.09, -74.25, -69.14, -85.6, -80.58, -80.95, -83.96, -82.03, -72.59, -67.9, -61.31, -55.25, -43.59, -21.97, -20.47, -3.59, 15.43, 41.19, 46.62, 58.55, 57.14, 59.22, 58.33, 56.4, 45.34, 40.44, 42.51, 45.22, 48.68]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.83, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 1.5, 0.25, 1.38, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.5, 1.25, 0.0], "cumulative_profit_aud": [6.0, 1.29, 1.93, 3.27, 11.79, 28.88, 46.2, 63.34, 81.31, 83.0, 75.15, 66.68, 60.76, 52.63, 72.09, 62.09, 62.09, 64.14, 67.36, 74.57, 84.96, 155.37, 339.43, 553.4, 753.37, 992.49, 917.57, 1059.16, 1080.23, 1026.16, 956.73, 1111.03, 1296.38, 1302.71, 1303.56, 1303.56, 1386.87, 1459.62, 1538.88, 1615.28, 1615.28, 1566.72, 1521.79, 1579.44, 1537.61, 1521.35, 1595.44, 1674.27], "profit_aud": 1674.27}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.94, 19.08, 19.08, 19.08, 19.08, 19.08, 13.16, 13.16, 13.16, 14.16, 15.23, 35.78, 67.94, 12.02, -91.92, -77.84, -59.44, -38.04, -18.04, 5.87, 80.79, 222.39, 327.73, 369.54, 300.11, 454.41, 639.76, 646.09, 646.94, 641.61, 724.91, 797.66, 876.93, 953.33, 953.33, 948.47, 943.98, 886.33, 844.5, 795.52, 721.43, 682.02], "profit_aud": 682.02}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92, 1.92, 18.83, 18.83, 10.36, 10.36, 10.36, 10.36, 10.36, 10.36, 30.91, 2.36, 9.56, 19.96, 34.04, 52.45, 73.84, 173.83, 412.95, 487.87, 629.47, 734.81, 741.78, 748.72, 764.15, 764.15, 764.15, 764.15, 764.15, 847.46, 920.21, 999.48, 1075.88, 1075.88, 1075.88, 1075.88, 1075.88, 1075.88, 1075.88, 1075.88, 1075.88], "profit_aud": 1075.88}, "lstm": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 5.31, -0.41, 13.03, 30.07, 47.16, 38.51, 55.65, 73.62, 56.71, 46.59, 38.12, 32.2, 33.01, 34.96, 35.96, 37.03, 39.09, 42.3, 114.36, 114.36, 5.09, 189.14, 296.13, 496.1, 735.22, 810.14, 824.3, 834.84, 841.81, 848.75, 864.18, 882.71, 889.05, 889.89, 889.89, 889.89, 889.89, 969.16, 1045.56, 1105.45, 1154.01, 1154.01, 1154.01, 1112.18, 1106.7, 1106.7, 1185.53], "profit_aud": 1185.53}}} \ No newline at end of file diff --git a/results/daily/2026-03-09.json b/results/daily/2026-03-09.json new file mode 100644 index 0000000..12811f3 --- /dev/null +++ b/results/daily/2026-03-09.json @@ -0,0 +1 @@ +{"date": "2026-03-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [66.2, 65.34, 73.24, 73.38, 71.05, 69.97, 74.33, 80.19, 87.9, 91.56, 95.49, 78.54, 77.12, 74.34, 73.48, 215.56, 184.27, -11.93, -56.99, -36.61, -36.07, -146.96, -89.91, -24.8, -27.1, -239.04, -223.9, -229.0, -115.48, -157.07, -41.54, -3.04, -2.36, -3.76, -5.37, 32.42, 76.59, 130.84, 129.34, 113.73, 103.35, 121.68, 120.62, 111.19, 125.39, 129.16, 129.94, 134.76], "forecast_price": {"naive": [-4.8, -4.24, -5.08, -10.75, -13.64, -13.67, -13.85, -13.72, -14.38, -13.53, -8.1, -6.77, -4.74, -6.5, -15.56, -8.0, -8.57, -16.44, -25.72, -57.65, -83.16, -112.65, -147.25, -171.18, -159.98, -191.29, -59.94, -113.28, -84.28, -55.74, -55.55, -123.44, -148.28, -50.65, -6.77, 42.68, 66.64, 58.2, 63.41, 61.12, 47.92, 38.85, 35.94, 46.12, 33.46, 39.18, 59.27, 63.06], "lightgbm": [15.78, 15.72, 14.57, 10.63, 13.42, 12.82, 12.82, 13.04, 12.03, 17.64, 21.41, 22.0, 24.1, 16.26, 11.13, 3.76, 0.73, -8.62, -15.59, -31.92, -32.45, -38.26, -35.81, -35.92, -35.92, -35.78, -33.96, -32.83, -33.08, -32.35, -29.53, -19.26, -13.2, -5.27, 27.46, 43.76, 55.37, 53.98, 61.2, 58.19, 49.5, 43.16, 41.92, 47.46, 41.37, 41.84, 53.4, 57.73], "lstm": [60.96, 59.16, 54.7, 52.39, 48.39, 42.45, 48.17, 45.45, 46.99, 56.15, 54.41, 62.69, 70.55, 53.31, 34.07, 14.07, -0.18, -7.61, -12.55, -22.51, -28.37, -32.4, -33.0, -36.68, -33.68, -38.47, -37.58, -32.36, -25.55, -22.24, -17.18, -5.89, 3.49, 25.2, 45.94, 65.49, 105.87, 119.39, 109.58, 91.64, 88.79, 82.38, 78.47, 68.32, 70.94, 70.27, 71.06, 70.1]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 1.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 4.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-82.75, -164.43, -205.07, -205.07, -293.88, -381.35, -381.35, -381.35, -271.48, -157.03, -37.67, -37.67, -37.67, -48.07, -139.92, 129.53, 359.87, 361.36, 432.6, 432.6, 407.53, 591.23, 703.62, 672.62, 638.74, 937.54, 1217.41, 1503.65, 1575.83, 1772.17, 1777.36, 1774.42, 1771.46, 1776.16, 1782.87, 1782.87, 1782.87, 1946.43, 2108.11, 2108.11, 1978.92, 1978.92, 1978.92, 1839.94, 1965.32, 2126.77, 2289.2, 2457.65], "profit_aud": 2457.65}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.83, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 1.5, 0.25, 1.38, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-82.75, -10.22, -19.37, -28.55, -72.95, -160.41, -253.33, -353.57, -463.44, -474.88, -382.25, -284.08, -187.69, -94.77, -186.61, 82.84, 82.84, 84.33, 91.46, 96.03, 100.54, 192.39, 304.78, 335.78, 369.66, 668.46, 388.58, 674.83, 703.7, 551.34, 499.41, 503.21, 506.16, 506.63, 507.31, 507.31, 603.04, 766.6, 928.28, 1070.44, 1070.44, 918.33, 767.55, 906.54, 749.8, 696.2, 858.63, 1027.08], "profit_aud": 1027.08}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -91.73, -91.73, -179.19, -272.11, -316.62, -426.49, -312.04, -192.67, -94.5, 1.89, 1.89, 1.89, 1.89, 1.89, 3.39, 10.51, 15.09, 19.59, 203.29, 315.68, 346.68, 380.56, 529.96, 557.95, 557.95, 586.82, 606.45, 611.64, 612.02, 612.32, 612.79, 612.79, 612.79, 708.53, 872.08, 1033.76, 1175.92, 1175.92, 1175.92, 1025.14, 1122.43, 965.69, 804.24, 966.67, 1135.12], "profit_aud": 1135.12}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -39.43, -126.9, -219.81, -320.05, -429.92, -315.47, -196.11, -97.94, -1.54, -1.54, -1.54, -1.54, -24.57, -23.08, -15.96, -11.38, -6.87, 11.5, 67.69, 98.69, 132.57, 431.37, 711.24, 739.87, 754.3, 773.94, 779.13, 779.51, 779.51, 779.51, 779.51, 779.51, 875.25, 1038.8, 1200.48, 1342.64, 1342.64, 1342.64, 1342.64, 1342.64, 1342.64, 1342.64, 1342.64, 1342.64], "profit_aud": 1342.64}}} \ No newline at end of file diff --git a/results/daily/2026-03-10.json b/results/daily/2026-03-10.json new file mode 100644 index 0000000..ac5fc6c --- /dev/null +++ b/results/daily/2026-03-10.json @@ -0,0 +1 @@ +{"date": "2026-03-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [143.34, 144.04, 138.74, 157.91, 151.52, 150.42, 169.28, 172.22, 184.09, 144.63, 154.03, 177.4, 278.65, 113.89, 38.82, 28.88, 11.87, -1.77, -4.04, -7.22, -7.92, -8.34, -9.38, -19.33, -68.78, -99.94, -180.0, -76.57, -0.86, -126.03, -72.45, -12.64, 10.06, 57.64, 101.85, 125.96, 126.56, 110.56, 100.66, 77.64, 66.31, 63.14, 56.68, 47.36, 47.8, 34.71, 24.33, 10.68], "forecast_price": {"naive": [66.2, 65.34, 73.24, 73.38, 71.05, 69.97, 74.33, 80.19, 87.9, 91.56, 95.49, 78.54, 77.12, 74.34, 73.48, 215.56, 184.27, -11.93, -56.99, -36.61, -36.07, -146.96, -89.91, -24.8, -27.1, -239.04, -223.9, -229.0, -115.48, -157.07, -41.54, -3.04, -2.36, -3.76, -5.37, 32.42, 76.59, 130.84, 129.34, 113.73, 103.35, 121.68, 120.62, 111.19, 125.39, 129.16, 129.94, 134.76], "lightgbm": [85.13, 82.04, 80.15, 77.36, 78.66, 73.6, 74.93, 72.38, 74.68, 76.37, 82.14, 87.34, 88.09, 93.28, 86.24, 81.48, 69.79, 5.71, -6.41, -9.06, -11.13, -25.73, -28.04, -15.86, -17.13, -30.27, -32.36, -28.32, -30.61, -29.85, -20.22, 5.99, 11.88, 21.0, 31.44, 53.67, 85.19, 114.08, 116.63, 108.12, 97.54, 100.8, 100.37, 84.09, 89.85, 87.43, 97.95, 104.34], "lstm": [136.85, 125.49, 123.86, 118.66, 112.94, 106.55, 107.57, 106.13, 108.72, 126.12, 121.82, 133.86, 149.15, 138.76, 84.93, 56.88, 30.78, 17.59, 7.08, -4.55, -8.69, -18.54, -21.21, -19.55, -18.49, -23.92, -19.33, -20.22, -14.39, -10.23, -5.64, 6.65, 21.33, 39.55, 65.49, 93.77, 146.17, 160.08, 151.31, 135.41, 135.01, 128.02, 131.85, 111.94, 100.73, 98.97, 101.66, 107.5]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 3.88, 2.62, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-179.17, -359.22, -532.65, -532.65, -616.74, -804.77, -614.32, -399.05, -168.94, -349.72, -349.72, -127.98, 220.34, 220.34, 220.34, 220.34, 220.34, 220.56, 221.06, 221.97, 222.96, 224.0, 225.17, 227.59, 279.18, 404.1, 629.1, 724.81, 723.74, 881.27, 971.83, 973.41, 973.41, 973.41, 1100.72, 1258.17, 1416.37, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57, 1554.57], "profit_aud": 1554.57}, "naive": {"charge_mw": [2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 1.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 4.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-179.17, -359.22, -436.22, -436.22, -625.63, -813.65, -813.65, -813.65, -583.54, -402.75, -210.22, -210.22, -210.22, -226.16, -274.69, -238.59, -223.76, -223.54, -218.48, -218.48, -223.99, -213.56, -201.84, -226.01, -311.99, -187.07, 37.93, 133.65, 134.19, 291.72, 300.77, 288.51, 301.09, 229.03, 101.72, 101.72, 101.72, 239.92, 365.75, 365.75, 282.86, 282.86, 282.86, 223.67, 271.47, 314.86, 345.27, 358.62], "profit_aud": 358.62}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -188.02, -399.63, -614.9, -845.01, -925.28, -925.28, -703.54, -355.22, -212.86, -164.34, -164.34, -164.34, -164.34, -163.83, -162.93, -161.94, -151.51, -139.79, -163.96, -230.68, -105.76, 119.24, 167.1, 168.18, 325.71, 334.77, 334.77, 334.77, 334.77, 334.77, 334.77, 334.77, 472.97, 598.8, 695.84, 695.84, 774.76, 774.76, 715.56, 715.56, 672.17, 696.5, 709.85], "profit_aud": 709.85}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 1.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -84.1, -272.12, -483.72, -699.0, -929.11, -748.32, -748.32, -526.58, -178.26, -35.9, -35.9, -35.9, -35.9, -35.9, -35.9, -35.0, -34.01, -32.97, -21.25, 2.92, 2.92, 127.84, 262.84, 358.56, 358.66, 374.42, 383.47, 383.47, 383.47, 383.47, 383.47, 383.47, 541.67, 679.87, 805.7, 902.75, 902.75, 902.75, 902.75, 902.75, 902.75, 902.75, 902.75, 902.75], "profit_aud": 902.75}}} \ No newline at end of file diff --git a/results/daily/2026-03-11.json b/results/daily/2026-03-11.json new file mode 100644 index 0000000..7eaa83f --- /dev/null +++ b/results/daily/2026-03-11.json @@ -0,0 +1 @@ +{"date": "2026-03-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [6.5, 5.58, 0.9, -1.78, -2.44, -4.93, -5.97, -5.31, -6.47, -6.84, -4.07, -6.62, -2.21, -0.09, -3.51, -6.59, 49.84, -7.17, -3.86, -4.65, -4.92, -6.88, -5.67, -7.37, -11.02, -12.44, -22.36, -58.92, -45.98, -58.74, -45.54, -29.9, -20.26, -13.18, -8.2, -7.66, -2.9, -1.11, 11.19, 12.84, 8.71, 12.24, 10.12, 11.19, 12.16, 9.16, 14.02, 15.34], "forecast_price": {"naive": [143.34, 144.04, 138.74, 157.91, 151.52, 150.42, 169.28, 172.22, 184.09, 144.63, 154.03, 177.4, 278.65, 113.89, 38.82, 28.88, 11.87, -1.77, -4.04, -7.22, -7.92, -8.34, -9.38, -19.33, -68.78, -99.94, -180.0, -76.57, -0.86, -126.03, -72.45, -12.64, 10.06, 57.64, 101.85, 125.96, 126.56, 110.56, 100.66, 77.64, 66.31, 63.14, 56.68, 47.36, 47.8, 34.71, 24.33, 10.68], "lightgbm": [63.79, 63.79, 66.59, 61.93, 65.34, 60.55, 63.83, 61.11, 65.07, 66.72, 69.99, 69.32, 69.0, 78.38, 66.33, 66.91, 63.86, 28.43, 17.04, 3.87, -3.82, -10.14, -9.74, -13.01, -25.9, -23.63, -23.63, -23.63, -0.17, -22.98, -22.21, -4.51, 13.0, 40.15, 69.96, 100.98, 105.65, 99.53, 95.75, 80.28, 77.46, 73.83, 71.09, 63.59, 64.89, 59.89, 56.4, 58.23], "lstm": [17.56, 18.58, 17.97, 7.21, 12.19, 11.72, 10.03, 10.22, 18.08, 19.64, 26.9, 32.41, 35.65, 39.97, 21.94, 9.65, 1.28, -12.52, -22.32, -30.6, -27.88, -28.74, -40.23, -36.37, -42.03, -40.02, -36.09, -37.13, -29.49, -26.61, -15.01, -11.06, 2.96, 7.66, 25.52, 43.74, 70.04, 75.67, 72.02, 72.98, 70.83, 61.74, 59.05, 45.86, 52.92, 44.48, 51.79, 55.82]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.22, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 1.88, 0.62, 1.75, 0.5, 1.62, 0.38, 0.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 3.62, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.22, 0.53, 1.14, 8.61, 15.25, 23.33, 31.89, 26.8, 35.07, 32.31, 32.2, 27.81, 36.05, 98.35, 107.31, 102.49, 101.84, 101.84, 110.43, 104.14, 105.06, 106.44, 107.99, 110.79, 184.44, 241.92, 315.35, 372.27, 390.96, 393.5, 395.14, 396.17, 397.13, 397.49, 397.63, 397.63, 413.68, 402.79, 418.1, 418.1, 429.29, 444.49, 433.03, 450.56, 469.73], "profit_aud": 469.73}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 3.88, 2.62, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-8.13, -15.11, -16.24, -16.24, -14.88, -8.72, -15.44, -22.08, -30.17, -21.61, -21.61, -29.88, -32.64, -32.64, -32.64, -32.64, -32.64, -31.75, -31.26, -30.68, -30.07, -29.21, -28.5, -27.58, -19.31, -3.76, 24.19, 97.84, 40.36, 113.79, 170.72, 174.45, 174.45, 174.45, 164.2, 154.62, 151.0, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61, 149.61], "profit_aud": 149.61}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.75, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 3.38, 3.38, 3.38, 2.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 2.23, 2.23, 8.39, 8.39, 15.03, 15.03, 15.03, 9.95, 4.16, 4.16, 4.04, 4.04, 4.04, 4.04, 4.04, 4.04, 4.04, 4.66, 6.38, 6.38, 7.3, 21.08, 36.63, 64.58, 138.23, 80.75, 154.18, 188.34, 192.07, 192.07, 192.07, 192.07, 182.5, 178.87, 177.48, 191.47, 191.47, 191.47, 191.47, 191.47, 191.47, 191.47, 191.47, 191.47, 191.47], "profit_aud": 191.47}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 1.75, 2.5, 2.5, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 2.23, 3.59, 9.75, 17.21, 23.85, 23.85, 23.85, 18.76, 10.49, 7.73, 7.62, 7.62, 7.62, 7.62, 8.52, 9.0, 10.74, 10.74, 10.74, 17.83, 23.36, 37.14, 52.7, 52.7, 126.35, 132.1, 139.44, 145.13, 148.87, 148.87, 148.87, 148.87, 148.87, 148.87, 147.48, 161.46, 177.52, 188.41, 188.41, 188.41, 174.43, 186.59, 175.13, 175.13, 194.3], "profit_aud": 194.3}}} \ No newline at end of file diff --git a/results/daily/2026-03-12.json b/results/daily/2026-03-12.json new file mode 100644 index 0000000..291fab4 --- /dev/null +++ b/results/daily/2026-03-12.json @@ -0,0 +1 @@ +{"date": "2026-03-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [10.98, 6.12, 8.61, 8.3, 8.61, 10.7, 12.28, 16.54, 19.84, 28.42, 25.97, 30.42, 35.82, 33.73, 21.77, -2.19, -4.29, -5.88, -20.38, -10.41, -7.08, -10.24, -13.68, -32.54, -23.74, -20.06, -33.73, -11.74, -21.81, -33.11, -25.72, -15.79, -16.78, -10.58, -5.27, -3.94, 1.09, 13.36, 9.43, 8.51, 7.82, 16.92, 17.56, 16.9, 11.43, 12.04, 15.64, 11.12], "forecast_price": {"naive": [6.5, 5.58, 0.9, -1.78, -2.44, -4.93, -5.97, -5.31, -6.47, -6.84, -4.07, -6.62, -2.21, -0.09, -3.51, -6.59, 49.84, -7.17, -3.86, -4.65, -4.92, -6.88, -5.67, -7.37, -11.02, -12.44, -22.36, -58.92, -45.98, -58.74, -45.54, -29.9, -20.26, -13.18, -8.2, -7.66, -2.9, -1.11, 11.19, 12.84, 8.71, 12.24, 10.12, 11.19, 12.16, 9.16, 14.02, 15.34], "lightgbm": [26.06, 26.2, 26.29, 25.98, 25.98, 25.98, 23.47, 24.04, 24.04, 26.75, 32.02, 29.98, 33.53, 32.45, 31.82, 27.09, 38.4, 11.32, 5.8, 3.14, 2.65, -2.35, -2.66, -2.81, -8.73, -9.3, -9.59, -25.89, -15.8, -24.01, -16.37, -5.2, 7.0, 15.68, 30.52, 51.26, 57.75, 58.85, 57.99, 56.34, 54.86, 54.4, 52.51, 50.7, 50.7, 49.33, 49.33, 49.83], "lstm": [15.26, 12.49, 9.45, 4.88, 5.69, 6.11, 2.54, 3.76, 8.51, 13.69, 19.86, 28.53, 35.27, 39.26, 27.55, 14.52, 3.79, -1.54, -11.24, -17.14, -18.11, -17.85, -26.53, -23.78, -24.65, -25.6, -27.62, -24.42, -20.58, -19.24, -13.66, -5.57, 5.38, 8.82, 25.94, 42.67, 59.79, 65.25, 69.66, 70.92, 62.26, 56.04, 53.06, 45.58, 46.65, 44.56, 48.89, 49.29]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.75, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 2.0, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -7.65, -18.41, -28.79, -39.55, -45.49, -45.49, -45.49, -45.49, -9.97, -9.97, 28.06, 72.84, 115.0, 115.0, 115.27, 115.81, 116.54, 142.02, 145.92, 137.07, 137.07, 138.78, 179.46, 209.13, 209.13, 251.29, 236.6, 255.69, 297.08, 329.22, 329.22, 333.42, 334.74, 335.4, 335.89, 335.89, 352.59, 352.59, 351.4, 341.62, 362.78, 384.73, 405.86, 405.86, 405.86, 425.41, 425.41], "profit_aud": 425.41}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.22, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 3.12, 1.88, 0.62, 1.75, 0.5, 1.62, 0.38, 0.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 3.62, 2.62, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -1.04, -2.11, -3.45, -18.8, -39.47, -64.27, -99.79, -67.33, -105.36, -60.58, -18.42, 8.79, 11.53, 6.16, 13.51, -11.96, -13.42, -13.42, -0.62, -15.81, -11.74, -8.78, -6.27, -2.05, 12.63, 39.89, 81.28, 113.43, 123.3, 125.4, 126.72, 127.38, 127.87, 127.73, 126.06, 126.06, 136.7, 126.93, 148.08, 148.08, 164.99, 179.27, 164.23, 183.78, 197.67], "profit_aud": 197.67}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -4.78, -18.16, -33.5, -54.18, -78.97, -78.97, -46.51, -46.51, -1.74, 40.42, 64.91, 67.65, 62.28, 62.28, 62.28, 62.28, 62.28, 63.56, 65.27, 69.34, 72.31, 74.81, 95.89, 110.57, 137.84, 179.23, 211.37, 213.35, 213.35, 213.35, 213.35, 213.35, 214.71, 231.4, 243.19, 253.83, 253.83, 253.83, 253.83, 253.83, 253.83, 253.83, 253.83, 253.83], "profit_aud": 253.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -10.37, -21.14, -27.08, -42.43, -63.1, -63.1, -63.1, -63.1, -25.07, 19.71, 61.87, 89.08, 89.08, 89.08, 89.81, 92.36, 93.66, 95.43, 95.43, 112.53, 112.53, 142.2, 167.27, 209.43, 218.24, 220.97, 225.11, 228.32, 230.29, 230.29, 230.29, 230.29, 230.29, 230.29, 246.99, 258.78, 269.41, 279.19, 279.19, 279.19, 279.19, 279.19, 279.19, 279.19, 279.19], "profit_aud": 279.19}}} \ No newline at end of file diff --git a/results/daily/2026-03-13.json b/results/daily/2026-03-13.json new file mode 100644 index 0000000..77b24e0 --- /dev/null +++ b/results/daily/2026-03-13.json @@ -0,0 +1 @@ +{"date": "2026-03-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [7.55, 4.58, -0.03, 1.28, -0.37, 1.16, 2.57, 6.91, 9.65, 11.01, 1.41, 10.56, 24.05, 19.81, 2.83, -10.34, -11.93, -15.7, -18.33, -20.0, -98.19, -99.69, -164.75, -188.98, -154.06, -135.44, -257.01, -269.87, -302.85, -314.18, -285.73, -219.84, -75.56, -2.55, -28.27, 7.82, 10.88, 12.37, 10.07, 8.79, 5.19, 6.74, 6.1, 7.07, 5.62, 7.93, 8.16, 2.29], "forecast_price": {"naive": [10.98, 6.12, 8.61, 8.3, 8.61, 10.7, 12.28, 16.54, 19.84, 28.42, 25.97, 30.42, 35.82, 33.73, 21.77, -2.19, -4.29, -5.88, -20.38, -10.41, -7.08, -10.24, -13.68, -32.54, -23.74, -20.06, -33.73, -11.74, -21.81, -33.11, -25.72, -15.79, -16.78, -10.58, -5.27, -3.94, 1.09, 13.36, 9.43, 8.51, 7.82, 16.92, 17.56, 16.9, 11.43, 12.04, 15.64, 11.12], "lightgbm": [17.82, 14.39, 17.82, 17.31, 16.93, 16.93, 16.93, 17.3, 17.3, 20.37, 20.46, 21.04, 24.05, 24.36, 18.83, 11.59, 9.44, 1.36, -5.64, -7.48, -3.15, -10.73, -11.77, -13.87, -11.72, -11.43, -14.43, -10.85, -11.77, -13.33, -10.66, -4.78, 4.18, 9.62, 25.66, 44.99, 48.99, 53.02, 51.58, 48.73, 48.22, 49.22, 48.44, 48.21, 47.72, 47.72, 48.21, 47.72], "lstm": [20.78, 14.31, 10.55, 8.5, 7.77, 6.7, 4.52, 6.55, 10.36, 14.79, 19.64, 28.63, 33.74, 34.52, 23.66, 14.57, 6.23, -1.04, -6.21, -10.51, -12.27, -15.07, -19.48, -18.83, -17.89, -21.57, -22.68, -16.96, -14.76, -13.77, -10.8, -2.4, 2.98, 8.49, 20.43, 34.17, 49.28, 59.58, 62.28, 60.69, 56.49, 50.83, 53.13, 42.25, 45.24, 48.47, 48.49, 49.94]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 2.25, 1.38, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.03, -1.56, -1.1, -2.54, -3.97, -3.97, 6.88, 20.64, 18.88, 32.08, 62.15, 86.91, 86.91, 88.2, 89.69, 91.65, 93.95, 96.45, 108.72, 121.18, 182.96, 419.18, 419.18, 249.88, 410.51, 747.85, 1126.42, 1519.14, 1876.3, 1903.78, 1913.23, 1910.4, 1945.74, 1945.74, 1959.33, 1974.79, 1987.38, 1998.37, 1991.87, 1991.87, 1984.25, 1990.43, 1983.41, 1993.32, 2003.53, 2003.53], "profit_aud": 2003.53}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.75, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 2.0, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, -5.72, -5.69, -7.29, -6.82, -7.46, -7.46, -7.46, -7.46, 6.3, 6.3, 19.49, 49.56, 74.32, 74.32, 75.61, 77.1, 79.07, 101.98, 109.48, -13.25, -13.25, 7.34, 243.56, 436.14, 436.14, 757.4, 420.07, 685.06, 1077.79, 1434.95, 1434.95, 1453.84, 1454.16, 1457.69, 1456.71, 1456.71, 1472.17, 1472.17, 1470.94, 1464.45, 1472.88, 1480.51, 1489.34, 1489.34, 1489.34, 1499.54, 1499.54], "profit_aud": 1499.54}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 3.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -5.72, -5.72, -5.72, -5.26, -6.7, -9.92, -13.75, -13.75, -13.75, -11.99, 1.2, 31.27, 56.03, 56.03, 56.03, 56.03, 56.03, 60.61, 85.61, -37.12, -24.66, 181.28, 417.5, 417.5, 417.5, 738.76, 738.76, 1041.61, 1434.34, 1470.06, 1497.54, 1497.54, 1497.54, 1497.54, 1497.54, 1511.13, 1526.59, 1539.18, 1539.18, 1539.18, 1547.61, 1547.61, 1547.61, 1547.61, 1547.61, 1547.61, 1547.61], "profit_aud": 1547.61}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.71, -0.24, -1.69, -4.91, -13.54, -13.54, -13.54, -13.54, -0.34, 29.72, 54.48, 58.02, 58.02, 58.02, 59.98, 62.28, 64.78, 77.05, 89.51, 295.45, 531.67, 627.96, 797.26, 1118.52, 1152.26, 1190.12, 1229.39, 1265.1, 1292.58, 1292.58, 1292.58, 1292.58, 1292.58, 1292.58, 1308.04, 1320.63, 1331.62, 1338.11, 1338.11, 1338.11, 1329.28, 1329.28, 1329.28, 1329.28, 1331.85], "profit_aud": 1331.85}}} \ No newline at end of file diff --git a/results/daily/2026-03-14.json b/results/daily/2026-03-14.json new file mode 100644 index 0000000..a7c7030 --- /dev/null +++ b/results/daily/2026-03-14.json @@ -0,0 +1 @@ +{"date": "2026-03-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.03, -0.77, -3.5, -4.0, -4.13, -3.88, -1.69, -1.25, 3.82, 5.41, 11.51, 9.19, 9.9, 4.23, -3.48, -4.01, -4.74, -6.62, -14.4, -26.06, -32.64, -16.95, -36.78, -50.62, -42.19, -43.28, -38.99, -35.29, -22.25, -30.08, -8.08, -3.52, -4.0, -2.05, 36.35, 60.14, 61.45, 63.35, 61.11, 60.26, 59.86, 59.91, 55.45, 52.9, 52.97, 46.13, 55.36, 52.64], "forecast_price": {"naive": [7.55, 4.58, -0.03, 1.28, -0.37, 1.16, 2.57, 6.91, 9.65, 11.01, 1.41, 10.56, 24.05, 19.81, 2.83, -10.34, -11.93, -15.7, -18.33, -20.0, -98.19, -99.69, -164.75, -188.98, -154.06, -135.44, -257.01, -269.87, -302.85, -314.18, -285.73, -219.84, -75.56, -2.55, -28.27, 7.82, 10.88, 12.37, 10.07, 8.79, 5.19, 6.74, 6.1, 7.07, 5.62, 7.93, 8.16, 2.29], "lightgbm": [19.32, 17.06, 16.28, 13.77, 13.77, 12.49, 12.49, 11.37, 17.24, 18.44, 15.76, 17.87, 17.67, 17.67, -5.93, -17.45, -17.95, -19.69, -22.02, -24.13, -59.21, -68.2, -68.77, -68.77, -68.77, -68.77, -68.77, -68.77, -68.77, -67.83, -61.76, -56.37, -40.18, 10.53, 3.63, 38.14, 42.53, 42.73, 42.73, 41.92, 43.74, 41.86, 41.77, 40.92, 38.47, 40.21, 40.92, 41.89], "lstm": [15.65, 14.21, 8.94, 6.21, 3.66, 3.23, 1.27, 3.61, 3.59, 8.43, 17.14, 21.5, 17.56, 12.27, 0.13, -10.13, -23.12, -32.12, -38.96, -44.53, -43.81, -43.17, -52.84, -57.09, -55.57, -60.78, -61.76, -51.67, -47.83, -44.15, -37.06, -26.94, -10.14, -9.64, 9.37, 24.81, 46.14, 54.2, 66.34, 62.93, 57.01, 53.59, 52.81, 43.99, 45.95, 44.81, 46.41, 51.25]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.1, 4.47, 9.47, 14.64, 19.48, 20.54, 20.69, 20.69, 27.46, 41.85, 53.34, 65.71, 65.71, 66.14, 66.64, 67.24, 68.06, 69.86, 76.38, 117.18, 95.99, 118.98, 182.26, 235.0, 289.1, 337.84, 342.25, 317.55, 355.16, 356.16, 352.26, 357.26, 357.52, 357.52, 357.52, 434.33, 513.52, 589.91, 665.23, 665.23, 665.23, 665.23, 665.23, 665.23, 607.57, 669.86, 669.86], "profit_aud": 669.86}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.75, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 2.25, 1.38, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 4.38, 9.38, 14.54, 19.38, 20.32, 20.32, 24.61, 31.38, 16.99, 28.49, 40.85, 46.15, 46.15, 46.65, 47.24, 48.07, 49.87, 53.13, 57.21, 59.32, 73.12, 136.39, 136.39, 82.29, 106.66, 150.77, 178.58, 216.18, 226.28, 226.72, 227.22, 224.94, 179.5, 179.5, 256.32, 335.5, 411.89, 487.22, 412.39, 412.39, 343.08, 389.37, 323.16, 380.82, 450.03, 450.03], "profit_aud": 450.03}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 2.22, 7.38, 12.23, 14.34, 15.9, 15.9, 22.67, 22.67, 34.16, 46.53, 51.82, 52.26, 52.76, 53.35, 54.18, 55.98, 59.23, 63.31, 65.43, 111.41, 174.69, 227.43, 281.53, 305.9, 310.31, 313.09, 316.85, 317.86, 318.3, 318.8, 316.5, 271.06, 271.06, 347.88, 427.06, 503.45, 503.45, 578.28, 578.28, 578.28, 578.28, 578.28, 578.28, 578.28, 578.28], "profit_aud": 578.28}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 2.29, 7.14, 9.25, 10.81, 6.04, 6.04, 20.43, 31.92, 44.29, 49.58, 49.58, 50.08, 50.67, 51.5, 53.3, 63.07, 63.07, 63.07, 86.06, 149.34, 202.08, 256.18, 304.92, 309.33, 312.11, 315.87, 316.88, 317.32, 317.82, 318.08, 318.08, 318.08, 318.08, 397.26, 473.65, 548.98, 623.81, 623.81, 623.81, 557.68, 557.68, 551.22, 551.22, 617.03], "profit_aud": 617.03}}} \ No newline at end of file diff --git a/results/daily/2026-03-15.json b/results/daily/2026-03-15.json new file mode 100644 index 0000000..d39fe79 --- /dev/null +++ b/results/daily/2026-03-15.json @@ -0,0 +1 @@ +{"date": "2026-03-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [47.44, 50.96, 55.2, 51.53, 51.53, 50.32, 50.99, 46.25, 44.3, 49.69, 51.85, 51.52, 53.48, 30.59, -1.91, -5.0, -4.69, -6.46, -8.61, -9.37, -7.13, -5.8, -4.54, -4.68, -3.33, -2.48, -3.33, -3.33, -1.44, -4.06, 3.27, 51.7, 80.4, 66.97, 125.73, 108.49, 138.03, 207.86, 155.85, 142.38, 138.01, 118.74, 103.47, 96.2, 90.44, 87.04, 72.49, 70.3], "forecast_price": {"naive": [-0.03, -0.77, -3.5, -4.0, -4.13, -3.88, -1.69, -1.25, 3.82, 5.41, 11.51, 9.19, 9.9, 4.23, -3.48, -4.01, -4.74, -6.62, -14.4, -26.06, -32.64, -16.95, -36.78, -50.62, -42.19, -43.28, -38.99, -35.29, -22.25, -30.08, -8.08, -3.52, -4.0, -2.05, 36.35, 60.14, 61.45, 63.35, 61.11, 60.26, 59.86, 59.91, 55.45, 52.9, 52.97, 46.13, 55.36, 52.64], "lightgbm": [21.39, 21.39, 21.39, 20.08, 19.61, 18.89, 18.89, 19.11, 19.11, 20.9, 23.25, 23.84, 21.78, 17.08, 5.94, 4.89, 3.2, -1.21, -6.2, -7.94, -10.79, -8.32, -13.62, -29.74, -22.29, -22.29, -20.71, -13.62, -9.08, -10.66, -5.93, 3.96, 9.52, 17.81, 37.66, 58.37, 61.63, 64.86, 61.5, 60.63, 58.67, 58.0, 54.51, 53.1, 52.0, 46.88, 56.93, 55.74], "lstm": [64.78, 55.65, 55.82, 52.2, 48.1, 43.87, 45.2, 41.76, 37.03, 43.93, 49.73, 49.16, 46.68, 42.49, 30.61, 17.26, 11.73, 5.55, 2.08, -5.04, -6.26, -4.75, -9.63, -10.78, -10.22, -14.0, -10.18, -6.28, -5.53, -4.02, 5.31, 9.47, 23.32, 31.2, 48.19, 71.8, 99.19, 96.6, 84.81, 84.12, 76.38, 65.42, 64.52, 53.68, 60.49, 58.44, 62.06, 61.45]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.5, 2.5, 1.75, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 4.88, 3.62, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-59.3, -59.3, 2.8, 2.8, 2.8, 2.8, 2.8, -55.02, -110.39, -110.39, -58.54, -58.54, 8.31, 8.31, 8.55, 9.8, 9.8, 17.87, 28.63, 40.35, 49.26, 52.88, 52.88, 54.05, 54.05, 50.95, 52.2, 56.36, 54.77, 59.84, 59.84, 59.84, 150.28, 66.57, 208.01, 72.4, 244.93, 504.76, 699.57, 877.55, 877.55, 877.55, 877.55, 877.55, 877.55, 877.55, 877.55, 877.55], "profit_aud": 877.55}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-5.93, -12.3, -81.29, -145.7, -210.11, -273.02, -304.89, -310.67, -310.67, -248.56, -183.75, -119.35, -52.5, -52.5, -52.26, -51.64, -51.05, -50.24, -49.17, -46.82, -37.92, -45.17, -42.33, -36.48, -32.32, -29.21, -25.05, -24.63, -26.23, -21.15, -21.56, 35.82, -64.67, -73.04, -73.04, -73.04, 99.49, 359.32, 554.13, 732.11, 732.11, 732.11, 732.11, 732.11, 732.11, 623.3, 704.86, 704.86], "profit_aud": 704.86}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -62.9, -126.64, -184.46, -202.84, -202.84, -138.04, -73.64, -6.79, -6.79, -6.79, -6.79, -6.79, -5.98, -4.9, -3.73, 5.18, -1.26, 1.58, 7.42, 11.59, 14.69, 18.86, 19.28, 17.68, 22.75, 22.34, 22.34, 22.34, 22.34, 22.34, 22.34, 194.88, 454.71, 649.51, 827.49, 827.49, 827.49, 827.49, 827.49, 827.49, 718.69, 800.24, 800.24], "profit_aud": 800.24}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -14.09, -14.09, -71.91, -127.28, -127.28, -62.47, 1.93, 1.93, 1.93, 1.93, 1.93, 1.93, 1.93, 1.93, 3.1, 12.01, 5.57, 8.41, 14.25, 18.42, 21.52, 25.69, 26.11, 26.29, 26.79, 26.79, 26.79, 26.79, 26.79, 26.79, 26.79, 199.33, 459.16, 653.97, 831.94, 831.94, 831.94, 831.94, 711.69, 711.69, 711.69, 793.24, 793.24], "profit_aud": 793.24}}} \ No newline at end of file diff --git a/results/daily/2026-03-16.json b/results/daily/2026-03-16.json new file mode 100644 index 0000000..13d097a --- /dev/null +++ b/results/daily/2026-03-16.json @@ -0,0 +1 @@ +{"date": "2026-03-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [74.08, 67.57, 62.82, 60.22, 68.87, 95.47, 103.59, 88.23, 85.6, 74.56, 105.03, 163.93, 116.65, 154.4, 144.22, 125.12, 109.17, 113.07, 101.38, 133.0, 142.98, 199.17, 225.05, 173.17, 154.15, 128.05, 136.06, 138.57, 125.75, 131.96, 136.19, 161.87, 157.01, 149.56, 140.73, 138.02, 130.15, 123.85, 113.91, 110.16, 108.04, 107.88, 102.76, 106.85, 110.05, 106.71, 107.61, 113.68], "forecast_price": {"naive": [47.44, 50.96, 55.2, 51.53, 51.53, 50.32, 50.99, 46.25, 44.3, 49.69, 51.85, 51.52, 53.48, 30.59, -1.91, -5.0, -4.69, -6.46, -8.61, -9.37, -7.13, -5.8, -4.54, -4.68, -3.33, -2.48, -3.33, -3.33, -1.44, -4.06, 3.27, 51.7, 80.4, 66.97, 125.73, 108.49, 138.03, 207.86, 155.85, 142.38, 138.01, 118.74, 103.47, 96.2, 90.44, 87.04, 72.49, 70.3], "lightgbm": [57.21, 58.77, 59.84, 58.26, 57.27, 57.27, 59.33, 55.82, 60.26, 66.63, 69.81, 62.89, 62.89, 57.06, 51.37, 52.13, 49.51, 16.3, 5.07, 5.12, 13.4, 10.02, 14.0, 16.47, 15.64, 14.0, 14.0, 14.0, 14.0, 14.31, 18.15, 39.2, 50.36, 50.56, 91.44, 93.4, 107.69, 120.92, 108.83, 107.48, 107.48, 102.79, 98.02, 95.58, 94.13, 90.69, 80.04, 79.63], "lstm": [86.18, 82.01, 74.63, 71.22, 67.77, 67.61, 72.94, 66.69, 69.01, 74.3, 76.19, 80.97, 97.77, 100.91, 90.54, 67.65, 64.66, 48.57, 40.31, 29.7, 24.92, 21.2, 18.04, 19.84, 20.3, 20.12, 22.34, 23.92, 26.28, 26.58, 39.06, 44.59, 50.45, 70.69, 86.28, 115.38, 134.46, 133.86, 108.57, 109.16, 99.64, 79.93, 85.66, 69.51, 76.84, 74.0, 80.7, 77.9]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 1.62, 2.75, 3.88, 5.0, 4.0, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 4.12, 2.88, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-41.12, -125.58, -204.11, -279.39, -365.48, -270.01, -140.52, -140.52, -247.52, -340.72, -340.72, -135.81, -184.22, 8.79, 189.06, 189.06, 52.6, -88.74, -215.46, -215.46, -215.46, 33.5, 314.81, 531.27, 723.96, 563.9, 563.9, 563.9, 406.72, 241.77, 241.77, 444.11, 640.38, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25, 771.25], "profit_aud": 771.25}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.5, 2.5, 1.75, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 4.88, 3.62, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-92.6, -92.6, -21.93, -21.93, -21.93, -21.93, -21.93, -132.21, -239.21, -239.21, -134.19, -134.19, 11.63, 11.63, -6.4, -37.68, -37.68, -179.01, -305.74, -472.0, -650.73, -775.21, -775.21, -818.5, -818.5, -658.44, -709.46, -882.68, -743.09, -908.04, -908.04, -908.04, -731.4, -918.35, -760.03, -932.55, -769.87, -615.06, -472.67, -334.97, -334.97, -334.97, -334.97, -334.97, -334.97, -334.97, -334.97, -334.97], "profit_aud": -334.97}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 1.38, 1.38, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-92.6, -92.6, -92.6, -92.6, -111.89, -111.89, -111.89, -222.17, -222.17, -128.97, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, -124.42, -290.67, -469.4, -718.37, -843.27, -626.81, -434.12, -594.18, -764.26, -803.06, -803.06, -803.06, -803.06, -803.06, -803.06, -803.06, -803.06, -803.06, -640.38, -485.57, -343.18, -205.48, -205.48, -205.48, -205.48, -205.48, -205.48, -205.48, -205.48, -205.48], "profit_aud": -205.48}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -33.42, -119.51, -238.85, -238.85, -349.14, -456.14, -456.14, -456.14, -251.22, -105.41, 87.59, 267.87, 267.87, 267.87, 267.87, 267.87, 267.87, 267.87, 157.33, -123.98, -340.44, -533.13, -693.2, -693.2, -693.2, -693.2, -693.2, -693.2, -693.2, -693.2, -693.2, -693.2, -520.67, -357.99, -203.18, -203.18, -65.48, -65.48, -65.48, -65.48, -199.04, -199.04, -199.04, -77.98, -77.98], "profit_aud": -77.98}}} \ No newline at end of file diff --git a/results/daily/2026-03-17.json b/results/daily/2026-03-17.json new file mode 100644 index 0000000..8a10d42 --- /dev/null +++ b/results/daily/2026-03-17.json @@ -0,0 +1 @@ +{"date": "2026-03-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [141.87, 141.5, 150.29, 141.05, 138.62, 137.91, 137.92, 136.32, 112.4, 128.4, 139.19, 148.94, 131.84, 135.03, 138.28, 136.66, 139.32, 129.06, 130.74, 122.16, 97.58, 82.89, 88.96, 83.74, 93.21, 92.61, 104.36, 98.97, 66.8, 89.71, 88.03, 106.13, 123.42, 124.22, 123.48, 122.28, 114.82, 112.71, 110.71, 110.7, 117.31, 121.4, 120.62, 115.93, 106.7, 96.3, 105.73, 113.82], "forecast_price": {"naive": [74.08, 67.57, 62.82, 60.22, 68.87, 95.47, 103.59, 88.23, 85.6, 74.56, 105.03, 163.93, 116.65, 154.4, 144.22, 125.12, 109.17, 113.07, 101.38, 133.0, 142.98, 199.17, 225.05, 173.17, 154.15, 128.05, 136.06, 138.57, 125.75, 131.96, 136.19, 161.87, 157.01, 149.56, 140.73, 138.02, 130.15, 123.85, 113.91, 110.16, 108.04, 107.88, 102.76, 106.85, 110.05, 106.71, 107.61, 113.68], "lightgbm": [86.97, 81.29, 77.94, 71.44, 76.4, 91.82, 92.54, 87.18, 85.99, 81.08, 96.59, 111.74, 105.94, 112.13, 101.42, 94.27, 84.33, 86.89, 72.13, 71.36, 75.02, 70.59, 73.97, 66.45, 68.94, 62.94, 68.94, 68.94, 63.82, 64.12, 74.01, 82.68, 96.53, 109.52, 124.36, 124.84, 116.99, 122.28, 108.79, 104.25, 99.5, 96.35, 92.76, 92.55, 95.1, 92.55, 94.21, 97.9], "lstm": [125.6, 119.65, 109.37, 110.6, 106.91, 99.72, 107.49, 106.01, 111.09, 110.03, 113.23, 124.24, 129.61, 138.33, 130.4, 102.01, 103.53, 87.0, 76.62, 60.41, 57.29, 53.51, 52.84, 54.06, 54.65, 55.59, 56.72, 57.21, 58.13, 55.34, 62.33, 75.26, 82.11, 97.9, 106.95, 131.82, 142.81, 140.88, 121.81, 121.36, 115.45, 96.05, 104.08, 90.31, 92.53, 85.52, 92.56, 96.59]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.12, 2.12, 3.25, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -140.5, -158.47, -158.47, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, 27.7, -75.91, -187.11, -291.79, -291.79, -291.79, -161.34, -161.34, -244.84, -307.19, -417.23, -417.23, -262.96, -107.68, 46.67, 199.52, 199.52, 199.52, 199.52, 199.52, 199.52, 199.52, 199.52, 199.52, 199.52, 79.14, 79.14, 207.19], "profit_aud": 207.19}, "naive": {"charge_mw": [1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 1.62, 2.75, 3.88, 5.0, 4.0, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 4.12, 2.88, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-78.74, -255.61, -443.47, -619.79, -793.06, -655.15, -482.74, -482.74, -623.24, -783.74, -783.74, -597.57, -652.28, -483.5, -310.65, -310.65, -484.81, -646.13, -809.55, -809.55, -809.55, -705.94, -594.74, -490.07, -373.55, -489.31, -489.31, -489.31, -572.82, -684.96, -684.96, -552.29, -398.03, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33, -289.33], "profit_aud": -289.33}, "lightgbm": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.88, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -176.87, -364.73, -541.05, -714.32, -714.32, -628.12, -628.12, -628.12, -788.62, -788.62, -602.45, -437.65, -268.86, -96.02, -96.02, -96.02, -96.02, -96.02, -96.02, -96.02, -96.02, -96.02, -200.7, -252.43, -368.19, -368.19, -368.19, -451.69, -563.83, -563.83, -563.83, -563.83, -563.83, -409.48, -256.64, -113.11, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77, 27.77], "profit_aud": 27.77}, "lstm": {"charge_mw": [0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -83.41, -83.41, -256.68, -429.07, -601.48, -771.88, -771.88, -771.88, -771.88, -585.71, -420.91, -252.12, -79.28, -79.28, -79.28, -79.28, -79.28, -79.28, -79.28, -182.89, -294.09, -398.76, -515.28, -515.28, -515.28, -515.28, -515.28, -565.07, -565.07, -565.07, -565.07, -565.07, -565.07, -412.22, -268.7, -127.82, 10.57, 10.57, 10.57, 10.57, 10.57, 10.57, 10.57, -109.8, -109.8, 18.24], "profit_aud": 18.24}}} \ No newline at end of file diff --git a/results/daily/2026-03-18.json b/results/daily/2026-03-18.json new file mode 100644 index 0000000..ae0628a --- /dev/null +++ b/results/daily/2026-03-18.json @@ -0,0 +1 @@ +{"date": "2026-03-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [96.57, 104.06, 108.16, 110.77, 99.12, 101.14, 102.79, 99.04, 105.97, 103.9, 108.79, 115.62, 126.11, 123.82, 111.5, 154.19, 87.86, 112.53, 76.64, 92.64, 88.36, 81.27, 75.09, 77.9, 81.01, 112.1, 110.19, 109.53, 96.44, 102.66, 118.24, 138.28, 135.18, 136.4, 134.35, 120.1, 124.62, 122.98, 106.03, 95.42, 97.86, 105.45, 124.77, 128.34, 110.11, 94.88, 91.14, 97.71], "forecast_price": {"naive": [141.87, 141.5, 150.29, 141.05, 138.62, 137.91, 137.92, 136.32, 112.4, 128.4, 139.19, 148.94, 131.84, 135.03, 138.28, 136.66, 139.32, 129.06, 130.74, 122.16, 97.58, 82.89, 88.96, 83.74, 93.21, 92.61, 104.36, 98.97, 66.8, 89.71, 88.03, 106.13, 123.42, 124.22, 123.48, 122.28, 114.82, 112.71, 110.71, 110.7, 117.31, 121.4, 120.62, 115.93, 106.7, 96.3, 105.73, 113.82], "lightgbm": [103.12, 102.65, 98.49, 95.55, 98.7, 101.3, 101.3, 101.3, 88.12, 90.5, 103.84, 106.43, 97.28, 105.49, 106.4, 104.61, 107.36, 82.96, 72.34, 65.24, 57.05, 49.29, 50.44, 49.28, 51.21, 52.62, 50.79, 48.79, 38.98, 46.56, 46.47, 57.94, 74.08, 85.48, 103.1, 109.25, 107.29, 103.64, 101.14, 101.14, 106.63, 105.19, 101.82, 97.21, 87.8, 85.26, 87.8, 93.83], "lstm": [114.8, 115.93, 105.43, 104.14, 98.66, 93.38, 98.33, 100.78, 106.47, 103.42, 109.74, 116.11, 129.06, 132.48, 119.62, 100.41, 99.34, 84.66, 66.68, 57.91, 56.05, 53.38, 52.83, 54.18, 52.88, 50.84, 55.65, 55.31, 54.76, 58.47, 64.01, 71.47, 81.07, 91.91, 98.68, 113.35, 124.87, 128.38, 116.55, 120.74, 119.63, 96.71, 100.54, 92.65, 94.09, 81.78, 94.48, 101.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-120.72, -120.72, -120.72, -120.72, -244.62, -371.05, -428.1, -551.9, -551.9, -551.9, -551.9, -407.37, -249.74, -94.97, -94.97, 97.77, -12.06, 114.54, 18.75, 76.65, 76.65, -24.93, -118.8, -216.17, -317.43, -191.32, -191.32, -191.32, -311.87, -311.87, -311.87, -139.01, 29.96, 200.47, 368.4, 368.4, 368.4, 368.4, 368.4, 249.13, 126.8, 97.27, 253.24, 413.66, 413.66, 413.66, 413.66, 413.66], "profit_aud": 413.66}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.12, 2.12, 3.25, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -132.47, -147.01, -147.01, -2.49, -2.49, -2.49, -2.49, -2.49, -2.49, -2.49, -2.49, -2.49, -2.49, -104.07, -197.94, -295.31, -295.31, -295.31, -157.57, -157.57, -278.12, -349.47, -497.28, -497.28, -328.3, -157.8, 10.14, 160.26, 160.26, 160.26, 160.26, 160.26, 160.26, 160.26, 160.26, 160.26, 160.26, 41.67, 41.67, 151.59], "profit_aud": 151.59}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.75, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 3.38, 2.12, 2.12, 2.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -138.46, -138.46, -138.46, -138.46, -138.46, -270.93, -400.8, -400.8, -256.28, -256.28, -256.28, -158.71, -158.71, -48.89, -48.89, -48.89, -48.89, -48.89, -48.89, -48.89, -92.12, -92.12, -92.12, -92.12, -229.04, -349.59, -477.91, -625.71, -625.71, -625.71, -625.71, -625.71, -475.59, -319.82, -319.82, -319.82, -319.82, -197.49, -65.67, -65.67, -65.67, -65.67, -65.67, -65.67, -65.67], "profit_aud": -65.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -123.91, -250.34, -378.82, -502.62, -502.62, -560.28, -560.28, -415.76, -258.12, -103.35, 36.02, 36.02, 36.02, 36.02, 36.02, 36.02, 36.02, -65.56, -159.43, -202.66, -303.93, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -444.06, -288.29, -134.56, -134.56, -15.29, 107.04, 107.04, 107.04, 107.04, 107.04, -11.55, -11.55, 98.37], "profit_aud": 98.37}}} \ No newline at end of file diff --git a/results/daily/2026-03-19.json b/results/daily/2026-03-19.json new file mode 100644 index 0000000..725c95a --- /dev/null +++ b/results/daily/2026-03-19.json @@ -0,0 +1 @@ +{"date": "2026-03-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [96.25, 96.76, 98.04, 100.16, 99.16, 100.49, 101.85, 103.61, 111.22, 128.94, 136.73, 143.66, 138.77, 140.2, 144.15, 150.05, 154.57, 137.0, 127.71, 125.28, 103.96, 130.22, 111.18, 95.88, 92.27, 99.23, 109.5, 96.09, 104.81, 94.21, 105.45, 99.77, 94.37, 99.5, 127.19, 141.43, 140.52, 146.92, 138.62, 132.16, 124.67, 111.24, 109.62, 100.48, 106.74, 110.98, 117.51, 115.2], "forecast_price": {"naive": [96.57, 104.06, 108.16, 110.77, 99.12, 101.14, 102.79, 99.04, 105.97, 103.9, 108.79, 115.62, 126.11, 123.82, 111.5, 154.19, 87.86, 112.53, 76.64, 92.64, 88.36, 81.27, 75.09, 77.9, 81.01, 112.1, 110.19, 109.53, 96.44, 102.66, 118.24, 138.28, 135.18, 136.4, 134.35, 120.1, 124.62, 122.98, 106.03, 95.42, 97.86, 105.45, 124.77, 128.34, 110.11, 94.88, 91.14, 97.71], "lightgbm": [83.9, 85.88, 87.61, 84.34, 80.83, 80.83, 80.83, 80.61, 81.23, 81.4, 87.51, 92.24, 95.87, 95.87, 90.1, 103.31, 70.26, 75.58, 54.17, 55.86, 53.79, 48.3, 45.03, 40.04, 46.67, 54.91, 52.58, 54.74, 51.11, 51.82, 61.63, 79.98, 90.62, 106.4, 114.15, 107.29, 111.16, 109.25, 97.11, 94.37, 95.82, 93.42, 103.62, 100.77, 90.83, 85.26, 81.56, 87.16], "lstm": [121.87, 112.38, 103.33, 105.17, 98.57, 102.64, 100.88, 99.32, 108.04, 108.9, 117.36, 121.24, 133.81, 146.12, 137.0, 111.6, 107.63, 97.14, 82.01, 66.49, 66.44, 62.41, 59.19, 60.9, 59.16, 59.32, 64.28, 67.94, 62.86, 62.9, 74.28, 85.91, 93.47, 109.37, 106.71, 136.65, 128.82, 136.09, 126.81, 129.39, 126.11, 109.19, 105.7, 106.23, 95.73, 88.36, 104.52, 106.77]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 1.62, 2.75, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-120.32, -241.27, -363.82, -419.41, -543.36, -543.36, -543.36, -543.36, -543.36, -543.36, -543.36, -363.78, -363.78, -363.78, -183.6, 3.97, 197.18, 197.18, 197.18, 197.18, 67.23, 213.73, 213.73, 93.88, -21.45, -21.45, 46.98, -73.12, -73.12, -190.88, -190.88, -190.88, -308.85, -308.85, -308.85, -132.06, 43.59, 227.24, 400.51, 400.51, 400.51, 400.51, 400.51, 274.91, 274.91, 274.91, 407.11, 407.11], "profit_aud": 407.11}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-120.32, -120.32, -120.32, -120.32, -244.27, -369.88, -426.41, -555.92, -555.92, -555.92, -555.92, -376.34, -202.88, -27.63, -27.63, 159.93, -33.28, 120.84, -38.8, 39.5, 39.5, -123.28, -262.25, -382.1, -497.43, -385.8, -385.8, -385.8, -516.81, -516.81, -516.81, -392.1, -274.14, -149.76, 9.23, 9.23, 9.23, 9.23, 9.23, -155.97, -311.81, -342.96, -205.93, -80.33, -80.33, -80.33, -80.33, -80.33], "profit_aud": -80.33}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -123.95, -249.57, -376.88, -506.39, -568.12, -568.12, -568.12, -388.54, -215.08, -39.83, -39.83, 147.73, 147.73, 147.73, 147.73, 147.73, 147.73, -15.04, -154.02, -273.86, -389.2, -389.2, -389.2, -389.2, -447.37, -447.37, -447.37, -447.37, -447.37, -447.37, -288.38, -111.59, 64.06, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71, 247.71], "profit_aud": 247.71}, "lstm": {"charge_mw": [0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -54.41, -54.41, -178.37, -303.98, -431.3, -560.81, -560.81, -560.81, -560.81, -381.22, -207.77, -32.52, 147.67, 147.67, 147.67, 147.67, 147.67, 147.67, 147.67, 75.39, -63.58, -183.43, -298.76, -422.8, -422.8, -422.8, -422.8, -422.8, -422.8, -422.8, -422.8, -422.8, -422.8, -246.01, -70.36, 113.29, 113.29, 278.49, 278.49, 278.49, 278.49, 278.49, 263.54, 124.82, 124.82, 268.82], "profit_aud": 268.82}}} \ No newline at end of file diff --git a/results/daily/2026-03-20.json b/results/daily/2026-03-20.json new file mode 100644 index 0000000..ea3045b --- /dev/null +++ b/results/daily/2026-03-20.json @@ -0,0 +1 @@ +{"date": "2026-03-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [135.49, 140.06, 138.01, 133.79, 138.4, 143.41, 137.73, 118.62, 114.15, 123.36, 152.35, 145.17, 150.52, 154.06, 142.84, 126.73, 144.76, 105.25, 111.22, 77.44, 60.64, 23.57, 26.1, 14.61, 13.24, 3.38, -1.03, -4.56, -5.15, -4.73, -5.38, 7.18, 21.78, 86.74, 92.5, 99.47, 109.21, 107.3, 103.79, 97.2, 85.42, 83.03, 87.26, 95.88, 104.59, 120.17, 110.61, 120.01], "forecast_price": {"naive": [96.25, 96.76, 98.04, 100.16, 99.16, 100.49, 101.85, 103.61, 111.22, 128.94, 136.73, 143.66, 138.77, 140.2, 144.15, 150.05, 154.57, 137.0, 127.71, 125.28, 103.96, 130.22, 111.18, 95.88, 92.27, 99.23, 109.5, 96.09, 104.81, 94.21, 105.45, 99.77, 94.37, 99.5, 127.19, 141.43, 140.52, 146.92, 138.62, 132.16, 124.67, 111.24, 109.62, 100.48, 106.74, 110.98, 117.51, 115.2], "lightgbm": [84.7, 84.7, 85.49, 82.66, 82.17, 82.17, 81.6, 81.6, 84.64, 89.86, 103.47, 103.94, 107.66, 107.01, 104.59, 104.24, 98.09, 92.34, 68.79, 64.45, 52.82, 56.72, 51.12, 48.26, 45.35, 49.66, 50.42, 48.26, 49.89, 48.26, 52.9, 55.18, 59.44, 70.67, 101.45, 124.12, 124.12, 124.12, 122.48, 112.3, 110.47, 97.33, 93.45, 87.16, 87.8, 91.52, 97.21, 97.21], "lstm": [134.54, 121.69, 107.83, 114.82, 108.18, 108.59, 106.87, 113.0, 112.82, 119.67, 120.64, 122.08, 140.18, 153.88, 130.1, 117.88, 112.15, 99.83, 88.76, 75.32, 71.49, 68.1, 61.58, 61.84, 67.56, 66.38, 66.67, 68.56, 65.59, 64.66, 72.66, 90.89, 94.07, 107.87, 101.49, 120.96, 118.25, 134.27, 127.56, 124.48, 121.93, 113.02, 114.87, 108.46, 109.4, 100.88, 117.06, 117.69]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.38, 0.38, 0.38, 0.38, 1.5, 2.62, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -55.52, -55.52, -55.52, -55.52, -203.8, -346.49, -500.69, -310.25, -310.25, -122.1, 70.47, 70.47, -87.94, 74.92, 74.92, 74.92, 74.92, 74.92, 74.92, 74.92, 74.92, 74.92, 74.92, 75.56, 81.26, 87.7, 93.62, 100.34, 100.34, 100.34, 100.34, 100.34, 100.34, 236.85, 370.97, 461.79, 461.79, 355.01, 251.23, 142.15, 142.15, 272.89, 423.1, 561.36, 711.37], "profit_aud": 711.37}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 1.62, 2.75, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-169.36, -344.44, -516.95, -591.21, -764.2, -764.2, -764.2, -764.2, -764.2, -764.2, -764.2, -582.74, -582.74, -582.74, -404.19, -245.78, -64.83, -64.83, -64.83, -64.83, -140.63, -114.11, -114.11, -132.37, -148.93, -148.93, -149.57, -143.87, -143.87, -137.96, -137.96, -137.96, -165.18, -165.18, -165.18, -40.84, 95.67, 229.79, 359.53, 359.53, 359.53, 359.53, 359.53, 239.67, 239.67, 239.67, 364.11, 364.11], "profit_aud": 364.11}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -74.26, -247.25, -426.51, -598.67, -746.95, -746.95, -746.95, -746.95, -746.95, -558.8, -366.23, -187.67, -29.27, -29.27, -29.27, -29.27, -29.27, -29.27, -29.27, -29.27, -47.53, -64.09, -65.96, -65.96, -60.26, -60.26, -54.35, -54.35, -54.35, -54.35, -54.35, -54.35, 69.99, 206.51, 340.63, 470.36, 470.36, 470.36, 470.36, 470.36, 350.51, 350.51, 350.51, 474.95, 474.95], "profit_aud": 474.95}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -172.52, -172.52, -345.51, -524.77, -696.93, -696.93, -696.93, -696.93, -696.93, -588.05, -399.9, -207.33, -28.78, -28.78, -28.78, -28.78, -28.78, -28.78, -28.78, -28.78, -61.41, -79.67, -79.67, -81.55, -81.55, -81.55, -75.1, -69.19, -69.19, -69.19, -69.19, -69.19, -69.19, -69.19, -69.19, 64.93, 194.67, 316.16, 422.94, 422.94, 422.94, 422.94, 422.94, 272.73, 272.73, 407.73], "profit_aud": 407.73}}} \ No newline at end of file diff --git a/results/daily/2026-03-21.json b/results/daily/2026-03-21.json new file mode 100644 index 0000000..80a67db --- /dev/null +++ b/results/daily/2026-03-21.json @@ -0,0 +1 @@ +{"date": "2026-03-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [125.07, 135.68, 137.36, 153.29, 134.34, 130.74, 137.2, 138.0, 148.07, 141.09, 124.95, 124.3, 134.48, 176.62, 135.53, 56.86, 25.01, 9.17, 1.84, -3.61, -5.33, -13.87, -13.11, -9.32, -27.99, -25.18, -14.84, -65.31, -53.46, -51.06, -6.84, -9.93, -3.15, 8.8, 64.53, 97.63, 115.24, 114.31, 113.68, 108.93, 123.47, 121.15, 129.65, 127.48, 133.41, 130.86, 135.76, 144.42], "forecast_price": {"naive": [135.49, 140.06, 138.01, 133.79, 138.4, 143.41, 137.73, 118.62, 114.15, 123.36, 152.35, 145.17, 150.52, 154.06, 142.84, 126.73, 144.76, 105.25, 111.22, 77.44, 60.64, 23.57, 26.1, 14.61, 13.24, 3.38, -1.03, -4.56, -5.15, -4.73, -5.38, 7.18, 21.78, 86.74, 92.5, 99.47, 109.21, 107.3, 103.79, 97.2, 85.42, 83.03, 87.26, 95.88, 104.59, 120.17, 110.61, 120.01], "lightgbm": [94.99, 93.97, 92.81, 85.9, 89.61, 87.27, 87.27, 83.5, 83.5, 81.98, 86.14, 86.5, 84.95, 84.95, 84.1, 73.12, 76.55, 54.84, 46.34, 24.86, 20.29, 6.41, 0.37, -3.45, -3.45, -4.51, -3.8, -4.06, 0.96, -2.46, 3.8, 19.7, 23.48, 55.14, 74.33, 91.6, 95.97, 94.47, 92.53, 92.0, 85.51, 83.29, 79.81, 82.55, 83.62, 93.1, 87.47, 93.34], "lstm": [102.8, 94.19, 87.91, 82.42, 79.03, 75.74, 73.0, 81.11, 76.25, 72.69, 83.73, 80.42, 80.85, 81.82, 64.28, 50.91, 45.11, 35.02, 27.95, 20.32, 17.28, 12.2, 11.62, 8.19, 8.42, 8.75, 11.57, 12.72, 15.03, 15.05, 27.22, 41.92, 49.34, 62.35, 72.71, 84.92, 93.76, 99.12, 101.52, 100.85, 105.57, 98.3, 93.67, 95.84, 84.68, 84.15, 93.71, 99.95]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-156.34, -175.33, -175.33, 16.28, 16.28, -147.15, -147.15, -147.15, 19.43, 19.43, 1.94, -153.43, -153.43, 67.34, 67.34, 67.34, 67.34, 67.34, 67.34, 67.79, 68.46, 85.79, 89.07, 77.43, 112.41, 143.88, 135.65, 217.28, 284.11, 347.93, 340.35, 352.76, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 353.16, 519.91, 683.5, 853.2, 1033.73], "profit_aud": 1033.73}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.38, 0.38, 0.38, 0.38, 1.5, 2.62, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -63.61, -63.61, -63.61, -63.61, -236.11, -421.21, -597.57, -441.38, -441.38, -273.28, -52.51, -52.51, -123.6, -95.46, -95.46, -95.46, -95.46, -95.46, -95.46, -95.46, -95.46, -95.46, -95.46, -86.18, -4.55, 62.28, 126.1, 134.65, 134.65, 134.65, 134.65, 134.65, 134.65, 278.69, 421.58, 521.05, 521.05, 366.71, 215.28, 53.22, 53.22, 219.98, 383.56, 553.26, 733.79], "profit_aud": 733.79}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.64, 29.14, 60.61, 79.16, 160.8, 100.66, 164.48, 164.48, 164.48, 164.48, 164.48, 164.48, 164.48, 308.53, 451.42, 593.52, 702.45, 702.45, 702.45, 540.39, 381.05, 381.05, 544.63, 544.63, 725.16], "profit_aud": 725.16}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -171.5, -171.5, -171.5, -347.87, -191.68, -191.68, -191.68, -15.06, -15.06, -15.06, -15.06, -15.06, -15.06, -15.06, -15.06, -15.06, -7.79, 3.85, 38.84, 70.31, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 88.87, 231.76, 373.86, 510.02, 664.36, 664.36, 664.36, 664.36, 645.68, 482.1, 482.1, 662.63], "profit_aud": 662.63}}} \ No newline at end of file diff --git a/results/daily/2026-03-22.json b/results/daily/2026-03-22.json new file mode 100644 index 0000000..01e7f9c --- /dev/null +++ b/results/daily/2026-03-22.json @@ -0,0 +1 @@ +{"date": "2026-03-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [145.6, 139.24, 180.95, 178.92, 182.05, 172.46, 138.85, 134.34, 136.58, 132.21, 126.24, 115.31, 110.68, 74.1, 29.86, -0.15, 0.15, -5.05, -7.28, -24.8, -22.92, -16.86, -15.08, -34.4, -31.2, -19.28, -12.35, -4.0, -4.33, -5.0, -2.36, 8.11, 19.31, 81.75, 104.65, 128.93, 142.65, 132.27, 128.46, 127.62, 105.12, 117.19, 116.33, 103.64, 100.19, 86.17, 110.29, 120.78], "forecast_price": {"naive": [125.07, 135.68, 137.36, 153.29, 134.34, 130.74, 137.2, 138.0, 148.07, 141.09, 124.95, 124.3, 134.48, 176.62, 135.53, 56.86, 25.01, 9.17, 1.84, -3.61, -5.33, -13.87, -13.11, -9.32, -27.99, -25.18, -14.84, -65.31, -53.46, -51.06, -6.84, -9.93, -3.15, 8.8, 64.53, 97.63, 115.24, 114.31, 113.68, 108.93, 123.47, 121.15, 129.65, 127.48, 133.41, 130.86, 135.76, 144.42], "lightgbm": [83.0, 77.77, 75.42, 72.32, 73.38, 76.4, 69.87, 68.84, 68.19, 68.84, 75.27, 75.6, 69.57, 63.1, 67.63, 40.58, 26.01, 12.37, 4.67, -1.78, -6.9, -10.38, -10.12, -11.03, -13.0, -10.97, -10.44, -24.56, -23.04, -21.3, -3.03, 9.97, 22.55, 35.41, 63.92, 96.68, 106.65, 107.54, 104.28, 100.17, 108.48, 103.75, 103.4, 100.4, 100.42, 99.08, 99.2, 101.16], "lstm": [142.25, 121.73, 126.71, 118.15, 109.29, 104.37, 103.57, 103.55, 100.23, 94.89, 111.51, 103.51, 98.44, 91.77, 60.35, 49.98, 38.46, 27.98, 22.58, 10.44, 8.38, 4.94, 1.41, -0.45, 1.44, -4.69, 0.13, 1.03, 6.73, 7.29, 18.73, 37.39, 48.44, 72.46, 80.89, 103.15, 130.93, 138.06, 132.45, 131.62, 126.6, 120.9, 108.07, 106.08, 95.14, 103.54, 109.48, 111.01]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-181.99, -356.04, -175.1, -175.1, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.47, 52.65, 52.82, 53.46, 54.37, 85.36, 114.01, 126.66, 107.81, 150.81, 189.81, 213.9, 215.45, 211.57, 211.57, 217.82, 218.11, 218.11, 218.11, 218.11, 218.11, 379.27, 557.59, 722.92, 883.5, 883.5, 752.1, 883.94, 883.94, 883.94, 869.92, 762.2, 762.2, 913.17], "profit_aud": 913.17}, "naive": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-181.99, -201.49, -201.49, 22.16, 22.16, -193.41, -193.41, -193.41, -39.75, -39.75, -57.42, -201.57, -201.57, -108.95, -108.95, -108.95, -108.95, -108.95, -108.95, -105.85, -102.98, -81.91, -78.14, -121.14, -82.13, -58.04, -64.89, -59.89, -54.48, -48.23, -50.85, -60.99, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, 61.83, 169.55, 307.41, 458.38], "profit_aud": 458.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.75, 1.88, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.1, 5.96, 10.18, 10.18, 40.28, 79.28, 79.28, 79.28, 84.28, 89.7, 95.95, 96.24, 96.24, 96.24, 96.24, 96.24, 96.24, 274.56, 439.89, 600.47, 600.47, 731.87, 731.87, 731.87, 731.87, 731.87, 731.87, 731.87, 731.87], "profit_aud": 731.87}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -19.12, -184.38, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -26.59, -18.22, 24.78, 24.78, 48.88, 64.31, 69.31, 69.31, 69.31, 69.31, 69.31, 69.31, 69.31, 69.31, 69.31, 247.63, 412.96, 573.54, 733.07, 733.07, 733.07, 733.07, 733.07, 607.83, 607.83, 607.83, 743.7], "profit_aud": 743.7}}} \ No newline at end of file diff --git a/results/daily/2026-03-23.json b/results/daily/2026-03-23.json new file mode 100644 index 0000000..9d4511f --- /dev/null +++ b/results/daily/2026-03-23.json @@ -0,0 +1 @@ +{"date": "2026-03-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [123.21, 122.45, 111.56, 94.08, 97.57, 93.65, 87.2, 105.03, 107.88, 110.8, 109.4, 115.39, 122.18, 127.26, 87.4, 26.48, 22.61, 5.08, -2.89, 0.64, -2.94, -2.67, -4.73, -1.26, -0.41, 38.74, 4.36, 26.7, 18.48, 41.04, 57.83, 74.62, 120.55, 136.47, 145.16, 184.18, 240.7, 141.18, 130.19, 154.04, 156.23, 144.87, 138.89, 138.01, 127.47, 138.03, 161.61, 138.2], "forecast_price": {"naive": [145.6, 139.24, 180.95, 178.92, 182.05, 172.46, 138.85, 134.34, 136.58, 132.21, 126.24, 115.31, 110.68, 74.1, 29.86, -0.15, 0.15, -5.05, -7.28, -24.8, -22.92, -16.86, -15.08, -34.4, -31.2, -19.28, -12.35, -4.0, -4.33, -5.0, -2.36, 8.11, 19.31, 81.75, 104.65, 128.93, 142.65, 132.27, 128.46, 127.62, 105.12, 117.19, 116.33, 103.64, 100.19, 86.17, 110.29, 120.78], "lightgbm": [81.29, 81.29, 73.9, 74.99, 74.86, 77.74, 77.26, 79.79, 77.78, 82.71, 86.99, 91.4, 94.26, 96.41, 88.31, 71.86, 63.76, 44.54, 30.55, 20.52, 21.34, 19.86, 17.72, 17.0, 17.0, 15.47, 16.82, 24.91, 24.91, 25.81, 28.87, 36.44, 40.09, 81.3, 103.75, 119.95, 125.58, 120.92, 120.07, 120.07, 111.22, 113.23, 109.65, 101.4, 101.4, 95.37, 104.39, 108.4], "lstm": [109.88, 100.77, 96.0, 90.58, 88.07, 87.76, 90.3, 85.04, 89.13, 90.03, 102.06, 107.16, 127.38, 136.02, 109.7, 90.66, 77.56, 59.4, 45.59, 29.97, 25.56, 20.11, 14.44, 13.8, 14.73, 13.93, 16.26, 16.74, 22.61, 23.31, 37.56, 56.08, 61.2, 88.13, 108.7, 140.71, 151.84, 155.45, 138.75, 136.81, 135.85, 114.95, 112.33, 106.59, 99.62, 103.0, 108.48, 110.03]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 1.5, 1.5, 2.62, 1.38, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -117.6, -239.55, -356.62, -465.62, -465.62, -465.62, -382.52, -382.52, -238.29, -85.56, 73.51, 73.51, 73.51, 73.51, 73.51, 77.13, 77.85, 81.52, 84.85, 90.76, 92.33, 92.59, 141.02, 135.56, 162.27, 139.17, 139.17, 139.17, 139.17, 139.17, 139.17, 284.33, 514.56, 815.44, 815.44, 652.7, 845.25, 1040.53, 1040.53, 1040.53, 1040.53, 881.19, 881.19, 1083.21, 1083.21], "profit_aud": 1083.21}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-154.01, -307.08, -195.52, -195.52, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -73.56, -106.66, -81.22, -81.86, -81.49, -82.29, -78.62, -76.62, -82.53, -80.95, -80.44, -128.87, -129.42, -103.51, -103.51, -154.82, -162.05, -162.05, -162.05, -162.05, -162.05, 68.18, 369.06, 545.53, 708.27, 708.27, 512.99, 675.97, 675.97, 675.97, 658.13, 485.59, 485.59, 658.34], "profit_aud": 658.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -139.45, -257.05, -379.0, -430.98, -539.98, -539.98, -539.98, -539.98, -539.98, -395.75, -243.02, -83.95, 25.3, 25.3, 25.3, 25.3, 25.3, 25.3, 25.3, 25.3, 27.92, 29.5, 30.01, -18.42, -23.87, -23.87, -23.87, -23.87, -23.87, -23.87, -23.87, -23.87, -23.87, -23.87, 277.01, 453.48, 616.22, 808.77, 808.77, 808.77, 808.77, 808.77, 808.77, 636.24, 636.24, 791.71], "profit_aud": 791.71}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -121.96, -239.03, -239.03, -370.31, -505.16, -566.66, -566.66, -422.42, -269.69, -110.62, -1.38, -1.38, -1.38, -1.38, -1.38, -1.38, -1.38, -1.38, 4.53, 6.1, 6.61, -41.82, -44.24, -44.24, -44.24, -44.24, -44.24, -44.24, -44.24, -44.24, -44.24, 185.99, 486.87, 663.34, 826.08, 826.08, 826.08, 826.08, 826.08, 826.08, 826.08, 826.08, 826.08, 826.08], "profit_aud": 826.08}}} \ No newline at end of file diff --git a/results/daily/2026-03-24.json b/results/daily/2026-03-24.json new file mode 100644 index 0000000..38773bf --- /dev/null +++ b/results/daily/2026-03-24.json @@ -0,0 +1 @@ +{"date": "2026-03-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [138.38, 161.67, 400.8, 177.77, 138.18, 268.46, 190.24, 199.74, 208.25, 171.66, 138.8, 140.83, 142.62, 149.74, 111.62, 47.24, 40.49, 43.92, 45.47, 150.72, 90.68, 43.52, 57.24, 41.14, 11.07, 27.27, 40.19, 65.1, 70.72, 85.23, 146.3, 138.04, 122.24, 142.3, 153.27, 142.6, 154.01, 152.13, 141.69, 150.9, 156.66, 146.78, 123.75, 112.37, 121.68, 172.72, 170.44, 222.64], "forecast_price": {"naive": [123.21, 122.45, 111.56, 94.08, 97.57, 93.65, 87.2, 105.03, 107.88, 110.8, 109.4, 115.39, 122.18, 127.26, 87.4, 26.48, 22.61, 5.08, -2.89, 0.64, -2.94, -2.67, -4.73, -1.26, -0.41, 38.74, 4.36, 26.7, 18.48, 41.04, 57.83, 74.62, 120.55, 136.47, 145.16, 184.18, 240.7, 141.18, 130.19, 154.04, 156.23, 144.87, 138.89, 138.01, 127.47, 138.03, 161.61, 138.2], "lightgbm": [96.13, 97.34, 95.43, 87.17, 86.66, 85.19, 82.81, 86.75, 89.49, 89.14, 94.45, 99.24, 100.61, 98.18, 87.67, 67.46, 62.21, 41.97, 34.1, 25.05, 24.02, 23.25, 21.05, 19.11, 19.11, 33.24, 21.05, 27.15, 26.26, 33.84, 50.85, 57.04, 77.65, 107.68, 116.82, 127.33, 135.17, 120.35, 112.71, 120.35, 120.47, 117.72, 114.22, 112.12, 103.38, 111.18, 111.87, 111.32], "lstm": [162.64, 141.92, 140.61, 134.8, 124.02, 121.2, 127.01, 117.32, 129.04, 121.2, 134.57, 144.08, 158.24, 165.34, 137.57, 100.48, 90.48, 66.58, 54.81, 33.49, 34.43, 25.59, 20.67, 19.45, 24.8, 19.23, 23.28, 23.82, 31.58, 31.18, 45.38, 63.9, 78.11, 101.08, 124.43, 155.84, 177.9, 172.66, 160.0, 147.24, 146.65, 129.61, 136.82, 114.41, 116.44, 112.59, 115.23, 120.68]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 2.12, 3.25, 2.0, 2.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.12, 1.88, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.62, 1.62, 1.62, 0.38, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-172.98, -375.06, 125.94, -96.27, -269.0, 66.57, 66.57, 216.38, 476.68, 476.68, 476.68, 476.68, 476.68, 476.68, 476.68, 476.68, 426.07, 371.17, 327.06, 515.46, 628.81, 574.42, 645.96, 594.54, 580.7, 546.61, 496.37, 496.37, 496.37, 496.37, 660.96, 660.96, 508.15, 508.15, 699.73, 699.73, 892.25, 1025.37, 1025.37, 1025.37, 1221.19, 1221.19, 1066.51, 926.04, 773.95, 989.84, 1202.89, 1481.19], "profit_aud": 1481.19}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 1.5, 1.5, 2.62, 1.38, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -222.21, -394.94, -730.52, -968.33, -968.33, -968.33, -839.58, -839.58, -663.54, -485.26, -298.08, -298.08, -298.08, -298.08, -298.08, -354.92, -185.36, -298.71, -353.11, -424.65, -476.08, -483.0, -448.91, -499.15, -434.05, -522.44, -522.44, -522.44, -522.44, -522.44, -522.44, -369.17, -190.93, 1.59, 1.59, -175.52, 13.11, 208.93, 208.93, 208.93, 208.93, 56.83, 56.83, 269.88, 269.88], "profit_aud": 269.88}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.73, -508.31, -746.11, -829.01, -829.01, -829.01, -829.01, -652.97, -474.68, -287.51, -287.51, -287.51, -287.51, -287.51, -287.51, -287.51, -337.83, -392.23, -463.77, -515.2, -529.04, -494.95, -545.19, -545.19, -555.09, -555.09, -555.09, -555.09, -555.09, -555.09, -555.09, -376.84, -184.32, 5.84, 5.84, 5.84, 201.66, 201.66, 201.66, 201.66, 201.66, 201.66, 201.66, 201.66], "profit_aud": 201.66}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 1.5, 2.62, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -57.35, -392.92, -392.92, -642.59, -642.59, -857.17, -857.17, -681.13, -502.85, -315.67, -315.67, -315.67, -315.67, -315.67, -315.67, -315.67, -315.67, -315.67, -387.22, -438.64, -438.64, -472.74, -522.98, -559.11, -559.11, -559.11, -559.11, -559.11, -559.11, -559.11, -559.11, -380.86, -188.34, 1.82, 178.94, 178.94, 178.94, 178.94, 178.94, 178.94, 178.94, 178.94, 178.94, 178.94], "profit_aud": 178.94}}} \ No newline at end of file diff --git a/results/daily/2026-03-25.json b/results/daily/2026-03-25.json new file mode 100644 index 0000000..9fa2c54 --- /dev/null +++ b/results/daily/2026-03-25.json @@ -0,0 +1 @@ +{"date": "2026-03-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [282.12, 216.81, 197.59, 207.88, 191.16, 174.57, 183.66, 235.59, 210.8, 336.13, 182.68, 151.13, 143.06, 145.09, 97.79, 12.75, 31.31, 28.09, 108.11, 220.68, 29.52, 83.98, 5.57, 25.61, 103.82, 57.38, 43.61, 49.7, 53.58, 49.04, 80.1, 113.66, 101.91, 109.48, 118.5, 117.15, 114.94, 106.36, 100.01, 77.57, 85.58, 92.37, 85.38, 83.75, 99.14, 100.0, 108.05, 95.55], "forecast_price": {"naive": [138.38, 161.67, 400.8, 177.77, 138.18, 268.46, 190.24, 199.74, 208.25, 171.66, 138.8, 140.83, 142.62, 149.74, 111.62, 47.24, 40.49, 43.92, 45.47, 150.72, 90.68, 43.52, 57.24, 41.14, 11.07, 27.27, 40.19, 65.1, 70.72, 85.23, 146.3, 138.04, 122.24, 142.3, 153.27, 142.6, 154.01, 152.13, 141.69, 150.9, 156.66, 146.78, 123.75, 112.37, 121.68, 172.72, 170.44, 222.64], "lightgbm": [119.08, 119.08, 124.4, 113.23, 111.22, 120.92, 113.95, 112.19, 111.56, 112.51, 115.3, 113.51, 116.83, 116.83, 104.54, 69.3, 68.99, 55.02, 47.33, 85.09, 67.06, 39.38, 50.35, 36.54, 28.27, 29.59, 37.51, 54.73, 57.69, 63.17, 77.37, 86.22, 93.25, 121.97, 125.13, 137.52, 139.77, 133.45, 136.57, 136.74, 135.42, 131.66, 112.13, 102.32, 111.23, 127.16, 128.18, 134.96], "lstm": [181.58, 175.74, 165.43, 164.71, 142.08, 136.09, 144.87, 141.35, 156.17, 141.55, 159.0, 158.88, 164.75, 163.34, 129.82, 96.62, 89.28, 70.74, 52.97, 38.71, 39.31, 34.48, 31.67, 28.01, 30.04, 28.09, 34.32, 31.62, 37.84, 39.15, 49.09, 66.83, 77.74, 97.52, 112.87, 144.9, 156.95, 163.91, 161.47, 158.13, 153.14, 129.38, 130.14, 120.52, 127.15, 109.3, 119.17, 129.83]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 0.75, 1.88, 3.0, 1.75, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -53.53, -271.74, -501.32, -206.83, -206.83, 213.33, 213.33, 213.33, 213.33, 213.33, 213.33, 197.4, 158.26, 123.15, 258.29, 534.13, 497.23, 602.2, 595.24, 563.22, 693.0, 700.18, 645.66, 583.54, 583.54, 522.23, 522.23, 664.31, 664.31, 664.31, 812.44, 958.88, 1102.55, 1102.55, 1102.55, 1005.59, 898.62, 898.62, 791.9, 687.21, 811.13, 936.13, 1071.19, 1142.86], "profit_aud": 1142.86}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 1.0, 2.12, 3.25, 2.0, 2.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.12, 1.88, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.62, 1.62, 1.62, 0.38, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-352.65, -623.66, -376.68, -636.53, -875.48, -657.27, -657.27, -480.58, -217.07, -217.07, -217.07, -217.07, -217.07, -217.07, -217.07, -217.07, -256.22, -291.33, -396.2, -120.35, -83.45, -188.42, -181.46, -213.48, -343.25, -414.98, -469.49, -469.49, -469.49, -469.49, -379.38, -379.38, -506.77, -506.77, -358.64, -358.64, -214.96, -121.9, -121.9, -121.9, -14.93, -14.93, -121.65, -226.34, -350.26, -225.26, -90.2, 29.24], "profit_aud": 29.24}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -35.11, -170.25, 105.59, 135.11, 30.14, 33.62, 1.61, -128.17, -199.9, -254.41, -254.41, -254.41, -254.41, -254.41, -254.41, -254.41, -254.41, -254.41, -107.97, 35.7, 35.7, 160.72, 257.68, 257.68, 257.68, 150.96, 46.27, -77.65, 9.85, 144.91, 264.35], "profit_aud": 264.35}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.38, 4.5, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -238.95, -457.17, -457.17, -751.65, -751.65, -1171.81, -943.47, -830.12, -651.29, -469.93, -469.93, -469.93, -469.93, -469.93, -469.93, -469.93, -469.93, -469.93, -473.02, -505.04, -634.82, -706.54, -706.54, -768.67, -768.67, -768.67, -768.67, -768.67, -768.67, -768.67, -768.67, -768.67, -624.99, -492.05, -367.03, -270.07, -270.07, -270.07, -270.07, -270.07, -270.07, -395.07, -395.07, -287.57], "profit_aud": -287.57}}} \ No newline at end of file diff --git a/results/daily/2026-03-26.json b/results/daily/2026-03-26.json new file mode 100644 index 0000000..7e17bb1 --- /dev/null +++ b/results/daily/2026-03-26.json @@ -0,0 +1 @@ +{"date": "2026-03-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [86.61, 85.14, 94.54, 97.25, 93.47, 103.21, 99.6, 93.05, 72.98, 88.95, 108.01, 96.32, 102.46, 97.78, 65.38, 72.6, 92.14, 63.84, 13.11, -2.1, -3.35, -5.57, -6.49, -18.23, -43.81, -84.87, -99.52, -104.01, -128.26, -61.2, -26.26, -21.61, -19.02, -8.41, -9.78, 9.73, 20.19, 24.55, 11.74, 9.09, -2.32, -2.83, -4.82, -4.18, -4.37, -3.64, -0.92, -1.53], "forecast_price": {"naive": [282.12, 216.81, 197.59, 207.88, 191.16, 174.57, 183.66, 235.59, 210.8, 336.13, 182.68, 151.13, 143.06, 145.09, 97.79, 12.75, 31.31, 28.09, 108.11, 220.68, 29.52, 83.98, 5.57, 25.61, 103.82, 57.38, 43.61, 49.7, 53.58, 49.04, 80.1, 113.66, 101.91, 109.48, 118.5, 117.15, 114.94, 106.36, 100.01, 77.57, 85.58, 92.37, 85.38, 83.75, 99.14, 100.0, 108.05, 95.55], "lightgbm": [115.02, 109.36, 98.79, 105.84, 105.71, 106.16, 107.53, 108.57, 105.25, 110.44, 106.75, 111.89, 112.58, 112.58, 94.91, 64.61, 62.0, 45.64, 81.09, 85.15, 34.91, 61.0, 25.94, 27.59, 55.49, 48.43, 36.32, 45.54, 48.23, 45.65, 59.09, 68.85, 71.34, 82.07, 100.93, 107.72, 106.69, 97.07, 97.1, 80.84, 88.33, 90.2, 83.72, 82.13, 88.35, 89.95, 93.41, 90.53], "lstm": [90.29, 82.09, 82.39, 78.05, 71.67, 74.44, 72.12, 76.38, 81.21, 74.61, 89.69, 95.25, 95.4, 103.8, 81.48, 57.34, 50.38, 35.74, 27.22, 13.32, 15.76, 12.82, 7.56, 10.69, 9.43, 10.47, 12.23, 13.22, 14.71, 15.56, 23.95, 39.29, 46.67, 57.5, 69.04, 98.19, 101.24, 114.32, 112.46, 115.16, 99.96, 95.81, 91.95, 90.1, 83.76, 78.62, 87.35, 93.42]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 1.0, 0.25, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0], "cumulative_profit_aud": [-108.27, -214.7, -214.7, -214.7, -214.7, -85.68, -10.99, -10.99, -102.21, -213.4, -78.39, -78.39, 49.69, 49.69, -32.04, -42.2, 72.97, 72.97, 72.97, 73.24, 73.66, 74.35, 75.16, 77.44, 82.92, 189.01, 313.41, 443.42, 603.75, 642.0, 645.28, 647.98, 650.36, 641.02, 653.24, 665.4, 690.64, 721.33, 736.01, 736.01, 736.3, 738.07, 744.09, 749.31, 754.78, 759.32, 758.31, 760.21], "profit_aud": 760.21}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 0.75, 1.88, 3.0, 1.75, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.25, 2.0, 0.75, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -26.17, -155.19, -279.68, -163.37, -163.37, -52.18, -52.18, -52.18, -52.18, -52.18, -52.18, -142.94, -258.11, -337.92, -321.53, -324.16, -319.97, -326.93, -318.82, -296.04, -350.8, -361.41, -237.01, -107.0, -107.0, -30.5, -30.5, -57.52, -57.52, -57.52, -69.74, -57.58, -32.34, -32.34, -32.34, -43.7, -40.8, -40.8, -34.78, -29.55, -35.02, -39.57, -40.71, -41.85], "profit_aud": -41.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 1.12, 1.12, 1.12, 1.12, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -118.17, -118.17, -118.17, -118.17, -118.17, -118.17, -118.17, -118.17, -118.17, -118.17, -2.9, -2.9, -2.9, -23.23, -138.4, -218.21, -201.82, -204.45, -200.26, -206.53, -198.42, -175.63, -230.4, -230.4, -106.0, 24.02, 113.16, 189.66, 189.66, 189.66, 189.66, 189.66, 177.43, 189.59, 214.83, 214.83, 229.51, 218.14, 218.14, 218.14, 218.14, 218.73, 218.73, 218.73, 217.58, 217.58], "profit_aud": 217.58}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -116.84, -245.86, -370.35, -421.99, -421.99, -533.18, -398.17, -277.77, -149.7, -27.47, -27.47, -27.47, -27.47, -27.47, -27.47, -24.84, -28.62, -28.62, -20.51, 2.28, 57.04, 163.14, 218.37, 218.37, 218.37, 218.37, 218.37, 218.37, 218.37, 218.37, 218.37, 218.37, 243.61, 274.3, 288.97, 300.34, 300.34, 300.34, 300.34, 300.34, 300.95, 305.5, 305.5, 303.59], "profit_aud": 303.59}}} \ No newline at end of file diff --git a/results/daily/2026-03-27.json b/results/daily/2026-03-27.json new file mode 100644 index 0000000..73ed3ee --- /dev/null +++ b/results/daily/2026-03-27.json @@ -0,0 +1 @@ +{"date": "2026-03-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-3.08, -3.77, -4.07, -4.2, -4.66, -5.02, -4.81, -5.21, -4.91, -26.74, -76.28, -46.03, -19.15, -20.0, -26.45, -70.47, -27.75, -3.88, -50.94, -97.56, -97.01, -102.46, -97.34, -61.71, -28.42, -112.5, -62.94, -48.58, -61.57, -59.44, -40.56, -7.71, -3.03, 14.01, 21.48, 38.52, 51.42, 42.51, 33.89, 44.25, 40.22, 42.67, 40.43, 36.4, 36.32, 36.74, 39.81, 34.19], "forecast_price": {"naive": [86.61, 85.14, 94.54, 97.25, 93.47, 103.21, 99.6, 93.05, 72.98, 88.95, 108.01, 96.32, 102.46, 97.78, 65.38, 72.6, 92.14, 63.84, 13.11, -2.1, -3.35, -5.57, -6.49, -18.23, -43.81, -84.87, -99.52, -104.01, -128.26, -61.2, -26.26, -21.61, -19.02, -8.41, -9.78, 9.73, 20.19, 24.55, 11.74, 9.09, -2.32, -2.83, -4.82, -4.18, -4.37, -3.64, -0.92, -1.53], "lightgbm": [53.31, 53.31, 52.75, 52.75, 52.56, 53.22, 53.22, 52.41, 53.65, 50.07, 59.28, 57.43, 57.97, 57.97, 55.32, 51.07, 52.6, 52.56, 21.41, 18.4, 10.57, 7.7, 1.38, -6.21, -7.84, -19.69, -21.46, -20.51, -20.51, -19.72, 2.0, 8.65, 16.3, 23.91, 31.13, 52.27, 54.87, 54.87, 54.35, 52.76, 52.3, 53.13, 51.51, 50.77, 52.33, 52.33, 52.33, 52.33], "lstm": [4.82, 3.71, -2.0, -5.84, -5.45, -4.42, -8.95, -4.54, -0.77, 2.81, 10.16, 18.42, 22.53, 25.3, 9.32, 1.22, -7.34, -19.48, -25.79, -34.26, -34.26, -38.19, -45.33, -44.85, -47.92, -48.23, -49.49, -45.7, -34.85, -35.28, -28.15, -15.64, -8.76, -2.41, 8.86, 23.74, 38.87, 53.51, 64.6, 60.11, 58.36, 56.8, 54.2, 43.54, 47.48, 49.22, 45.94, 56.26]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 1.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.75, 2.5, 0.0, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.38, 1.5, 2.62, 1.38, 0.12, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 4.25, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.38, 0.86, 1.36, 1.89, 2.47, 3.73, 3.73, 5.03, 5.03, 18.4, 113.76, 171.29, 147.35, 122.35, 122.35, 210.44, 217.38, 212.52, 218.89, 340.85, 462.11, 590.18, 711.85, 711.85, 676.33, 816.96, 872.03, 811.3, 888.26, 903.12, 908.19, 909.16, 909.53, 909.53, 909.53, 909.53, 973.82, 1026.95, 984.59, 1039.9, 1039.9, 1093.24, 1138.72, 1138.72, 1138.72, 1138.72, 1138.72, 1138.72], "profit_aud": 1138.72}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 1.0, 0.25, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0], "cumulative_profit_aud": [3.85, 8.56, 8.56, 8.56, 8.56, 2.29, -1.32, -1.32, 4.82, 38.25, -57.11, -57.11, -81.04, -81.04, -47.98, -38.12, -72.81, -72.81, -72.81, -60.61, -48.49, -35.68, -23.51, -15.8, -12.25, 128.38, 207.05, 267.78, 344.74, 381.89, 386.96, 387.93, 388.31, 403.86, 377.02, 425.17, 489.45, 542.59, 584.95, 584.95, 579.92, 553.25, 502.72, 457.21, 411.81, 365.89, 410.08, 367.34], "profit_aud": 367.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.73, 0.73, 34.16, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -61.19, -53.48, -49.93, 20.38, 99.05, 159.78, 236.75, 311.04, 311.04, 311.04, 311.04, 311.04, 311.04, 311.04, 375.33, 428.46, 470.82, 470.82, 470.82, 524.16, 524.16, 524.16, 524.16, 524.16, 524.16, 524.16], "profit_aud": 524.16}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.51, 5.76, 11.59, 14.72, 20.74, 27.25, 27.86, 27.86, -67.49, -125.03, -148.96, -173.96, -173.96, -173.96, -170.49, -170.01, -163.64, -139.25, -139.25, -126.44, -53.44, -53.44, -17.92, 122.71, 201.37, 262.1, 262.1, 276.96, 282.03, 283.0, 283.38, 281.62, 281.62, 281.62, 281.62, 281.62, 323.98, 379.29, 429.57, 482.9, 482.9, 437.4, 437.4, 437.4, 431.82, 474.56], "profit_aud": 474.56}}} \ No newline at end of file diff --git a/results/daily/2026-03-28.json b/results/daily/2026-03-28.json new file mode 100644 index 0000000..36683be --- /dev/null +++ b/results/daily/2026-03-28.json @@ -0,0 +1 @@ +{"date": "2026-03-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [35.66, 47.91, 51.4, 45.58, 42.17, 24.44, 28.13, 19.16, 27.76, 35.34, 38.46, 35.8, 46.51, 62.88, 25.22, 3.97, 0.71, -1.74, -2.45, -8.28, -5.14, -8.08, -7.82, -4.75, -6.16, 5.8, 37.24, 51.49, 89.38, 164.08, 152.62, 100.27, 43.4, 61.49, 73.34, 103.11, 112.97, 119.28, 111.72, 98.7, 108.22, 113.56, 104.93, 81.82, 76.81, 73.23, 77.61, 80.3], "forecast_price": {"naive": [-3.08, -3.77, -4.07, -4.2, -4.66, -5.02, -4.81, -5.21, -4.91, -26.74, -76.28, -46.03, -19.15, -20.0, -26.45, -70.47, -27.75, -3.88, -50.94, -97.56, -97.01, -102.46, -97.34, -61.71, -28.42, -112.5, -62.94, -48.58, -61.57, -59.44, -40.56, -7.71, -3.03, 14.01, 21.48, 38.52, 51.42, 42.51, 33.89, 44.25, 40.22, 42.67, 40.43, 36.4, 36.32, 36.74, 39.81, 34.19], "lightgbm": [18.61, 18.61, 18.61, 18.31, 18.31, 18.04, 18.06, 18.06, 18.06, 15.97, 8.17, 9.11, 17.27, 17.31, 17.55, 3.3, 4.92, 2.26, -17.1, -25.19, -30.91, -34.68, -34.38, -34.38, -18.84, -35.93, -34.6, -34.61, -36.02, -34.86, -21.65, -3.47, 13.7, 24.79, 41.51, 54.41, 64.21, 56.26, 54.48, 57.22, 56.28, 55.71, 55.16, 54.55, 54.55, 54.55, 54.94, 54.46], "lstm": [51.25, 50.49, 42.98, 38.0, 37.02, 33.8, 38.81, 35.89, 34.5, 35.66, 42.28, 43.76, 41.62, 39.45, 28.45, 13.9, 8.94, 0.33, -4.62, -15.45, -11.95, -12.03, -18.6, -21.53, -20.93, -18.25, -16.09, -12.25, -11.29, -9.56, 1.82, 7.78, 21.53, 23.31, 41.69, 62.47, 80.48, 84.32, 84.49, 78.4, 73.78, 67.8, 66.57, 61.66, 65.17, 56.66, 63.43, 66.42]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-44.58, -44.58, 13.25, 13.25, 13.25, -17.31, -52.47, -76.42, -111.12, -111.12, -63.05, -36.2, 21.93, 100.53, 100.53, 100.53, 100.53, 100.75, 101.06, 111.42, 115.27, 125.37, 135.14, 135.14, 142.84, 142.84, 142.84, 142.84, 142.84, 347.94, 538.71, 626.45, 572.2, 495.34, 403.67, 403.67, 544.88, 693.98, 833.63, 833.63, 833.63, 975.59, 975.59, 975.59, 975.59, 975.59, 975.59, 975.59], "profit_aud": 975.59}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 1.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.75, 2.5, 0.0, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.38, 1.5, 2.62, 1.38, 0.12, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 4.25, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 2.38, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-4.46, -10.45, -16.87, -22.57, -27.84, -33.95, -33.95, -38.74, -38.74, -56.41, -104.48, -149.23, -91.09, -12.49, -12.49, -17.46, -17.63, -19.81, -19.51, -9.15, -2.73, 7.37, 17.14, 17.14, 9.43, 2.18, -30.4, 33.96, -77.77, -118.79, -137.87, -150.4, -155.82, -155.82, -155.82, -155.82, -14.61, 134.49, -5.16, 118.22, 118.22, 260.17, 378.22, 378.22, 378.22, 378.22, 378.22, 378.22], "profit_aud": 378.22}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 0.0, 1.75, 2.5, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -48.07, -92.82, -92.82, -29.94, 1.59, -3.38, -2.58, -2.58, -2.28, -1.24, -0.6, 9.5, 12.43, 12.43, 4.72, -2.53, -25.8, -90.16, -201.89, -406.98, -426.06, -438.59, -438.59, -438.59, -438.59, -438.59, -297.38, -148.28, -148.28, -24.91, 110.37, 110.37, 110.37, 110.37, 110.37, 110.37, 110.37, 110.37], "profit_aud": 110.37}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -30.55, -30.55, -38.5, -73.21, -117.38, -69.31, -24.56, 33.57, 33.57, 33.57, 33.57, 33.57, 33.57, 33.88, 44.24, 39.25, 39.25, 49.02, 54.96, 62.67, 55.42, 32.14, 25.71, 14.53, -5.97, -5.97, -5.97, -5.97, -5.97, -5.97, -5.97, 135.24, 284.34, 423.99, 547.36, 547.36, 547.36, 547.36, 547.36, 547.36, 455.83, 455.83, 546.17], "profit_aud": 546.17}}} \ No newline at end of file diff --git a/results/daily/2026-03-29.json b/results/daily/2026-03-29.json new file mode 100644 index 0000000..3934552 --- /dev/null +++ b/results/daily/2026-03-29.json @@ -0,0 +1 @@ +{"date": "2026-03-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [78.51, 78.52, 67.92, 63.72, 61.45, 60.47, 58.33, 63.22, 62.77, 62.31, 57.66, 56.87, 62.96, 63.64, 15.78, -4.01, -3.77, -7.92, -25.56, -41.0, -26.24, -39.94, -18.6, -17.23, -15.85, -35.62, -32.7, -48.54, -65.42, -80.2, -116.81, -14.97, -4.35, 24.96, 91.45, 113.7, 129.71, 133.88, 127.14, 131.15, 108.81, 106.37, 94.19, 114.45, 115.57, 76.92, 109.41, 96.58], "forecast_price": {"naive": [35.66, 47.91, 51.4, 45.58, 42.17, 24.44, 28.13, 19.16, 27.76, 35.34, 38.46, 35.8, 46.51, 62.88, 25.22, 3.97, 0.71, -1.74, -2.45, -8.28, -5.14, -8.08, -7.82, -4.75, -6.16, 5.8, 37.24, 51.49, 89.38, 164.08, 152.62, 100.27, 43.4, 61.49, 73.34, 103.11, 112.97, 119.28, 111.72, 98.7, 108.22, 113.56, 104.93, 81.82, 76.81, 73.23, 77.61, 80.3], "lightgbm": [52.9, 56.89, 59.57, 53.59, 49.88, 49.26, 50.11, 49.26, 50.37, 44.71, 46.14, 46.28, 55.16, 54.39, 34.21, 19.47, 15.96, 11.57, 5.23, -6.68, 0.08, -6.93, -7.68, -3.69, -5.4, -0.08, 11.0, 20.67, 21.91, 28.7, 28.7, 38.49, 29.69, 52.42, 67.38, 94.12, 98.56, 100.37, 97.57, 94.12, 95.19, 94.5, 88.26, 76.94, 72.99, 69.31, 72.99, 76.86], "lstm": [93.12, 84.9, 84.35, 79.38, 71.68, 70.67, 72.86, 67.54, 63.16, 63.7, 68.7, 67.53, 65.2, 63.51, 51.19, 36.08, 35.21, 24.72, 21.37, 12.12, 15.29, 16.26, 10.55, 11.1, 9.38, 10.05, 17.55, 19.8, 18.58, 18.11, 31.53, 35.8, 46.27, 59.44, 68.59, 98.23, 117.22, 111.67, 95.65, 95.47, 86.72, 72.86, 71.93, 66.64, 68.78, 68.27, 72.56, 77.41]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 2.25, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -71.09, -71.09, 0.51, 0.51, 1.51, 1.51, 2.5, 15.28, 66.53, 99.33, 149.26, 126.01, 104.48, 84.67, 111.38, 111.38, 172.06, 253.83, 354.07, 500.09, 501.96, 502.5, 502.5, 502.5, 502.5, 664.64, 832.0, 990.92, 1154.85, 1154.85, 1154.85, 1037.11, 1037.11, 1167.13, 1070.98, 1194.07, 1194.07], "profit_aud": 1194.07}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-98.14, -98.14, -21.73, -21.73, -21.73, -97.32, -170.23, -249.26, -327.72, -327.72, -255.65, -213.0, -134.3, -54.75, -54.75, -54.75, -54.75, -53.76, -50.57, 0.69, 20.37, 70.3, 93.55, 93.55, 113.36, 113.36, 113.36, 113.36, 113.36, 13.11, -132.9, -146.0, -140.57, -171.76, -286.08, -286.08, -123.94, 43.42, 202.34, 202.34, 202.34, 335.29, 335.29, 335.29, 335.29, 335.29, 335.29, 335.29], "profit_aud": 335.29}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-98.14, -98.14, -21.73, -21.73, -21.73, -21.73, -21.73, -21.73, -21.73, -99.62, -171.69, -187.61, -108.92, -29.37, -29.37, -29.37, -29.37, -29.37, -29.37, 21.88, -7.64, 42.3, 65.55, 87.08, 106.89, 129.15, 129.15, 129.15, 129.15, 129.15, 129.15, 112.31, 117.75, 117.75, 117.75, 117.75, 279.89, 447.24, 606.16, 606.16, 742.17, 742.17, 742.17, 742.17, 742.17, 742.17, 742.17, 742.17], "profit_aud": 742.17}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 51.25, 51.25, 26.29, 49.54, 71.07, 90.88, 135.4, 135.4, 135.4, 135.4, 135.4, 135.4, 135.4, 135.4, 135.4, 135.4, 277.53, 439.67, 607.02, 765.94, 765.94, 765.94, 765.94, 765.94, 622.88, 622.88, 612.11, 612.11, 732.84], "profit_aud": 732.84}}} \ No newline at end of file diff --git a/results/daily/2026-03-30.json b/results/daily/2026-03-30.json new file mode 100644 index 0000000..06e271e --- /dev/null +++ b/results/daily/2026-03-30.json @@ -0,0 +1 @@ +{"date": "2026-03-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [68.88, 68.09, 65.6, 70.18, 69.5, 69.86, 70.91, 76.84, 86.12, 81.56, 92.5, 105.53, 122.98, 179.82, 72.12, 9.76, 55.07, 5.33, 15.52, -4.49, -12.16, 8.4, -3.27, -3.01, -3.49, -2.61, -3.17, -3.98, -4.33, -1.67, 6.29, 29.25, 69.9, 99.96, 113.61, 127.12, 129.53, 128.91, 147.22, 177.26, 136.48, 118.92, 120.52, 125.78, 112.84, 83.28, 70.05, 52.89], "forecast_price": {"naive": [78.51, 78.52, 67.92, 63.72, 61.45, 60.47, 58.33, 63.22, 62.77, 62.31, 57.66, 56.87, 62.96, 63.64, 15.78, -4.01, -3.77, -7.92, -25.56, -41.0, -26.24, -39.94, -18.6, -17.23, -15.85, -35.62, -32.7, -48.54, -65.42, -80.2, -116.81, -14.97, -4.35, 24.96, 91.45, 113.7, 129.71, 133.88, 127.14, 131.15, 108.81, 106.37, 94.19, 114.45, 115.57, 76.92, 109.41, 96.58], "lightgbm": [66.75, 66.75, 69.02, 69.68, 67.75, 68.47, 69.14, 68.32, 67.75, 67.75, 71.78, 70.88, 72.86, 76.28, 54.6, 37.61, 35.06, 11.81, 9.26, -3.27, 5.25, -6.87, 3.68, 3.68, 3.68, 6.24, 4.7, 1.96, 3.59, 9.2, 11.31, 32.78, 31.58, 51.33, 101.7, 117.56, 125.21, 115.26, 115.01, 118.28, 113.95, 108.5, 103.38, 105.02, 105.02, 86.32, 106.8, 100.74], "lstm": [112.4, 106.66, 102.13, 97.76, 94.03, 93.49, 97.91, 90.18, 95.85, 100.29, 104.11, 104.4, 112.47, 111.96, 86.58, 62.21, 52.45, 37.95, 30.57, 17.47, 15.57, 9.91, 7.0, 8.28, 7.4, 9.25, 9.75, 11.16, 14.2, 13.04, 25.69, 35.37, 41.81, 63.49, 81.63, 111.51, 133.1, 141.75, 125.36, 125.64, 113.15, 95.94, 103.39, 86.06, 90.57, 87.92, 95.13, 93.74]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 2.0, 3.12, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-86.1, -171.22, -253.22, -253.22, -340.1, -378.87, -378.87, -378.87, -378.87, -378.87, -263.25, -131.33, 22.4, 247.17, 247.17, 234.98, 296.93, 290.27, 307.72, 313.33, 328.53, 339.03, 343.12, 343.12, 347.48, 344.22, 347.39, 352.36, 357.78, 357.98, 357.98, 357.98, 357.98, 357.98, 357.98, 357.98, 519.89, 519.89, 703.92, 925.49, 1096.09, 1096.09, 1096.09, 1096.09, 1096.09, 1096.09, 1096.09, 1096.09], "profit_aud": 1096.09}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 2.25, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -131.92, -131.92, 70.38, 70.38, 67.94, 67.94, 67.28, 59.52, 65.12, 80.32, 69.81, 65.73, 61.97, 57.6, 59.55, 59.55, 64.52, 69.94, 72.02, 64.16, 60.5, 51.76, 51.76, 51.76, 51.76, 213.67, 374.81, 558.84, 780.41, 780.41, 780.41, 629.76, 629.76, 756.71, 652.61, 731.41, 731.41], "profit_aud": 731.41}, "lightgbm": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-86.1, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, -95.63, 129.14, 129.14, 129.14, 129.14, 129.14, 129.14, 134.75, 121.08, 110.57, 114.65, 118.42, 122.78, 119.52, 117.94, 122.91, 128.33, 128.33, 128.33, 128.33, 128.33, 128.33, 128.33, 287.23, 449.14, 610.28, 610.28, 831.85, 831.85, 831.85, 831.85, 831.85, 831.85, 727.75, 806.55, 806.55], "profit_aud": 806.55}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -19.46, -106.78, -106.78, -202.83, -202.83, -202.83, -202.83, -202.83, -49.1, 175.67, 175.67, 175.67, 175.67, 175.67, 175.67, 175.67, 175.67, 175.67, 179.76, 183.52, 187.89, 191.15, 192.91, 192.91, 192.91, 192.91, 192.91, 192.91, 192.91, 192.91, 192.91, 192.91, 354.82, 515.95, 699.99, 921.56, 921.56, 921.56, 921.56, 921.56, 921.56, 921.56, 921.56, 921.56], "profit_aud": 921.56}}} \ No newline at end of file diff --git a/results/daily/2026-03-31.json b/results/daily/2026-03-31.json new file mode 100644 index 0000000..99a54f0 --- /dev/null +++ b/results/daily/2026-03-31.json @@ -0,0 +1 @@ +{"date": "2026-03-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [50.55, 40.87, 26.63, 28.23, 24.76, 18.16, 10.35, 1.41, 0.0, 1.57, 10.05, 14.7, 31.88, 34.86, 9.04, -5.17, -5.09, -4.73, -40.18, -97.22, -94.4, -80.05, -94.36, -66.15, -41.01, -159.5, -73.94, -68.58, -75.23, -32.9, -19.22, -188.43, -92.71, -11.06, 14.58, 63.09, 70.74, 64.21, 59.49, 56.0, 33.8, 27.52, 23.83, 6.6, -0.18, -1.5, -3.28, -3.28], "forecast_price": {"naive": [68.88, 68.09, 65.6, 70.18, 69.5, 69.86, 70.91, 76.84, 86.12, 81.56, 92.5, 105.53, 122.98, 179.82, 72.12, 9.76, 55.07, 5.33, 15.52, -4.49, -12.16, 8.4, -3.27, -3.01, -3.49, -2.61, -3.17, -3.98, -4.33, -1.67, 6.29, 29.25, 69.9, 99.96, 113.61, 127.12, 129.53, 128.91, 147.22, 177.26, 136.48, 118.92, 120.52, 125.78, 112.84, 83.28, 70.05, 52.89], "lightgbm": [72.51, 71.84, 69.97, 66.63, 65.19, 61.5, 65.4, 69.77, 75.01, 74.66, 83.13, 86.27, 89.85, 92.96, 70.51, 48.94, 50.39, 30.66, 30.14, 22.2, 13.56, 19.83, 17.08, 15.19, 9.21, 12.0, 15.19, 16.83, 16.83, 17.15, 20.14, 29.45, 52.08, 74.89, 96.08, 111.05, 112.06, 111.82, 112.8, 121.61, 112.76, 106.09, 103.91, 101.01, 97.23, 84.3, 74.03, 66.76], "lstm": [92.74, 81.98, 83.73, 73.49, 75.69, 69.07, 71.51, 71.2, 74.22, 75.43, 81.33, 92.28, 98.89, 105.21, 81.67, 59.01, 48.96, 34.19, 24.7, 11.6, 15.02, 8.47, 1.42, 5.1, 5.51, 3.68, 6.58, 7.54, 10.73, 13.03, 21.64, 33.34, 44.99, 56.73, 77.65, 94.32, 126.12, 125.98, 110.04, 104.99, 102.36, 89.6, 97.31, 77.88, 81.85, 78.23, 82.45, 86.87]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 4.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.76, -1.76, -3.72, -7.89, 10.49, 50.33, 93.91, 93.91, 95.85, 95.85, 95.85, 100.87, 222.39, 340.39, 440.45, 558.41, 475.72, 424.46, 623.84, 697.78, 697.78, 791.82, 759.91, 735.88, 971.43, 1087.32, 1088.7, 1088.7, 1167.56, 1255.99, 1336.26, 1410.62, 1410.62, 1410.62, 1410.62, 1410.62, 1410.62, 1410.84, 1412.72, 1416.81, 1420.9], "profit_aud": 1420.9}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 2.0, 3.12, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-63.18, -114.27, -147.56, -147.56, -178.51, -188.6, -188.6, -188.6, -188.6, -188.6, -176.04, -157.66, -117.81, -74.24, -74.24, -67.78, -73.51, -67.6, -112.8, 8.72, 126.71, 26.64, 144.6, 144.6, 195.86, -3.52, 70.42, 156.14, 250.17, 254.28, 254.28, 254.28, 254.28, 254.28, 254.28, 254.28, 342.71, 342.71, 417.07, 487.07, 529.32, 529.32, 529.32, 529.32, 529.32, 529.32, 529.32, 529.32], "profit_aud": 529.32}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -35.29, -66.25, -88.95, -101.89, -102.68, -102.68, -102.68, -90.12, -71.74, -31.89, 11.68, 11.68, 11.68, 11.68, 11.68, 11.68, 11.68, 129.68, 39.61, 39.61, 122.3, 173.56, 372.94, 465.36, 503.42, 503.42, 503.42, 503.42, 503.42, 503.42, 503.42, 503.42, 503.42, 591.85, 591.85, 666.21, 736.21, 778.46, 778.46, 778.46, 778.46, 778.46, 778.46, 778.46, 778.46], "profit_aud": 778.46}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 3.25, 2.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -35.29, -35.29, -58.0, -70.94, -72.7, -72.7, -72.7, -72.7, -54.32, -14.48, 29.1, 35.88, 35.88, 35.88, 35.88, 35.88, 157.4, 51.21, 51.21, 169.16, 251.84, 303.1, 502.48, 543.52, 543.52, 543.52, 543.52, 543.52, 543.52, 543.52, 543.52, 543.52, 543.52, 631.95, 712.21, 786.57, 856.57, 856.57, 856.57, 856.57, 848.32, 848.32, 848.32, 848.32, 844.64], "profit_aud": 844.64}}} \ No newline at end of file diff --git a/results/daily/2026-04-01.json b/results/daily/2026-04-01.json new file mode 100644 index 0000000..7cc08cc --- /dev/null +++ b/results/daily/2026-04-01.json @@ -0,0 +1 @@ +{"date": "2026-04-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-3.28, -3.23, -2.81, -3.94, -4.13, -4.0, -3.09, -0.53, -0.09, 29.28, 40.9, 40.41, 42.12, 49.26, 44.59, 33.34, 50.89, 51.47, 27.8, 3.88, 18.96, 11.62, 5.95, 6.49, 21.41, 47.38, 52.45, 65.7, 86.92, 87.49, 89.83, 95.88, 111.82, 117.26, 121.28, 125.38, 131.38, 129.65, 132.91, 132.64, 132.83, 128.92, 113.88, 117.29, 124.76, 111.97, 111.17, 108.75], "forecast_price": {"naive": [50.55, 40.87, 26.63, 28.23, 24.76, 18.16, 10.35, 1.41, 0.0, 1.57, 10.05, 14.7, 31.88, 34.86, 9.04, -5.17, -5.09, -4.73, -40.18, -97.22, -94.4, -80.05, -94.36, -66.15, -41.01, -159.5, -73.94, -68.58, -75.23, -32.9, -19.22, -188.43, -92.71, -11.06, 14.58, 63.09, 70.74, 64.21, 59.49, 56.0, 33.8, 27.52, 23.83, 6.6, -0.18, -1.5, -3.28, -3.28], "lightgbm": [40.94, 32.58, 30.21, 29.11, 29.02, 29.02, 28.61, 26.82, 26.82, 29.75, 34.31, 34.74, 38.59, 41.24, 34.73, 19.77, 25.86, 17.92, 12.72, 1.77, -2.19, 0.39, -10.84, -7.12, -4.63, -6.3, -6.3, -6.3, -6.3, -1.77, 8.82, 5.51, 12.04, 31.06, 47.27, 75.7, 79.86, 78.01, 75.79, 71.48, 62.97, 61.53, 59.82, 58.15, 60.28, 58.6, 57.96, 55.72], "lstm": [-4.57, -5.29, -9.58, -16.25, -13.85, -17.68, -19.02, -19.03, -14.31, -7.55, -1.02, 6.18, 15.09, 27.32, 16.9, 11.75, 3.58, -9.35, -18.96, -26.16, -25.2, -31.33, -43.7, -45.66, -46.96, -45.06, -47.15, -43.59, -32.37, -29.53, -17.96, -10.79, 3.18, 8.33, 27.27, 49.44, 72.58, 70.01, 66.04, 62.93, 60.66, 51.74, 54.35, 40.27, 44.91, 35.18, 37.49, 43.79]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [4.1, 8.13, 6.57, 11.5, 16.67, 21.67, 22.05, 22.12, 22.13, 22.13, 22.13, 22.13, 69.52, 131.09, 186.82, 145.14, 208.75, 273.09, 273.09, 268.24, 257.72, 243.19, 235.76, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 227.64, 391.86, 391.86, 558.0, 723.8, 889.83, 889.83, 889.83, 889.83, 889.83, 889.83, 889.83, 889.83], "profit_aud": 889.83}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.25, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 4.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.66, 0.78, -35.82, -52.79, -2.28, 50.37, 111.95, 111.95, 99.44, 99.44, 99.44, 95.97, 91.12, 67.42, 52.89, 45.46, 53.57, 80.33, 21.11, -31.35, -31.35, -139.99, -55.13, 57.16, -62.68, -202.46, -217.12, -217.12, -60.39, 103.83, 265.9, 432.04, 432.04, 432.04, 432.04, 432.04, 432.04, 276.09, 136.13, -2.83, -138.77], "profit_aud": -138.77}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 2.29, 7.29, 11.16, 11.82, 11.94, 11.94, 11.94, 62.45, 115.1, 176.67, 232.4, 190.72, 247.97, 247.97, 247.97, 247.97, 224.27, 237.35, 229.91, 221.8, 248.56, 189.33, 123.76, 74.49, -34.16, -45.09, 55.97, -63.88, -63.88, -63.88, -63.88, 92.85, 257.07, 419.13, 585.27, 585.27, 585.27, 585.27, 585.27, 585.27, 585.27, 585.27, 585.27, 585.27], "profit_aud": 585.27}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.41, 0.81, 1.16, 6.1, 6.1, 11.1, 14.96, 15.63, 15.69, 12.03, 6.92, 6.92, 59.58, 121.15, 176.88, 218.56, 218.56, 212.13, 208.65, 207.68, 207.68, 206.23, 202.51, 194.4, 167.64, 108.41, 42.85, 34.63, 23.77, 12.83, 1.61, -10.38, -10.38, -10.38, -10.38, -10.38, 153.84, 315.91, 482.05, 647.84, 647.84, 647.84, 647.84, 501.23, 641.58, 501.62, 486.06, 622.0], "profit_aud": 622.0}}} \ No newline at end of file diff --git a/results/daily/2026-04-02.json b/results/daily/2026-04-02.json new file mode 100644 index 0000000..3a8061a --- /dev/null +++ b/results/daily/2026-04-02.json @@ -0,0 +1 @@ +{"date": "2026-04-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [121.11, 112.3, 110.49, 106.37, 106.94, 106.87, 110.46, 114.86, 119.75, 134.03, 138.22, 139.21, 160.91, 177.82, 193.87, 106.9, 84.99, 48.32, 34.65, 12.74, 5.52, 2.84, 1.24, 5.58, 0.56, 0.12, -4.18, -3.23, -5.45, -6.69, -6.57, -3.03, -0.9, 34.47, 79.3, 81.03, 81.42, 76.77, 67.33, 63.78, 60.43, 56.44, 54.03, 44.38, 39.69, 38.19, 38.46, 36.38], "forecast_price": {"naive": [-3.28, -3.23, -2.81, -3.94, -4.13, -4.0, -3.09, -0.53, -0.09, 29.28, 40.9, 40.41, 42.12, 49.26, 44.59, 33.34, 50.89, 51.47, 27.8, 3.88, 18.96, 11.62, 5.95, 6.49, 21.41, 47.38, 52.45, 65.7, 86.92, 87.49, 89.83, 95.88, 111.82, 117.26, 121.28, 125.38, 131.38, 129.65, 132.91, 132.64, 132.83, 128.92, 113.88, 117.29, 124.76, 111.97, 111.17, 108.75], "lightgbm": [56.73, 54.14, 52.91, 48.87, 47.05, 47.53, 47.53, 47.53, 47.53, 49.01, 52.08, 52.25, 52.42, 61.55, 52.56, 47.76, 54.66, 43.72, 26.38, 15.46, 17.35, 10.85, 8.3, 4.98, 5.95, 14.65, 15.8, 18.29, 24.63, 26.25, 27.94, 38.04, 46.88, 66.61, 89.1, 106.71, 112.85, 111.3, 108.97, 106.42, 101.68, 96.39, 89.17, 87.74, 89.44, 82.43, 79.45, 78.04], "lstm": [144.66, 125.61, 118.72, 118.36, 110.3, 108.95, 109.06, 104.24, 108.7, 107.29, 109.14, 123.0, 136.23, 161.8, 147.05, 106.04, 103.37, 83.24, 67.57, 50.63, 44.6, 43.74, 35.75, 34.01, 35.38, 34.71, 37.88, 40.77, 44.03, 40.65, 54.82, 64.87, 80.61, 109.42, 134.75, 184.18, 175.59, 176.85, 152.87, 152.73, 129.21, 108.15, 112.57, 97.66, 99.51, 94.93, 100.33, 100.56]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -61.32, -194.28, -327.96, -461.55, -599.62, -599.62, -599.62, -599.62, -599.62, -425.61, -224.47, -2.19, 240.15, 240.15, 240.15, 240.15, 240.15, 240.15, 240.15, 239.75, 238.2, 245.18, 245.18, 245.18, 250.4, 252.42, 259.23, 267.6, 275.81, 276.19, 276.3, 276.3, 375.43, 476.72, 578.5, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46, 674.46], "profit_aud": 674.46}, "naive": {"charge_mw": [2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-151.39, -291.76, -230.44, -363.4, -497.08, -630.67, -644.47, -658.83, -673.8, -673.8, -673.8, -673.8, -492.77, -270.49, -28.15, -161.77, -55.53, 4.86, 4.86, -11.05, -14.12, -17.67, -19.22, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, -26.19, 75.58, 75.58, 159.75, 239.48, 315.03, 315.03, 315.03, 315.03, 315.03, 315.03, 315.03, 315.03], "profit_aud": 315.03}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -133.68, -163.6, -301.67, -301.67, -301.67, -301.67, -301.67, -301.67, -301.67, -79.39, -79.39, -79.39, 26.85, 26.85, 26.85, 10.93, 17.14, 13.59, 12.04, 5.07, 4.36, 4.29, 4.29, 4.29, 4.29, 4.29, 4.29, 4.29, 4.29, 4.29, 4.29, 105.59, 207.37, 303.33, 387.49, 387.49, 387.49, 387.49, 387.49, 387.49, 387.49, 387.49, 387.49, 387.49], "profit_aud": 387.49}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -133.58, -194.89, -338.46, -488.15, -655.69, -655.69, -481.68, -280.54, -58.26, 184.08, 184.08, 184.08, 184.08, 184.08, 184.08, 184.08, 184.08, 182.53, 175.56, 174.85, 174.7, 177.01, 177.01, 177.01, 177.01, 177.01, 177.01, 177.01, 177.01, 177.01, 278.31, 380.09, 476.05, 560.21, 560.21, 560.21, 560.21, 560.21, 560.21, 560.21, 560.21, 560.21, 560.21], "profit_aud": 560.21}}} \ No newline at end of file diff --git a/results/daily/2026-04-03.json b/results/daily/2026-04-03.json new file mode 100644 index 0000000..3297497 --- /dev/null +++ b/results/daily/2026-04-03.json @@ -0,0 +1 @@ +{"date": "2026-04-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [29.34, 29.65, 26.99, 11.33, 13.48, 12.08, 10.0, 3.44, 5.98, 9.05, 9.66, 6.17, 8.16, 8.98, 3.2, -6.9, -16.18, -17.42, -19.33, -25.21, -36.24, -66.87, -77.52, -74.98, -80.7, -85.23, -101.3, -94.11, -67.12, -38.45, -15.41, -17.04, -14.99, -3.78, 6.89, 26.11, 29.63, 26.47, 22.65, 18.78, 10.21, 3.74, 9.16, 8.08, 8.26, 6.92, 8.05, 9.34], "forecast_price": {"naive": [121.11, 112.3, 110.49, 106.37, 106.94, 106.87, 110.46, 114.86, 119.75, 134.03, 138.22, 139.21, 160.91, 177.82, 193.87, 106.9, 84.99, 48.32, 34.65, 12.74, 5.52, 2.84, 1.24, 5.58, 0.56, 0.12, -4.18, -3.23, -5.45, -6.69, -6.57, -3.03, -0.9, 34.47, 79.3, 81.03, 81.42, 76.77, 67.33, 63.78, 60.43, 56.44, 54.03, 44.38, 39.69, 38.19, 38.46, 36.38], "lightgbm": [60.77, 59.68, 58.58, 57.31, 55.32, 56.93, 56.51, 58.84, 58.84, 55.33, 47.83, 47.25, 48.82, 46.48, 41.8, 46.08, 41.51, 24.8, 17.45, 5.63, 7.2, 4.09, 3.81, 4.39, 4.32, 2.63, 2.54, 2.58, 3.63, 2.77, 6.15, 13.25, 17.6, 32.59, 62.52, 77.91, 79.74, 77.9, 65.41, 65.41, 58.94, 55.56, 52.49, 43.36, 43.34, 42.49, 42.49, 42.41], "lstm": [25.3, 19.35, 18.36, 13.24, 12.61, 8.44, 8.26, 9.44, 14.93, 13.39, 16.86, 28.14, 32.84, 29.78, 21.85, 11.98, 7.03, -10.66, -11.93, -20.79, -21.94, -25.3, -32.8, -33.77, -37.36, -37.82, -35.37, -32.07, -25.64, -25.66, -12.93, -2.22, 4.51, 17.09, 28.48, 42.11, 61.01, 72.99, 73.06, 62.87, 60.43, 59.16, 57.42, 46.26, 52.99, 54.21, 51.36, 58.1]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -14.16, 1.01, 1.01, 1.01, -3.29, -10.77, -1.72, 10.35, 2.64, 2.64, 12.74, 12.74, 13.6, 15.63, 17.8, 20.22, 23.37, 27.9, 36.26, 94.4, 94.4, 195.28, 301.82, 428.44, 546.07, 554.46, 559.27, 559.27, 563.53, 565.4, 565.87, 565.87, 598.51, 635.54, 668.63, 696.94, 696.94, 696.94, 692.27, 702.58, 702.58, 702.58, 693.92, 692.8, 704.47], "profit_aud": 704.47}, "naive": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -14.98, -29.14, -45.99, -61.09, -73.59, -73.59, -73.59, -73.59, -73.59, -65.88, -55.67, -44.45, -40.45, -40.45, -40.45, -40.45, -40.45, -40.45, -40.45, -31.08, 65.82, -27.9, -27.9, -27.9, 98.72, 157.54, 241.44, 289.5, 308.76, 310.89, 312.77, 312.77, 321.38, 354.01, 391.05, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13, 424.13], "profit_aud": 424.13}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.51, -9.25, -9.25, 87.65, 3.3, 3.3, 109.84, 236.46, 354.1, 391.35, 439.41, 439.41, 439.41, 439.41, 439.41, 439.41, 472.04, 509.08, 542.17, 570.48, 570.48, 570.48, 570.48, 570.48, 570.48, 570.48, 570.48, 570.48, 570.48], "profit_aud": 570.48}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -6.29, -23.14, -38.24, -50.74, -55.03, -48.3, -59.61, -59.61, -51.9, -41.69, -30.47, -26.47, -26.47, -26.47, -24.29, -21.87, -18.72, -14.19, -5.83, 42.62, 136.34, 237.22, 343.75, 470.37, 482.14, 482.14, 491.75, 493.68, 495.81, 495.81, 495.81, 495.81, 495.81, 532.84, 565.93, 594.24, 617.72, 617.72, 617.72, 617.72, 607.62, 607.62, 607.62, 606.49, 618.16], "profit_aud": 618.16}}} \ No newline at end of file diff --git a/results/daily/2026-04-04.json b/results/daily/2026-04-04.json new file mode 100644 index 0000000..b4df35d --- /dev/null +++ b/results/daily/2026-04-04.json @@ -0,0 +1 @@ +{"date": "2026-04-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [8.7, 5.32, 5.26, 1.77, -0.0, -0.27, -0.92, -2.91, -2.74, -2.64, -0.92, -0.43, -0.08, 0.19, -0.01, -2.27, -10.48, -29.58, -51.4, -52.48, -56.85, -58.8, -61.37, -63.7, -67.44, -85.66, -71.51, -64.41, -57.4, -58.71, -50.08, -36.42, -14.08, -2.2, 32.79, 82.81, 47.12, 38.54, 36.16, 34.1, 29.93, 25.54, 29.06, 29.65, 30.51, 28.07, 37.48, 36.6], "forecast_price": {"naive": [29.34, 29.65, 26.99, 11.33, 13.48, 12.08, 10.0, 3.44, 5.98, 9.05, 9.66, 6.17, 8.16, 8.98, 3.2, -6.9, -16.18, -17.42, -19.33, -25.21, -36.24, -66.87, -77.52, -74.98, -80.7, -85.23, -101.3, -94.11, -67.12, -38.45, -15.41, -17.04, -14.99, -3.78, 6.89, 26.11, 29.63, 26.47, 22.65, 18.78, 10.21, 3.74, 9.16, 8.08, 8.26, 6.92, 8.05, 9.34], "lightgbm": [3.53, 4.03, 4.69, 2.23, 1.04, 2.44, 1.36, -0.31, -2.22, 1.03, 1.33, -1.77, 2.8, 6.65, -5.04, -5.6, -12.59, -11.71, -13.52, -17.19, -20.85, -35.66, -36.55, -35.76, -35.62, -33.2, -28.88, -27.29, -27.29, -21.41, -12.49, -7.01, 1.81, 19.51, 30.5, 47.83, 49.57, 51.33, 49.61, 49.33, 48.83, 49.07, 47.39, 41.93, 42.23, 41.75, 41.75, 42.23], "lstm": [3.72, 1.2, 0.78, -5.3, -9.06, -11.14, -9.79, -11.76, -8.83, -5.16, -1.66, 5.56, 4.38, 3.1, -6.71, -12.35, -18.13, -36.57, -39.77, -43.97, -45.91, -45.26, -56.95, -67.0, -65.02, -62.42, -60.92, -55.61, -46.59, -46.31, -30.11, -20.96, -7.94, -0.07, 12.4, 29.31, 52.82, 59.63, 63.72, 51.64, 52.24, 52.72, 48.67, 36.82, 43.44, 39.6, 37.82, 46.64]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 1.19, 4.82, 8.24, 11.54, 12.11, 11.57, 11.48, 11.71, 11.7, 11.99, 13.3, 16.99, 23.42, 29.98, 37.09, 44.44, 52.11, 91.92, 176.21, 283.29, 372.68, 453.19, 453.19, 467.87, 474.13, 478.68, 480.44, 480.72, 480.72, 584.23, 643.13, 691.31, 736.5, 736.5, 736.5, 704.58, 696.44, 696.44, 696.44, 661.35, 708.2, 753.95], "profit_aud": 753.95}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -2.21, -2.22, -2.22, -2.22, 1.41, 4.83, 2.2, 1.04, 1.58, 1.58, 1.79, 1.79, 2.08, 3.38, 7.08, 13.51, 20.07, 27.17, 34.52, 80.55, 80.55, 164.85, 271.92, 361.31, 441.82, 449.0, 456.34, 456.34, 465.44, 467.2, 467.48, 467.48, 570.99, 629.89, 678.07, 723.26, 723.26, 723.26, 691.34, 724.02, 724.02, 724.02, 688.93, 683.69, 729.43], "profit_aud": 729.43}, "lightgbm": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-10.87, -11.62, -5.05, -5.05, -5.04, -5.34, -5.34, -1.71, 1.71, 2.8, 1.65, 2.19, 2.1, 2.33, 2.33, 2.61, 5.23, 5.23, 11.66, 18.22, 25.32, 98.82, 175.54, 255.16, 339.45, 392.99, 401.93, 401.93, 416.28, 423.62, 429.88, 434.43, 434.43, 434.43, 434.43, 434.43, 493.33, 541.51, 586.7, 629.33, 629.33, 629.33, 629.33, 629.33, 629.33, 629.33, 629.33, 629.33], "profit_aud": 629.33}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 0.12, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.22, -0.22, 0.12, 1.27, 4.91, 6.62, 6.95, 5.79, 5.26, 5.16, 5.39, 5.39, 5.68, 6.99, 10.68, 17.11, 23.67, 37.88, 37.88, 76.24, 155.86, 240.16, 347.23, 436.62, 444.67, 451.85, 459.18, 465.44, 470.0, 471.76, 472.03, 472.03, 472.03, 530.93, 579.11, 624.31, 624.31, 624.31, 656.23, 656.23, 619.17, 649.68, 649.68, 602.83, 648.58], "profit_aud": 648.58}}} \ No newline at end of file diff --git a/results/daily/2026-04-05.json b/results/daily/2026-04-05.json new file mode 100644 index 0000000..3cd733a --- /dev/null +++ b/results/daily/2026-04-05.json @@ -0,0 +1 @@ +{"date": "2026-04-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [36.04, 33.8, 43.6, 43.07, 46.69, 34.33, 41.86, 42.24, 42.07, 51.95, 55.44, 64.92, 72.38, 95.9, 86.31, 41.13, 37.56, 38.53, 53.68, 12.66, 29.64, 51.74, 108.57, 99.25, 96.14, 40.99, 62.86, 47.17, 101.66, 110.66, 134.55, 141.38, 116.06, 142.07, 157.91, 169.6, 156.07, 135.67, 129.32, 82.33, 90.31, 142.92, 140.35, 211.68, 224.61, 187.0, 154.79, 135.0], "forecast_price": {"naive": [8.7, 5.32, 5.26, 1.77, -0.0, -0.27, -0.92, -2.91, -2.74, -2.64, -0.92, -0.43, -0.08, 0.19, -0.01, -2.27, -10.48, -29.58, -51.4, -52.48, -56.85, -58.8, -61.37, -63.7, -67.44, -85.66, -71.51, -64.41, -57.4, -58.71, -50.08, -36.42, -14.08, -2.2, 32.79, 82.81, 47.12, 38.54, 36.16, 34.1, 29.93, 25.54, 29.06, 29.65, 30.51, 28.07, 37.48, 36.6], "lightgbm": [22.62, 20.93, 20.93, 20.13, 18.7, 17.97, 17.6, 19.18, 19.18, 19.65, 19.71, 19.31, 21.04, 20.53, 5.01, 5.01, -1.1, -6.43, -24.79, -28.68, -32.12, -34.22, -34.67, -34.67, -34.67, -37.38, -37.38, -37.38, -35.87, -33.57, -29.36, -12.01, 4.32, 19.33, 39.13, 81.19, 51.7, 47.01, 47.38, 47.03, 46.75, 47.54, 45.22, 45.74, 44.91, 44.75, 46.15, 45.31], "lstm": [34.88, 25.29, 30.28, 25.36, 20.51, 15.39, 18.22, 11.62, 12.61, 16.28, 19.06, 21.06, 19.42, 15.14, 6.05, -1.57, -6.87, -19.86, -19.32, -26.36, -28.95, -28.68, -35.17, -40.18, -45.13, -44.36, -40.03, -32.98, -29.26, -29.62, -12.95, -8.13, 5.85, 19.6, 35.49, 57.45, 87.11, 84.85, 78.07, 64.95, 62.67, 57.25, 52.95, 42.76, 49.95, 48.73, 47.13, 47.75]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-45.05, -87.31, -87.31, -87.31, -87.31, -130.21, -182.54, -182.54, -205.89, -205.89, -205.89, -124.74, -34.27, 85.6, 193.49, 142.07, 95.13, 46.96, 80.51, 64.69, 27.63, 27.63, 163.34, 287.4, 371.53, 320.29, 241.71, 182.74, 182.74, 182.74, 182.74, 341.8, 196.73, 196.73, 394.11, 606.12, 801.21, 744.91, 583.26, 480.35, 367.46, 367.46, 367.46, 632.06, 912.82, 1146.57, 1340.06, 1340.06], "profit_aud": 1340.06}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -5.84, -10.13, -62.46, -115.26, -167.84, -232.79, -267.44, -186.29, -95.82, 24.05, 131.94, 126.8, 122.1, 117.28, 110.58, 108.99, 105.29, 98.82, 85.25, 23.22, -96.96, -148.2, -226.78, -285.75, -285.75, -313.41, -330.23, -347.9, -362.41, -380.17, -380.17, -168.17, 26.93, 196.51, 358.16, 358.16, 358.16, 179.51, 140.21, 140.21, 140.21, -93.53, 99.96, 268.71], "profit_aud": 268.71}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -42.91, -95.24, -95.24, -95.24, -95.24, -95.24, -95.24, -4.76, 91.14, 91.14, 91.14, 86.44, 81.62, 74.92, 73.33, 69.63, 63.16, -31.84, -31.84, -31.84, -83.08, -161.66, -220.62, -347.7, -361.53, -378.35, -396.02, -396.02, -396.02, -396.02, -184.02, 11.07, 11.07, 172.72, 172.72, 172.72, 351.37, 351.37, 351.37, 351.37, 351.37, 351.37, 351.37], "profit_aud": 351.37}, "lstm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -42.26, 6.79, 6.79, 6.79, -36.11, -4.71, -57.52, -110.1, -175.04, -105.74, -24.59, 65.88, 65.88, 65.88, 60.74, 56.04, 46.41, 46.41, 44.83, 37.42, 37.42, -30.44, -154.5, -274.68, -325.92, -404.5, -410.4, -410.4, -438.06, -454.88, -472.55, -472.55, -472.55, -472.55, -472.55, -277.46, -107.88, 53.77, 156.68, 156.68, 156.68, 156.68, -107.92, 144.77, 144.77, 144.77, 144.77], "profit_aud": 144.77}}} \ No newline at end of file diff --git a/results/daily/2026-04-06.json b/results/daily/2026-04-06.json new file mode 100644 index 0000000..b5f350d --- /dev/null +++ b/results/daily/2026-04-06.json @@ -0,0 +1 @@ +{"date": "2026-04-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [138.0, 143.41, 125.63, 127.41, 110.18, 86.39, 82.45, 76.38, 61.79, 69.55, 67.7, 55.62, 55.46, 37.17, 28.22, 10.63, -0.7, -3.0, -2.68, -3.0, -4.85, -8.04, -22.06, -11.47, -6.96, -3.67, -13.81, -22.04, -19.02, -11.45, -12.35, -9.8, -6.54, -1.4, 31.78, 64.76, 58.5, 58.46, 51.7, 53.77, 64.84, 70.1, 69.82, 62.52, 50.87, 47.99, 47.38, 48.96], "forecast_price": {"naive": [36.04, 33.8, 43.6, 43.07, 46.69, 34.33, 41.86, 42.24, 42.07, 51.95, 55.44, 64.92, 72.38, 95.9, 86.31, 41.13, 37.56, 38.53, 53.68, 12.66, 29.64, 51.74, 108.57, 99.25, 96.14, 40.99, 62.86, 47.17, 101.66, 110.66, 134.55, 141.38, 116.06, 142.07, 157.91, 169.6, 156.07, 135.67, 129.32, 82.33, 90.31, 142.92, 140.35, 211.68, 224.61, 187.0, 154.79, 135.0], "lightgbm": [60.56, 60.33, 60.22, 58.62, 56.93, 56.91, 57.17, 62.93, 63.26, 68.41, 66.2, 68.3, 72.35, 82.36, 71.75, 40.04, 49.87, 34.6, 40.99, 30.36, 28.75, 39.64, 51.89, 53.4, 53.22, 33.68, 43.47, 36.19, 53.4, 50.64, 48.83, 55.59, 74.92, 109.21, 111.32, 113.08, 114.5, 113.19, 106.65, 83.87, 87.05, 111.25, 109.24, 123.55, 119.53, 107.99, 99.02, 96.34], "lstm": [203.53, 170.14, 162.59, 168.02, 161.62, 144.13, 154.02, 146.53, 154.58, 154.69, 133.03, 151.67, 162.33, 171.23, 155.79, 122.68, 124.3, 98.65, 84.86, 68.56, 61.91, 57.84, 58.33, 53.68, 43.66, 48.21, 55.97, 58.24, 59.03, 57.69, 67.45, 86.38, 92.5, 139.53, 156.83, 187.2, 198.31, 210.13, 171.61, 153.32, 148.11, 130.61, 120.89, 107.8, 115.83, 123.55, 116.94, 120.23]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -77.23, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.1, 4.85, 1.87, 2.24, 2.85, 5.86, 33.44, 47.77, 39.07, 34.48, 51.75, 79.3, 103.08, 110.23, 125.67, 126.89, 127.71, 127.88, 127.88, 208.83, 208.83, 208.83, 144.21, 136.68, 217.73, 305.36, 392.64, 470.79, 470.79, 470.79, 470.79, 470.79], "profit_aud": 470.79}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-172.5, -351.76, -351.76, -351.76, -351.76, -459.75, -562.81, -562.81, -597.1, -597.1, -597.1, -527.58, -458.25, -411.79, -376.51, -389.79, -388.92, -385.17, -386.85, -383.1, -377.04, -377.04, -404.61, -418.94, -425.04, -420.45, -403.19, -375.64, -375.64, -375.64, -375.64, -386.66, -378.49, -378.49, -338.77, -257.82, -184.7, -208.97, -273.59, -340.8, -421.85, -421.85, -421.85, -343.7, -280.12, -220.13, -160.91, -160.91], "profit_aud": -160.91}, "lightgbm": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 1.5, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -69.72, -228.98, -366.71, -474.7, -577.76, -577.76, -577.76, -490.82, -490.82, -490.82, -421.49, -375.03, -339.75, -353.03, -353.82, -350.07, -348.58, -344.83, -338.77, -328.72, -348.02, -362.36, -371.06, -366.48, -349.22, -321.67, -321.67, -321.67, -321.67, -321.67, -321.67, -321.67, -289.89, -208.94, -135.82, -62.74, -62.74, -129.96, -211.01, -211.01, -211.01, -132.86, -69.27, -69.27, -69.27, -69.27], "profit_aud": -69.27}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -107.99, -107.99, -107.99, -107.99, -107.99, -192.62, -192.62, -137.16, -90.69, -90.69, -90.69, -90.69, -90.69, -90.69, -90.69, -90.69, -90.69, -90.69, -76.36, -67.65, -63.07, -45.8, -45.8, -45.8, -39.45, -39.45, -39.45, -39.45, -39.45, -39.45, 41.5, 114.62, 187.7, 252.32, 252.32, 252.32, 252.32, 252.32, 174.17, 174.17, 228.16, 228.16, 228.16], "profit_aud": 228.16}}} \ No newline at end of file diff --git a/results/daily/2026-04-07.json b/results/daily/2026-04-07.json new file mode 100644 index 0000000..bbdd56a --- /dev/null +++ b/results/daily/2026-04-07.json @@ -0,0 +1 @@ +{"date": "2026-04-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [30.77, 32.88, 27.31, 29.81, 20.96, 23.25, 15.98, 9.35, 7.97, 17.81, 21.23, 21.49, 38.67, 51.07, 41.77, 34.17, 86.97, 40.9, 15.28, -0.72, -1.04, 9.07, -0.42, -0.98, -3.66, -4.1, -3.18, -2.35, -1.9, -3.23, -1.52, -5.5, -3.83, 62.02, 139.51, 135.73, 136.38, 125.76, 127.87, 132.23, 136.74, 134.76, 141.11, 141.9, 140.57, 141.97, 147.46, 160.79], "forecast_price": {"naive": [138.0, 143.41, 125.63, 127.41, 110.18, 86.39, 82.45, 76.38, 61.79, 69.55, 67.7, 55.62, 55.46, 37.17, 28.22, 10.63, -0.7, -3.0, -2.68, -3.0, -4.85, -8.04, -22.06, -11.47, -6.96, -3.67, -13.81, -22.04, -19.02, -11.45, -12.35, -9.8, -6.54, -1.4, 31.78, 64.76, 58.5, 58.46, 51.7, 53.77, 64.84, 70.1, 69.82, 62.52, 50.87, 47.99, 47.38, 48.96], "lightgbm": [57.66, 57.66, 59.98, 59.44, 58.57, 54.82, 54.82, 49.59, 43.33, 48.41, 49.03, 47.71, 49.68, 43.28, 37.64, 25.26, 22.34, 15.05, 11.53, 8.47, 8.18, 2.52, 6.28, 6.87, 10.2, 6.24, 4.35, -1.23, 6.3, 8.44, 11.34, 14.08, 18.13, 27.69, 46.32, 72.91, 67.9, 67.62, 62.36, 62.78, 69.07, 70.93, 69.29, 62.16, 54.7, 50.12, 49.27, 52.44], "lstm": [32.13, 29.4, 29.21, 21.21, 22.59, 20.04, 17.47, 19.27, 21.99, 25.86, 31.19, 38.76, 45.43, 49.91, 36.37, 33.0, 21.77, 9.41, 3.03, -5.88, -2.61, -9.35, -16.48, -12.53, -17.8, -16.24, -13.3, -11.15, -9.1, -5.56, 3.91, 9.31, 21.86, 25.84, 42.6, 58.89, 81.75, 77.86, 77.09, 72.57, 68.77, 62.07, 71.13, 55.08, 55.31, 54.87, 54.66, 63.05]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -11.63, -11.63, -31.6, -43.28, -53.24, -75.51, -75.51, -75.51, -32.01, 31.83, 84.04, 41.32, 150.04, 201.16, 201.16, 202.06, 203.35, 214.69, 214.29, 214.41, 218.98, 224.1, 228.08, 230.13, 227.75, 231.79, 229.89, 236.77, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 241.56, 418.94, 418.94, 596.4, 780.72, 981.71], "profit_aud": 981.71}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.96, 10.08, 10.08, 10.08, 10.08, 10.08, 10.08, 10.08, -0.79, -51.91, -34.95, -34.86, -34.73, -38.14, -37.61, -36.39, -40.96, -46.09, -42.12, -39.19, -36.81, -34.79, -32.9, -32.21, -31.73, -39.48, -39.48, 130.18, 130.18, 130.18, -29.66, -48.17, 122.75, 291.2, 467.58, 644.96, 644.96, 644.96, 644.96, 644.96], "profit_aud": 644.96}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.96, -9.96, -9.96, -9.96, 33.54, 33.54, 33.54, 33.54, 33.54, 33.54, 33.54, 33.54, 33.54, 22.2, 22.73, 22.73, 18.15, 23.28, 27.25, 30.18, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 31.5, 201.16, 201.16, 201.16, 201.16, 201.16, 372.09, 540.54, 716.92, 716.92, 716.92, 716.92, 716.92, 716.92], "profit_aud": 716.92}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -37.26, -37.26, -66.32, -86.29, -97.98, -102.4, -102.4, -102.4, -75.54, -27.2, 36.63, 88.84, 88.84, 88.84, 88.84, 88.84, 89.74, 88.59, 87.46, 87.98, 88.59, 93.16, 98.28, 102.26, 102.55, 102.79, 103.19, 103.19, 103.19, 103.19, 103.19, 103.19, 103.19, 273.67, 430.87, 590.71, 755.99, 755.99, 587.55, 746.29, 746.29, 746.29, 726.42, 542.09, 743.08], "profit_aud": 743.08}}} \ No newline at end of file diff --git a/results/daily/2026-04-08.json b/results/daily/2026-04-08.json new file mode 100644 index 0000000..93ec870 --- /dev/null +++ b/results/daily/2026-04-08.json @@ -0,0 +1 @@ +{"date": "2026-04-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [167.72, 170.07, 152.08, 175.74, 173.58, 248.3, 173.77, 168.01, 149.39, 136.48, 149.42, 154.02, 172.56, 140.53, 104.64, 36.52, 18.26, 94.99, 208.34, 89.71, 85.96, 46.45, 165.46, 91.57, 64.49, 50.61, 109.74, 64.51, 110.73, 52.21, 110.32, 84.82, 96.7, 118.2, 130.8, 123.88, 123.15, 105.68, 90.29, 83.27, 76.82, 65.25, 38.5, 21.33, 7.15, 0.85, -0.05, -0.24], "forecast_price": {"naive": [30.77, 32.88, 27.31, 29.81, 20.96, 23.25, 15.98, 9.35, 7.97, 17.81, 21.23, 21.49, 38.67, 51.07, 41.77, 34.17, 86.97, 40.9, 15.28, -0.72, -1.04, 9.07, -0.42, -0.98, -3.66, -4.1, -3.18, -2.35, -1.9, -3.23, -1.52, -5.5, -3.83, 62.02, 139.51, 135.73, 136.38, 125.76, 127.87, 132.23, 136.74, 134.76, 141.11, 141.9, 140.57, 141.97, 147.46, 160.79], "lightgbm": [54.78, 55.37, 51.66, 51.65, 52.48, 50.58, 51.27, 51.27, 44.65, 56.52, 57.18, 55.08, 55.22, 56.31, 55.88, 50.75, 69.51, 42.05, 24.87, 16.01, 15.59, 17.63, 10.98, 10.98, 13.47, 17.65, 18.1, 17.52, 19.78, 20.16, 21.05, 20.81, 30.76, 62.77, 112.24, 117.02, 117.43, 114.54, 114.54, 116.0, 117.37, 114.14, 112.23, 108.11, 108.38, 106.56, 106.56, 106.56], "lstm": [178.27, 165.47, 160.64, 154.28, 141.1, 128.65, 137.82, 132.7, 138.1, 134.14, 140.11, 145.73, 169.24, 180.03, 150.14, 112.57, 105.16, 83.69, 62.24, 49.2, 43.52, 37.81, 34.06, 28.72, 30.81, 28.94, 31.39, 28.82, 37.69, 37.87, 49.14, 59.59, 79.2, 100.65, 134.42, 168.28, 185.44, 181.6, 160.29, 156.12, 145.72, 120.2, 129.63, 103.13, 118.91, 103.58, 108.38, 116.4]}, "methods": {"perfect_foresight": {"charge_mw": [0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.67, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.75, 2.88, 4.0, 2.75, 2.75, 3.88, 5.0, 3.75, 4.88, 3.62, 4.75, 3.5, 4.62, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [-23.48, -23.48, -213.58, -213.58, -213.58, 96.79, 96.79, 96.79, 75.88, -94.72, -94.72, -94.72, 120.99, 120.99, 120.99, 75.33, 52.51, 52.51, 312.93, 238.02, 130.57, 72.51, 279.33, 279.33, 198.72, 135.45, 272.63, 191.99, 330.41, 265.15, 403.05, 297.02, 256.89, 404.63, 568.13, 722.98, 876.92, 876.92, 876.92, 876.92, 876.92, 876.92, 876.92, 876.92, 876.92, 876.92, 876.98, 877.28], "profit_aud": 877.28}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -96.34, -96.34, -313.55, -523.56, -710.3, -880.9, -880.9, -880.9, -686.76, -511.1, -380.3, -425.95, -403.13, -284.39, -284.39, -396.53, -503.98, -445.91, -285.42, -296.86, -377.48, -440.75, -577.92, -634.37, -495.95, -561.21, -423.31, -529.34, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -650.22, -623.56, -623.56, -622.49, -622.55, -622.85], "profit_aud": -622.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 1.38, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -310.38, -310.38, -310.38, -497.11, -377.7, -190.92, -190.92, -190.92, -190.92, -190.92, -236.58, -213.76, -213.76, -213.76, -263.55, -370.99, -370.99, -577.82, -692.28, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -772.9, -618.05, -464.11, -464.11, -464.11, -360.02, -264.0, -264.0, -264.0, -264.0, -264.0, -264.0, -264.0, -264.0], "profit_aud": -264.0}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 3.38, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -310.38, -310.38, -520.39, -520.39, -690.99, -690.99, -690.99, -475.28, -299.62, -208.06, -208.06, -208.06, -208.06, -208.06, -208.06, -208.06, -208.06, -208.06, -322.52, -403.14, -466.4, -527.31, -607.94, -607.94, -607.94, -607.94, -607.94, -607.94, -607.94, -607.94, -453.1, -299.16, -167.05, -54.19, -54.19, -54.19, -54.19, -54.19, -80.85, -72.81, -73.88, -73.88, -74.15], "profit_aud": -74.15}}} \ No newline at end of file diff --git a/results/daily/2026-04-09.json b/results/daily/2026-04-09.json new file mode 100644 index 0000000..2156038 --- /dev/null +++ b/results/daily/2026-04-09.json @@ -0,0 +1 @@ +{"date": "2026-04-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.68, -2.8, -4.15, -5.33, -8.68, -10.73, -11.84, -12.36, -11.86, -13.93, -7.61, -3.0, -3.21, -2.8, -4.4, -6.84, -6.05, -10.92, -11.06, -14.35, -8.95, -10.43, -6.62, -3.52, -3.38, -7.72, -9.0, -2.5, -0.44, -0.02, -1.03, -2.17, -4.7, -0.8, -17.52, -1.09, -0.54, -0.1, -1.93, -1.19, -1.64, -1.79, 0.05, -0.08, -0.09, -0.09, -0.04, -0.08], "forecast_price": {"naive": [167.72, 170.07, 152.08, 175.74, 173.58, 248.3, 173.77, 168.01, 149.39, 136.48, 149.42, 154.02, 172.56, 140.53, 104.64, 36.52, 18.26, 94.99, 208.34, 89.71, 85.96, 46.45, 165.46, 91.57, 64.49, 50.61, 109.74, 64.51, 110.73, 52.21, 110.32, 84.82, 96.7, 118.2, 130.8, 123.88, 123.15, 105.68, 90.29, 83.27, 76.82, 65.25, 38.5, 21.33, 7.15, 0.85, -0.05, -0.24], "lightgbm": [104.75, 103.46, 103.21, 95.89, 97.85, 97.47, 97.85, 98.44, 98.44, 99.09, 103.29, 104.44, 107.62, 106.63, 89.62, 64.87, 68.96, 69.85, 68.76, 36.43, 34.84, 22.71, 43.9, 30.06, 25.74, 21.97, 28.37, 26.68, 28.94, 22.98, 37.53, 41.99, 53.83, 80.22, 110.92, 112.94, 111.01, 97.41, 87.67, 86.63, 81.41, 72.01, 55.82, 55.88, 55.31, 56.69, 56.69, 56.69], "lstm": [12.97, 10.6, 7.58, 5.85, 4.09, 2.87, 0.72, 2.93, 5.4, 7.4, 13.05, 24.3, 35.94, 43.58, 41.98, 34.49, 27.8, 19.71, 11.39, 7.67, 3.1, 4.65, -2.14, 1.71, -5.43, -2.31, -1.97, 1.66, 3.67, 4.42, 11.16, 15.07, 25.81, 32.82, 44.76, 62.15, 68.93, 69.11, 60.03, 65.49, 54.98, 49.28, 50.32, 42.57, 42.52, 39.92, 41.78, 49.26]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 2.25, 3.38, 3.25, 2.0, 0.75, 1.88, 2.75, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 3.88, 5.0], "cumulative_profit_aud": [0.21, 0.56, 1.08, 1.74, 2.83, 9.54, 24.34, 39.79, 54.61, 72.02, 72.97, 69.22, 65.21, 61.71, 56.21, 64.75, 58.03, 71.69, 85.51, 103.45, 109.04, 122.08, 122.91, 119.5, 115.28, 124.92, 136.17, 136.49, 135.94, 135.91, 134.62, 137.34, 143.22, 142.21, 164.12, 164.12, 163.44, 163.31, 165.72, 166.92, 168.96, 171.2, 171.26, 171.18, 171.29, 171.4, 171.35, 171.45], "profit_aud": 171.45}, "naive": {"charge_mw": [0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.67, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.75, 2.88, 4.0, 2.75, 2.75, 3.88, 5.0, 3.75, 4.88, 3.62, 4.75, 3.5, 4.62, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [0.24, 0.24, 5.42, 5.42, 5.42, -8.0, -8.0, -8.0, -6.34, 11.07, 11.07, 11.07, 7.06, 7.06, 7.06, 15.61, 23.17, 23.17, 9.35, 21.33, 32.52, 45.56, 37.28, 37.28, 41.51, 51.15, 39.91, 43.03, 42.49, 42.51, 41.22, 43.94, 45.89, 44.89, 22.98, 21.62, 20.94, 20.94, 20.94, 20.94, 20.94, 20.94, 20.94, 20.94, 20.94, 20.94, 20.99, 21.09], "profit_aud": 21.09}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 3.05, 3.05, 3.05, 3.05, 3.05, 3.05, 3.05, 3.05, 4.3, 17.34, 9.06, 9.06, 13.29, 22.94, 27.93, 31.06, 31.06, 31.08, 31.08, 31.08, 31.08, 31.08, 9.18, 7.82, 7.14, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01, 7.01], "profit_aud": 7.01}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, 10.86, 24.27, 39.07, 54.52, 61.1, 61.1, 61.1, 61.1, 57.09, 53.59, 48.09, 39.55, 39.55, 39.55, 39.55, 39.55, 50.73, 39.0, 47.28, 47.28, 51.5, 61.15, 72.39, 73.78, 73.78, 73.78, 73.78, 73.78, 73.78, 73.78, 73.78, 72.42, 71.74, 71.62, 71.62, 70.12, 70.12, 70.12, 70.12, 70.12, 70.12, 70.24, 70.24, 70.15], "profit_aud": 70.15}}} \ No newline at end of file diff --git a/results/daily/2026-04-10.json b/results/daily/2026-04-10.json new file mode 100644 index 0000000..2d860a7 --- /dev/null +++ b/results/daily/2026-04-10.json @@ -0,0 +1 @@ +{"date": "2026-04-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [1.02, 0.3, -2.9, -3.38, -3.09, -3.35, -4.81, -4.4, -3.09, -2.89, -3.09, -3.6, -2.42, -1.35, -3.0, -2.99, -3.56, -5.8, -4.85, -11.48, -11.38, -13.03, -11.78, -6.62, -11.31, -14.67, -13.42, -15.18, -22.61, -19.22, -15.09, -10.62, -4.54, -2.06, -3.02, -3.17, -3.0, -3.12, -2.79, -1.04, -0.4, -0.09, -0.09, -1.44, -0.25, -0.09, -0.04, -0.05], "forecast_price": {"naive": [-1.68, -2.8, -4.15, -5.33, -8.68, -10.73, -11.84, -12.36, -11.86, -13.93, -7.61, -3.0, -3.21, -2.8, -4.4, -6.84, -6.05, -10.92, -11.06, -14.35, -8.95, -10.43, -6.62, -3.52, -3.38, -7.72, -9.0, -2.5, -0.44, -0.02, -1.03, -2.17, -4.7, -0.8, -17.52, -1.09, -0.54, -0.1, -1.93, -1.19, -1.64, -1.79, 0.05, -0.08, -0.09, -0.09, -0.04, -0.08], "lightgbm": [3.02, 3.02, 5.22, 1.13, -9.33, -9.33, -9.43, -9.43, -8.49, -7.1, 0.86, 13.09, 15.77, 13.19, 8.75, -2.0, -4.26, -4.52, -2.55, -11.65, -13.66, -17.23, -8.04, -6.6, -6.25, -12.41, -14.38, -6.25, -6.32, -5.38, -1.89, 5.22, 8.88, 18.97, 21.41, 44.11, 49.68, 49.26, 49.26, 48.7, 48.71, 45.61, 39.11, 40.28, 40.28, 40.06, 40.06, 40.06], "lstm": [3.59, -0.74, -0.15, -3.83, -4.69, -3.41, -4.37, -3.67, -0.54, 2.19, 7.24, 15.44, 26.29, 32.32, 25.66, 24.02, 16.87, 9.87, 7.72, 4.24, 0.36, -7.36, -5.3, -8.23, -6.84, -8.29, -9.89, -4.86, -4.45, -5.26, -0.73, 5.96, 11.04, 20.08, 28.34, 39.06, 45.61, 46.41, 50.09, 51.2, 51.73, 42.27, 47.04, 39.8, 39.23, 37.11, 38.32, 42.24]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.22, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [0.0, -0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.0, 2.5, 0.0, 1.75, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 1.5, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 4.25, 3.0, 2.88, 4.0, 2.75, 1.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 1.12, 1.38, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.62, 4.75, 4.62, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.36, 4.59, 4.59, 8.79, 14.8, 20.3, 20.3, 16.69, 16.69, 21.19, 18.17, 16.49, 16.07, 12.33, 12.77, 20.03, 14.64, 17.51, 17.51, 33.79, 38.21, 29.93, 29.93, 40.93, 40.93, 59.9, 88.17, 112.19, 131.05, 132.38, 132.95, 130.38, 130.38, 134.33, 134.33, 135.89, 136.24, 136.37, 136.42, 136.33, 136.22, 138.02, 138.33, 138.34, 138.3, 138.36], "profit_aud": 138.36}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 2.25, 3.38, 3.25, 2.0, 0.75, 1.88, 2.75, 3.88, 5.0, 3.75, 2.75, 3.88, 5.0, 3.88, 5.0], "cumulative_profit_aud": [-0.13, -0.16, 0.2, 0.62, 1.01, 3.1, 9.12, 14.62, 18.48, 22.1, 22.48, 17.98, 14.96, 13.27, 9.52, 13.26, 9.31, 16.56, 22.63, 36.98, 44.09, 60.38, 61.85, 55.42, 41.29, 59.63, 76.4, 78.3, 50.03, 26.0, 7.14, 20.42, 26.1, 23.53, 27.3, 27.3, 23.55, 19.65, 23.14, 24.18, 24.68, 24.8, 24.68, 23.29, 23.6, 23.71, 23.67, 23.73], "profit_aud": 23.73}, "lightgbm": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.67, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 4.0, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-1.28, -1.32, -4.95, -4.95, -1.09, 3.1, 9.12, 14.62, 16.55, 16.91, 16.91, 12.41, 9.39, 7.71, 3.96, 4.33, 5.22, 12.48, 6.41, 20.76, 34.98, 51.26, 65.99, 63.24, 49.1, 67.44, 84.22, 84.22, 89.87, 92.27, 94.16, 94.16, 94.16, 94.16, 94.16, 94.16, 90.41, 86.51, 83.01, 83.01, 82.51, 82.51, 82.51, 82.51, 82.51, 82.51, 82.51, 82.51], "profit_aud": 82.51}, "lstm": {"charge_mw": [0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 1.12, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, -0.37, -3.59, 0.64, 4.5, 6.6, 12.61, 18.11, 18.5, 18.5, 18.5, 18.5, 15.48, 13.79, 10.04, 6.3, 6.3, 6.3, 6.3, 6.3, 6.3, 22.59, 16.05, 24.33, 38.46, 56.8, 73.58, 73.58, 51.64, 75.67, 77.55, 77.55, 77.55, 77.55, 77.55, 77.55, 77.55, 77.55, 74.06, 72.76, 72.26, 72.26, 72.15, 72.15, 72.15, 72.26, 72.26, 72.21], "profit_aud": 72.21}}} \ No newline at end of file diff --git a/results/daily/2026-04-11.json b/results/daily/2026-04-11.json new file mode 100644 index 0000000..e66db4f --- /dev/null +++ b/results/daily/2026-04-11.json @@ -0,0 +1 @@ +{"date": "2026-04-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.23, -1.1, -2.51, -3.37, -3.0, -4.43, -9.01, -4.7, -3.0, -3.0, -3.52, -3.36, -2.28, 4.43, -0.79, -3.0, -3.17, -3.67, -9.52, -14.14, -5.92, -6.93, -6.89, -7.93, -5.52, -10.35, -12.29, -17.96, -16.03, -16.32, -14.05, -13.16, -6.52, -3.8, -1.53, -0.45, 1.34, 6.44, 6.11, 0.72, -0.05, -0.24, -0.28, -0.08, -0.25, -0.25, -0.88, -0.9], "forecast_price": {"naive": [1.02, 0.3, -2.9, -3.38, -3.09, -3.35, -4.81, -4.4, -3.09, -2.89, -3.09, -3.6, -2.42, -1.35, -3.0, -2.99, -3.56, -5.8, -4.85, -11.48, -11.38, -13.03, -11.78, -6.62, -11.31, -14.67, -13.42, -15.18, -22.61, -19.22, -15.09, -10.62, -4.54, -2.06, -3.02, -3.17, -3.0, -3.12, -2.79, -1.04, -0.4, -0.09, -0.09, -1.44, -0.25, -0.09, -0.04, -0.05], "lightgbm": [6.05, 6.79, 5.06, 4.2, 3.86, 3.56, 3.56, 3.38, 3.38, 3.96, 6.32, 6.51, 6.34, 3.4, -2.78, -2.89, -7.14, -13.15, -13.47, -20.39, -21.88, -23.15, -22.9, -18.45, -23.28, -22.68, -22.68, -23.15, -22.77, -21.44, -18.79, -14.69, 5.1, 16.15, 25.92, 41.89, 45.54, 43.99, 43.59, 43.39, 42.67, 40.84, 40.08, 41.52, 40.95, 40.79, 40.79, 40.79], "lstm": [-5.59, -9.57, -10.31, -10.16, -12.82, -13.15, -11.13, -11.63, -8.72, -7.49, -0.2, 5.35, 6.24, 8.6, 1.47, -0.41, -6.64, -15.23, -18.14, -19.83, -21.92, -27.89, -30.81, -34.66, -32.45, -30.68, -29.63, -23.08, -24.67, -22.49, -18.51, -11.81, -3.78, 0.98, 12.01, 22.63, 32.58, 33.4, 41.22, 39.9, 41.27, 37.04, 39.84, 31.8, 33.27, 27.8, 30.83, 36.32]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.12, 0.0, 0.0, 1.12, 2.25, 1.0, 0.88, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.03, 0.17, 0.48, 4.69, 4.69, 10.23, 21.5, 27.37, 26.53, 22.78, 27.18, 31.38, 28.54, 34.07, 33.08, 29.75, 29.75, 30.21, 42.11, 59.79, 52.39, 52.39, 47.6, 57.52, 50.61, 51.91, 53.44, 75.89, 95.93, 116.34, 133.9, 142.13, 142.95, 143.42, 143.61, 143.67, 145.34, 153.4, 161.04, 161.94, 161.94, 162.12, 162.46, 162.37, 162.68, 162.99, 164.09, 165.21], "profit_aud": 165.21}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.22, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5], "discharge_mw": [0.0, -0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.0, 2.5, 0.0, 1.75, 2.5, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 1.5, 2.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 4.25, 3.0, 2.88, 4.0, 2.75, 1.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 1.12, 1.38, 0.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.62, 4.75, 4.62, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0], "cumulative_profit_aud": [-0.0, 0.0, 0.31, 4.52, 4.52, 10.06, 21.33, 27.21, 27.21, 23.46, 23.46, 27.66, 24.81, 30.35, 30.23, 26.48, 26.88, 31.46, 20.89, 24.43, 24.43, 33.09, 35.68, 25.77, 25.77, 33.53, 33.53, 55.98, 76.02, 96.43, 113.99, 115.64, 116.45, 111.7, 111.7, 112.26, 112.26, 109.04, 108.28, 108.19, 108.19, 107.96, 107.62, 107.71, 108.03, 108.06, 107.08, 108.2], "profit_aud": 108.2}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.75, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.29, -0.95, -0.95, -0.95, -0.95, 4.59, 15.86, 21.74, 25.49, 23.24, 18.84, 14.64, 11.79, 11.79, 11.89, 12.26, 12.66, 13.12, 14.31, 16.07, 16.81, 25.48, 34.09, 24.18, 31.08, 40.14, 40.14, 62.58, 82.63, 84.67, 86.42, 88.07, 88.07, 88.07, 88.07, 88.07, 89.74, 97.8, 105.44, 106.34, 106.34, 106.34, 106.34, 106.34, 106.34, 106.34, 106.34, 106.34], "profit_aud": 106.34}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.03, 0.17, 2.05, 2.05, 5.8, 11.34, 22.61, 28.48, 28.86, 29.23, 29.67, 25.47, 22.63, 28.16, 27.17, 27.55, 27.94, 28.4, 29.59, 31.36, 32.1, 32.97, 41.58, 51.49, 58.39, 71.33, 79.01, 79.01, 83.02, 85.06, 86.81, 88.46, 89.27, 89.27, 89.27, 89.27, 89.27, 89.27, 96.92, 97.81, 97.75, 97.75, 97.41, 97.41, 97.41, 97.72, 97.84, 96.72], "profit_aud": 96.72}}} \ No newline at end of file diff --git a/results/daily/2026-04-12.json b/results/daily/2026-04-12.json new file mode 100644 index 0000000..723638c --- /dev/null +++ b/results/daily/2026-04-12.json @@ -0,0 +1 @@ +{"date": "2026-04-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.5, -3.27, -3.56, -4.54, -10.43, -13.08, -12.87, -12.5, -10.96, -10.9, -10.28, -7.92, -6.41, -3.42, -2.56, -3.26, -3.48, -3.76, -3.49, -6.38, -5.52, -7.02, -8.06, -6.15, -6.02, -8.28, -7.38, -7.81, -6.79, -7.07, -3.87, -3.07, -2.7, -0.07, -0.06, 8.63, 22.1, 22.62, 66.02, 79.35, 60.86, 98.2, 79.98, 121.5, 115.57, 71.17, 69.18, 99.96], "forecast_price": {"naive": [-0.23, -1.1, -2.51, -3.37, -3.0, -4.43, -9.01, -4.7, -3.0, -3.0, -3.52, -3.36, -2.28, 4.43, -0.79, -3.0, -3.17, -3.67, -9.52, -14.14, -5.92, -6.93, -6.89, -7.93, -5.52, -10.35, -12.29, -17.96, -16.03, -16.32, -14.05, -13.16, -6.52, -3.8, -1.53, -0.45, 1.34, 6.44, 6.11, 0.72, -0.05, -0.24, -0.28, -0.08, -0.25, -0.25, -0.88, -0.9], "lightgbm": [2.33, 2.33, -0.19, -1.17, -0.55, -1.22, -10.36, -1.4, -1.4, -0.57, 1.48, 3.85, 3.84, 4.39, 3.81, -1.57, -3.45, -2.92, -10.22, -13.56, -4.38, -7.07, -5.38, -11.03, -3.15, -13.86, -13.04, -13.68, -13.2, -11.43, -10.27, -7.48, 5.63, 21.78, 32.27, 44.7, 48.63, 49.49, 51.01, 47.59, 48.54, 49.12, 46.63, 46.82, 47.23, 47.23, 47.23, 47.23], "lstm": [-2.88, -11.26, -9.1, -7.66, -8.83, -9.84, -10.15, -10.14, -8.63, -8.07, -3.23, 1.87, -1.76, 2.19, -5.38, -4.19, -12.86, -17.28, -15.91, -18.55, -21.0, -25.39, -28.98, -30.5, -27.79, -27.02, -29.75, -24.31, -22.58, -21.95, -16.07, -10.64, -4.37, 4.46, 17.94, 25.59, 35.94, 34.25, 39.9, 39.9, 38.26, 34.59, 36.82, 27.3, 28.5, 24.78, 27.5, 32.39]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.88, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.31, 0.72, 1.17, 1.73, 3.04, 19.39, 35.47, 51.1, 64.8, 71.61, 72.9, 73.89, 74.69, 70.42, 67.21, 63.13, 59.76, 59.76, 59.76, 67.74, 61.61, 70.39, 80.47, 78.74, 71.22, 81.57, 90.79, 100.56, 100.56, 109.39, 109.88, 110.26, 110.6, 110.61, 110.62, 110.62, 110.62, 110.62, 110.62, 199.89, 123.81, 246.57, 346.54, 498.42, 642.88, 632.91, 546.43, 671.38], "profit_aud": 671.38}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 4.0, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.12, 0.0, 0.0, 1.12, 2.25, 1.0, 0.88, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.31, 0.72, 1.17, 6.84, 6.84, 23.19, 39.28, 54.9, 51.83, 38.2, 51.05, 60.95, 52.93, 48.66, 45.45, 41.83, 41.83, 42.3, 46.67, 54.64, 47.74, 47.74, 42.13, 49.82, 42.3, 43.34, 44.26, 54.02, 62.51, 71.35, 76.19, 78.1, 78.44, 78.45, 78.46, 77.38, 105.01, 133.28, 215.81, 314.99, 307.39, 233.73, 133.76, 285.63, 141.17, 52.21, -34.27, -159.22], "profit_aud": -159.22}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 1.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.44, 6.12, 0.34, 16.69, 32.77, 48.4, 62.1, 63.46, 63.46, 53.57, 45.55, 41.28, 38.07, 38.48, 42.83, 38.66, 43.02, 51.0, 44.1, 47.61, 37.53, 45.22, 37.69, 48.05, 57.26, 67.03, 75.52, 79.93, 80.42, 80.8, 80.8, 80.8, 80.8, 80.8, 108.43, 136.7, 219.23, 219.23, 219.23, 341.98, 341.98, 341.98, 341.98, 341.98, 341.98, 341.98], "profit_aud": 341.98}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.31, 4.4, 8.84, 3.16, 10.98, 27.33, 43.42, 59.04, 60.41, 61.77, 48.92, 39.03, 31.01, 26.74, 29.95, 26.33, 26.76, 27.7, 27.7, 28.5, 29.19, 30.07, 40.15, 47.84, 55.36, 60.54, 69.75, 70.73, 71.58, 72.46, 72.95, 73.33, 73.67, 73.67, 73.67, 73.67, 73.67, 73.67, 156.19, 255.38, 331.45, 331.45, 431.43, 414.42, 414.42, 325.45, 325.45, 450.4], "profit_aud": 450.4}}} \ No newline at end of file diff --git a/results/daily/2026-04-13.json b/results/daily/2026-04-13.json new file mode 100644 index 0000000..fbb7a71 --- /dev/null +++ b/results/daily/2026-04-13.json @@ -0,0 +1 @@ +{"date": "2026-04-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [98.42, 103.67, 87.1, 70.3, 93.68, 74.68, 90.9, 79.69, 93.32, 110.39, 99.61, 105.64, 102.96, 101.88, 87.49, 115.64, 104.98, 119.44, 88.11, 81.82, 57.97, 56.83, 42.04, 31.4, 124.62, 268.54, 209.98, 176.59, 183.54, 154.06, 120.09, 139.09, 144.32, 223.28, 176.99, 179.49, 172.92, 167.45, 165.14, 160.75, 148.93, 159.1, 170.44, 160.13, 162.08, 177.58, 171.44, 189.26], "forecast_price": {"naive": [-2.5, -3.27, -3.56, -4.54, -10.43, -13.08, -12.87, -12.5, -10.96, -10.9, -10.28, -7.92, -6.41, -3.42, -2.56, -3.26, -3.48, -3.76, -3.49, -6.38, -5.52, -7.02, -8.06, -6.15, -6.02, -8.28, -7.38, -7.81, -6.79, -7.07, -3.87, -3.07, -2.7, -0.07, -0.06, 8.63, 22.1, 22.62, 66.02, 79.35, 60.86, 98.2, 79.98, 121.5, 115.57, 71.17, 69.18, 99.96], "lightgbm": [34.95, 35.21, 31.94, 30.66, 21.71, 20.17, 20.17, 20.17, 19.27, 19.44, 23.34, 23.58, 31.45, 33.31, 31.4, 27.73, 26.03, 22.47, 20.51, 13.49, 12.46, 9.64, 0.22, 7.34, 9.79, -0.71, 0.33, 0.25, 7.37, 9.19, 16.58, 19.89, 22.49, 27.29, 34.23, 54.12, 49.97, 49.97, 64.42, 81.56, 63.73, 82.75, 73.31, 84.07, 82.77, 61.91, 60.72, 76.23], "lstm": [84.31, 79.5, 72.62, 77.52, 73.02, 67.62, 73.81, 69.15, 73.64, 75.15, 82.86, 87.18, 94.03, 95.38, 79.63, 65.59, 51.35, 50.03, 45.23, 32.88, 28.33, 22.45, 21.36, 20.79, 21.98, 18.78, 15.9, 16.11, 16.08, 17.7, 18.36, 21.31, 27.04, 46.93, 55.25, 78.38, 84.89, 89.34, 76.48, 82.0, 80.53, 70.97, 72.44, 61.59, 67.96, 55.78, 60.14, 69.25]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 3.62, 2.38, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -108.88, -196.75, -196.75, -290.1, -340.55, -440.16, -440.16, -302.17, -302.17, -170.12, -170.12, -170.12, -279.48, -134.93, -16.82, 132.47, 132.47, 87.06, 14.6, -56.44, -108.99, -148.23, -148.23, 187.45, 449.93, 582.37, 811.78, 619.21, 469.1, 295.24, 114.83, 393.94, 615.17, 839.53, 839.53, 839.53, 839.53, 839.53, 653.37, 631.1, 631.1, 631.1, 631.1, 853.07, 853.07, 1089.64], "profit_aud": 1089.64}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.12, 0.0, 1.12, 0.0, 1.12, 2.25, 1.88, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-12.3, -25.26, -36.15, -44.94, -56.65, -150.0, -263.62, -363.23, -479.88, -548.87, -561.32, -574.53, -587.4, -460.04, -350.68, -206.13, -104.3, -104.3, -104.3, -206.57, -142.23, -213.26, -265.81, -257.02, -101.24, -436.92, -699.4, -920.13, -920.13, -1112.7, -1127.71, -1145.1, -1163.14, -1191.05, -1213.17, -1213.17, -1213.17, -1213.17, -1213.17, -1032.33, -1218.49, -1019.62, -806.57, -606.41, -403.81, -428.67, -642.97, -406.4], "profit_aud": -406.4}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -93.35, -206.97, -251.2, -367.85, -505.83, -505.83, -505.83, -377.14, -249.79, -140.42, 4.13, 4.13, 4.13, 4.13, 4.13, 4.13, 4.13, -48.42, -87.66, 68.11, -267.57, -530.04, -750.77, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -878.33, -677.4, -863.55, -664.69, -472.94, -272.78, -70.18, -95.04, -309.34, -72.77], "profit_aud": -72.77}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -108.88, -108.88, -225.98, -319.33, -319.33, -418.94, -470.74, -470.74, -346.23, -214.17, -85.48, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, 41.87, -220.6, -441.33, -670.75, -863.32, -929.97, -929.97, -929.97, -929.97, -929.97, -929.97, -713.82, -504.51, -504.51, -303.57, -117.41, -117.41, -117.41, -117.41, -117.41, -339.38, -363.39, -126.82], "profit_aud": -126.82}}} \ No newline at end of file diff --git a/results/daily/2026-04-14.json b/results/daily/2026-04-14.json new file mode 100644 index 0000000..74da84e --- /dev/null +++ b/results/daily/2026-04-14.json @@ -0,0 +1 @@ +{"date": "2026-04-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [157.46, 176.26, 185.15, 177.22, 160.03, 129.78, 161.85, 155.34, 137.72, 145.77, 153.41, 160.8, 166.68, 165.63, 227.69, 192.08, 205.27, 171.27, 102.13, 105.13, 107.12, 181.27, 274.85, 243.17, 161.37, 159.15, 151.97, 146.61, 173.69, 218.05, 169.87, 127.93, 136.78, 155.97, 249.18, 211.95, 192.24, 177.63, 197.21, 183.92, 199.48, 217.45, 201.37, 168.51, 182.67, 214.41, 192.15, 239.56], "forecast_price": {"naive": [98.42, 103.67, 87.1, 70.3, 93.68, 74.68, 90.9, 79.69, 93.32, 110.39, 99.61, 105.64, 102.96, 101.88, 87.49, 115.64, 104.98, 119.44, 88.11, 81.82, 57.97, 56.83, 42.04, 31.4, 124.62, 268.54, 209.98, 176.59, 183.54, 154.06, 120.09, 139.09, 144.32, 223.28, 176.99, 179.49, 172.92, 167.45, 165.14, 160.75, 148.93, 159.1, 170.44, 160.13, 162.08, 177.58, 171.44, 189.26], "lightgbm": [99.97, 99.97, 92.68, 83.32, 89.81, 82.87, 89.81, 86.53, 90.16, 90.56, 93.33, 93.88, 96.83, 100.26, 97.57, 100.02, 99.11, 94.35, 77.58, 70.61, 50.8, 50.16, 37.48, 36.87, 65.95, 75.58, 73.52, 70.92, 71.59, 75.15, 74.8, 89.98, 99.01, 132.54, 145.65, 152.53, 143.9, 139.13, 145.01, 150.05, 136.88, 143.21, 137.73, 129.75, 129.75, 135.84, 129.52, 143.64], "lstm": [178.59, 182.37, 160.78, 162.78, 147.96, 146.46, 150.48, 141.26, 148.37, 143.73, 169.87, 156.84, 173.1, 207.68, 198.46, 202.77, 189.33, 157.84, 142.38, 117.8, 101.91, 92.6, 86.28, 85.3, 99.51, 97.61, 91.28, 85.53, 95.72, 88.94, 93.28, 125.11, 130.76, 142.74, 168.35, 216.98, 199.86, 200.85, 175.9, 173.38, 161.33, 154.03, 150.81, 129.36, 138.67, 116.55, 121.28, 140.92]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 4.62, 3.38, 2.12, 0.88, 0.88, 0.88, 2.0, 3.12, 2.88, 1.62, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 3.62, 2.38, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-196.83, -196.83, 11.47, 11.47, 11.47, -150.75, -150.75, -236.97, -409.12, -591.34, -783.09, -783.09, -783.09, -783.09, -498.49, -258.39, -1.8, -1.8, -129.47, -260.87, -394.78, -168.19, 175.37, 479.33, 479.33, 479.33, 289.37, 106.1, 149.52, 422.08, 422.08, 262.17, 91.2, -103.76, 207.71, 472.65, 472.65, 250.61, 250.61, 250.61, 250.61, 522.42, 723.79, 513.15, 513.15, 781.16, 781.16, 1080.62], "profit_aud": 1080.62}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 3.62, 2.38, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -231.44, -452.96, -452.96, -615.18, -705.01, -899.18, -899.18, -716.97, -716.97, -515.97, -515.97, -515.97, -800.58, -560.48, -329.55, -115.46, -115.46, -173.81, -307.71, -534.29, -877.86, -1181.82, -1181.82, -982.88, -792.91, -682.95, -465.83, -738.4, -950.73, -1110.65, -1281.62, -1086.65, -775.18, -510.24, -510.24, -510.24, -510.24, -510.24, -759.58, -790.03, -790.03, -790.03, -790.03, -522.02, -522.02, -222.56], "profit_aud": -222.56}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, 1.12, 1.12, 2.25, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 3.38, 2.12, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -221.52, -221.52, -383.74, -383.74, -577.91, -577.91, -577.91, -577.91, -577.91, -577.91, -370.88, -370.88, -130.78, 48.83, 48.83, 48.83, 48.83, -85.08, -311.66, -655.22, -959.18, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -1048.75, -737.27, -472.33, -472.33, -472.33, -225.82, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08, 4.08], "profit_aud": 4.08}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -200.04, -362.26, -362.26, -556.43, -632.87, -815.08, -815.08, -815.08, -815.08, -608.05, -323.44, -83.34, 173.24, 173.24, 173.24, 173.24, 173.24, 173.24, -170.32, -474.28, -474.28, -474.28, -558.63, -741.89, -741.89, -1014.45, -1014.45, -1014.45, -1014.45, -1014.45, -1014.45, -749.51, -509.22, -287.18, -40.66, -40.66, -40.66, -40.66, -40.66, -40.66, -40.66, -308.67, -335.57, -36.12], "profit_aud": -36.12}}} \ No newline at end of file diff --git a/results/daily/2026-04-15.json b/results/daily/2026-04-15.json new file mode 100644 index 0000000..bcbc7a8 --- /dev/null +++ b/results/daily/2026-04-15.json @@ -0,0 +1 @@ +{"date": "2026-04-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [251.78, 297.1, 243.33, 190.78, 158.42, 138.71, 138.3, 140.62, 179.9, 165.03, 170.44, 177.87, 165.03, 174.51, 174.34, 163.04, 106.97, 129.12, 62.73, 17.86, 13.72, 29.85, 16.45, 9.11, 11.02, 8.65, 11.01, 9.37, 10.57, 17.09, 18.15, 24.42, 83.88, 121.27, 148.14, 178.56, 164.06, 166.95, 161.98, 177.99, 173.12, 159.21, 165.38, 161.28, 139.34, 136.27, 169.11, 165.61], "forecast_price": {"naive": [157.46, 176.26, 185.15, 177.22, 160.03, 129.78, 161.85, 155.34, 137.72, 145.77, 153.41, 160.8, 166.68, 165.63, 227.69, 192.08, 205.27, 171.27, 102.13, 105.13, 107.12, 181.27, 274.85, 243.17, 161.37, 159.15, 151.97, 146.61, 173.69, 218.05, 169.87, 127.93, 136.78, 155.97, 249.18, 211.95, 192.24, 177.63, 197.21, 183.92, 199.48, 217.45, 201.37, 168.51, 182.67, 214.41, 192.15, 239.56], "lightgbm": [145.74, 149.66, 156.77, 146.18, 134.58, 112.38, 134.58, 129.07, 132.15, 135.32, 140.71, 142.87, 154.41, 153.27, 173.05, 150.59, 146.42, 148.55, 105.25, 90.68, 82.83, 86.67, 121.21, 105.71, 86.63, 78.48, 96.42, 87.02, 94.41, 94.04, 103.53, 101.04, 131.21, 153.91, 205.25, 181.36, 175.61, 170.85, 174.93, 170.94, 170.75, 154.62, 147.92, 129.88, 138.4, 143.93, 141.39, 146.8], "lstm": [190.96, 192.47, 178.77, 165.53, 153.87, 151.95, 159.97, 148.5, 152.2, 153.77, 182.11, 174.07, 192.56, 213.53, 201.16, 214.6, 194.99, 182.35, 166.05, 144.16, 123.95, 114.22, 110.79, 108.48, 115.19, 114.01, 113.57, 106.67, 105.84, 112.2, 114.28, 135.6, 155.33, 160.81, 177.65, 203.91, 199.27, 202.43, 177.66, 178.3, 170.68, 166.08, 158.97, 141.68, 152.16, 125.22, 135.2, 155.11]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 2.12, 2.12, 0.88, 0.88, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-314.73, 19.51, 19.51, 19.51, 19.51, -153.87, -326.75, -502.53, -277.65, -277.65, -277.65, -55.31, -55.31, 97.39, 97.39, 97.39, -36.32, 108.94, 108.94, 106.44, 89.29, 126.6, 126.6, 115.21, 115.21, 104.4, 98.29, 86.57, 73.36, 73.36, 73.36, 73.36, 73.36, 73.36, 73.36, 296.55, 296.55, 505.24, 505.24, 727.72, 944.12, 944.12, 944.12, 944.12, 769.95, 599.61, 811.0, 976.61], "profit_aud": 976.61}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 3.5, 4.62, 3.38, 2.12, 0.88, 0.88, 0.88, 2.0, 3.12, 2.88, 1.62, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 3.62, 2.38, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-314.73, -314.73, -40.98, -40.98, -40.98, -214.36, -214.36, -292.4, -517.28, -723.57, -936.62, -936.62, -936.62, -936.62, -718.7, -514.89, -381.18, -381.18, -459.6, -481.92, -499.06, -461.76, -441.2, -429.81, -429.81, -429.81, -443.56, -455.28, -452.64, -431.27, -431.27, -461.8, -566.65, -718.24, -533.06, -309.86, -309.86, -518.55, -518.55, -518.55, -518.55, -319.54, -154.17, -355.77, -355.77, -185.44, -185.44, 21.57], "profit_aud": 21.57}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.67, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 3.12, 3.12, 4.25, 4.25, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -198.03, -371.41, -448.17, -623.94, -848.82, -848.82, -848.82, -848.82, -642.53, -424.39, -206.46, -2.66, -2.66, -2.66, -2.66, -24.98, -42.13, -79.43, -58.88, -47.48, -61.26, -72.08, -72.08, -83.79, -83.79, -98.06, -98.06, -98.06, -98.06, -98.06, 87.11, 310.31, 515.39, 515.39, 717.86, 717.86, 717.86, 717.86, 717.86, 516.26, 516.26, 516.26, 516.26, 702.57], "profit_aud": 702.57}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -87.92, -261.31, -261.31, -437.08, -661.96, -868.25, -868.25, -868.25, -868.25, -650.11, -432.18, -228.38, -94.67, -94.67, -94.67, -94.67, -94.67, -94.67, -115.23, -126.62, -126.62, -126.62, -126.62, -138.33, -151.55, -161.04, -161.04, -161.04, -161.04, -161.04, -161.04, 62.16, 267.24, 475.92, 475.92, 698.41, 698.41, 698.41, 698.41, 698.41, 698.41, 528.07, 504.4, 711.4], "profit_aud": 711.4}}} \ No newline at end of file diff --git a/results/daily/2026-04-16.json b/results/daily/2026-04-16.json new file mode 100644 index 0000000..21d9051 --- /dev/null +++ b/results/daily/2026-04-16.json @@ -0,0 +1 @@ +{"date": "2026-04-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [139.43, 138.02, 138.95, 141.45, 124.94, 159.99, 148.11, 110.07, 75.42, 26.17, 19.97, 4.6, 13.15, 13.48, 8.95, 0.17, -3.17, -4.11, -5.44, -11.94, -8.61, -12.53, -13.47, -17.54, -19.78, -17.21, -15.87, -11.21, -9.28, -4.4, -1.43, -0.03, 1.68, 9.44, 73.12, 172.28, 194.07, 228.59, 192.3, 190.44, 187.64, 186.08, 174.38, 150.85, 213.05, 159.63, 138.0, 138.01], "forecast_price": {"naive": [251.78, 297.1, 243.33, 190.78, 158.42, 138.71, 138.3, 140.62, 179.9, 165.03, 170.44, 177.87, 165.03, 174.51, 174.34, 163.04, 106.97, 129.12, 62.73, 17.86, 13.72, 29.85, 16.45, 9.11, 11.02, 8.65, 11.01, 9.37, 10.57, 17.09, 18.15, 24.42, 83.88, 121.27, 148.14, 178.56, 164.06, 166.95, 161.98, 177.99, 173.12, 159.21, 165.38, 161.28, 139.34, 136.27, 169.11, 165.61], "lightgbm": [117.87, 113.52, 110.41, 98.8, 96.75, 93.89, 94.68, 94.68, 87.33, 95.64, 104.37, 106.15, 117.58, 117.46, 122.45, 119.34, 98.77, 85.92, 51.46, 26.41, 24.78, 28.02, 22.39, 27.21, 27.67, 22.45, 21.41, 27.67, 29.47, 32.58, 37.44, 38.83, 62.56, 89.14, 137.23, 147.33, 140.9, 140.9, 140.26, 145.31, 141.63, 131.3, 126.77, 119.02, 118.61, 117.8, 121.28, 121.6], "lstm": [135.47, 140.77, 132.99, 106.1, 99.88, 96.49, 95.91, 90.76, 95.17, 92.14, 117.4, 112.53, 154.38, 164.94, 157.49, 143.07, 120.85, 96.03, 93.67, 71.9, 59.01, 42.2, 35.87, 31.45, 33.05, 34.1, 33.7, 38.3, 45.24, 50.97, 68.81, 86.29, 104.74, 139.73, 144.17, 185.72, 189.15, 178.47, 159.17, 159.79, 168.47, 150.11, 148.87, 140.08, 129.85, 126.92, 131.96, 139.42]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -19.32, -19.32, -19.32, -175.49, 24.5, 24.5, 24.5, 24.5, 24.5, 24.5, 18.75, 18.75, 33.92, 33.92, 33.92, 34.32, 34.83, 35.51, 50.44, 40.89, 42.45, 50.87, 72.79, 97.51, 119.03, 138.87, 140.27, 141.43, 141.98, 142.16, 142.16, 142.16, 142.16, 142.16, 142.16, 384.75, 670.49, 910.86, 1125.1, 1125.1, 1125.1, 1125.1, 936.55, 1202.85, 1202.85, 1202.85, 1202.85], "profit_aud": 1202.85}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 2.12, 2.12, 0.88, 0.88, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-174.29, -19.02, -19.02, -19.02, -19.02, -219.01, -404.14, -541.73, -447.45, -447.45, -447.45, -441.7, -441.7, -429.9, -429.9, -429.9, -425.94, -430.56, -430.56, -428.89, -418.13, -433.79, -433.79, -411.87, -411.87, -390.35, -381.54, -367.53, -355.93, -355.93, -355.93, -355.93, -355.93, -355.93, -355.93, -140.57, -140.57, 145.17, 145.17, 383.22, 617.77, 617.77, 617.77, 617.77, 351.46, 151.92, 324.42, 462.43], "profit_aud": 462.43}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -199.99, -385.12, -522.71, -616.98, -631.5, -631.5, -631.5, -615.07, -598.21, -587.03, -586.82, -586.82, -586.82, -586.82, -580.19, -569.43, -569.43, -552.59, -552.59, -552.59, -531.08, -511.24, -511.24, -511.24, -511.24, -511.24, -511.24, -511.24, -511.24, -511.24, -295.88, -53.3, -53.3, -53.3, 184.75, 419.31, 419.31, 419.31, 419.31, 419.31, 419.31, 419.31, 419.31], "profit_aud": 419.31}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -88.8, -273.93, -411.51, -505.79, -538.49, -538.49, -538.49, -522.06, -505.2, -494.02, -493.81, -493.81, -493.81, -493.81, -493.81, -493.81, -493.81, -486.33, -464.41, -439.69, -418.17, -398.33, -398.33, -398.33, -398.33, -398.33, -398.33, -398.33, -398.33, -398.33, -182.98, 59.61, 345.35, 345.35, 345.35, 579.9, 579.9, 579.9, 579.9, 579.9, 579.9, 579.9, 579.9], "profit_aud": 579.9}}} \ No newline at end of file diff --git a/results/daily/2026-04-17.json b/results/daily/2026-04-17.json new file mode 100644 index 0000000..b3cdfd5 --- /dev/null +++ b/results/daily/2026-04-17.json @@ -0,0 +1 @@ +{"date": "2026-04-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [135.59, 138.82, 150.62, 173.16, 167.42, 165.03, 121.1, 149.37, 170.44, 170.44, 170.44, 159.63, 143.05, 121.31, 78.19, 42.51, 44.44, 15.18, 3.32, 10.79, 75.9, 125.07, -0.04, -1.47, -2.13, -5.21, -5.96, -9.33, -8.04, -5.84, -12.9, -9.3, -2.47, 19.6, 93.47, 95.69, 89.75, 105.42, 98.16, 82.42, 85.06, 80.87, 77.41, 77.68, 76.5, 79.96, 83.7, 87.14], "forecast_price": {"naive": [139.43, 138.02, 138.95, 141.45, 124.94, 159.99, 148.11, 110.07, 75.42, 26.17, 19.97, 4.6, 13.15, 13.48, 8.95, 0.17, -3.17, -4.11, -5.44, -11.94, -8.61, -12.53, -13.47, -17.54, -19.78, -17.21, -15.87, -11.21, -9.28, -4.4, -1.43, -0.03, 1.68, 9.44, 73.12, 172.28, 194.07, 228.59, 192.3, 190.44, 187.64, 186.08, 174.38, 150.85, 213.05, 159.63, 138.0, 138.01], "lightgbm": [97.21, 89.02, 91.78, 81.37, 79.43, 80.61, 78.5, 77.27, 70.76, 81.01, 80.6, 78.5, 81.24, 79.11, 58.64, 47.83, 40.44, 31.35, 27.81, 4.41, 2.6, -0.09, -1.93, 0.3, -2.15, -2.15, -2.15, -1.68, -1.14, 8.7, 11.32, 20.51, 31.73, 42.76, 65.45, 136.67, 131.34, 132.86, 130.74, 130.67, 127.06, 121.99, 118.07, 110.32, 111.96, 110.32, 110.32, 110.32], "lstm": [120.54, 121.48, 113.28, 101.77, 94.54, 87.53, 91.77, 86.45, 84.9, 82.35, 94.29, 87.39, 97.14, 88.22, 73.49, 61.87, 50.54, 38.38, 32.51, 24.0, 12.22, 8.88, 0.63, 0.44, 0.27, 4.04, 6.0, 5.83, 12.67, 16.94, 29.9, 43.37, 50.76, 76.04, 87.12, 132.85, 131.0, 143.69, 147.05, 147.32, 147.17, 131.16, 129.59, 120.21, 118.07, 115.74, 115.62, 119.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-169.49, -343.01, -531.28, -314.83, -210.19, -210.19, -361.56, -548.28, -335.23, -122.18, 90.87, 90.87, 90.87, 90.87, 90.87, 90.87, 90.87, 86.62, 82.47, 68.98, 163.86, 320.2, 320.2, 320.38, 320.65, 321.3, 325.77, 337.44, 347.49, 347.49, 363.62, 375.24, 375.55, 375.55, 492.38, 612.0, 612.0, 743.78, 866.48, 866.48, 866.48, 866.48, 855.64, 855.64, 760.01, 760.01, 760.01, 868.93], "profit_aud": 868.93}, "naive": {"charge_mw": [0.0, 0.28, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.12, 0.12, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -19.44, -19.44, -19.44, -228.71, -22.42, -22.42, -22.42, -22.42, -22.42, -22.42, -221.95, -221.95, -85.48, -85.48, -85.48, -91.03, -92.93, -93.35, -106.84, -22.58, -38.22, -38.19, -36.35, -33.69, -27.18, -19.73, -18.56, -17.56, -16.83, -15.22, -14.05, -14.05, -14.05, -14.05, -14.05, 98.14, 229.92, 352.61, 445.34, 445.34, 445.34, 445.34, 348.24, 443.88, 443.88, 443.88, 443.88], "profit_aud": 443.88}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -213.05, -213.05, -213.05, -213.05, -52.12, -52.12, -52.12, -52.12, -52.12, -52.12, -52.12, -52.12, -52.12, -83.38, -83.33, -85.17, -82.51, -76.0, -68.55, -56.88, -51.86, -51.86, -51.86, -51.86, -51.86, -51.86, -51.86, 67.76, 179.95, 311.73, 434.42, 434.42, 434.42, 434.42, 434.42, 434.42, 434.42, 434.42, 434.42, 434.42], "profit_aud": 434.42}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -23.86, -236.91, -236.91, -236.91, -58.09, -58.09, -58.09, -58.09, -58.09, -58.09, -58.09, -58.09, -58.09, -58.09, -58.05, -56.21, -53.54, -47.04, -47.04, -41.86, -41.86, -41.86, -41.86, -41.86, -41.86, -41.86, -41.86, -41.86, -41.86, 89.92, 212.62, 315.64, 421.98, 421.98, 421.98, 421.98, 421.98, 421.98, 421.98, 421.98], "profit_aud": 421.98}}} \ No newline at end of file diff --git a/results/daily/2026-04-18.json b/results/daily/2026-04-18.json new file mode 100644 index 0000000..ea88525 --- /dev/null +++ b/results/daily/2026-04-18.json @@ -0,0 +1 @@ +{"date": "2026-04-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [82.8, 85.96, 81.51, 74.34, 67.92, 67.99, 65.97, 59.29, 64.79, 67.37, 65.34, 63.91, 67.41, 73.25, 61.96, 25.08, 6.68, -0.44, -2.68, -0.0, -0.19, 1.94, 2.7, 1.53, 1.62, 0.87, 0.01, -0.66, -1.39, -2.01, -2.55, 15.25, 40.32, 101.29, 132.32, 120.78, 122.58, 108.1, 96.64, 93.85, 97.14, 92.87, 99.48, 98.13, 89.81, 91.12, 88.52, 93.35], "forecast_price": {"naive": [135.59, 138.82, 150.62, 173.16, 167.42, 165.03, 121.1, 149.37, 170.44, 170.44, 170.44, 159.63, 143.05, 121.31, 78.19, 42.51, 44.44, 15.18, 3.32, 10.79, 75.9, 125.07, -0.04, -1.47, -2.13, -5.21, -5.96, -9.33, -8.04, -5.84, -12.9, -9.3, -2.47, 19.6, 93.47, 95.69, 89.75, 105.42, 98.16, 82.42, 85.06, 80.87, 77.41, 77.68, 76.5, 79.96, 83.7, 87.14], "lightgbm": [99.98, 98.71, 96.2, 87.92, 87.98, 83.74, 79.7, 81.37, 76.55, 67.07, 64.73, 63.24, 63.44, 65.77, 50.9, 28.79, 29.08, 12.85, 6.16, 1.81, 14.96, 14.54, -3.37, -5.08, -2.6, -7.68, -7.68, -12.13, -12.1, -4.15, -3.12, 3.0, 16.74, 29.96, 77.15, 99.23, 94.79, 101.88, 100.27, 90.72, 89.67, 85.15, 76.85, 73.56, 74.01, 76.05, 77.94, 77.94], "lstm": [70.52, 66.58, 63.26, 54.96, 52.52, 45.71, 45.37, 46.97, 42.92, 42.76, 50.74, 44.65, 41.81, 35.67, 18.87, 5.45, -0.09, -13.88, -17.1, -25.1, -35.12, -41.22, -49.32, -45.61, -49.39, -45.03, -37.19, -33.69, -31.56, -23.91, -13.25, -1.0, 10.2, 24.81, 39.25, 64.93, 73.77, 84.31, 85.71, 85.78, 84.3, 80.23, 82.71, 78.85, 71.05, 68.23, 73.05, 80.05]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -74.12, -74.12, -74.12, -74.12, -83.06, -83.06, 8.5, 8.5, 8.5, 8.5, 9.04, 12.4, 12.41, 12.64, 15.07, 18.44, 19.59, 21.61, 21.61, 21.6, 22.43, 24.16, 26.67, 29.86, 29.86, 29.86, 29.86, 195.26, 346.23, 499.45, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57, 634.57], "profit_aud": 634.57}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 2.12, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-103.51, -210.95, -312.84, -219.91, -177.46, -177.46, -259.93, -334.04, -253.05, -168.84, -87.17, -87.17, -87.17, -87.17, -87.17, -87.17, -87.17, -87.05, -83.69, -83.69, -83.93, -81.5, -81.83, -82.03, -82.23, -82.34, -82.35, -81.52, -79.78, -79.78, -76.6, -95.66, -100.7, -100.7, 64.7, 215.67, 215.67, 350.79, 471.59, 471.59, 471.59, 471.59, 457.66, 457.66, 345.4, 345.4, 345.4, 462.09], "profit_aud": 462.09}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 3.48, 3.48, 3.24, 5.67, 5.0, 3.09, 5.11, 4.02, 4.0, 4.83, 6.57, 7.82, 8.14, 8.14, 8.14, 8.14, 8.14, 159.11, 312.33, 447.45, 568.25, 568.25, 568.25, 568.25, 568.25, 568.25, 568.25, 568.25, 568.25, 568.25], "profit_aud": 568.25}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.07, -93.28, -11.61, -11.61, -11.61, -11.61, -11.61, -11.61, -12.45, -12.39, -12.06, -12.05, -12.03, -13.25, -16.61, -18.52, -20.54, -21.63, -21.63, -21.55, -21.38, -21.13, -20.81, -22.71, -22.71, -22.71, -22.71, -22.71, -22.71, 112.4, 233.2, 350.52, 471.94, 471.94, 471.94, 471.94, 459.36, 345.46, 345.46, 462.15], "profit_aud": 462.15}}} \ No newline at end of file diff --git a/results/daily/2026-04-19.json b/results/daily/2026-04-19.json new file mode 100644 index 0000000..c15ed8f --- /dev/null +++ b/results/daily/2026-04-19.json @@ -0,0 +1 @@ +{"date": "2026-04-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [86.81, 79.52, 81.27, 72.43, 86.14, 83.24, 74.43, 87.01, 78.5, 73.05, 82.56, 89.62, 109.96, 106.45, 58.65, 5.41, 3.09, 0.95, 1.16, -0.8, -1.17, -2.93, -2.94, -3.05, -3.15, -2.53, -3.46, -3.46, -2.77, -2.72, -2.09, 9.19, 42.15, 103.24, 175.86, 161.87, 168.62, 158.34, 140.54, 136.52, 127.93, 129.94, 129.08, 100.62, 88.02, 101.17, 108.11, 112.97], "forecast_price": {"naive": [82.8, 85.96, 81.51, 74.34, 67.92, 67.99, 65.97, 59.29, 64.79, 67.37, 65.34, 63.91, 67.41, 73.25, 61.96, 25.08, 6.68, -0.44, -2.68, -0.0, -0.19, 1.94, 2.7, 1.53, 1.62, 0.87, 0.01, -0.66, -1.39, -2.01, -2.55, 15.25, 40.32, 101.29, 132.32, 120.78, 122.58, 108.1, 96.64, 93.85, 97.14, 92.87, 99.48, 98.13, 89.81, 91.12, 88.52, 93.35], "lightgbm": [62.87, 63.25, 61.29, 53.48, 52.32, 50.3, 50.18, 48.87, 50.15, 49.96, 49.09, 49.25, 46.49, 46.56, 41.04, 19.54, 14.91, 10.45, 9.73, 4.62, 12.88, 8.31, 0.31, 3.57, 3.57, -0.36, 0.57, -0.36, 0.32, 3.95, 9.63, 17.53, 33.56, 63.06, 97.98, 106.34, 107.53, 97.71, 92.34, 94.41, 90.47, 90.69, 86.32, 86.35, 81.97, 76.74, 76.74, 83.96], "lstm": [105.14, 93.34, 94.73, 90.52, 80.84, 78.41, 82.08, 77.79, 69.45, 65.96, 68.72, 59.06, 58.05, 53.67, 36.96, 20.75, 12.43, 6.34, 6.93, -3.97, -10.31, -17.61, -17.48, -13.64, -11.56, -14.2, -7.58, -3.22, 4.37, 9.48, 15.23, 35.33, 45.83, 73.33, 94.41, 123.64, 124.79, 121.29, 113.6, 104.03, 99.73, 96.27, 92.37, 84.52, 78.69, 77.03, 81.53, 88.77]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -90.53, -90.53, -90.53, -183.58, -183.58, -216.15, -307.46, -307.46, -195.43, -57.97, 75.09, 75.09, 75.09, 75.09, 73.9, 75.21, 75.31, 75.45, 77.65, 81.33, 85.14, 89.08, 85.92, 90.23, 94.55, 94.9, 95.24, 95.5, 95.5, 95.5, 95.5, 315.33, 517.67, 728.45, 926.37, 926.37, 926.37, 926.37, 926.37, 926.37, 912.28, 802.25, 802.25, 802.25, 943.46], "profit_aud": 943.46}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -108.77, -108.77, -108.77, -108.77, -121.31, -121.31, 11.75, 11.75, 11.75, 11.75, 10.56, 9.11, 10.1, 11.57, 7.91, 4.23, 1.94, -2.0, -2.0, -0.08, 4.24, 7.7, 11.11, 13.72, 13.72, 13.72, 13.72, 233.55, 435.89, 646.67, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59, 844.59], "profit_aud": 844.59}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16, 0.83, -0.63, -0.63, 3.05, 3.05, 1.08, 4.24, 8.56, 12.88, 16.35, 16.35, 16.35, 16.35, 16.35, 16.35, 236.17, 438.52, 649.29, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21, 847.21], "profit_aud": 847.21}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.25, 3.9, 7.58, 11.39, 13.36, 16.52, 16.95, 17.39, 17.39, 17.39, 17.39, 17.39, 17.39, 17.39, 17.39, 219.73, 430.5, 628.42, 804.1, 804.1, 804.1, 804.1, 804.1, 804.1, 791.77, 665.31, 665.31, 806.52], "profit_aud": 806.52}}} \ No newline at end of file diff --git a/results/daily/2026-04-20.json b/results/daily/2026-04-20.json new file mode 100644 index 0000000..041088e --- /dev/null +++ b/results/daily/2026-04-20.json @@ -0,0 +1 @@ +{"date": "2026-04-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [137.99, 144.79, 146.38, 136.44, 138.0, 124.13, 135.36, 135.38, 143.82, 145.86, 139.86, 161.41, 148.8, 157.31, 175.56, 218.95, 208.93, 146.16, 119.58, 116.78, 149.28, 47.46, 39.35, 105.17, 101.3, 106.14, 70.07, 52.84, 49.01, 49.01, 30.36, 38.07, 80.26, 104.58, 120.62, 137.75, 126.19, 123.01, 112.48, 107.53, 104.27, 95.75, 91.94, 87.32, 87.38, 88.55, 88.44, 93.79], "forecast_price": {"naive": [86.81, 79.52, 81.27, 72.43, 86.14, 83.24, 74.43, 87.01, 78.5, 73.05, 82.56, 89.62, 109.96, 106.45, 58.65, 5.41, 3.09, 0.95, 1.16, -0.8, -1.17, -2.93, -2.94, -3.05, -3.15, -2.53, -3.46, -3.46, -2.77, -2.72, -2.09, 9.19, 42.15, 103.24, 175.86, 161.87, 168.62, 158.34, 140.54, 136.52, 127.93, 129.94, 129.08, 100.62, 88.02, 101.17, 108.11, 112.97], "lightgbm": [96.78, 92.92, 92.08, 75.67, 90.68, 85.41, 84.47, 85.35, 83.33, 86.04, 102.05, 105.7, 112.31, 118.58, 93.83, 82.3, 78.57, 66.13, 52.81, 48.15, 38.06, 34.07, 29.8, 29.8, 34.82, 37.88, 37.88, 37.88, 36.97, 38.55, 37.68, 45.64, 55.6, 102.73, 137.02, 139.31, 136.86, 135.95, 135.33, 133.02, 127.48, 120.15, 113.62, 103.08, 96.1, 104.45, 105.18, 106.89], "lstm": [105.11, 101.31, 102.38, 89.41, 84.35, 82.32, 88.77, 82.91, 84.31, 90.28, 101.52, 103.2, 125.19, 136.8, 102.13, 82.06, 57.7, 39.96, 37.37, 24.23, 15.51, 3.5, 4.0, 8.3, 6.54, 8.33, 13.03, 14.59, 18.16, 20.23, 28.27, 48.72, 55.95, 95.23, 112.53, 158.1, 164.34, 160.92, 135.34, 124.55, 120.66, 114.61, 111.01, 101.54, 95.23, 89.63, 99.85, 99.82]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.25, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-76.58, -76.58, -76.58, -247.13, -247.13, -402.29, -571.49, -740.71, -740.71, -740.71, -740.71, -538.94, -538.94, -538.94, -319.49, -45.8, 215.36, 215.36, 198.62, 52.64, 239.25, 179.92, 130.73, 235.9, 235.9, 368.57, 368.57, 339.24, 277.98, 216.71, 178.77, 131.18, 131.18, 131.18, 281.96, 454.15, 611.89, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64, 765.64], "profit_aud": 765.64}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 2.25, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -170.55, -170.55, -170.55, -339.75, -339.75, -399.43, -581.76, -581.76, -380.0, -193.99, 2.65, 2.65, 2.65, 2.65, -180.06, -45.53, -60.13, -78.79, -114.39, -163.58, -295.05, -421.66, -288.99, -376.58, -442.63, -448.75, -454.88, -458.67, -458.67, -458.67, -458.67, -307.9, -135.71, 22.03, 175.79, 175.79, 175.79, 175.79, 175.79, 175.79, 163.56, 54.34, 54.34, 54.34, 171.57], "profit_aud": 171.57}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -170.55, -170.55, -239.44, -408.64, -577.86, -757.63, -757.63, -582.81, -381.04, -195.04, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, -57.73, -106.92, -238.38, -365.0, -365.0, -365.0, -365.0, -392.21, -392.21, -392.21, -392.21, -392.21, -392.21, -241.43, -69.24, 88.5, 242.26, 242.26, 242.26, 242.26, 242.26, 242.26, 242.26, 133.03, 133.03, 133.03, 238.54], "profit_aud": 238.54}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.5, -327.66, -402.78, -572.0, -751.78, -751.78, -751.78, -550.01, -364.01, -167.37, 52.08, 52.08, 52.08, 52.08, 52.08, 52.08, 52.08, -7.25, -56.44, -187.9, -314.52, -373.43, -373.43, -373.43, -373.43, -373.43, -373.43, -373.43, -373.43, -373.43, -373.43, -201.24, -43.5, 110.26, 250.85, 250.85, 250.85, 250.85, 250.85, 250.85, 250.85, 140.16, 239.66, 239.66], "profit_aud": 239.66}}} \ No newline at end of file diff --git a/results/daily/2026-04-21.json b/results/daily/2026-04-21.json new file mode 100644 index 0000000..5581b8b --- /dev/null +++ b/results/daily/2026-04-21.json @@ -0,0 +1 @@ +{"date": "2026-04-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [85.91, 81.82, 68.08, 56.57, 62.82, 60.1, 55.95, 51.87, 51.59, 50.73, 46.8, 55.08, 66.71, 74.04, 63.47, 25.47, 1.48, -2.78, -0.52, -1.49, -2.23, -3.41, -4.37, -6.61, -10.75, -7.75, -7.07, -4.6, -8.67, -5.2, -0.25, 20.94, 73.25, 115.56, 134.89, 132.59, 104.47, 88.37, 79.56, 75.49, 60.14, 41.91, 38.14, 33.34, 28.56, 12.8, -0.03, -0.09], "forecast_price": {"naive": [137.99, 144.79, 146.38, 136.44, 138.0, 124.13, 135.36, 135.38, 143.82, 145.86, 139.86, 161.41, 148.8, 157.31, 175.56, 218.95, 208.93, 146.16, 119.58, 116.78, 149.28, 47.46, 39.35, 105.17, 101.3, 106.14, 70.07, 52.84, 49.01, 49.01, 30.36, 38.07, 80.26, 104.58, 120.62, 137.75, 126.19, 123.01, 112.48, 107.53, 104.27, 95.75, 91.94, 87.32, 87.38, 88.55, 88.44, 93.79], "lightgbm": [118.96, 115.37, 114.19, 104.28, 105.21, 99.4, 100.95, 104.75, 103.16, 103.4, 112.59, 120.95, 127.68, 128.75, 123.29, 120.89, 121.94, 100.97, 93.64, 90.56, 86.24, 41.42, 36.86, 69.62, 69.62, 69.62, 56.55, 51.65, 47.72, 51.03, 38.82, 49.95, 88.07, 103.88, 132.84, 153.15, 136.76, 136.08, 129.73, 121.55, 116.88, 110.28, 98.31, 89.53, 89.53, 92.1, 91.1, 95.76], "lstm": [84.65, 79.72, 80.34, 73.75, 69.0, 66.84, 69.51, 69.58, 74.13, 68.67, 82.47, 88.63, 113.5, 128.68, 109.8, 83.18, 63.32, 44.29, 33.2, 20.29, 15.17, 3.84, 0.94, 5.01, 2.61, 3.66, 6.64, 8.3, 9.59, 14.66, 19.24, 39.14, 45.13, 73.37, 92.26, 117.35, 131.22, 124.73, 116.27, 112.87, 113.02, 102.91, 102.96, 90.37, 78.13, 76.39, 81.74, 90.31]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -21.53, -86.02, -149.43, -207.93, -207.93, -124.55, -32.0, 47.34, 47.34, 47.34, 50.81, 50.23, 50.42, 50.7, 51.12, 51.67, 59.94, 73.37, 83.06, 91.9, 86.14, 96.98, 100.88, 100.91, 100.91, 100.91, 245.36, 413.97, 579.7, 710.29, 710.29, 710.29, 710.29, 710.29, 710.29, 710.29, 710.29, 710.29, 710.29, 710.32, 710.44], "profit_aud": 710.44}, "naive": {"charge_mw": [1.11, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.25, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-47.68, -47.68, -47.68, -118.39, -118.39, -193.52, -263.46, -328.29, -328.29, -328.29, -328.29, -259.45, -259.45, -259.45, -180.11, -148.28, -146.43, -146.43, -146.36, -144.5, -147.28, -143.02, -137.55, -144.17, -144.17, -153.85, -153.85, -151.3, -140.46, -133.97, -133.65, -159.83, -159.83, -159.83, 8.78, 174.51, 305.1, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56, 415.56], "profit_aud": 415.56}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.5, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -31.4, -31.4, -106.52, -176.46, -176.46, -240.95, -304.36, -304.36, -304.36, -220.98, -128.43, -49.09, -49.09, -47.24, -47.24, -47.24, -47.24, -47.24, -42.98, -37.51, -37.51, -48.26, -57.94, -57.94, -55.39, -44.55, -38.06, -37.74, -63.93, -63.93, -63.93, 104.68, 270.42, 401.01, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47, 511.47], "profit_aud": 511.47}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -78.53, -153.65, -223.59, -252.38, -252.38, -315.79, -315.79, -246.95, -163.57, -71.02, 8.32, 8.32, 8.32, 8.32, 8.32, 8.32, 8.32, 12.59, 18.05, 21.72, 35.16, 44.85, 44.85, 44.85, 44.85, 44.85, 44.85, 44.85, 44.85, 44.85, 44.85, 210.58, 341.17, 451.63, 551.07, 551.07, 551.07, 551.07, 551.07, 551.07, 547.08, 531.08, 531.08, 530.96], "profit_aud": 530.96}}} \ No newline at end of file diff --git a/results/daily/2026-04-22.json b/results/daily/2026-04-22.json new file mode 100644 index 0000000..dbba9fa --- /dev/null +++ b/results/daily/2026-04-22.json @@ -0,0 +1 @@ +{"date": "2026-04-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.09, -0.11, 3.49, 3.58, 3.35, 1.56, 1.57, 8.32, 9.89, 18.93, 11.28, 86.88, 107.69, 167.08, 121.09, 91.0, 38.68, 5.84, 6.07, 11.76, -0.1, -2.05, -1.35, -2.53, -1.43, -2.43, -1.4, -1.68, 0.7, 8.41, 20.01, 100.88, 206.22, 137.0, 162.0, 179.15, 170.52, 196.43, 115.25, 102.68, 98.46, 90.44, 78.73, 90.64, 91.79, 88.64, 82.66, 86.42], "forecast_price": {"naive": [85.91, 81.82, 68.08, 56.57, 62.82, 60.1, 55.95, 51.87, 51.59, 50.73, 46.8, 55.08, 66.71, 74.04, 63.47, 25.47, 1.48, -2.78, -0.52, -1.49, -2.23, -3.41, -4.37, -6.61, -10.75, -7.75, -7.07, -4.6, -8.67, -5.2, -0.25, 20.94, 73.25, 115.56, 134.89, 132.59, 104.47, 88.37, 79.56, 75.49, 60.14, 41.91, 38.14, 33.34, 28.56, 12.8, -0.03, -0.09], "lightgbm": [60.36, 58.92, 57.72, 53.42, 53.45, 55.18, 53.76, 52.88, 51.79, 52.83, 56.25, 65.1, 69.46, 70.01, 71.82, 57.59, 50.87, 39.1, 32.23, 17.11, 15.89, 14.07, 8.28, 11.21, 7.41, 6.95, 12.04, 8.76, 6.14, 10.82, 11.78, 20.41, 61.52, 80.58, 100.89, 114.83, 102.63, 97.17, 90.08, 85.24, 75.61, 62.19, 59.22, 56.43, 54.46, 53.46, 54.2, 54.2], "lstm": [0.12, 0.49, 0.81, -6.68, -6.01, -6.64, -4.95, -6.43, -1.4, -1.21, 8.82, 12.72, 26.05, 33.53, 22.94, 17.39, 5.89, -9.42, -14.08, -21.99, -23.75, -30.37, -32.46, -31.97, -36.15, -34.28, -30.69, -27.72, -22.43, -18.86, -10.18, -0.98, 3.97, 19.89, 29.44, 50.96, 61.99, 70.31, 61.22, 61.34, 64.07, 57.68, 54.8, 41.94, 42.38, 35.31, 42.21, 51.43]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.75, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.0, 2.12, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.11, 0.25, 0.25, 0.25, -1.61, -3.56, -5.52, -5.52, -5.52, 15.78, 1.68, 1.68, 136.29, 345.14, 496.51, 610.26, 610.26, 602.95, 602.1, 616.8, 616.81, 619.37, 619.37, 622.53, 623.79, 626.83, 626.83, 628.93, 628.93, 628.93, 628.93, 628.93, 886.7, 715.46, 897.71, 1121.64, 1334.79, 1580.34, 1580.34, 1580.34, 1580.34, 1580.34, 1481.93, 1481.93, 1585.19, 1585.19, 1585.19, 1585.19], "profit_aud": 1585.19}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -3.45, -15.82, -39.48, -53.58, -53.58, 81.04, 289.88, 441.25, 441.25, 441.25, 433.94, 440.68, 439.21, 439.22, 439.48, 439.65, 442.81, 444.6, 447.63, 449.38, 447.28, 446.41, 440.1, 437.6, 437.6, 437.6, 608.85, 811.35, 1035.29, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1248.44, 1145.11, 1037.09], "profit_aud": 1037.09}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, -4.47, -6.33, -6.33, -6.33, -16.73, -29.1, -52.76, -52.76, 55.85, 190.46, 399.31, 550.68, 550.68, 550.68, 550.68, 550.68, 550.68, 550.68, 550.68, 552.36, 552.36, 554.15, 557.19, 555.44, 557.55, 556.68, 550.84, 550.84, 550.84, 550.84, 550.84, 753.34, 977.27, 1190.42, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97, 1435.97], "profit_aud": 1435.97}, "lstm": {"charge_mw": [2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.11, 0.13, 4.5, 0.03, -4.16, -6.11, -7.09, -17.49, -18.73, -21.09, -21.09, -21.09, 113.52, 322.36, 473.73, 587.48, 587.48, 586.75, 585.99, 584.52, 584.54, 584.79, 586.48, 589.64, 591.43, 594.47, 595.35, 595.56, 595.47, 594.42, 591.92, 579.31, 579.31, 579.31, 579.31, 579.31, 792.46, 1038.0, 1038.0, 1166.34, 1289.42, 1289.42, 1289.42, 1276.73, 1276.73, 1165.93, 1165.93, 1273.95], "profit_aud": 1273.95}}} \ No newline at end of file diff --git a/results/daily/2026-04-23.json b/results/daily/2026-04-23.json new file mode 100644 index 0000000..e81417d --- /dev/null +++ b/results/daily/2026-04-23.json @@ -0,0 +1 @@ +{"date": "2026-04-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [85.08, 90.65, 89.88, 84.31, 86.7, 76.69, 70.33, 63.35, 62.87, 66.4, 65.58, 78.11, 102.55, 108.36, 112.21, 67.66, 25.08, -1.64, 1.43, 1.96, 3.22, -0.88, -1.74, -1.18, -2.76, -0.07, 0.9, 6.43, 4.88, 10.57, 14.96, 34.54, 56.8, 86.25, 100.37, 98.04, 88.28, 82.78, 75.81, 69.09, 64.34, 63.5, 58.7, 51.02, 49.04, 35.84, 40.78, 23.4], "forecast_price": {"naive": [-0.09, -0.11, 3.49, 3.58, 3.35, 1.56, 1.57, 8.32, 9.89, 18.93, 11.28, 86.88, 107.69, 167.08, 121.09, 91.0, 38.68, 5.84, 6.07, 11.76, -0.1, -2.05, -1.35, -2.53, -1.43, -2.43, -1.4, -1.68, 0.7, 8.41, 20.01, 100.88, 206.22, 137.0, 162.0, 179.15, 170.52, 196.43, 115.25, 102.68, 98.46, 90.44, 78.73, 90.64, 91.79, 88.64, 82.66, 86.42], "lightgbm": [68.62, 68.62, 67.74, 59.62, 57.89, 56.05, 56.03, 56.66, 56.04, 47.65, 43.14, 51.6, 60.54, 65.36, 59.7, 48.11, 28.95, 14.76, 18.6, 8.0, 4.52, 1.16, -0.41, -0.64, -0.78, -0.64, -0.64, -0.19, 0.97, 10.88, 15.61, 36.01, 59.72, 93.93, 100.23, 123.13, 120.38, 143.51, 105.45, 98.33, 94.54, 84.2, 74.32, 77.17, 78.06, 77.17, 76.01, 77.18], "lstm": [88.0, 83.08, 84.77, 75.52, 68.97, 67.47, 69.47, 62.96, 64.85, 71.36, 78.98, 86.19, 116.89, 137.73, 115.33, 80.71, 57.52, 40.37, 32.78, 20.27, 12.26, 0.18, 0.51, 0.83, 2.0, -1.7, 2.63, 4.92, 7.64, 11.49, 19.41, 36.77, 47.2, 82.71, 104.12, 135.93, 138.64, 141.51, 114.5, 108.35, 101.18, 91.99, 85.48, 75.1, 72.27, 67.36, 73.1, 76.93]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -79.18, -157.78, -240.77, -322.74, -264.16, -135.98, -0.53, 139.73, 139.73, 139.73, 141.78, 139.99, 141.95, 145.97, 147.07, 149.25, 150.72, 154.17, 154.21, 154.21, 161.44, 155.35, 155.35, 155.35, 155.35, 155.35, 263.16, 388.62, 511.18, 621.52, 621.52, 621.52, 621.52, 621.52, 621.52, 621.52, 621.52, 621.52, 576.73, 622.6, 622.6], "profit_aud": 622.6}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.75, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.0, 2.12, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-106.36, -219.67, -219.67, -219.67, -267.79, -363.65, -451.57, -451.57, -451.57, -376.87, -458.84, -458.84, -330.65, -195.21, -54.94, 29.63, 29.63, 31.68, 31.48, 33.93, 33.53, 34.62, 34.62, 36.09, 38.5, 38.59, 38.59, 30.55, 30.55, 30.55, 30.55, 30.55, 101.54, -6.27, 106.65, 229.21, 339.55, 443.03, 443.03, 443.03, 443.03, 443.03, 369.65, 369.65, 424.83, 424.83, 424.83, 424.83], "profit_aud": 424.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -83.0, -164.97, -262.6, -134.41, 1.03, 99.21, 99.21, 99.21, 101.26, 102.87, 102.87, 102.87, 102.87, 103.96, 105.43, 108.88, 108.96, 107.84, 107.04, 107.04, 107.04, 107.04, 107.04, 107.04, 107.04, 107.04, 229.59, 339.94, 443.42, 538.18, 538.18, 538.18, 538.18, 538.18, 538.18, 538.18, 538.18, 538.18, 538.18], "profit_aud": 538.18}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -108.37, -204.23, -243.26, -322.45, -401.04, -401.04, -401.04, -303.41, -175.22, -39.77, 100.49, 100.49, 100.49, 100.49, 100.49, 100.49, 100.49, 101.58, 103.76, 105.23, 106.76, 106.85, 106.85, 106.85, 106.85, 106.85, 106.85, 106.85, 106.85, 106.85, 106.85, 229.4, 339.75, 443.23, 537.99, 537.99, 537.99, 537.99, 537.99, 537.99, 537.99, 493.2, 493.2, 519.52], "profit_aud": 519.52}}} \ No newline at end of file diff --git a/results/daily/2026-04-24.json b/results/daily/2026-04-24.json new file mode 100644 index 0000000..f12fb6e --- /dev/null +++ b/results/daily/2026-04-24.json @@ -0,0 +1 @@ +{"date": "2026-04-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [7.28, 6.73, 4.49, 4.1, 3.33, 3.58, 13.94, 8.41, 8.79, 5.86, 11.96, 16.47, 20.09, 26.44, 13.38, 6.01, -2.08, -4.68, -13.12, -7.6, -4.16, -4.28, -5.0, -6.83, -4.96, -3.35, -4.16, -3.07, -2.62, -2.01, -0.82, -1.3, 28.64, 59.91, 64.77, 68.28, 72.73, 67.91, 63.32, 64.9, 62.72, 50.82, 30.13, 18.88, 1.58, -0.25, -0.1, -0.41], "forecast_price": {"naive": [85.08, 90.65, 89.88, 84.31, 86.7, 76.69, 70.33, 63.35, 62.87, 66.4, 65.58, 78.11, 102.55, 108.36, 112.21, 67.66, 25.08, -1.64, 1.43, 1.96, 3.22, -0.88, -1.74, -1.18, -2.76, -0.07, 0.9, 6.43, 4.88, 10.57, 14.96, 34.54, 56.8, 86.25, 100.37, 98.04, 88.28, 82.78, 75.81, 69.09, 64.34, 63.5, 58.7, 51.02, 49.04, 35.84, 40.78, 23.4], "lightgbm": [71.39, 72.88, 70.23, 65.68, 64.66, 58.98, 57.46, 56.5, 55.5, 56.36, 60.31, 72.24, 84.62, 86.89, 81.83, 56.35, 39.75, 22.65, 19.91, 19.39, 29.14, 27.02, 12.83, 12.37, 14.04, 12.36, 12.59, 8.01, 9.14, 19.11, 16.48, 36.57, 49.44, 65.28, 96.05, 105.97, 99.49, 96.61, 87.32, 80.38, 77.79, 73.74, 67.92, 64.3, 63.59, 56.3, 57.12, 54.16], "lstm": [23.48, 20.85, 21.24, 17.53, 16.66, 15.4, 17.68, 15.16, 20.19, 19.23, 26.7, 37.56, 52.07, 56.38, 47.28, 34.21, 19.35, 5.51, -0.16, -7.96, -10.6, -18.25, -19.47, -17.92, -21.86, -24.62, -19.41, -13.1, -12.86, -9.95, -1.59, 9.4, 15.37, 32.84, 44.82, 62.59, 69.69, 73.36, 61.67, 64.88, 63.75, 57.71, 56.82, 47.63, 49.57, 48.39, 51.15, 53.55]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 1.75, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [0.0, -3.73, -9.35, -14.47, -18.63, -23.1, -5.68, -6.85, -6.85, -14.19, -14.19, 6.4, 31.51, 64.55, 81.28, 81.28, 81.54, 85.64, 102.05, 111.55, 106.35, 106.35, 112.6, 121.13, 127.33, 123.6, 128.8, 129.19, 129.52, 129.77, 128.86, 130.49, 130.49, 130.49, 130.49, 215.84, 306.76, 391.65, 391.65, 472.77, 472.77, 472.77, 472.77, 472.77, 472.77, 473.07, 473.2, 473.71], "profit_aud": 473.71}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -10.51, -21.49, -28.82, -43.77, -31.42, -6.31, 26.73, 43.46, 43.46, 43.46, 49.32, 65.72, 58.12, 52.92, 58.27, 64.51, 73.05, 79.24, 81.34, 81.34, 77.88, 81.16, 81.16, 81.16, 81.16, 81.16, 156.05, 237.02, 322.37, 413.28, 413.28, 413.28, 413.28, 413.28, 413.28, 413.28, 413.28, 413.28, 413.59, 413.48, 413.48], "profit_aud": 413.48}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -1.99, -19.41, -29.92, -40.9, -48.24, -48.24, -27.65, -2.54, 30.5, 47.23, 47.23, 47.23, 48.54, 64.95, 74.45, 69.25, 63.9, 63.9, 72.44, 69.34, 73.53, 78.73, 82.57, 85.85, 83.59, 84.61, 84.61, 84.61, 84.61, 165.58, 250.93, 341.84, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74, 426.74], "profit_aud": 426.74}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -5.12, -9.28, -13.75, -21.49, -32.0, -32.0, -32.0, -32.0, -11.41, 13.7, 46.74, 63.47, 63.47, 63.47, 63.47, 65.11, 66.06, 66.58, 69.79, 76.04, 76.04, 82.23, 86.43, 91.63, 92.01, 92.34, 92.59, 92.69, 92.69, 92.69, 92.69, 92.69, 92.69, 183.61, 268.5, 268.5, 349.62, 428.02, 428.02, 428.02, 404.41, 404.41, 404.41, 404.41, 403.95], "profit_aud": 403.95}}} \ No newline at end of file diff --git a/results/daily/2026-04-25.json b/results/daily/2026-04-25.json new file mode 100644 index 0000000..0d33b12 --- /dev/null +++ b/results/daily/2026-04-25.json @@ -0,0 +1 @@ +{"date": "2026-04-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.08, -0.4, -0.57, -1.8, -3.05, -4.53, -4.84, -8.66, -11.72, -12.15, -11.54, -10.82, -9.1, -5.82, -3.07, -8.17, -17.18, -11.64, -17.77, -11.83, -7.49, -19.66, -44.15, -30.36, -40.06, -44.53, -53.25, -46.49, -20.0, -37.88, -23.31, -6.37, 1.06, 51.76, 75.0, 86.06, 101.13, 111.27, 109.42, 107.05, 83.35, 106.06, 98.29, 22.39, 25.84, 50.86, 53.71, 53.09], "forecast_price": {"naive": [7.28, 6.73, 4.49, 4.1, 3.33, 3.58, 13.94, 8.41, 8.79, 5.86, 11.96, 16.47, 20.09, 26.44, 13.38, 6.01, -2.08, -4.68, -13.12, -7.6, -4.16, -4.28, -5.0, -6.83, -4.96, -3.35, -4.16, -3.07, -2.62, -2.01, -0.82, -1.3, 28.64, 59.91, 64.77, 68.28, 72.73, 67.91, 63.32, 64.9, 62.72, 50.82, 30.13, 18.88, 1.58, -0.25, -0.1, -0.41], "lightgbm": [28.62, 28.62, 25.67, 24.67, 23.08, 23.08, 25.62, 24.06, 26.23, 24.96, 26.95, 27.71, 26.45, 27.73, 24.29, 9.33, 7.42, 1.89, -2.72, -6.5, -1.85, -3.01, -5.29, -6.6, -6.07, -4.14, -4.14, -4.17, -3.85, -2.79, -0.62, 4.32, 19.7, 41.82, 50.38, 66.31, 69.37, 66.33, 63.36, 63.59, 61.23, 55.98, 48.05, 45.61, 43.51, 43.55, 43.55, 43.55], "lstm": [-2.8, -5.54, -3.83, -12.33, -12.19, -17.05, -11.47, -18.95, -13.09, -13.32, -6.6, -2.69, 0.09, -3.55, -8.84, -16.55, -21.65, -36.04, -41.84, -42.74, -51.98, -54.09, -59.62, -60.56, -57.24, -56.16, -49.4, -38.42, -34.45, -28.18, -14.64, -9.83, 2.57, 14.29, 24.19, 41.04, 53.0, 54.32, 43.74, 37.39, 41.16, 41.01, 38.22, 28.42, 31.48, 28.13, 30.16, 33.99]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 1.12, 0.25, 1.38, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0], "cumulative_profit_aud": [0.01, 0.06, 0.13, 0.36, 0.74, 1.3, 1.91, 2.99, 17.64, 32.83, 47.26, 60.78, 54.46, 47.19, 43.35, 33.13, 54.6, 44.88, 67.09, 67.09, 57.72, 60.18, 115.37, 98.52, 148.6, 204.26, 270.83, 328.94, 303.94, 351.29, 357.12, 357.91, 357.91, 357.91, 357.91, 357.91, 471.69, 610.78, 747.55, 881.36, 777.17, 909.75, 909.75, 881.76, 849.47, 849.47, 916.6, 969.69], "profit_aud": 969.69}, "naive": {"charge_mw": [0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 1.75, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-0.0, 0.22, 0.94, 3.19, 7.01, 12.67, 6.61, 7.83, 7.83, 23.02, 23.02, 9.49, -1.89, -9.16, -13.0, -13.0, -10.85, -0.66, 21.55, 36.33, 26.97, 26.97, 82.16, 120.11, 170.19, 120.76, 187.33, 193.14, 195.64, 200.38, 174.5, 182.46, 182.46, 182.46, 182.46, 290.04, 416.45, 555.54, 555.54, 689.35, 689.35, 689.35, 689.35, 689.35, 689.35, 625.77, 558.64, 492.28], "profit_aud": 492.28}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, 3.81, 9.47, 9.47, 20.3, 20.3, 20.3, 10.2, -3.32, -3.32, -10.59, -10.59, -10.59, -10.59, -10.59, -6.15, 8.64, -0.73, 1.73, 56.92, 94.87, 144.95, 178.35, 178.35, 236.46, 238.96, 243.69, 246.61, 246.61, 246.61, 246.61, 246.61, 354.19, 480.6, 619.69, 619.69, 753.5, 753.5, 753.5, 753.5, 753.5, 753.5, 753.5, 753.5, 753.5], "profit_aud": 753.5}, "lstm": {"charge_mw": [2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 0.0, 2.5, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 0.0, 0.75, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.01, 0.51, -0.12, 1.46, 1.46, 7.12, 7.12, 17.94, 32.59, 47.78, 33.36, 19.83, 8.45, 1.18, 1.57, 2.59, 4.74, 6.19, 8.41, 9.89, 10.83, 23.12, 78.31, 116.26, 166.34, 222.0, 228.66, 234.47, 236.97, 241.7, 244.62, 245.41, 245.41, 245.41, 245.41, 245.41, 371.83, 510.92, 647.7, 647.7, 751.89, 751.89, 751.89, 748.75, 748.75, 685.17, 685.17, 751.54], "profit_aud": 751.54}}} \ No newline at end of file diff --git a/results/daily/2026-04-26.json b/results/daily/2026-04-26.json new file mode 100644 index 0000000..872af21 --- /dev/null +++ b/results/daily/2026-04-26.json @@ -0,0 +1 @@ +{"date": "2026-04-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [60.95, 73.56, 11.2, 9.06, -0.09, -0.76, 1.44, 0.09, 13.6, 16.63, 18.25, 58.58, 88.89, 193.38, 137.62, 80.17, 110.75, 67.47, 62.61, 60.19, 18.64, 1.73, 17.94, 0.03, 9.62, 1.16, 3.22, 16.59, 30.74, 35.67, 56.4, 24.36, 23.53, 61.45, 82.62, 88.93, 94.68, 93.74, 96.94, 95.54, 86.7, 87.3, 89.2, 78.49, 79.33, 86.4, 90.3, 88.24], "forecast_price": {"naive": [-0.08, -0.4, -0.57, -1.8, -3.05, -4.53, -4.84, -8.66, -11.72, -12.15, -11.54, -10.82, -9.1, -5.82, -3.07, -8.17, -17.18, -11.64, -17.77, -11.83, -7.49, -19.66, -44.15, -30.36, -40.06, -44.53, -53.25, -46.49, -20.0, -37.88, -23.31, -6.37, 1.06, 51.76, 75.0, 86.06, 101.13, 111.27, 109.42, 107.05, 83.35, 106.06, 98.29, 22.39, 25.84, 50.86, 53.71, 53.09], "lightgbm": [37.01, 37.01, 33.52, 31.61, 30.25, 30.28, 28.31, 23.03, 23.03, 22.56, 25.83, 25.21, 23.2, 29.51, 26.23, 5.7, 6.58, 2.55, 1.79, -1.8, -4.52, -6.07, -13.63, -9.68, -13.17, -13.22, -19.09, -12.08, -6.14, -7.75, 1.04, 9.12, 19.75, 57.04, 73.45, 100.49, 108.5, 113.51, 110.95, 109.74, 96.86, 98.91, 95.15, 54.7, 54.63, 66.98, 67.75, 68.08], "lstm": [35.99, 28.81, 29.25, 24.53, 23.39, 21.5, 24.37, 17.94, 17.74, 18.48, 20.31, 24.33, 29.54, 26.45, 16.19, 5.66, -1.38, -7.97, -9.69, -15.52, -22.63, -26.23, -32.93, -29.49, -25.83, -31.13, -27.03, -20.77, -15.98, -8.59, -1.14, 6.94, 19.21, 36.73, 57.02, 74.69, 91.25, 86.53, 72.77, 69.8, 67.55, 57.84, 55.48, 43.45, 43.53, 40.97, 46.03, 47.87]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-76.19, 6.56, 6.56, 1.53, 1.65, 2.59, 0.79, 0.67, 0.67, 0.67, 0.67, 0.67, 111.79, 353.51, 525.55, 525.55, 663.98, 663.98, 663.98, 663.98, 663.98, 661.83, 673.04, 673.0, 660.98, 659.52, 655.49, 655.49, 655.49, 691.16, 761.66, 731.21, 701.8, 701.8, 701.8, 701.8, 820.15, 937.34, 1058.51, 1177.94, 1177.94, 1177.94, 1177.94, 1079.82, 980.66, 980.66, 1093.53, 1181.78], "profit_aud": 1181.78}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 1.12, 0.25, 1.38, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-7.62, -16.81, -18.21, -19.35, -19.33, -19.24, -19.42, -19.43, -36.44, -57.22, -80.04, -153.26, -91.48, 150.25, 322.28, 422.49, 284.05, 340.39, 262.12, 262.12, 285.42, 285.2, 262.78, 262.79, 250.76, 249.31, 245.28, 224.54, 262.96, 218.37, 204.27, 201.23, 201.23, 201.23, 201.23, 201.23, 307.75, 424.93, 546.11, 665.53, 557.15, 666.28, 666.28, 568.17, 469.01, 469.01, 581.88, 670.12], "profit_aud": 670.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 2.12, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11, -17.12, -37.91, -15.09, -15.09, -51.98, 189.75, 361.78, 261.56, 386.16, 386.16, 386.16, 378.63, 376.31, 376.09, 353.66, 353.68, 341.65, 340.19, 336.16, 315.42, 349.54, 304.96, 304.96, 304.96, 304.96, 304.96, 304.96, 304.96, 423.31, 540.49, 661.67, 781.09, 781.09, 781.09, 781.09, 682.98, 583.82, 583.82, 674.12, 784.42], "profit_aud": 784.42}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.95, 2.57, 2.46, -14.55, -35.34, -42.91, 30.31, 141.43, 383.15, 383.15, 383.15, 369.31, 360.88, 353.05, 345.53, 343.2, 341.9, 319.47, 319.44, 319.44, 317.98, 313.95, 311.88, 308.04, 303.58, 296.53, 296.53, 296.53, 296.53, 296.53, 407.69, 526.04, 643.23, 764.4, 764.4, 764.4, 764.4, 764.4, 764.4, 764.4, 656.4, 656.4, 755.68], "profit_aud": 755.68}}} \ No newline at end of file diff --git a/results/daily/2026-04-27.json b/results/daily/2026-04-27.json new file mode 100644 index 0000000..ce07bbd --- /dev/null +++ b/results/daily/2026-04-27.json @@ -0,0 +1 @@ +{"date": "2026-04-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [88.63, 88.07, 84.09, 81.48, 78.6, 78.26, 78.1, 71.25, 70.93, 69.66, 71.9, 76.99, 78.86, 83.21, 87.29, 73.7, 39.78, 21.8, 9.65, 5.73, 11.84, 15.2, 16.11, 22.96, 27.5, 29.75, 24.47, 30.18, 31.62, 28.9, 25.3, 54.17, 107.59, 140.02, 142.48, 145.6, 139.19, 132.71, 125.79, 111.46, 128.58, 117.47, 119.7, 107.04, 100.28, 85.72, 88.16, 87.08], "forecast_price": {"naive": [60.95, 73.56, 11.2, 9.06, -0.09, -0.76, 1.44, 0.09, 13.6, 16.63, 18.25, 58.58, 88.89, 193.38, 137.62, 80.17, 110.75, 67.47, 62.61, 60.19, 18.64, 1.73, 17.94, 0.03, 9.62, 1.16, 3.22, 16.59, 30.74, 35.67, 56.4, 24.36, 23.53, 61.45, 82.62, 88.93, 94.68, 93.74, 96.94, 95.54, 86.7, 87.3, 89.2, 78.49, 79.33, 86.4, 90.3, 88.24], "lightgbm": [72.84, 74.35, 59.57, 58.7, 61.85, 61.4, 61.4, 61.4, 60.17, 62.94, 64.95, 82.99, 96.6, 88.21, 78.88, 93.77, 92.25, 79.06, 77.7, 76.9, 51.4, 35.94, 33.73, 33.51, 35.03, 31.48, 31.36, 37.38, 38.71, 40.91, 44.16, 42.57, 53.08, 81.79, 107.35, 115.59, 118.85, 117.26, 118.95, 117.5, 110.17, 104.86, 102.36, 85.35, 88.02, 93.24, 94.85, 93.35], "lstm": [105.46, 94.51, 85.18, 82.26, 82.89, 80.76, 86.55, 82.55, 78.5, 87.17, 99.92, 109.8, 151.17, 181.08, 162.3, 137.3, 100.91, 90.3, 77.72, 64.79, 45.24, 30.35, 32.91, 32.78, 34.12, 28.2, 30.88, 30.15, 27.71, 34.75, 36.33, 55.88, 59.05, 94.94, 116.05, 150.67, 166.44, 155.35, 122.34, 117.53, 111.31, 99.46, 97.9, 82.33, 88.34, 81.08, 84.24, 90.02]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -19.95, -108.61, -195.69, -195.69, -195.69, -195.69, -91.67, 17.44, 17.44, 17.44, 17.44, 5.38, -1.78, -16.59, -35.58, -44.53, -44.53, -44.53, -11.06, -41.65, -41.65, -6.08, -6.08, -37.7, -37.7, -37.7, 137.32, 315.42, 497.42, 671.41, 671.41, 671.41, 532.08, 676.74, 676.74, 676.74, 676.74, 676.74, 676.74, 676.74, 676.74], "profit_aud": 676.74}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0], "soc_mwh": [1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0], "cumulative_profit_aud": [-110.79, -11.71, -11.71, -56.94, -155.18, -253.01, -350.64, -439.71, -439.71, -439.71, -439.71, -439.71, -341.14, -237.12, -128.0, -128.0, -78.27, -78.27, -78.27, -78.27, -78.27, -97.27, -87.2, -115.9, -150.27, -187.45, -218.04, -218.04, -218.04, -189.14, -157.52, -225.23, -359.72, -359.72, -359.72, -359.72, -185.73, -19.84, 137.39, 276.72, 276.72, 276.72, 276.72, 142.92, 17.57, 17.57, 127.77, 214.85], "profit_aud": 214.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -105.11, -206.96, -206.96, -304.79, -348.14, -348.14, -436.8, -436.8, -436.8, -436.8, -338.22, -234.21, -234.21, -142.08, -92.35, -92.35, -92.35, -92.35, -92.35, -92.35, -112.49, -141.19, -156.45, -193.63, -224.22, -224.22, -224.22, -224.22, -224.22, -224.22, -224.22, -224.22, -224.22, -224.22, -50.23, 115.65, 272.89, 412.22, 412.22, 412.22, 412.22, 278.41, 278.41, 278.41, 377.6, 377.6], "profit_aud": 377.6}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -101.85, -145.48, -243.3, -243.3, -332.37, -421.03, -421.03, -421.03, -421.03, -322.46, -218.44, -109.32, -17.2, -17.2, -17.2, -17.2, -17.2, -17.2, -36.19, -36.19, -36.19, -36.19, -73.38, -86.96, -124.68, -164.2, -164.2, -164.2, -164.2, -164.2, -164.2, -164.2, 17.8, 191.79, 357.67, 514.91, 514.91, 514.91, 514.91, 514.91, 514.91, 514.91, 514.91, 514.91, 514.91], "profit_aud": 514.91}}} \ No newline at end of file diff --git a/results/daily/2026-04-28.json b/results/daily/2026-04-28.json new file mode 100644 index 0000000..22cd070 --- /dev/null +++ b/results/daily/2026-04-28.json @@ -0,0 +1 @@ +{"date": "2026-04-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [103.56, 97.36, 93.91, 94.27, 83.38, 79.42, 74.82, 71.95, 73.98, 72.39, 73.89, 73.14, 86.14, 105.06, 102.43, 54.06, 11.46, 4.96, 4.37, 5.2, 4.92, 17.25, 19.48, 8.98, 19.21, 9.43, 9.16, 17.36, 42.35, 72.44, 168.35, 169.04, 155.96, 163.45, 204.52, 189.28, 181.63, 172.72, 137.05, 141.67, 131.99, 124.32, 110.52, 103.96, 111.31, 91.29, 87.4, 130.46], "forecast_price": {"naive": [88.63, 88.07, 84.09, 81.48, 78.6, 78.26, 78.1, 71.25, 70.93, 69.66, 71.9, 76.99, 78.86, 83.21, 87.29, 73.7, 39.78, 21.8, 9.65, 5.73, 11.84, 15.2, 16.11, 22.96, 27.5, 29.75, 24.47, 30.18, 31.62, 28.9, 25.3, 54.17, 107.59, 140.02, 142.48, 145.6, 139.19, 132.71, 125.79, 111.46, 128.58, 117.47, 119.7, 107.04, 100.28, 85.72, 88.16, 87.08], "lightgbm": [93.09, 93.37, 81.02, 75.63, 73.35, 72.31, 72.87, 67.96, 67.96, 67.93, 71.4, 76.98, 89.21, 100.98, 93.14, 81.27, 50.23, 37.5, 32.17, 24.57, 22.44, 19.64, 19.15, 15.16, 16.87, 18.1, 15.16, 24.43, 20.12, 27.32, 24.54, 52.63, 82.31, 112.31, 132.5, 144.0, 143.53, 137.72, 131.15, 121.72, 126.91, 115.5, 110.84, 93.16, 92.89, 84.6, 86.31, 85.34], "lstm": [78.3, 72.98, 69.7, 62.77, 58.29, 56.49, 56.29, 56.59, 55.59, 52.79, 62.73, 71.08, 97.37, 110.95, 94.44, 84.05, 64.1, 49.08, 37.83, 29.59, 19.41, 9.68, 9.34, 13.19, 11.37, 10.22, 15.41, 17.98, 18.77, 26.0, 33.55, 51.58, 56.27, 86.58, 105.59, 134.58, 145.3, 130.78, 109.48, 99.28, 96.49, 84.78, 85.13, 68.2, 65.47, 65.46, 64.73, 73.92]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -89.94, -89.94, -180.42, -211.09, -302.51, -194.83, -63.51, 64.53, 64.53, 58.17, 51.97, 46.51, 40.0, 33.85, 48.94, 73.3, 62.08, 86.09, 74.3, 62.85, 62.85, 62.85, 62.85, 62.85, 62.85, 62.85, 62.85, 318.5, 555.1, 782.14, 998.03, 998.03, 998.03, 998.03, 998.03, 998.03, 998.03, 998.03, 985.25, 876.01, 1039.08], "profit_aud": 1039.08}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -20.15, -112.62, -203.1, -203.1, -203.1, -203.1, -71.78, 56.26, 56.26, 56.26, 56.26, 50.8, 44.3, 38.15, 16.59, 5.78, 5.78, 5.78, 16.39, 4.94, 4.94, 52.58, 52.58, -157.86, -157.86, -157.86, 46.46, 302.11, 538.71, 765.75, 765.75, 765.75, 588.65, 737.14, 737.14, 737.14, 737.14, 737.14, 737.14, 737.14, 737.14], "profit_aud": 737.14}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -44.08, -44.08, -134.02, -226.5, -316.98, -409.35, -409.35, -301.67, -170.34, -42.31, 25.27, 25.27, 25.27, 25.27, 25.27, 25.27, 25.27, 14.46, 3.24, -20.78, -32.57, -44.02, -24.49, -77.42, 4.07, -206.37, -206.37, -206.37, -206.37, 49.28, 285.88, 512.92, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81, 728.81], "profit_aud": 728.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -99.28, -192.8, -232.74, -325.21, -415.69, -415.69, -415.69, -308.02, -176.69, -48.65, 18.92, 18.92, 18.92, 18.92, 18.92, 18.92, -2.64, -26.99, -31.97, -55.98, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, -67.78, 168.82, 395.86, 611.76, 783.07, 783.07, 783.07, 783.07, 783.07, 783.07, 783.07, 770.29, 661.04, 824.12], "profit_aud": 824.12}}} \ No newline at end of file diff --git a/results/daily/2026-04-29.json b/results/daily/2026-04-29.json new file mode 100644 index 0000000..12fa3b0 --- /dev/null +++ b/results/daily/2026-04-29.json @@ -0,0 +1 @@ +{"date": "2026-04-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [109.08, 135.49, 128.44, 120.54, 86.39, 80.33, 82.93, 83.35, 89.14, 88.32, 82.84, 83.23, 93.19, 101.92, 116.96, 89.37, 45.91, 21.16, 18.35, 9.98, 2.7, 0.73, 4.79, 2.12, 0.16, 8.25, 18.3, 22.31, 18.97, 27.86, 39.45, 59.82, 84.06, 107.97, 118.98, 127.21, 128.89, 128.18, 97.09, 103.6, 83.89, 68.6, 60.64, 57.9, 52.49, 46.66, 32.75, 31.57], "forecast_price": {"naive": [103.56, 97.36, 93.91, 94.27, 83.38, 79.42, 74.82, 71.95, 73.98, 72.39, 73.89, 73.14, 86.14, 105.06, 102.43, 54.06, 11.46, 4.96, 4.37, 5.2, 4.92, 17.25, 19.48, 8.98, 19.21, 9.43, 9.16, 17.36, 42.35, 72.44, 168.35, 169.04, 155.96, 163.45, 204.52, 189.28, 181.63, 172.72, 137.05, 141.67, 131.99, 124.32, 110.52, 103.96, 111.31, 91.29, 87.4, 130.46], "lightgbm": [93.08, 91.99, 89.13, 82.91, 76.33, 76.6, 71.53, 71.09, 70.83, 73.97, 75.92, 86.27, 98.18, 104.17, 103.29, 83.85, 55.93, 29.77, 28.57, 24.64, 19.75, 17.44, 16.65, 15.79, 16.41, 15.79, 15.79, 16.41, 26.18, 37.42, 55.51, 74.83, 108.73, 122.75, 150.52, 152.7, 151.9, 146.11, 136.11, 135.78, 127.33, 117.03, 99.6, 92.73, 97.56, 86.9, 83.98, 109.27], "lstm": [85.81, 89.0, 85.9, 74.5, 70.86, 68.82, 66.84, 64.61, 64.86, 63.72, 74.35, 81.75, 102.95, 113.46, 93.42, 84.39, 63.83, 48.74, 38.79, 31.1, 24.09, 13.9, 16.0, 17.65, 15.06, 14.7, 22.77, 24.74, 22.83, 30.77, 38.28, 50.24, 59.17, 86.73, 101.39, 131.76, 134.68, 128.04, 104.13, 95.92, 95.55, 80.48, 81.64, 68.35, 69.4, 64.37, 67.74, 76.66]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-136.34, 16.09, 16.09, 16.09, 16.09, -84.32, -187.99, -187.99, -187.99, -187.99, -291.53, -326.08, -209.59, -82.18, 64.01, 64.01, 64.01, 64.01, 64.01, 64.01, 60.64, 59.73, 57.07, 54.42, 54.22, 54.22, 54.22, 79.32, 55.6, 55.6, 55.6, 55.6, 55.6, 55.6, 204.33, 363.34, 524.45, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68, 684.68], "profit_aud": 684.68}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -104.18, -104.18, -214.58, -248.96, -353.0, -236.51, -109.1, 37.09, 37.09, 11.61, -14.83, -37.77, -50.25, -53.62, -52.98, -46.99, -49.64, -49.44, -59.74, -82.62, -82.62, -82.62, -82.62, -82.62, -82.62, -82.62, -82.62, 66.11, 225.12, 386.24, 546.46, 546.46, 546.46, 546.46, 546.46, 546.46, 546.46, 546.46, 539.93, 498.99, 538.46], "profit_aud": 538.46}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -103.66, -207.85, -319.27, -429.67, -475.64, -371.6, -255.12, -127.71, 18.49, 18.49, 18.49, 18.49, 18.49, 18.49, 18.49, 18.49, 18.49, 15.84, 15.75, 5.44, -17.44, -45.33, -45.33, -45.33, -45.33, -45.33, -45.33, -45.33, 103.4, 262.42, 423.53, 583.76, 583.76, 583.76, 583.76, 583.76, 583.76, 583.76, 583.76, 577.22, 536.29, 575.75], "profit_aud": 575.75}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -44.58, -148.24, -252.43, -363.85, -474.25, -474.25, -474.25, -357.76, -230.36, -84.16, 27.55, 27.55, 27.55, 27.55, 27.55, 27.55, 26.64, 20.65, 19.47, 19.27, 8.96, 8.96, 8.96, 8.96, 8.96, 8.96, 8.96, 8.96, 8.96, 8.96, 167.97, 329.08, 489.31, 610.68, 610.68, 610.68, 610.68, 610.68, 610.68, 610.68, 552.35, 547.77, 587.23], "profit_aud": 587.23}}} \ No newline at end of file diff --git a/results/daily/2026-04-30.json b/results/daily/2026-04-30.json new file mode 100644 index 0000000..254edc0 --- /dev/null +++ b/results/daily/2026-04-30.json @@ -0,0 +1 @@ +{"date": "2026-04-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [29.57, 16.45, 9.48, 7.21, 0.82, 0.0, -0.03, -0.11, -0.09, 4.68, 3.74, 6.68, 10.1, 22.8, 10.72, 1.82, -0.71, -0.86, -0.88, -2.66, -1.23, -1.65, -2.83, -3.8, -3.66, -5.52, -10.14, -4.38, -3.96, -3.29, -0.66, 11.5, 59.26, 68.5, 77.78, 100.89, 77.87, 67.08, 57.15, 48.56, 34.19, 27.73, 24.29, 13.62, -0.45, -2.21, -2.75, -3.2], "forecast_price": {"naive": [109.08, 135.49, 128.44, 120.54, 86.39, 80.33, 82.93, 83.35, 89.14, 88.32, 82.84, 83.23, 93.19, 101.92, 116.96, 89.37, 45.91, 21.16, 18.35, 9.98, 2.7, 0.73, 4.79, 2.12, 0.16, 8.25, 18.3, 22.31, 18.97, 27.86, 39.45, 59.82, 84.06, 107.97, 118.98, 127.21, 128.89, 128.18, 97.09, 103.6, 83.89, 68.6, 60.64, 57.9, 52.49, 46.66, 32.75, 31.57], "lightgbm": [86.22, 79.44, 81.99, 78.79, 74.8, 70.61, 68.29, 68.29, 69.51, 70.6, 75.17, 78.85, 89.1, 91.21, 91.88, 74.53, 41.17, 24.05, 23.44, 20.31, 16.78, 13.59, 13.25, 12.58, 12.58, 15.19, 16.21, 16.87, 17.31, 28.02, 33.95, 53.19, 65.78, 90.27, 109.62, 119.67, 119.46, 118.25, 103.92, 102.12, 93.0, 77.84, 68.55, 62.23, 61.26, 53.19, 50.68, 52.37], "lstm": [24.79, 25.2, 25.75, 20.61, 18.49, 17.52, 16.26, 14.51, 17.11, 18.76, 27.37, 33.98, 49.27, 57.78, 49.19, 37.11, 21.41, 8.93, 4.17, -3.93, -7.27, -12.75, -13.61, -12.67, -14.99, -14.0, -10.3, -4.0, -4.01, 0.05, 10.85, 19.88, 27.04, 44.56, 53.35, 78.95, 83.51, 80.46, 66.89, 67.55, 65.1, 55.56, 52.86, 44.73, 43.8, 41.15, 45.74, 52.0]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -0.46, -0.46, -0.43, -0.29, -0.18, 5.08, 0.41, 8.76, 21.38, 49.87, 63.28, 63.28, 63.37, 63.47, 63.58, 66.9, 65.54, 65.75, 66.1, 68.95, 68.95, 75.86, 88.54, 94.02, 98.96, 99.37, 99.45, 99.45, 99.45, 185.08, 282.31, 408.41, 505.76, 505.76, 505.76, 505.76, 505.76, 505.76, 505.76, 505.76, 506.32, 509.08, 512.52, 516.52], "profit_aud": 516.52}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-36.96, -18.46, -18.46, -18.46, -18.46, -18.46, -18.43, -18.43, -18.43, -18.43, -23.11, -25.88, -13.26, 15.24, 28.64, 28.64, 28.64, 28.64, 28.64, 28.64, 30.18, 32.24, 33.81, 38.57, 43.15, 43.15, 43.15, 38.22, 43.16, 43.16, 43.16, 43.16, 43.16, 43.16, 140.39, 266.49, 363.84, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69, 447.69], "profit_aud": 447.69}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.03, 0.17, 0.28, -5.57, -5.57, 2.78, 15.4, 43.9, 57.31, 57.31, 57.31, 57.31, 57.31, 57.31, 57.31, 59.37, 62.91, 67.66, 72.24, 75.31, 75.31, 75.31, 75.31, 75.31, 75.31, 75.31, 75.31, 75.31, 172.53, 298.64, 395.98, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84], "profit_aud": 479.84}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -0.46, -0.46, -0.43, -0.29, -0.18, -0.18, -0.18, -0.18, 12.44, 40.94, 54.34, 56.62, 56.62, 56.62, 56.62, 56.96, 57.11, 59.17, 62.71, 65.09, 69.67, 76.57, 77.84, 77.84, 78.83, 78.83, 78.83, 78.83, 78.83, 78.83, 78.83, 204.94, 302.28, 386.13, 386.13, 446.83, 446.83, 446.83, 446.83, 446.83, 446.9, 449.66, 449.66, 445.66], "profit_aud": 445.66}}} \ No newline at end of file diff --git a/results/daily/2026-05-01.json b/results/daily/2026-05-01.json new file mode 100644 index 0000000..a9f956b --- /dev/null +++ b/results/daily/2026-05-01.json @@ -0,0 +1 @@ +{"date": "2026-05-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.63, -3.36, -3.0, -2.92, -3.0, -4.12, -3.36, -3.0, -3.0, -2.99, -2.98, -4.11, -3.0, -2.04, -2.67, -1.28, -2.7, -2.52, -2.3, -2.94, -4.4, -3.62, -4.38, -4.7, -5.48, -5.23, -3.14, -2.51, -2.64, -2.56, -2.38, -1.04, -3.0, 14.8, 28.36, 30.26, 27.71, 18.49, 19.91, 7.41, 6.82, 0.65, -0.09, -2.32, -2.06, -1.29, -0.37, -0.82], "forecast_price": {"naive": [29.57, 16.45, 9.48, 7.21, 0.82, 0.0, -0.03, -0.11, -0.09, 4.68, 3.74, 6.68, 10.1, 22.8, 10.72, 1.82, -0.71, -0.86, -0.88, -2.66, -1.23, -1.65, -2.83, -3.8, -3.66, -5.52, -10.14, -4.38, -3.96, -3.29, -0.66, 11.5, 59.26, 68.5, 77.78, 100.89, 77.87, 67.08, 57.15, 48.56, 34.19, 27.73, 24.29, 13.62, -0.45, -2.21, -2.75, -3.2], "lightgbm": [27.88, 27.78, 25.15, 21.33, 20.04, 20.04, 20.04, 20.04, 20.04, 21.83, 28.06, 30.09, 33.25, 33.69, 28.38, 26.97, 20.71, 16.63, 11.46, 9.96, 12.89, 11.92, 10.43, 6.84, 10.63, 8.75, 3.27, 10.61, 10.74, 13.77, 14.74, 21.54, 41.0, 50.19, 64.52, 94.37, 84.23, 72.46, 68.23, 64.23, 57.2, 53.43, 44.73, 41.84, 44.54, 45.07, 45.03, 45.03], "lstm": [-2.71, -6.26, -5.72, -11.4, -12.74, -12.96, -11.41, -15.04, -13.22, -9.61, -4.82, 4.59, 16.27, 23.57, 23.87, 24.5, 15.14, 3.49, 1.27, -3.55, -9.57, -16.27, -19.66, -21.37, -19.35, -22.69, -20.36, -14.3, -12.57, -8.3, 0.78, 9.09, 16.26, 31.62, 41.53, 65.28, 66.26, 63.12, 53.63, 54.07, 55.48, 48.13, 51.13, 39.23, 38.47, 35.93, 36.94, 39.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.12, 2.12, 3.25, 4.38, 4.25, 4.12, 4.0, 3.88, 5.0, 5.0, 3.75, 3.62, 2.38, 2.25, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0], "cumulative_profit_aud": [0.33, 4.52, 8.27, 8.27, 8.65, 13.8, 18.0, 18.0, 18.0, 18.0, 18.0, 23.14, 23.51, 20.96, 20.96, 19.36, 19.36, 16.91, 14.04, 14.41, 19.9, 17.89, 23.37, 29.25, 36.09, 42.63, 43.02, 43.02, 43.68, 44.0, 44.3, 43.14, 46.89, 46.89, 82.34, 120.17, 154.8, 154.8, 179.69, 179.69, 179.69, 179.69, 179.7, 182.6, 185.17, 186.79, 187.02, 188.04], "profit_aud": 188.04}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 1.66, 6.82, 11.01, 14.76, 18.51, 15.15, 18.86, 13.72, 9.97, 7.42, 4.08, 4.08, 4.42, 4.74, 5.02, 8.69, 3.81, 4.27, 4.81, 8.34, 8.34, 14.88, 18.8, 21.93, 25.23, 25.55, 25.85, 25.85, 25.85, 44.35, 79.8, 117.63, 152.26, 152.26, 152.26, 152.26, 152.26, 152.26, 152.26, 152.26, 154.84, 156.45, 156.92, 157.94], "profit_aud": 157.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 1.66, 6.82, 11.01, 14.76, 18.51, 18.51, 18.51, 13.37, 9.62, 7.07, 3.73, 3.73, 3.73, 3.73, 4.05, 7.72, 2.23, 2.23, 7.71, 13.58, 13.58, 20.12, 24.04, 25.43, 25.43, 25.43, 25.43, 25.43, 25.43, 25.43, 25.43, 63.26, 97.9, 121.01, 145.9, 145.9, 145.9, 145.9, 145.9, 145.9, 145.9, 145.9, 145.9, 145.9], "profit_aud": 145.9}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.33, 1.17, 1.17, 1.53, 5.28, 10.43, 12.53, 16.28, 20.03, 20.41, 20.78, 20.78, 17.03, 14.48, 11.14, 9.53, 9.53, 9.53, 9.53, 9.9, 10.45, 10.9, 16.38, 22.26, 25.68, 32.21, 36.14, 36.45, 36.78, 37.1, 37.1, 37.1, 37.1, 37.1, 37.1, 74.93, 109.57, 132.68, 132.68, 132.68, 141.2, 141.2, 141.2, 141.2, 141.2, 141.2, 141.2, 141.2], "profit_aud": 141.2}}} \ No newline at end of file diff --git a/results/daily/2026-05-02.json b/results/daily/2026-05-02.json new file mode 100644 index 0000000..d954de9 --- /dev/null +++ b/results/daily/2026-05-02.json @@ -0,0 +1 @@ +{"date": "2026-05-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.41, -0.57, -1.66, -2.1, -2.39, -2.33, -2.68, -2.64, -2.17, -2.23, -2.21, -2.24, -2.15, -1.89, -1.92, -2.0, -1.68, -2.17, -1.9, -2.53, -2.16, -2.89, -2.34, -1.68, -3.29, -2.54, -2.04, -0.56, 2.84, 52.84, 18.46, 3.31, 8.92, 9.64, 2.78, 0.0, -0.07, 1.34, 2.93, 2.78, -1.13, -2.53, -1.49, -2.0, -4.41, -4.1, -2.68, -0.1], "forecast_price": {"naive": [-2.63, -3.36, -3.0, -2.92, -3.0, -4.12, -3.36, -3.0, -3.0, -2.99, -2.98, -4.11, -3.0, -2.04, -2.67, -1.28, -2.7, -2.52, -2.3, -2.94, -4.4, -3.62, -4.38, -4.7, -5.48, -5.23, -3.14, -2.51, -2.64, -2.56, -2.38, -1.04, -3.0, 14.8, 28.36, 30.26, 27.71, 18.49, 19.91, 7.41, 6.82, 0.65, -0.09, -2.32, -2.06, -1.29, -0.37, -0.82], "lightgbm": [6.94, 6.94, 3.79, 2.81, 1.96, 1.86, 1.86, 5.27, 5.27, 5.98, 8.67, 10.4, 8.98, 2.75, -3.52, -4.78, -6.88, -7.33, -6.33, -4.96, -4.76, -6.02, -8.98, -9.21, -9.54, -9.54, -9.62, -9.21, -5.94, -7.4, -3.25, 3.64, 9.45, 21.19, 35.1, 47.9, 50.07, 49.19, 50.65, 49.15, 46.16, 47.12, 44.68, 39.21, 38.81, 40.57, 39.93, 39.93], "lstm": [-6.28, -10.13, -11.68, -15.36, -16.75, -18.67, -16.25, -19.66, -17.75, -16.77, -9.48, -3.74, 0.61, 3.18, 2.49, 2.05, -4.46, -13.17, -15.68, -19.44, -25.51, -30.62, -35.15, -37.43, -34.38, -35.13, -32.26, -24.43, -25.31, -18.3, -11.67, -4.73, 7.37, 12.82, 26.8, 42.98, 49.13, 47.23, 45.84, 44.49, 44.03, 40.92, 43.04, 34.97, 34.07, 27.9, 31.5, 34.88]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.25, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 4.25, 4.12, 5.0, 4.88, 3.62, 2.38, 2.25, 1.0, 2.0, 0.75, 1.88, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0], "cumulative_profit_aud": [0.05, 0.12, 0.33, 0.59, 3.58, 6.49, 9.84, 13.13, 13.13, 13.13, 13.13, 15.38, 15.38, 13.02, 10.61, 10.61, 8.52, 10.95, 8.57, 11.73, 11.73, 15.34, 18.27, 16.17, 20.28, 23.46, 23.71, 23.78, 23.78, 89.84, 112.91, 112.91, 124.06, 136.1, 136.1, 136.1, 136.19, 135.82, 139.48, 142.95, 143.1, 146.26, 145.43, 147.93, 153.44, 158.57, 161.92, 161.93], "profit_aud": 161.93}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.12, 2.12, 3.25, 4.38, 4.25, 4.12, 4.0, 3.88, 5.0, 5.0, 3.75, 3.62, 2.38, 2.25, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0], "cumulative_profit_aud": [0.05, 0.76, 2.83, 2.83, 3.13, 6.04, 9.38, 9.38, 9.38, 9.38, 9.38, 12.19, 12.46, 10.1, 10.1, 7.6, 7.6, 5.49, 3.11, 3.43, 6.12, 4.52, 7.44, 9.54, 13.65, 16.82, 17.08, 17.08, 16.37, 9.76, 7.46, 11.13, -0.02, -0.02, 3.45, 3.45, 3.36, 3.36, 7.02, 7.02, 7.02, 7.02, 7.21, 9.71, 15.22, 20.35, 22.03, 22.15], "profit_aud": 22.15}, "lightgbm": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 1.38, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.92, 3.54, 6.53, 9.44, 12.79, 12.79, 12.79, 9.99, 7.23, 4.42, 1.74, 1.74, 1.98, 2.23, 4.32, 7.03, 7.98, 4.82, 2.13, 2.13, 2.42, 4.51, 8.62, 11.8, 14.35, 14.69, 17.84, -48.21, -50.52, -50.52, -50.52, -50.52, -50.52, -50.52, -50.61, -48.94, -45.28, -41.8, -41.8, -41.8, -41.8, -41.8, -41.8, -41.8, -41.8, -41.8], "profit_aud": -41.8}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.05, 0.12, 0.33, 0.59, 2.39, 5.3, 5.3, 8.59, 11.31, 14.1, 14.37, 14.66, 11.97, 9.61, 7.2, 4.7, 4.91, 5.18, 5.42, 5.74, 6.01, 6.37, 9.29, 11.38, 15.49, 18.67, 19.94, 19.94, 19.23, 12.63, 10.32, 9.91, 9.91, 9.91, 9.91, 9.91, 9.82, 11.49, 15.15, 18.63, 18.63, 18.63, 18.63, 18.63, 18.63, 23.76, 23.76, 23.64], "profit_aud": 23.64}}} \ No newline at end of file diff --git a/results/daily/2026-05-03.json b/results/daily/2026-05-03.json new file mode 100644 index 0000000..3c9addb --- /dev/null +++ b/results/daily/2026-05-03.json @@ -0,0 +1 @@ +{"date": "2026-05-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.02, -0.0, -0.1, -0.1, -1.34, -1.97, -2.17, -2.91, -2.26, -2.39, -2.51, -2.34, -1.62, -2.09, -0.9, 1.04, -0.2, -0.35, -2.17, -3.01, -4.03, -3.01, -2.67, -2.37, -2.56, -2.46, -18.62, -6.53, -3.17, -3.0, -3.36, -2.66, -2.14, -0.9, 1.3, 9.96, 14.79, 8.01, 5.36, 4.1, 3.53, -0.0, -0.06, -0.88, 0.54, -1.65, -1.88, -1.98], "forecast_price": {"naive": [-0.41, -0.57, -1.66, -2.1, -2.39, -2.33, -2.68, -2.64, -2.17, -2.23, -2.21, -2.24, -2.15, -1.89, -1.92, -2.0, -1.68, -2.17, -1.9, -2.53, -2.16, -2.89, -2.34, -1.68, -3.29, -2.54, -2.04, -0.56, 2.84, 52.84, 18.46, 3.31, 8.92, 9.64, 2.78, 0.0, -0.07, 1.34, 2.93, 2.78, -1.13, -2.53, -1.49, -2.0, -4.41, -4.1, -2.68, -0.1], "lightgbm": [17.87, 20.37, 13.59, 11.38, 10.59, 10.59, 10.59, 10.41, 10.29, 11.21, 13.69, 16.92, 20.09, 20.18, 20.3, 20.38, 20.03, 18.39, 16.28, 13.77, 4.82, 2.49, 4.0, 2.25, 3.77, 2.25, 2.55, 3.77, 9.43, 31.14, 21.89, 11.45, 19.9, 34.18, 39.84, 48.3, 53.26, 53.26, 56.19, 54.61, 54.19, 53.16, 50.57, 47.26, 47.97, 48.71, 49.53, 48.29], "lstm": [-1.83, -9.22, -8.23, -9.54, -9.9, -12.23, -12.78, -13.98, -12.16, -12.54, -8.44, -2.97, -4.64, 0.26, -1.89, 1.75, -6.74, -12.59, -11.32, -15.22, -19.33, -23.97, -27.75, -28.96, -27.22, -26.69, -27.99, -22.73, -21.77, -18.64, -12.87, -5.25, 2.42, 10.58, 25.06, 36.47, 43.04, 41.22, 41.22, 41.13, 40.78, 38.3, 38.24, 30.32, 29.17, 26.3, 27.87, 31.74]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.0, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.02, 0.02, 0.04, 0.04, 0.21, 0.46, 0.73, 4.37, 5.78, 8.77, 11.9, 14.83, 13.03, 15.64, 14.52, 15.82, 15.57, 15.13, 15.4, 19.16, 24.19, 27.95, 27.95, 24.99, 23.21, 20.13, 43.41, 51.57, 55.53, 57.41, 61.61, 61.94, 62.21, 62.32, 62.32, 74.77, 93.27, 103.28, 109.98, 109.98, 109.98, 109.98, 110.05, 111.15, 111.83, 113.89, 116.24, 118.72], "profit_aud": 118.72}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.25, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 4.25, 4.12, 5.0, 4.88, 3.62, 2.38, 2.25, 1.0, 2.0, 0.75, 1.88, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.02, 0.03, 1.7, 4.17, 6.88, 10.52, 10.52, 10.52, 10.52, 12.86, 12.86, 10.25, 9.12, 9.12, 8.88, 9.27, 6.56, 10.31, 10.31, 14.07, 17.41, 14.44, 17.64, 20.72, 23.05, 23.86, 23.86, 20.11, 15.91, 15.91, 13.23, 12.11, 12.11, -0.34, -18.84, -21.08, -14.39, -9.27, -9.71, -9.7, -9.74, -8.64, -9.31, -7.24, -4.9, -4.65], "profit_aud": -4.65}, "lightgbm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.02, 0.02, 0.02, 0.02, 0.76, 3.23, 5.94, 9.58, 12.4, 12.4, 12.4, 12.4, 10.38, 7.77, 6.64, 7.94, 7.94, 7.94, 7.94, 7.94, 7.94, 11.69, 11.69, 14.66, 14.66, 17.73, 41.01, 44.64, 44.64, 40.88, 40.88, 44.2, 44.5, 44.5, 44.5, 44.5, 63.0, 63.0, 69.69, 74.81, 79.22, 79.22, 79.22, 79.22, 79.22, 79.22, 79.22, 79.22], "profit_aud": 79.22}, "lstm": {"charge_mw": [2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.25, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.01, -0.1, -0.09, 0.08, 2.54, 5.26, 8.89, 10.3, 13.3, 13.61, 10.69, 10.89, 8.28, 7.15, 8.45, 8.47, 8.91, 6.5, 6.88, 7.38, 7.76, 11.1, 14.06, 17.26, 18.8, 42.08, 42.89, 43.29, 43.66, 44.08, 44.42, 44.42, 44.42, 44.42, 44.42, 62.91, 72.92, 79.62, 84.74, 84.74, 84.74, 84.74, 84.74, 84.74, 86.81, 87.07, 84.59], "profit_aud": 84.59}}} \ No newline at end of file diff --git a/results/daily/2026-05-04.json b/results/daily/2026-05-04.json new file mode 100644 index 0000000..d178306 --- /dev/null +++ b/results/daily/2026-05-04.json @@ -0,0 +1 @@ +{"date": "2026-05-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.13, -0.88, -1.95, -1.66, -0.56, -0.88, -1.66, -2.11, -2.66, -2.46, -2.08, -1.52, -1.3, -0.88, 4.14, 4.04, -0.4, -2.07, -2.34, -1.34, -2.5, -5.1, -4.52, -5.21, -3.92, -3.28, -3.03, -3.8, -3.64, -3.21, -5.85, -6.52, -1.78, 3.13, 36.52, 56.97, 59.88, 79.46, 49.14, 66.41, 54.03, 50.56, 82.61, 50.41, 69.62, 71.68, 89.27, 88.54], "forecast_price": {"naive": [-0.02, -0.0, -0.1, -0.1, -1.34, -1.97, -2.17, -2.91, -2.26, -2.39, -2.51, -2.34, -1.62, -2.09, -0.9, 1.04, -0.2, -0.35, -2.17, -3.01, -4.03, -3.01, -2.67, -2.37, -2.56, -2.46, -18.62, -6.53, -3.17, -3.0, -3.36, -2.66, -2.14, -0.9, 1.3, 9.96, 14.79, 8.01, 5.36, 4.1, 3.53, -0.0, -0.06, -0.88, 0.54, -1.65, -1.88, -1.98], "lightgbm": [5.22, 5.22, 3.51, 2.89, 2.84, 2.84, 2.84, 2.84, 2.89, 5.89, 13.21, 14.28, 15.27, 16.25, 16.33, 15.77, 7.13, 7.99, 10.07, 8.52, 7.46, 4.1, 2.19, 1.89, 1.67, 1.02, -9.29, -3.35, 0.96, 6.74, 6.38, 5.74, 16.43, 28.13, 37.56, 52.77, 53.44, 51.76, 51.72, 51.46, 52.16, 50.85, 48.42, 47.71, 47.4, 45.05, 46.16, 45.98], "lstm": [-3.63, -7.2, -7.77, -10.83, -12.46, -9.55, -11.05, -11.2, -9.97, -4.75, 3.46, 7.56, 16.25, 23.04, 19.69, 24.0, 13.65, 7.11, 5.72, 3.83, -2.57, -11.1, -8.95, -12.94, -12.49, -12.9, -15.25, -13.56, -11.65, -9.82, -6.28, -1.83, 3.47, 15.26, 26.29, 40.63, 45.26, 46.98, 48.2, 47.96, 46.51, 41.29, 42.33, 35.67, 32.91, 28.5, 30.79, 35.91]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.25, 1.38, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [2.66, 1.92, 4.36, 6.44, 5.75, 4.65, 5.68, 8.32, 11.64, 14.72, 17.31, 17.5, 17.67, 16.56, 21.74, 26.79, 26.29, 26.81, 29.73, 28.05, 28.37, 34.74, 40.39, 46.9, 51.8, 47.7, 43.91, 48.66, 52.3, 48.29, 55.6, 63.75, 63.98, 63.98, 63.98, 63.98, 63.98, 163.3, 101.86, 184.88, 169.75, 106.55, 209.81, 146.8, 225.13, 314.72, 426.31, 536.98], "profit_aud": 536.98}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 2.0, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [2.66, 1.68, 2.17, 2.17, 2.24, 2.35, 2.55, 5.19, 6.85, 9.93, 12.52, 14.42, 12.98, 14.08, 19.26, 24.31, 23.81, 21.22, 21.51, 23.19, 26.32, 32.69, 32.69, 26.18, 23.46, 19.36, 23.14, 27.89, 32.44, 34.45, 41.77, 42.58, 42.8, 42.41, 42.41, 113.62, 188.47, 287.79, 349.22, 349.22, 349.22, 311.31, 208.05, 145.04, 232.06, 142.47, 30.88, -79.8], "profit_aud": -79.8}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, 0.92, 1.62, 2.72, 4.79, 7.43, 7.43, 7.43, 7.43, 7.43, 5.8, 4.7, 9.88, 14.92, 15.42, 15.71, 12.79, 12.79, 12.79, 12.79, 12.79, 12.79, 14.96, 19.06, 22.85, 27.59, 32.15, 28.54, 28.54, 36.69, 36.69, 36.69, 36.69, 107.89, 182.75, 282.06, 282.06, 282.06, 349.6, 349.6, 349.6, 349.6, 349.6, 349.6, 349.6, 349.6], "profit_aud": 349.6}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.27, 0.38, 0.62, 2.7, 3.4, 3.4, 5.47, 8.11, 10.1, 10.4, 10.4, 10.4, 8.78, 7.68, 12.86, 17.9, 17.9, 17.9, 17.9, 17.9, 18.21, 24.59, 19.57, 26.08, 28.53, 32.63, 36.41, 41.16, 41.62, 42.02, 42.75, 43.56, 43.56, 43.56, 43.56, 43.56, 43.56, 142.88, 204.31, 287.33, 354.87, 354.87, 354.87, 354.87, 354.87, 265.27, 252.77, 363.45], "profit_aud": 363.45}}} \ No newline at end of file diff --git a/results/daily/2026-05-05.json b/results/daily/2026-05-05.json new file mode 100644 index 0000000..727d86d --- /dev/null +++ b/results/daily/2026-05-05.json @@ -0,0 +1 @@ +{"date": "2026-05-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [90.07, 92.04, 76.12, 76.59, 54.88, 41.39, 56.82, 63.41, 53.53, 50.44, 81.57, 100.89, 103.44, 102.73, 110.25, 114.16, 93.57, 97.01, 63.21, 100.36, 131.17, 141.59, 161.41, 148.86, 125.5, 138.56, 128.06, 125.18, 121.66, 119.05, 137.98, 114.51, 113.71, 163.04, 132.46, 131.48, 135.1, 126.76, 128.48, 124.66, 117.49, 121.29, 124.45, 126.97, 126.13, 117.66, 118.02, 108.46], "forecast_price": {"naive": [-2.13, -0.88, -1.95, -1.66, -0.56, -0.88, -1.66, -2.11, -2.66, -2.46, -2.08, -1.52, -1.3, -0.88, 4.14, 4.04, -0.4, -2.07, -2.34, -1.34, -2.5, -5.1, -4.52, -5.21, -3.92, -3.28, -3.03, -3.8, -3.64, -3.21, -5.85, -6.52, -1.78, 3.13, 36.52, 56.97, 59.88, 79.46, 49.14, 66.41, 54.03, 50.56, 82.61, 50.41, 69.62, 71.68, 89.27, 88.54], "lightgbm": [28.97, 28.97, 25.53, 23.23, 21.52, 21.52, 21.52, 21.46, 21.46, 21.55, 27.66, 29.17, 31.27, 32.38, 32.92, 30.8, 23.89, 19.14, 18.04, 16.61, 15.6, 10.98, 12.32, 9.33, 12.09, 12.09, 12.13, 12.09, 16.07, 21.99, 17.9, 19.3, 26.0, 35.16, 54.09, 71.59, 73.7, 90.21, 69.0, 74.78, 69.2, 67.82, 84.58, 62.35, 69.29, 69.55, 82.5, 84.13], "lstm": [68.41, 64.22, 61.45, 61.21, 54.36, 54.24, 51.03, 50.28, 48.81, 52.4, 55.48, 63.27, 73.89, 82.14, 64.75, 58.85, 45.29, 39.94, 32.3, 22.81, 21.66, 12.95, 7.35, 7.73, 9.13, 5.53, 4.88, 6.8, 6.59, 11.46, 14.02, 19.17, 28.95, 43.23, 64.71, 89.22, 87.72, 88.51, 78.28, 78.83, 73.04, 67.14, 71.86, 59.09, 59.52, 49.31, 50.84, 58.11]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -68.6, -120.33, -191.35, -151.72, -218.64, -281.69, -281.69, -281.69, -281.69, -281.69, -143.88, -1.18, -118.15, -145.31, -224.33, -224.33, -224.33, -47.34, 154.43, 340.5, 340.5, 513.7, 513.7, 513.7, 496.67, 347.86, 520.33, 377.2, 235.06, 438.86, 438.86, 438.86, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96, 573.96], "profit_aud": 573.96}, "naive": {"charge_mw": [2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 0.25, 1.38, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 2.0, 3.12, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-112.59, -35.74, -130.88, -226.62, -158.02, -106.28, -141.79, -221.05, -287.97, -351.02, -452.98, -465.6, -478.53, -350.11, -212.3, -69.61, 47.36, 23.11, -55.91, 69.54, 53.15, -123.85, -325.61, -511.69, -668.56, -495.36, -335.29, -491.75, -613.41, -464.6, -637.08, -780.22, -794.43, -794.43, -794.43, -794.43, -794.43, -635.98, -796.58, -640.75, -673.65, -825.26, -669.7, -828.42, -686.53, -539.45, -391.91, -256.34], "profit_aud": -256.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, -0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.62, 2.62, 2.62, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -30.46, -82.19, -153.21, -232.47, -299.38, -299.38, -299.38, -299.38, -170.08, -41.67, 96.14, 238.84, 238.84, 238.84, 238.84, 238.84, 238.84, 61.84, 61.84, -124.23, -193.88, -367.08, -367.08, -523.55, -523.55, -374.74, -547.21, -563.25, -563.25, -563.25, -563.25, -563.25, -563.25, -404.8, -404.8, -264.55, -264.55, -264.55, -108.99, -267.71, -267.71, -267.71, -120.18, 15.4], "profit_aud": 15.4}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -22.97, -93.99, -173.25, -240.16, -303.21, -303.21, -177.1, -47.8, 80.61, 218.42, 218.42, 218.42, 218.42, 218.42, 218.42, 218.42, 218.42, 16.65, -86.8, 70.07, -103.13, -263.21, -419.68, -571.75, -571.75, -571.75, -571.75, -571.75, -571.75, -571.75, -407.4, -238.53, -80.08, -80.08, 75.74, 75.74, 75.74, 75.74, 75.74, 75.74, -71.34, -87.86, 47.71], "profit_aud": 47.71}}} \ No newline at end of file diff --git a/results/daily/2026-05-06.json b/results/daily/2026-05-06.json new file mode 100644 index 0000000..1b43423 --- /dev/null +++ b/results/daily/2026-05-06.json @@ -0,0 +1 @@ +{"date": "2026-05-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [110.4, 106.58, 98.34, 108.74, 115.7, 97.7, 92.66, 89.86, 101.98, 98.42, 100.56, 115.62, 108.48, 127.74, 131.02, 107.81, 122.33, 110.44, 125.6, 66.61, 29.59, 15.84, 8.34, 3.7, 6.1, 27.88, -0.02, -0.04, -0.03, 1.4, 0.11, -0.07, 0.08, 27.25, 43.05, 48.25, 42.36, 32.24, 36.58, 36.18, 36.02, 39.69, 39.13, 31.55, 10.62, 4.58, 1.09, -0.03], "forecast_price": {"naive": [90.07, 92.04, 76.12, 76.59, 54.88, 41.39, 56.82, 63.41, 53.53, 50.44, 81.57, 100.89, 103.44, 102.73, 110.25, 114.16, 93.57, 97.01, 63.21, 100.36, 131.17, 141.59, 161.41, 148.86, 125.5, 138.56, 128.06, 125.18, 121.66, 119.05, 137.98, 114.51, 113.71, 163.04, 132.46, 131.48, 135.1, 126.76, 128.48, 124.66, 117.49, 121.29, 124.45, 126.97, 126.13, 117.66, 118.02, 108.46], "lightgbm": [92.57, 92.82, 80.75, 75.8, 64.41, 59.45, 63.27, 67.24, 63.91, 63.18, 76.49, 83.46, 93.1, 95.1, 96.62, 96.12, 82.54, 66.44, 56.47, 57.02, 66.45, 65.65, 68.05, 63.19, 56.79, 66.38, 59.78, 61.57, 59.36, 70.78, 81.11, 81.4, 90.89, 111.82, 114.73, 118.76, 123.59, 124.53, 114.84, 120.37, 107.18, 100.16, 107.46, 93.57, 100.45, 95.76, 95.97, 87.95], "lstm": [118.76, 120.13, 109.84, 109.09, 101.92, 98.48, 99.58, 93.2, 95.12, 88.59, 104.41, 102.97, 117.29, 133.6, 127.94, 137.64, 123.23, 117.08, 100.9, 84.77, 74.77, 70.48, 71.51, 69.07, 70.01, 68.27, 66.24, 64.5, 60.86, 69.36, 65.08, 72.51, 89.53, 96.79, 114.19, 151.53, 135.25, 139.21, 107.58, 112.18, 106.73, 96.84, 92.82, 80.63, 90.75, 72.02, 76.32, 87.91]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 0.0, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 2.38, 2.38, 2.38, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12], "cumulative_profit_aud": [0.0, 0.0, -122.92, -122.92, 7.24, -114.88, -230.7, -343.03, -343.03, -466.06, -521.87, -521.87, -521.87, -362.19, -198.41, -198.41, -45.5, -45.5, 111.51, 111.51, 111.51, 111.51, 111.51, 106.88, 106.02, 140.87, 140.89, 140.95, 140.98, 142.73, 142.66, 142.74, 142.65, 142.65, 196.46, 256.77, 309.72, 269.41, 269.41, 269.41, 269.41, 319.02, 363.05, 363.05, 363.05, 363.05, 363.05, 363.08], "profit_aud": 363.08}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -144.62, -266.75, -382.57, -326.41, -453.88, -576.9, -576.9, -576.9, -576.9, -576.9, -413.12, -278.36, -431.27, -462.2, -619.2, -619.2, -619.2, -599.41, -588.98, -584.35, -584.35, -549.5, -549.5, -549.5, -549.49, -551.24, -551.1, -551.02, -551.11, -517.05, -517.05, -517.05, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69, -474.69], "profit_aud": -474.69}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.62, 1.62, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -64.21, -186.34, -302.16, -302.16, -429.63, -552.65, -552.65, -552.65, -417.06, -257.38, -93.6, 41.16, 41.16, 41.16, -115.84, -199.11, -199.11, -199.11, -193.89, -193.89, -201.52, -201.52, -201.5, -201.5, -201.46, -201.46, -201.46, -201.46, -201.46, -201.46, -201.46, -141.15, -88.2, -47.9, -47.9, -2.67, -2.67, -2.67, -2.67, -2.67, -2.67, -2.67, -2.67, -2.67], "profit_aud": -2.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -122.12, -173.55, -285.88, -413.35, -536.37, -536.37, -536.37, -536.37, -376.7, -212.91, -78.15, 74.76, 74.76, 74.76, 74.76, 74.76, 74.76, 74.76, 74.76, 74.76, 59.28, 59.31, 59.36, 59.39, 59.39, 59.26, 59.26, 59.26, 59.26, 113.07, 173.38, 226.33, 266.63, 266.63, 266.63, 266.63, 266.63, 266.63, 227.2, 239.14, 233.41, 233.26, 233.22], "profit_aud": 233.22}}} \ No newline at end of file diff --git a/results/daily/2026-05-07.json b/results/daily/2026-05-07.json new file mode 100644 index 0000000..a639883 --- /dev/null +++ b/results/daily/2026-05-07.json @@ -0,0 +1 @@ +{"date": "2026-05-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [1.11, 3.88, -0.02, 0.03, 4.26, 4.05, 5.3, 1.54, 4.29, 6.11, 12.48, 16.91, 34.21, 41.88, 45.32, 49.97, 37.07, 11.78, 18.15, 4.64, 13.74, 5.39, 4.23, 6.06, 1.16, -0.05, 0.26, -0.06, -0.08, 1.72, 11.02, 30.94, 53.07, 58.82, 61.13, 57.03, 55.68, 52.29, 53.44, 50.67, 45.91, 40.02, 44.46, 34.45, 47.09, 46.62, 31.43, 33.57], "forecast_price": {"naive": [110.4, 106.58, 98.34, 108.74, 115.7, 97.7, 92.66, 89.86, 101.98, 98.42, 100.56, 115.62, 108.48, 127.74, 131.02, 107.81, 122.33, 110.44, 125.6, 66.61, 29.59, 15.84, 8.34, 3.7, 6.1, 27.88, -0.02, -0.04, -0.03, 1.4, 0.11, -0.07, 0.08, 27.25, 43.05, 48.25, 42.36, 32.24, 36.58, 36.18, 36.02, 39.69, 39.13, 31.55, 10.62, 4.58, 1.09, -0.03], "lightgbm": [58.32, 58.5, 59.16, 51.16, 47.94, 50.37, 48.89, 51.46, 47.29, 51.12, 61.4, 67.77, 70.2, 77.87, 78.05, 69.5, 69.47, 59.34, 50.33, 36.2, 26.25, 21.14, 19.52, 17.03, 16.93, 22.78, 12.36, 16.46, 16.46, 19.26, 22.94, 27.14, 34.2, 47.67, 59.39, 72.74, 65.57, 62.51, 59.19, 58.53, 54.5, 53.12, 51.4, 48.6, 48.67, 50.19, 50.76, 50.76], "lstm": [-1.66, -2.5, -4.3, -8.19, -10.83, -11.69, -14.38, -11.04, -9.62, -8.76, 0.58, 3.17, 19.0, 30.06, 30.81, 33.53, 24.0, 15.63, 12.72, 5.42, -2.1, -5.66, -7.87, -9.87, -14.96, -10.67, -14.61, -13.25, -9.26, -8.45, -1.18, 4.77, 10.61, 24.63, 35.5, 48.34, 51.97, 51.39, 52.02, 53.54, 53.34, 49.93, 46.63, 39.83, 36.71, 29.65, 31.7, 40.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-1.39, -6.24, -6.21, -6.26, -6.26, -8.5, -1.89, -3.81, -4.41, -4.41, -4.41, -4.41, -4.41, 47.94, 104.59, 167.06, 213.39, 198.66, 219.07, 213.28, 228.74, 227.98, 222.69, 230.27, 229.62, 229.69, 229.37, 229.44, 229.55, 229.55, 229.55, 229.55, 229.55, 303.07, 379.48, 450.77, 520.37, 520.37, 520.37, 520.37, 520.37, 470.34, 470.34, 427.28, 486.14, 532.76, 532.76, 532.76], "profit_aud": 532.76}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 2.5, 0.0, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 3.38, 2.12, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 2.38, 2.38, 2.38, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12], "cumulative_profit_aud": [0.0, 0.0, 0.02, 0.02, 4.82, -0.24, -6.86, -8.79, -8.79, -16.43, -23.36, -23.36, -23.36, 28.99, 85.64, 85.64, 131.98, 131.98, 154.66, 154.66, 154.66, 154.66, 154.66, 147.09, 146.92, 146.86, 146.54, 146.61, 146.72, 148.86, 141.21, 102.53, 36.19, 36.19, 112.6, 183.89, 253.49, 188.12, 188.12, 188.12, 188.12, 238.15, 288.17, 288.17, 288.17, 288.17, 288.17, 246.2], "profit_aud": 246.2}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -5.33, -10.39, -17.01, -17.01, -22.37, -25.77, -25.77, -25.77, 17.0, 69.35, 126.0, 188.47, 188.47, 188.47, 188.47, 188.47, 188.47, 188.47, 188.47, 180.89, 179.44, 179.38, 179.06, 179.13, 179.24, 178.04, 178.04, 178.04, 178.04, 178.04, 254.46, 325.75, 395.34, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71, 460.71], "profit_aud": 460.71}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-0.14, -0.62, -0.62, -0.63, -5.95, -11.02, -17.63, -19.56, -22.24, -23.01, -23.01, -23.01, -23.01, 29.35, 85.99, 148.46, 194.79, 194.79, 194.79, 194.79, 193.08, 192.4, 191.87, 188.09, 186.64, 186.7, 186.38, 186.46, 186.47, 186.25, 184.88, 184.88, 184.88, 184.88, 184.88, 184.88, 254.47, 254.47, 321.27, 384.61, 442.0, 442.0, 442.0, 442.0, 442.0, 383.72, 379.32, 421.29], "profit_aud": 421.29}}} \ No newline at end of file diff --git a/results/daily/2026-05-08.json b/results/daily/2026-05-08.json new file mode 100644 index 0000000..58fef85 --- /dev/null +++ b/results/daily/2026-05-08.json @@ -0,0 +1 @@ +{"date": "2026-05-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [28.7, 17.35, 48.92, 16.77, 27.42, 15.15, 14.64, 8.79, 12.88, 1.57, 15.18, 12.56, 21.02, 44.79, 40.19, 34.26, 18.31, 6.69, 7.06, 4.85, 6.95, 1.41, 0.73, 0.15, 0.73, -0.04, -0.32, -1.0, -3.03, -2.22, -1.29, 8.2, 38.04, 71.34, 75.25, 82.56, 89.27, 87.9, 86.38, 86.56, 85.98, 89.8, 92.7, 89.97, 99.28, 103.24, 101.46, 103.71], "forecast_price": {"naive": [1.11, 3.88, -0.02, 0.03, 4.26, 4.05, 5.3, 1.54, 4.29, 6.11, 12.48, 16.91, 34.21, 41.88, 45.32, 49.97, 37.07, 11.78, 18.15, 4.64, 13.74, 5.39, 4.23, 6.06, 1.16, -0.05, 0.26, -0.06, -0.08, 1.72, 11.02, 30.94, 53.07, 58.82, 61.13, 57.03, 55.68, 52.29, 53.44, 50.67, 45.91, 40.02, 44.46, 34.45, 47.09, 46.62, 31.43, 33.57], "lightgbm": [27.77, 27.77, 25.5, 22.86, 21.43, 21.43, 21.65, 21.43, 21.43, 22.77, 28.37, 29.89, 35.07, 36.6, 35.92, 38.53, 33.92, 25.64, 24.93, 19.03, 18.79, 15.39, 14.02, 14.41, 13.52, 13.52, 13.56, 13.56, 13.69, 14.61, 18.41, 26.72, 40.31, 46.01, 51.57, 57.8, 56.4, 55.59, 55.96, 54.74, 48.12, 45.14, 45.78, 43.28, 45.85, 45.85, 42.83, 43.42], "lstm": [37.45, 31.58, 28.43, 24.43, 22.26, 19.37, 18.08, 20.82, 20.11, 22.07, 25.49, 31.78, 48.44, 61.19, 61.91, 70.28, 61.35, 50.45, 47.19, 38.77, 30.53, 21.87, 19.81, 17.5, 18.5, 15.09, 15.32, 20.42, 20.18, 23.2, 28.58, 38.6, 42.12, 58.54, 68.97, 95.75, 79.18, 75.02, 65.16, 65.43, 66.02, 59.61, 62.47, 54.16, 58.42, 50.46, 50.06, 53.19]}, "methods": {"perfect_foresight": {"charge_mw": [0.28, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-4.02, -25.71, 35.44, 14.48, 45.33, 45.33, 37.21, 26.22, 10.12, 8.15, 8.15, -7.54, 18.73, 74.72, 124.96, 167.78, 167.78, 167.78, 167.78, 161.71, 169.54, 169.54, 169.54, 169.35, 170.17, 170.17, 170.37, 171.62, 175.41, 178.18, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 179.79, 303.89, 432.94, 559.76, 689.4], "profit_aud": 689.4}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.28, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 1.12, 0.0, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-35.88, -57.57, -118.71, -139.67, -139.67, -148.08, -129.78, -140.77, -142.57, -142.57, -142.57, -142.57, -142.57, -86.58, -36.35, 6.47, 29.36, 20.99, 28.94, 22.87, 30.69, 30.5, 29.58, 29.77, 29.37, 29.42, 29.81, 31.06, 34.85, 34.85, 34.85, 34.85, 34.85, 124.03, 218.09, 321.28, 432.87, 432.87, 432.87, 432.87, 432.87, 320.61, 320.61, 208.15, 332.25, 435.49, 435.49, 435.49], "profit_aud": 435.49}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -34.28, -53.21, -61.34, -72.33, -88.42, -88.42, -88.42, -88.42, -62.15, -6.16, 44.08, 86.89, 86.89, 86.89, 86.89, 86.89, 86.89, 86.89, 86.89, 86.89, 85.98, 86.03, 86.43, 87.68, 89.36, 89.36, 89.36, 89.36, 89.36, 89.36, 89.36, 192.55, 304.14, 414.02, 521.99, 521.99, 521.99, 521.99, 521.99, 521.99, 521.99, 521.99, 521.99, 521.99], "profit_aud": 521.99}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -18.93, -37.23, -48.22, -64.32, -65.19, -65.19, -65.19, -65.19, -9.2, 41.03, 83.85, 106.74, 106.74, 106.74, 106.74, 106.74, 106.74, 106.33, 106.14, 105.23, 105.28, 105.68, 105.68, 105.68, 105.68, 105.68, 105.68, 105.68, 105.68, 199.74, 302.93, 414.52, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39, 524.39], "profit_aud": 524.39}}} \ No newline at end of file diff --git a/results/daily/2026-05-09.json b/results/daily/2026-05-09.json new file mode 100644 index 0000000..5952f5a --- /dev/null +++ b/results/daily/2026-05-09.json @@ -0,0 +1 @@ +{"date": "2026-05-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [103.83, 107.04, 113.42, 107.77, 104.53, 104.81, 105.08, 104.26, 111.56, 106.36, 115.46, 104.38, 106.56, 98.66, 101.47, 106.85, 96.48, 93.29, 72.38, 74.14, 53.27, 60.07, 84.54, 92.85, 92.62, 91.12, 61.9, 56.19, 58.24, 57.62, 45.49, 63.05, 100.52, 119.87, 127.58, 125.75, 132.53, 121.19, 111.6, 104.96, 103.29, 105.53, 104.04, 119.57, 116.38, 104.1, 111.51, 107.28], "forecast_price": {"naive": [28.7, 17.35, 48.92, 16.77, 27.42, 15.15, 14.64, 8.79, 12.88, 1.57, 15.18, 12.56, 21.02, 44.79, 40.19, 34.26, 18.31, 6.69, 7.06, 4.85, 6.95, 1.41, 0.73, 0.15, 0.73, -0.04, -0.32, -1.0, -3.03, -2.22, -1.29, 8.2, 38.04, 71.34, 75.25, 82.56, 89.27, 87.9, 86.38, 86.56, 85.98, 89.8, 92.7, 89.97, 99.28, 103.24, 101.46, 103.71], "lightgbm": [30.32, 28.39, 33.26, 24.19, 24.59, 23.37, 23.37, 22.75, 22.83, 22.31, 25.7, 26.14, 25.19, 28.89, 23.11, 22.71, 14.86, 9.84, 9.32, 9.23, 7.89, 6.39, 5.52, 5.14, 5.16, 5.16, 5.16, 5.16, 5.6, 19.05, 10.21, 15.06, 32.02, 49.62, 58.25, 84.21, 86.84, 85.79, 83.8, 83.49, 82.06, 81.44, 77.89, 74.91, 79.31, 79.82, 78.64, 78.35], "lstm": [99.53, 95.1, 88.34, 84.48, 74.36, 71.37, 67.97, 65.4, 63.77, 63.48, 67.64, 66.53, 78.27, 82.89, 78.73, 68.67, 56.11, 48.61, 41.63, 30.4, 24.62, 17.02, 13.5, 12.79, 13.22, 12.23, 14.77, 16.91, 17.69, 22.46, 30.32, 39.63, 50.8, 69.24, 92.25, 119.19, 115.81, 102.71, 86.84, 84.02, 87.11, 80.46, 78.99, 68.12, 74.13, 63.02, 68.96, 75.32]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-129.78, -129.78, -129.78, -129.78, -129.78, -129.78, -129.78, -129.78, -129.78, -129.78, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, -90.36, -183.03, -249.62, -324.7, -261.3, -145.23, -29.46, 84.44, 50.09, -20.15, -92.94, -164.96, -221.83, -221.83, -221.83, -221.83, -62.35, 94.84, 260.5, 411.99, 411.99, 411.99, 282.88, 282.88, 152.83, 302.29, 418.66, 418.66, 418.66, 418.66], "profit_aud": 418.66}, "naive": {"charge_mw": [0.28, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-14.54, -148.34, -6.57, -141.28, -23.68, -23.68, -82.0, -212.33, -351.77, -484.73, -484.73, -615.2, -482.0, -358.68, -231.84, -98.27, -98.27, -98.27, -98.27, -190.95, -131.02, -131.02, -131.02, -247.09, -142.89, -154.28, -192.97, -263.21, -336.0, -408.02, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -464.89, -319.42, -189.29, -49.9, 84.2], "profit_aud": 84.2}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -133.8, -6.21, -6.21, -6.21, -6.21, -6.21, -136.53, -275.98, -408.93, -307.9, -177.43, -177.43, -54.1, -54.1, -54.1, -54.1, -54.1, -54.1, -54.1, -54.1, -54.1, -54.1, -170.17, -221.57, -335.47, -412.85, -483.09, -483.09, -411.07, -467.93, -476.76, -476.76, -476.76, -476.76, -319.57, -153.9, -2.42, 137.08, 137.08, 137.08, 137.08, 137.08, 137.08, 137.08, 137.08, 137.08, 137.08], "profit_aud": 137.08}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -130.32, -269.77, -402.72, -402.72, -446.04, -312.84, -189.52, -62.68, -62.68, -62.68, -62.68, -62.68, -62.68, -62.68, -62.68, -168.35, -284.42, -400.2, -514.1, -548.45, -548.45, -548.45, -548.45, -548.45, -548.45, -548.45, -548.45, -388.98, -231.78, -66.12, 85.37, 85.37, 85.37, 85.37, 85.37, 85.37, 85.37, 85.37, -44.76, -44.76, 75.93], "profit_aud": 75.93}}} \ No newline at end of file diff --git a/results/daily/2026-05-10.json b/results/daily/2026-05-10.json new file mode 100644 index 0000000..b4938ef --- /dev/null +++ b/results/daily/2026-05-10.json @@ -0,0 +1 @@ +{"date": "2026-05-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [129.46, 139.15, 125.87, 132.45, 113.77, 106.93, 110.08, 110.95, 114.49, 140.03, 137.06, 138.86, 132.62, 138.0, 138.01, 201.51, 132.25, 111.64, 134.84, 75.53, 46.07, 70.96, 84.86, 86.22, 84.66, 92.89, 93.96, 92.6, 79.83, 86.15, 93.04, 73.95, 121.71, 128.09, 146.75, 139.23, 134.02, 136.74, 136.12, 136.58, 139.34, 138.09, 138.22, 136.26, 113.76, 109.6, 91.37, 106.48], "forecast_price": {"naive": [103.83, 107.04, 113.42, 107.77, 104.53, 104.81, 105.08, 104.26, 111.56, 106.36, 115.46, 104.38, 106.56, 98.66, 101.47, 106.85, 96.48, 93.29, 72.38, 74.14, 53.27, 60.07, 84.54, 92.85, 92.62, 91.12, 61.9, 56.19, 58.24, 57.62, 45.49, 63.05, 100.52, 119.87, 127.58, 125.75, 132.53, 121.19, 111.6, 104.96, 103.29, 105.53, 104.04, 119.57, 116.38, 104.1, 111.51, 107.28], "lightgbm": [83.14, 82.19, 78.32, 72.8, 71.64, 68.2, 67.05, 66.3, 66.84, 65.34, 67.26, 69.04, 72.18, 77.75, 74.41, 70.05, 61.95, 56.65, 43.81, 42.53, 32.42, 31.63, 41.32, 42.8, 41.37, 41.5, 28.65, 27.66, 31.42, 32.19, 34.91, 49.69, 66.22, 87.17, 108.46, 116.5, 122.71, 116.61, 113.22, 103.28, 100.76, 97.31, 91.71, 96.99, 95.81, 87.57, 94.85, 89.3], "lstm": [117.6, 110.99, 107.26, 112.26, 94.8, 92.27, 89.62, 82.58, 83.59, 72.88, 78.12, 77.99, 79.42, 75.88, 78.24, 69.12, 65.64, 55.14, 51.86, 43.36, 37.67, 34.42, 30.01, 29.57, 32.3, 25.32, 27.94, 32.9, 39.08, 45.25, 49.69, 60.75, 77.24, 96.45, 120.09, 156.21, 151.32, 124.29, 108.55, 102.33, 97.86, 91.13, 86.71, 73.72, 80.02, 74.63, 76.06, 82.77]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 2.75, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -142.22, -275.88, -413.49, -552.18, -615.72, -440.68, -440.68, -267.1, -267.1, -267.1, -94.59, 157.29, 157.29, 17.75, 169.44, 75.03, 17.44, -71.26, -71.26, -71.26, -71.26, -71.26, -12.54, -12.54, -112.33, -112.33, -112.33, -204.77, -204.77, -204.77, -21.33, 152.7, 152.7, 152.7, 152.7, 152.7, 326.89, 326.89, 499.67, 499.67, 499.67, 499.67, 385.46, 505.25], "profit_aud": 505.25}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-161.82, -161.82, -161.82, -161.82, -161.82, -161.82, -161.82, -161.82, -161.82, -161.82, -7.63, -7.63, -7.63, -7.63, -7.63, -7.63, -7.63, -7.63, -176.17, -270.58, -328.17, -416.87, -353.23, -245.46, -139.63, -23.52, -75.66, -191.42, -291.21, -398.9, -515.2, -515.2, -515.2, -515.2, -331.77, -157.73, 9.8, 180.73, 180.73, 180.73, 6.54, 6.54, -166.23, 4.08, 117.84, 117.84, 117.84, 117.84], "profit_aud": 117.84}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -138.69, -170.75, -345.78, -345.78, -345.78, -345.78, -173.28, -0.77, -0.77, -0.77, -0.77, -0.77, -0.77, -58.36, -147.06, -147.06, -39.29, -39.29, 53.6, -63.84, -179.6, -279.39, -387.08, -438.72, -438.72, -438.72, -438.72, -438.72, -264.68, -97.15, 73.77, 243.93, 243.93, 243.93, 243.93, 243.93, 243.93, 243.93, 243.93, 243.93, 243.93], "profit_aud": 243.93}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -106.08, -213.85, -260.83, -376.95, -494.39, -494.39, -494.39, -494.39, -494.39, -494.39, -494.39, -494.39, -310.95, -136.92, 30.61, 201.54, 201.54, 201.54, 201.54, 201.54, 201.54, 31.22, 31.22, 31.22, 31.22, 151.01], "profit_aud": 151.01}}} \ No newline at end of file diff --git a/results/daily/2026-05-11.json b/results/daily/2026-05-11.json new file mode 100644 index 0000000..13985ad --- /dev/null +++ b/results/daily/2026-05-11.json @@ -0,0 +1 @@ +{"date": "2026-05-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [102.15, 90.59, 80.33, 84.94, 83.3, 73.57, 63.14, 78.35, 86.7, 83.83, 94.22, 100.86, 118.78, 120.72, 129.21, 129.49, 124.31, 101.44, 77.24, 51.62, 39.94, 35.24, 35.28, 40.17, 48.37, 51.94, 51.72, 53.41, 55.13, 58.55, 62.99, 83.91, 101.01, 112.86, 118.26, 120.34, 103.85, 96.19, 80.35, 85.83, 78.7, 77.42, 76.78, 74.55, 74.9, 70.64, 75.52, 75.49], "forecast_price": {"naive": [129.46, 139.15, 125.87, 132.45, 113.77, 106.93, 110.08, 110.95, 114.49, 140.03, 137.06, 138.86, 132.62, 138.0, 138.01, 201.51, 132.25, 111.64, 134.84, 75.53, 46.07, 70.96, 84.86, 86.22, 84.66, 92.89, 93.96, 92.6, 79.83, 86.15, 93.04, 73.95, 121.71, 128.09, 146.75, 139.23, 134.02, 136.74, 136.12, 136.58, 139.34, 138.09, 138.22, 136.26, 113.76, 109.6, 91.37, 106.48], "lightgbm": [112.15, 119.52, 106.37, 105.92, 96.75, 94.25, 93.89, 96.53, 98.36, 109.83, 124.27, 124.56, 129.99, 136.78, 136.93, 131.45, 124.04, 106.85, 105.1, 79.32, 58.34, 71.31, 78.0, 76.05, 75.2, 76.06, 75.71, 72.39, 72.09, 77.05, 79.84, 72.75, 94.25, 104.3, 141.9, 146.94, 143.59, 151.46, 144.77, 142.88, 140.35, 134.71, 132.31, 119.72, 103.57, 99.06, 101.2, 105.68], "lstm": [114.57, 108.77, 104.85, 104.24, 98.54, 96.67, 94.49, 91.61, 92.01, 92.06, 97.61, 114.92, 129.01, 143.69, 151.56, 165.97, 146.57, 127.53, 119.87, 106.03, 88.68, 76.12, 71.08, 73.18, 68.31, 65.42, 71.01, 75.05, 69.95, 81.42, 88.02, 106.38, 113.93, 145.49, 177.84, 216.35, 194.35, 173.46, 143.99, 140.89, 133.01, 121.96, 126.2, 106.31, 109.48, 101.27, 105.86, 107.5]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -100.42, -100.42, -146.65, -238.61, -317.54, -415.49, -415.49, -415.49, -415.49, -415.49, -415.49, -264.58, -103.08, 58.79, 214.17, 214.17, 214.17, 214.17, 164.25, 120.21, 76.11, 25.9, -0.95, -0.95, -0.95, -0.95, -0.95, -0.95, -0.95, -0.95, -0.95, 140.13, 287.95, 438.37, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19, 568.19], "profit_aud": 568.19}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 2.75, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -104.12, -196.09, -275.02, -372.96, -421.08, -316.29, -316.29, -190.21, -190.21, -190.21, -28.7, 133.16, 133.16, 6.36, 93.25, 28.73, -21.2, -65.24, -65.24, -65.24, -65.24, -65.24, -32.92, -32.92, -101.83, -101.83, -101.83, -206.73, -206.73, -206.73, -58.91, 91.52, 91.52, 91.52, 91.52, 91.52, 189.9, 189.9, 285.88, 285.88, 285.88, 285.88, 191.47, 276.39], "profit_aud": 276.39}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -104.12, -196.09, -275.02, -372.96, -421.08, -421.08, -421.08, -421.08, -272.61, -121.71, 39.8, 201.67, 201.67, 201.67, 201.67, 201.67, 151.74, 107.7, 107.7, 107.7, 107.7, 107.7, 107.7, 40.93, -27.99, -27.99, -27.99, -74.56, -74.56, -74.56, -74.56, 75.87, 205.68, 325.92, 426.36, 426.36, 426.36, 426.36, 426.36, 426.36, 426.36, 426.36, 426.36, 426.36], "profit_aud": 426.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -40.83, -119.76, -217.7, -326.07, -430.86, -430.86, -430.86, -430.86, -279.96, -118.45, 43.41, 198.8, 198.8, 198.8, 198.8, 198.8, 198.8, 179.22, 179.22, 118.76, 53.83, -10.81, -10.81, -79.73, -79.73, -79.73, -79.73, -79.73, -79.73, 68.09, 218.52, 348.33, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56, 468.56], "profit_aud": 468.56}}} \ No newline at end of file diff --git a/results/daily/2026-05-12.json b/results/daily/2026-05-12.json new file mode 100644 index 0000000..ffc3ef0 --- /dev/null +++ b/results/daily/2026-05-12.json @@ -0,0 +1 @@ +{"date": "2026-05-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [76.12, 76.88, 74.15, 76.44, 80.12, 76.44, 80.04, 83.4, 95.36, 98.43, 103.99, 107.82, 104.61, 102.04, 116.84, 120.01, 126.26, 92.8, 100.19, 85.16, 141.58, 190.58, 180.03, 152.95, 163.76, 141.72, 138.4, 135.28, 134.93, 118.56, 137.92, 142.99, 133.24, 110.96, 107.96, 110.76, 107.83, 95.84, 74.98, 71.42, 76.38, 75.02, 69.05, 69.12, 71.37, 67.98, 70.42, 70.31], "forecast_price": {"naive": [102.15, 90.59, 80.33, 84.94, 83.3, 73.57, 63.14, 78.35, 86.7, 83.83, 94.22, 100.86, 118.78, 120.72, 129.21, 129.49, 124.31, 101.44, 77.24, 51.62, 39.94, 35.24, 35.28, 40.17, 48.37, 51.94, 51.72, 53.41, 55.13, 58.55, 62.99, 83.91, 101.01, 112.86, 118.26, 120.34, 103.85, 96.19, 80.35, 85.83, 78.7, 77.42, 76.78, 74.55, 74.9, 70.64, 75.52, 75.49], "lightgbm": [87.44, 82.74, 76.26, 70.48, 67.82, 63.38, 60.17, 66.24, 67.24, 70.69, 84.31, 91.43, 107.4, 113.06, 112.45, 115.76, 109.59, 100.12, 88.95, 69.8, 55.05, 48.76, 46.57, 44.88, 51.31, 55.92, 55.95, 56.55, 59.89, 62.97, 69.49, 86.43, 96.47, 110.68, 123.58, 129.89, 118.36, 117.35, 104.92, 104.39, 98.18, 91.99, 89.05, 80.54, 79.64, 77.45, 79.5, 79.64], "lstm": [58.89, 56.45, 56.75, 51.07, 44.38, 43.45, 39.25, 39.39, 41.68, 40.48, 45.1, 56.0, 70.9, 85.07, 93.58, 103.48, 90.14, 73.6, 72.5, 56.3, 50.37, 39.55, 35.34, 36.12, 36.39, 31.89, 34.83, 38.34, 42.75, 50.31, 59.26, 70.08, 83.23, 109.04, 132.24, 167.89, 143.59, 121.86, 102.03, 102.63, 94.17, 88.53, 91.8, 76.88, 74.99, 69.92, 69.13, 70.75]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-95.15, -137.82, -230.5, -326.05, -326.05, -421.6, -421.6, -421.6, -421.6, -421.6, -421.6, -421.6, -421.6, -421.6, -319.37, -169.35, -11.52, -127.53, -252.77, -359.22, -359.22, -121.0, 104.05, 295.23, 499.93, 499.93, 499.93, 499.93, 499.93, 351.73, 351.73, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6, 512.6], "profit_aud": 512.6}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -92.68, -92.68, -137.15, -232.7, -332.75, -437.0, -437.0, -437.0, -437.0, -437.0, -437.0, -309.45, -163.41, -13.39, 144.44, 144.44, 144.44, 144.44, -32.53, -270.76, -495.8, -686.98, -777.87, -777.87, -777.87, -777.87, -777.87, -777.87, -777.87, -777.87, -777.87, -639.16, -504.21, -365.76, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98, -230.98], "profit_aud": -230.98}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -44.47, -140.02, -240.07, -344.32, -463.52, -463.52, -463.52, -463.52, -463.52, -335.97, -189.92, -39.9, 117.93, 117.93, 117.93, 117.93, 39.35, -198.87, -423.92, -615.1, -819.8, -819.8, -819.8, -819.8, -819.8, -819.8, -819.8, -819.8, -819.8, -819.8, -684.84, -546.4, -411.62, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82, -291.82], "profit_aud": -291.82}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -42.42, -142.47, -246.72, -365.92, -488.96, -488.96, -488.96, -488.96, -361.41, -215.36, -65.35, 92.48, 92.48, 92.48, 92.48, 92.48, 92.48, -132.56, -323.74, -414.63, -591.77, -764.77, -764.77, -764.77, -764.77, -764.77, -764.77, -764.77, -764.77, -629.82, -491.37, -356.59, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79, -236.79], "profit_aud": -236.79}}} \ No newline at end of file diff --git a/results/daily/2026-05-13.json b/results/daily/2026-05-13.json new file mode 100644 index 0000000..0896757 --- /dev/null +++ b/results/daily/2026-05-13.json @@ -0,0 +1 @@ +{"date": "2026-05-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.23, 69.82, 70.01, 68.67, 67.57, 61.0, 57.35, 62.42, 62.83, 67.28, 69.06, 76.55, 78.58, 93.32, 105.46, 115.51, 139.54, 136.2, 126.23, 131.99, 77.87, 36.04, 50.82, 45.31, 31.21, 27.58, 51.81, 50.61, 63.89, 97.16, 76.91, 90.84, 92.35, 94.59, 89.35, 92.14, 89.69, 84.91, 83.06, 79.11, 70.48, 73.1, 79.0, 72.05, 60.12, 56.86, 52.19, 50.22], "forecast_price": {"naive": [76.12, 76.88, 74.15, 76.44, 80.12, 76.44, 80.04, 83.4, 95.36, 98.43, 103.99, 107.82, 104.61, 102.04, 116.84, 120.01, 126.26, 92.8, 100.19, 85.16, 141.58, 190.58, 180.03, 152.95, 163.76, 141.72, 138.4, 135.28, 134.93, 118.56, 137.92, 142.99, 133.24, 110.96, 107.96, 110.76, 107.83, 95.84, 74.98, 71.42, 76.38, 75.02, 69.05, 69.12, 71.37, 67.98, 70.42, 70.31], "lightgbm": [88.79, 92.06, 86.54, 79.17, 80.44, 76.19, 77.26, 81.47, 85.66, 87.87, 97.02, 103.39, 108.07, 115.38, 121.71, 119.25, 119.0, 103.04, 98.65, 75.33, 76.17, 77.12, 70.62, 63.47, 61.94, 68.69, 63.93, 63.26, 64.69, 63.57, 76.57, 92.46, 98.03, 88.44, 100.27, 110.93, 111.52, 106.04, 88.05, 82.76, 83.3, 79.68, 74.04, 69.97, 74.77, 73.8, 74.66, 75.17], "lstm": [62.6, 61.83, 60.65, 56.49, 52.69, 47.8, 47.96, 49.44, 52.69, 47.95, 54.31, 64.79, 70.97, 82.66, 84.93, 96.74, 92.64, 79.25, 75.68, 65.01, 59.79, 56.04, 54.86, 59.86, 53.44, 49.77, 54.18, 57.59, 52.06, 61.61, 62.63, 66.04, 76.66, 89.58, 103.13, 126.15, 107.73, 107.96, 87.8, 93.03, 83.83, 77.93, 76.0, 71.08, 69.05, 59.6, 65.08, 72.56]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -76.25, -147.94, -225.96, -304.5, -341.84, -341.84, -341.84, -341.84, -341.84, -341.84, -341.84, -167.42, 2.83, 160.62, 325.6, 325.6, 280.56, 280.56, 223.92, 184.91, 150.43, 150.43, 122.34, 122.34, 243.79, 147.65, 249.84, 365.27, 483.51, 483.51, 598.69, 598.69, 598.69, 598.69, 598.69, 510.59, 510.59, 599.46, 599.46, 599.46, 599.46, 599.46, 599.46], "profit_aud": 599.46}, "naive": {"charge_mw": [2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-89.04, -127.78, -215.29, -301.13, -301.13, -377.38, -377.38, -377.38, -377.38, -377.38, -377.38, -377.38, -377.38, -377.38, -285.1, -140.72, 33.7, -136.55, -294.33, -459.32, -459.32, -414.27, -350.75, -294.11, -255.1, -255.1, -255.1, -255.1, -255.1, -376.55, -376.55, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36, -274.36], "profit_aud": -274.36}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -85.84, -170.3, -246.55, -318.24, -352.88, -352.88, -352.88, -352.88, -352.88, -352.88, -236.22, -104.4, 39.99, 214.41, 214.41, 214.41, 214.41, 214.41, 214.41, 214.41, 157.77, 118.76, 118.76, 90.0, 26.74, 26.74, -94.71, -94.71, -94.71, -94.71, -94.71, 16.98, 132.16, 244.27, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41, 350.41], "profit_aud": 350.41}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -76.25, -147.94, -225.96, -260.83, -344.93, -344.93, -344.93, -344.93, -228.28, -96.45, 47.93, 222.35, 222.35, 222.35, 222.35, 222.35, 222.35, 194.15, 194.15, 155.14, 120.66, 55.9, 55.9, -23.97, -23.97, -23.97, -23.97, -23.97, -23.97, 87.72, 202.9, 315.01, 421.15, 421.15, 421.15, 421.15, 421.15, 421.15, 421.15, 421.15, 350.08, 342.77, 405.55], "profit_aud": 405.55}}} \ No newline at end of file diff --git a/results/daily/2026-05-14.json b/results/daily/2026-05-14.json new file mode 100644 index 0000000..865a427 --- /dev/null +++ b/results/daily/2026-05-14.json @@ -0,0 +1 @@ +{"date": "2026-05-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [50.48, 57.2, 58.62, 60.2, 57.42, 56.86, 55.72, 56.3, 58.22, 61.4, 64.24, 68.19, 75.34, 97.18, 165.94, 117.78, 34.98, 24.97, 31.22, 21.51, 19.43, 22.72, 32.69, 36.7, 44.13, 52.05, 58.54, 74.19, 67.57, 79.17, 89.2, 99.5, 109.05, 122.7, 125.27, 140.57, 125.7, 143.02, 134.68, 114.6, 100.89, 109.84, 101.19, 79.68, 80.02, 68.45, 57.22, 54.54], "forecast_price": {"naive": [71.23, 69.82, 70.01, 68.67, 67.57, 61.0, 57.35, 62.42, 62.83, 67.28, 69.06, 76.55, 78.58, 93.32, 105.46, 115.51, 139.54, 136.2, 126.23, 131.99, 77.87, 36.04, 50.82, 45.31, 31.21, 27.58, 51.81, 50.61, 63.89, 97.16, 76.91, 90.84, 92.35, 94.59, 89.35, 92.14, 89.69, 84.91, 83.06, 79.11, 70.48, 73.1, 79.0, 72.05, 60.12, 56.86, 52.19, 50.22], "lightgbm": [64.83, 63.27, 59.74, 53.78, 51.15, 46.59, 44.63, 48.75, 48.36, 50.83, 56.5, 66.53, 74.0, 87.56, 92.41, 93.84, 91.1, 88.68, 70.83, 65.67, 51.02, 36.97, 38.93, 32.65, 31.58, 27.05, 37.91, 36.77, 43.45, 57.5, 51.67, 66.03, 77.49, 85.94, 88.14, 93.04, 92.54, 91.44, 90.53, 84.86, 74.85, 71.08, 74.1, 63.56, 56.48, 54.06, 52.08, 52.54], "lstm": [49.77, 48.99, 47.89, 43.24, 39.04, 41.14, 36.2, 35.4, 39.5, 36.6, 42.58, 48.31, 62.02, 75.55, 78.74, 91.23, 83.87, 71.72, 73.93, 59.87, 60.13, 50.84, 51.38, 50.88, 47.05, 43.39, 45.42, 55.09, 49.19, 55.57, 60.44, 65.17, 78.31, 94.08, 97.01, 126.55, 105.08, 97.58, 83.26, 86.8, 81.5, 74.55, 72.59, 68.07, 62.7, 57.16, 66.18, 65.9]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.62, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-63.1, -94.85, -94.85, -94.85, -94.85, -165.91, -235.56, -305.93, -305.93, -305.93, -305.93, -305.93, -211.75, -90.27, 117.15, 264.38, 264.38, 233.16, 215.83, 188.94, 164.66, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 136.26, 311.97, 469.1, 647.88, 816.23, 816.23, 816.23, 816.23, 816.23, 816.23, 816.23, 816.23, 816.23, 816.23], "profit_aud": 816.23}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -71.07, -140.71, -211.08, -283.86, -317.94, -317.94, -317.94, -317.94, -317.94, -317.94, -317.94, -274.21, -243.0, -203.97, -177.08, -177.08, -205.48, -205.48, -251.35, -306.52, -371.58, -371.58, -412.76, -412.76, -313.79, -425.29, -313.36, -177.05, -23.68, -23.68, 152.04, 152.04, 152.04, 152.04, 152.04, 25.92, 25.92, 139.77, 139.77, 139.77, 139.77, 139.77, 139.77], "profit_aud": 139.77}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -71.07, -140.71, -211.08, -283.86, -317.94, -317.94, -317.94, -317.94, -317.94, -110.51, 36.71, 80.43, 111.65, 111.65, 111.65, 111.65, 99.04, 99.04, 53.16, -2.0, -67.06, -67.06, -159.8, -159.8, -70.73, -182.23, -182.23, -182.23, -182.23, -182.23, -6.52, 150.61, 329.38, 497.73, 497.73, 497.73, 497.73, 497.73, 497.73, 497.73, 497.73, 497.73, 497.73], "profit_aud": 497.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -71.78, -71.78, -141.43, -211.8, -244.11, -320.86, -320.86, -320.86, -320.86, -199.39, 8.04, 155.26, 198.99, 198.99, 198.99, 198.99, 198.99, 186.38, 186.38, 186.38, 131.21, 66.15, -7.03, -7.03, -91.49, -91.49, -91.49, -91.49, -91.49, -91.49, 65.1, 240.82, 397.95, 576.72, 576.72, 576.72, 576.72, 576.72, 576.72, 576.72, 576.72, 491.16, 555.53, 555.53], "profit_aud": 555.53}}} \ No newline at end of file diff --git a/results/daily/2026-05-15.json b/results/daily/2026-05-15.json new file mode 100644 index 0000000..b778a69 --- /dev/null +++ b/results/daily/2026-05-15.json @@ -0,0 +1 @@ +{"date": "2026-05-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [37.18, 30.44, 34.89, 24.97, 22.82, 25.94, 20.5, 18.79, 23.45, 23.33, 23.6, 30.28, 49.97, 58.99, 74.21, 37.06, 27.22, 21.0, 41.01, 51.13, 36.38, 5.08, 4.48, 18.89, 82.35, 84.5, 19.86, -2.07, -0.67, -0.38, 10.83, 35.7, 72.67, 74.25, 66.6, 64.25, 59.35, 60.78, 63.54, 63.29, 65.44, 66.26, 66.5, 68.0, 62.52, 59.97, 57.73, 46.16], "forecast_price": {"naive": [50.48, 57.2, 58.62, 60.2, 57.42, 56.86, 55.72, 56.3, 58.22, 61.4, 64.24, 68.19, 75.34, 97.18, 165.94, 117.78, 34.98, 24.97, 31.22, 21.51, 19.43, 22.72, 32.69, 36.7, 44.13, 52.05, 58.54, 74.19, 67.57, 79.17, 89.2, 99.5, 109.05, 122.7, 125.27, 140.57, 125.7, 143.02, 134.68, 114.6, 100.89, 109.84, 101.19, 79.68, 80.02, 68.45, 57.22, 54.54], "lightgbm": [80.22, 78.34, 79.19, 71.42, 66.07, 61.7, 58.07, 61.75, 62.69, 68.89, 79.29, 78.87, 89.47, 113.52, 119.56, 110.92, 66.67, 52.53, 58.6, 48.15, 47.7, 39.44, 44.16, 44.06, 43.04, 49.64, 57.6, 60.72, 65.88, 72.13, 80.33, 91.58, 99.53, 125.48, 141.41, 156.4, 142.8, 150.89, 147.9, 133.04, 118.89, 117.25, 109.08, 90.59, 87.99, 81.93, 76.73, 74.97], "lstm": [53.79, 52.89, 48.97, 47.0, 41.51, 42.43, 40.35, 39.55, 41.77, 40.07, 43.68, 53.62, 68.45, 79.59, 80.0, 93.81, 83.82, 72.06, 68.73, 61.04, 56.47, 52.61, 45.0, 47.62, 46.13, 41.25, 46.02, 53.05, 50.45, 55.31, 61.85, 67.74, 79.85, 92.84, 101.31, 125.32, 103.41, 100.12, 86.67, 88.94, 80.86, 78.01, 76.84, 68.76, 73.62, 67.9, 70.2, 71.4]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.67, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.0, 1.75, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.38, 2.38, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -38.04, 1.21, 1.21, -27.31, -27.31, -52.93, -76.42, -89.43, -118.59, -118.59, -118.59, -56.13, 17.61, 110.38, 147.43, 113.41, 87.16, 138.42, 202.34, 202.34, 195.98, 190.38, 174.61, 277.55, 383.17, 383.17, 385.76, 386.59, 387.06, 373.52, 373.52, 464.36, 557.17, 640.42, 640.42, 566.24, 566.24, 566.24, 566.24, 566.24, 566.24, 641.06, 726.06, 726.06, 726.06, 726.06, 726.06], "profit_aud": 726.06}, "naive": {"charge_mw": [2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.62, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-46.48, -63.37, -63.37, -63.37, -63.37, -95.8, -121.42, -144.91, -144.91, -144.91, -144.91, -144.91, -82.45, -8.71, 84.06, 130.38, 130.38, 104.14, 81.38, 17.46, -28.01, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, -34.36, 45.95, 120.14, 196.11, 275.54, 275.54, 275.54, 275.54, 275.54, 275.54, 275.54, 275.54, 275.54, 275.54], "profit_aud": 275.54}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -12.66, -45.09, -70.72, -94.2, -123.51, -123.51, -123.51, -123.51, -61.05, 12.69, 105.46, 151.78, 151.78, 125.54, 171.67, 171.67, 151.48, 145.13, 139.53, 115.92, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 12.98, 93.29, 167.48, 243.45, 322.88, 322.88, 322.88, 322.88, 322.88, 322.88, 322.88, 322.88, 322.88, 322.88], "profit_aud": 322.88}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -28.52, -28.52, -54.14, -77.63, -90.64, -119.8, -119.8, -119.8, -119.8, -46.06, 46.7, 93.02, 127.05, 127.05, 127.05, 127.05, 127.05, 127.05, 121.45, 110.97, 8.03, -97.59, -122.41, -122.41, -122.41, -122.41, -122.41, -122.41, -122.41, -122.41, -39.15, 41.16, 115.35, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32, 191.32], "profit_aud": 191.32}}} \ No newline at end of file diff --git a/results/daily/2026-05-16.json b/results/daily/2026-05-16.json new file mode 100644 index 0000000..e3e6334 --- /dev/null +++ b/results/daily/2026-05-16.json @@ -0,0 +1 @@ +{"date": "2026-05-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [55.29, 56.19, 38.75, 30.81, 17.62, 17.9, 18.9, 23.22, 29.42, 69.71, 60.24, 99.11, 108.78, 118.02, 91.15, 29.61, 30.65, 17.99, 15.63, 24.35, 10.3, 9.96, 23.6, 14.52, 34.34, 19.66, 4.43, 0.01, 13.16, 12.45, 0.49, 48.95, 83.65, 114.34, 113.56, 110.39, 115.5, 114.24, 116.64, 121.19, 129.98, 143.06, 148.55, 131.78, 138.83, 137.13, 160.86, 140.86], "forecast_price": {"naive": [37.18, 30.44, 34.89, 24.97, 22.82, 25.94, 20.5, 18.79, 23.45, 23.33, 23.6, 30.28, 49.97, 58.99, 74.21, 37.06, 27.22, 21.0, 41.01, 51.13, 36.38, 5.08, 4.48, 18.89, 82.35, 84.5, 19.86, -2.07, -0.67, -0.38, 10.83, 35.7, 72.67, 74.25, 66.6, 64.25, 59.35, 60.78, 63.54, 63.29, 65.44, 66.26, 66.5, 68.0, 62.52, 59.97, 57.73, 46.16], "lightgbm": [47.78, 42.85, 41.5, 37.75, 34.83, 34.34, 33.71, 33.49, 33.49, 37.48, 39.76, 40.77, 54.35, 59.73, 61.53, 47.21, 41.16, 35.0, 37.31, 42.62, 33.06, 24.26, 25.6, 27.38, 46.85, 47.13, 26.83, 27.57, 28.7, 31.57, 30.39, 42.35, 66.13, 76.78, 72.57, 78.64, 75.84, 76.06, 79.52, 77.5, 75.91, 72.35, 71.05, 69.97, 66.57, 66.0, 62.27, 57.71], "lstm": [45.05, 41.6, 38.99, 40.27, 31.82, 27.91, 30.69, 26.8, 27.45, 25.28, 30.14, 34.64, 41.04, 46.52, 51.07, 49.81, 45.69, 36.16, 33.93, 27.57, 24.87, 20.49, 15.39, 13.97, 15.71, 12.6, 16.61, 20.98, 23.29, 28.69, 33.92, 39.59, 51.95, 60.34, 75.78, 98.36, 88.9, 76.74, 69.0, 66.64, 68.05, 63.01, 61.8, 52.68, 56.58, 48.15, 55.48, 54.61]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 0.88, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -22.02, -44.39, -68.01, -97.04, -113.37, -34.95, -110.25, 13.64, 149.62, 297.14, 411.09, 411.09, 411.09, 408.57, 389.03, 419.47, 406.59, 394.14, 423.64, 405.49, 448.41, 465.61, 460.07, 460.06, 452.76, 437.19, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 436.57, 615.39, 801.07, 801.07, 801.07, 801.07, 1002.15, 1178.22], "profit_aud": 1178.22}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.67, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.0, 1.75, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.38, 2.38, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -70.23, -26.64, -26.64, -48.66, -48.66, -72.28, -101.31, -117.64, -204.77, -204.77, -204.77, -68.79, 78.73, 192.68, 222.29, 183.97, 161.49, 181.02, 211.47, 211.47, 199.01, 169.51, 157.39, 200.31, 224.88, 224.88, 224.86, 208.42, 192.85, 192.23, 192.23, 296.79, 439.72, 581.67, 581.67, 437.29, 437.29, 437.29, 437.29, 437.29, 437.29, 604.41, 769.14, 769.14, 769.14, 769.14, 769.14], "profit_aud": 769.14}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.67, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 3.12, 4.25, 4.25, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -9.78, -32.15, -55.77, -84.8, -121.58, -121.58, -121.58, -121.58, 14.4, 161.93, 275.87, 312.88, 312.88, 290.4, 288.21, 318.65, 318.65, 306.2, 276.7, 258.55, 301.47, 326.04, 320.5, 320.49, 304.04, 304.04, 303.63, 303.63, 303.63, 446.56, 446.56, 584.54, 584.54, 584.54, 730.34, 881.82, 881.82, 881.82, 881.82, 881.82, 881.82, 881.82, 881.82, 881.82], "profit_aud": 881.82}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -22.37, -22.37, -51.4, -88.18, -175.31, -208.74, -208.74, -208.74, -61.22, 52.73, 89.74, 128.06, 128.06, 128.06, 128.06, 128.06, 128.06, 98.56, 80.41, 37.49, 12.92, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 10.46, 152.4, 290.39, 434.76, 577.56, 577.56, 577.56, 577.56, 577.56, 577.56, 577.56, 577.56, 406.14, 587.11, 587.11], "profit_aud": 587.11}}} \ No newline at end of file diff --git a/results/daily/2026-05-17.json b/results/daily/2026-05-17.json new file mode 100644 index 0000000..740b37b --- /dev/null +++ b/results/daily/2026-05-17.json @@ -0,0 +1 @@ +{"date": "2026-05-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [159.09, 159.7, 154.77, 162.05, 149.58, 149.85, 169.88, 166.33, 138.39, 148.17, 138.16, 141.08, 143.16, 145.27, 112.87, 115.55, 110.41, 127.72, 105.87, 107.14, 106.54, 104.74, 121.62, 111.21, 115.73, 119.3, 129.79, 118.89, 111.9, 116.34, 124.18, 137.21, 132.93, 157.26, 163.34, 180.63, 162.64, 160.11, 166.0, 150.37, 138.02, 141.97, 144.65, 132.39, 137.96, 154.79, 147.45, 142.91], "forecast_price": {"naive": [55.29, 56.19, 38.75, 30.81, 17.62, 17.9, 18.9, 23.22, 29.42, 69.71, 60.24, 99.11, 108.78, 118.02, 91.15, 29.61, 30.65, 17.99, 15.63, 24.35, 10.3, 9.96, 23.6, 14.52, 34.34, 19.66, 4.43, 0.01, 13.16, 12.45, 0.49, 48.95, 83.65, 114.34, 113.56, 110.39, 115.5, 114.24, 116.64, 121.19, 129.98, 143.06, 148.55, 131.78, 138.83, 137.13, 160.86, 140.86], "lightgbm": [71.74, 67.76, 67.1, 65.77, 63.37, 61.81, 61.81, 61.92, 61.55, 60.21, 60.75, 70.12, 72.35, 76.97, 69.84, 53.2, 54.17, 35.54, 32.67, 32.89, 25.28, 28.53, 28.31, 24.72, 26.16, 21.71, 18.31, 20.38, 29.05, 32.58, 32.57, 49.73, 65.18, 84.45, 96.55, 108.43, 111.6, 111.5, 112.41, 112.43, 109.75, 105.93, 100.14, 91.09, 93.05, 91.44, 89.04, 90.01], "lstm": [146.93, 134.3, 130.18, 137.74, 117.64, 105.99, 107.13, 95.5, 96.92, 87.27, 92.21, 96.6, 97.28, 92.52, 96.83, 86.1, 79.15, 67.1, 60.57, 49.18, 48.14, 41.25, 34.64, 30.93, 36.54, 24.21, 28.29, 33.57, 44.16, 47.81, 55.88, 66.85, 88.53, 115.84, 139.82, 173.27, 172.87, 145.23, 127.29, 122.89, 120.92, 108.97, 104.86, 88.69, 99.85, 90.06, 93.96, 99.49]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -186.98, -207.95, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, -11.41, -11.41, -149.42, 10.22, -122.11, -256.04, -389.22, -520.14, -520.14, -581.86, -581.86, -581.86, -419.63, -419.63, -559.5, -575.79, -575.79, -575.79, -575.79, -575.79, -371.62, -145.83, 57.47, 57.47, 264.97, 264.97, 264.97, 264.97, 264.97, 99.49, 80.17, 273.66, 273.66, 273.66], "profit_aud": 273.66}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 0.88, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -186.98, -374.29, -586.64, -794.55, -871.36, -704.66, -877.37, -701.02, -522.07, -340.48, -199.4, -199.4, -199.4, -217.28, -349.61, -215.68, -348.86, -479.78, -327.76, -466.77, -322.11, -217.72, -379.96, -528.57, -590.67, -736.1, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -891.33, -713.87, -533.06, -533.06, -533.06, -533.06, -348.75, -170.12], "profit_aud": -170.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -83.17, -295.52, -295.52, -468.51, -653.73, -826.43, -650.08, -471.13, -289.54, -148.46, -148.46, -148.46, -148.46, -148.46, -148.46, -281.64, -216.18, -216.18, -355.2, -355.2, -504.32, -666.55, -815.16, -815.16, -815.16, -815.16, -815.16, -815.16, -815.16, -815.16, -815.16, -611.86, -411.72, -204.22, -16.25, -16.25, -16.25, -16.25, -16.25, -16.25, -16.25, -16.25, -16.25], "profit_aud": -16.25}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -185.22, -185.22, -185.22, -24.16, -24.16, -24.16, -24.16, -24.16, -24.16, -24.16, -24.16, -24.16, -24.16, -91.66, -230.67, -230.67, -379.79, -542.03, -690.64, -690.64, -690.64, -690.64, -690.64, -690.64, -690.64, -486.47, -260.68, -57.37, 142.77, 142.77, 142.77, 142.77, 142.77, 142.77, -22.72, 132.49, 132.49, 132.49, 132.49], "profit_aud": 132.49}}} \ No newline at end of file diff --git a/results/daily/2026-05-18.json b/results/daily/2026-05-18.json new file mode 100644 index 0000000..5e44a88 --- /dev/null +++ b/results/daily/2026-05-18.json @@ -0,0 +1 @@ +{"date": "2026-05-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [171.91, 186.41, 166.88, 150.82, 155.58, 149.4, 148.01, 142.21, 151.37, 147.48, 166.14, 174.32, 193.44, 228.46, 199.47, 216.24, 210.48, 220.02, 224.35, 217.02, 189.01, 231.99, 241.28, 226.0, 213.66, 211.88, 231.05, 168.7, 155.28, 159.01, 95.09, 102.83, 109.28, 122.49, 115.97, 115.18, 104.89, 99.73, 104.57, 100.44, 98.94, 98.94, 99.31, 101.48, 97.62, 94.1, 98.7, 97.96], "forecast_price": {"naive": [159.09, 159.7, 154.77, 162.05, 149.58, 149.85, 169.88, 166.33, 138.39, 148.17, 138.16, 141.08, 143.16, 145.27, 112.87, 115.55, 110.41, 127.72, 105.87, 107.14, 106.54, 104.74, 121.62, 111.21, 115.73, 119.3, 129.79, 118.89, 111.9, 116.34, 124.18, 137.21, 132.93, 157.26, 163.34, 180.63, 162.64, 160.11, 166.0, 150.37, 138.02, 141.97, 144.65, 132.39, 137.96, 154.79, 147.45, 142.91], "lightgbm": [124.51, 122.02, 118.8, 113.63, 112.62, 105.9, 102.21, 109.95, 109.33, 119.66, 127.95, 135.68, 146.71, 154.28, 142.57, 132.37, 129.63, 125.49, 113.45, 101.78, 89.28, 84.43, 82.6, 83.27, 92.15, 92.15, 91.25, 90.91, 91.96, 94.09, 96.75, 118.98, 126.31, 159.78, 168.79, 176.98, 165.96, 167.83, 164.16, 159.91, 155.16, 145.13, 140.34, 123.25, 129.86, 128.91, 131.71, 130.58], "lstm": [151.27, 144.45, 133.49, 141.34, 132.72, 121.73, 126.17, 116.73, 118.95, 119.22, 127.3, 145.81, 160.1, 167.06, 179.84, 192.93, 175.97, 158.57, 143.63, 129.42, 109.56, 102.15, 87.78, 88.54, 84.22, 83.12, 89.9, 90.26, 88.13, 102.51, 109.42, 130.56, 141.11, 166.18, 205.2, 252.53, 217.89, 199.28, 170.84, 165.61, 162.77, 146.13, 149.73, 129.62, 136.95, 122.6, 125.53, 134.0]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 4.88, 4.88, 4.88, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -83.7, -83.7, -270.45, -455.46, -633.23, -633.23, -817.58, -817.58, -817.58, -817.58, -532.01, -781.34, -781.34, -781.34, -781.34, -556.99, -556.99, -793.25, -503.27, -201.67, 80.83, 80.83, 80.83, 369.65, 369.65, 369.65, 369.65, 250.78, 122.25, 122.25, 275.36, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33, 391.33], "profit_aud": 391.33}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -194.47, -215.39, -30.38, -30.38, -30.38, -30.38, -30.38, -30.38, -30.38, -30.38, -58.3, -58.3, -321.4, -46.38, -326.82, -598.09, -834.36, -1124.34, -1124.34, -1249.77, -1249.77, -1249.77, -960.95, -960.95, -1155.05, -1177.32, -1177.32, -1177.32, -1177.32, -1177.32, -1032.35, -888.37, -757.27, -757.27, -626.55, -626.55, -626.55, -626.55, -626.55, -753.41, -767.07, -649.44, -649.44, -649.44], "profit_aud": -649.44}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.35, -273.09, -458.1, -635.87, -825.08, -825.08, -825.08, -607.18, -365.37, -79.8, 169.54, 169.54, 169.54, 169.54, 169.54, 169.54, -66.73, -356.71, -658.31, -940.81, -940.81, -940.81, -940.81, -1034.44, -1034.44, -1034.44, -1034.44, -1034.44, -1034.44, -1034.44, -889.47, -745.5, -614.39, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73, -489.73], "profit_aud": -489.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -186.75, -268.89, -446.66, -635.87, -820.22, -820.22, -820.22, -820.22, -534.65, -285.31, -15.01, 248.09, 248.09, 248.09, 248.09, 248.09, 248.09, -53.51, -178.94, -446.01, -710.86, -710.86, -710.86, -904.96, -904.96, -904.96, -904.96, -904.96, -904.96, -760.0, -616.02, -484.91, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25, -360.25], "profit_aud": -360.25}}} \ No newline at end of file diff --git a/results/daily/2026-05-19.json b/results/daily/2026-05-19.json new file mode 100644 index 0000000..3866bea --- /dev/null +++ b/results/daily/2026-05-19.json @@ -0,0 +1 @@ +{"date": "2026-05-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [105.34, 97.48, 92.48, 91.23, 91.48, 89.24, 86.96, 81.2, 76.89, 72.25, 70.97, 71.36, 78.87, 72.23, 78.29, 83.84, 68.63, 61.39, 97.5, 60.9, 52.86, 40.29, 50.79, 42.12, 32.15, 28.27, 21.4, 12.31, 5.88, -9.72, 6.17, -0.22, 22.92, 48.77, 73.78, 76.27, 77.55, 71.1, 71.85, 70.38, 62.99, 61.61, 56.88, 63.16, 70.66, 75.03, 74.09, 66.45], "forecast_price": {"naive": [171.91, 186.41, 166.88, 150.82, 155.58, 149.4, 148.01, 142.21, 151.37, 147.48, 166.14, 174.32, 193.44, 228.46, 199.47, 216.24, 210.48, 220.02, 224.35, 217.02, 189.01, 231.99, 241.28, 226.0, 213.66, 211.88, 231.05, 168.7, 155.28, 159.01, 95.09, 102.83, 109.28, 122.49, 115.97, 115.18, 104.89, 99.73, 104.57, 100.44, 98.94, 98.94, 99.31, 101.48, 97.62, 94.1, 98.7, 97.96], "lightgbm": [158.19, 161.7, 144.81, 140.5, 137.91, 136.9, 139.42, 136.91, 136.32, 138.42, 146.68, 158.37, 175.93, 194.83, 186.19, 187.93, 187.44, 171.77, 162.53, 152.06, 138.77, 133.83, 123.47, 97.23, 96.55, 102.72, 101.82, 82.16, 88.2, 97.43, 86.7, 103.11, 113.86, 135.51, 140.59, 158.35, 141.61, 139.13, 140.26, 133.8, 130.45, 124.94, 116.72, 109.91, 107.2, 105.24, 107.64, 108.38], "lstm": [84.63, 79.34, 82.89, 79.33, 68.77, 66.83, 68.1, 66.52, 67.45, 65.39, 72.01, 81.18, 92.76, 102.65, 109.33, 124.08, 109.97, 101.49, 99.85, 77.6, 74.67, 68.62, 61.03, 60.65, 62.75, 57.21, 57.61, 61.76, 63.95, 75.92, 77.36, 91.89, 103.92, 120.54, 146.67, 177.05, 145.2, 144.4, 119.96, 123.31, 109.31, 110.77, 111.0, 96.19, 97.76, 87.1, 85.45, 93.47]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -88.71, -98.7, -98.7, -98.7, -98.7, 6.09, -3.51, -80.25, 41.62, 41.62, 41.62, -8.74, 48.4, 48.4, 48.4, 48.4, 48.4, 41.57, 34.22, 46.37, 38.66, 38.94, 38.94, 38.94, 131.17, 226.51, 323.45, 323.45, 413.26, 413.26, 334.52, 257.5, 186.4, 160.19, 248.52, 342.31, 434.92, 434.92], "profit_aud": 434.92}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 4.88, 4.88, 4.88, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -50.63, -50.63, -162.19, -270.88, -372.39, -372.39, -462.71, -462.71, -462.71, -462.71, -372.42, -470.28, -470.28, -470.28, -470.28, -372.78, -372.78, -438.86, -388.5, -325.01, -272.36, -272.36, -272.36, -245.61, -245.61, -245.61, -245.61, -253.32, -253.04, -253.04, -192.08, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3, -118.3], "profit_aud": -118.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -114.35, -225.91, -225.91, -327.41, -423.52, -463.62, -463.62, -463.62, -463.62, -373.34, -275.48, -170.68, -84.89, -84.89, -84.89, -84.89, -84.89, -84.89, -84.89, -108.26, -148.46, -148.46, -148.46, -163.84, -171.19, -171.19, -178.9, -178.9, -178.9, -178.9, -86.67, 8.67, 105.61, 105.61, 195.42, 195.42, 195.42, 195.42, 195.42, 195.42, 195.42, 195.42, 195.42, 195.42], "profit_aud": 195.42}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -111.55, -159.82, -261.32, -357.43, -447.74, -447.74, -447.74, -447.74, -357.46, -259.6, -154.8, -69.01, -69.01, -69.01, -69.01, -69.01, -69.01, -132.5, -185.15, -185.15, -220.49, -247.24, -254.07, -254.07, -254.07, -254.07, -254.07, -254.07, -254.07, -161.84, -66.5, 30.44, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32, 119.32], "profit_aud": 119.32}}} \ No newline at end of file diff --git a/results/daily/2026-05-20.json b/results/daily/2026-05-20.json new file mode 100644 index 0000000..0193f0d --- /dev/null +++ b/results/daily/2026-05-20.json @@ -0,0 +1 @@ +{"date": "2026-05-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [67.51, 63.97, 69.1, 68.95, 68.82, 58.03, 62.18, 51.05, 61.9, 56.57, 55.43, 65.05, 72.98, 85.14, 94.65, 76.65, 45.1, 76.01, 41.95, 33.27, 23.95, 11.42, 20.96, 17.04, 13.12, 12.77, 11.98, 11.19, 4.88, 10.86, 8.37, 64.08, 111.27, 112.23, 115.2, 121.02, 126.84, 131.96, 126.41, 126.12, 129.82, 130.66, 129.61, 126.12, 130.93, 122.18, 136.69, 138.73], "forecast_price": {"naive": [105.34, 97.48, 92.48, 91.23, 91.48, 89.24, 86.96, 81.2, 76.89, 72.25, 70.97, 71.36, 78.87, 72.23, 78.29, 83.84, 68.63, 61.39, 97.5, 60.9, 52.86, 40.29, 50.79, 42.12, 32.15, 28.27, 21.4, 12.31, 5.88, -9.72, 6.17, -0.22, 22.92, 48.77, 73.78, 76.27, 77.55, 71.1, 71.85, 70.38, 62.99, 61.61, 56.88, 63.16, 70.66, 75.03, 74.09, 66.45], "lightgbm": [56.33, 54.99, 49.4, 44.46, 42.55, 41.22, 41.37, 43.6, 40.59, 49.47, 59.55, 62.99, 74.67, 77.13, 82.25, 85.74, 79.66, 79.33, 74.25, 66.53, 53.36, 40.22, 40.17, 36.45, 32.46, 25.01, 31.62, 28.37, 29.55, 24.96, 35.86, 36.85, 40.44, 60.55, 80.9, 92.16, 94.74, 88.36, 87.82, 83.36, 75.96, 70.4, 65.85, 66.05, 69.84, 68.04, 67.91, 63.83], "lstm": [48.73, 48.84, 46.39, 38.52, 35.64, 32.36, 30.17, 35.79, 36.54, 33.13, 43.89, 48.75, 63.85, 79.01, 78.47, 81.92, 73.34, 61.75, 54.66, 42.95, 36.93, 31.87, 27.41, 28.7, 24.55, 22.74, 21.94, 23.3, 26.34, 33.18, 38.04, 45.53, 55.09, 73.41, 91.94, 115.64, 106.7, 102.07, 87.82, 88.89, 85.8, 80.71, 77.46, 69.8, 66.12, 60.21, 63.88, 68.36]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -72.54, -72.54, -136.35, -170.71, -241.42, -310.71, -310.71, -228.61, -122.18, -3.87, 91.94, 35.57, 130.58, 130.58, 130.58, 130.58, 116.31, 139.88, 139.88, 139.88, 139.88, 133.23, 119.24, 113.14, 99.57, 89.11, 89.11, 89.11, 89.11, 89.11, 89.11, 89.11, 254.06, 254.06, 254.06, 254.06, 254.06, 254.06, 254.06, 417.72, 417.72, 588.58, 761.99], "profit_aud": 761.99}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -69.29, -78.4, -78.4, -78.4, -78.4, 17.42, 11.1, -83.91, -31.47, -31.47, -31.47, -45.75, -22.18, -22.18, -22.18, -22.18, -22.18, -28.39, -34.49, -48.07, -58.53, -138.62, -138.62, -138.62, 5.38, 156.66, 315.21, 315.21, 473.22, 473.22, 310.95, 147.62, -14.4, -66.74, 96.92, 249.65, 420.51, 420.51], "profit_aud": 420.51}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.02, -158.56, -236.29, -264.62, -342.0, -342.0, -342.0, -342.0, -342.0, -342.0, -223.68, -127.87, -71.5, 23.52, 23.52, 23.52, 23.52, 23.52, 23.52, 23.52, 23.52, 7.56, 0.91, -13.08, -19.18, -32.75, -32.75, -32.75, -32.75, -32.75, -32.75, 118.53, 277.07, 442.02, 600.04, 600.04, 600.04, 600.04, 600.04, 600.04, 600.04, 600.04, 600.04, 600.04], "profit_aud": 600.04}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.02, -158.56, -236.29, -264.62, -264.62, -335.34, -335.34, -335.34, -335.34, -228.91, -110.6, -14.78, 41.59, 41.59, 41.59, 41.59, 41.59, 41.59, 41.59, 41.59, 25.2, 9.23, -5.75, -19.73, -22.44, -22.44, -22.44, -22.44, -22.44, -22.44, 121.56, 272.84, 431.39, 596.34, 596.34, 596.34, 596.34, 596.34, 596.34, 596.34, 596.34, 443.61, 443.61, 599.68], "profit_aud": 599.68}}} \ No newline at end of file diff --git a/results/daily/2026-05-21.json b/results/daily/2026-05-21.json new file mode 100644 index 0000000..64bd227 --- /dev/null +++ b/results/daily/2026-05-21.json @@ -0,0 +1 @@ +{"date": "2026-05-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [139.0, 142.07, 137.46, 137.73, 135.39, 127.36, 130.13, 115.94, 111.07, 108.02, 113.86, 123.71, 136.12, 138.23, 136.8, 128.23, 122.2, 108.59, 100.04, 90.79, 81.76, 70.09, 75.41, 72.61, 77.63, 102.35, 114.08, 135.92, 134.86, 119.92, 116.8, 134.71, 152.42, 150.5, 152.84, 138.69, 128.4, 119.12, 109.94, 106.03, 108.58, 102.85, 102.2, 98.79, 100.87, 99.42, 96.49, 92.84], "forecast_price": {"naive": [67.51, 63.97, 69.1, 68.95, 68.82, 58.03, 62.18, 51.05, 61.9, 56.57, 55.43, 65.05, 72.98, 85.14, 94.65, 76.65, 45.1, 76.01, 41.95, 33.27, 23.95, 11.42, 20.96, 17.04, 13.12, 12.77, 11.98, 11.19, 4.88, 10.86, 8.37, 64.08, 111.27, 112.23, 115.2, 121.02, 126.84, 131.96, 126.41, 126.12, 129.82, 130.66, 129.61, 126.12, 130.93, 122.18, 136.69, 138.73], "lightgbm": [73.57, 72.96, 68.7, 65.66, 62.37, 58.42, 60.36, 56.67, 61.13, 62.18, 66.94, 74.0, 82.05, 100.61, 103.6, 95.24, 64.56, 67.23, 52.7, 41.91, 33.43, 31.43, 35.5, 32.77, 32.62, 36.41, 35.6, 35.88, 36.03, 40.8, 43.17, 68.24, 80.96, 93.2, 112.58, 130.86, 131.84, 132.4, 128.46, 124.19, 116.8, 112.42, 101.89, 95.78, 102.64, 98.62, 106.19, 105.12], "lstm": [142.21, 128.89, 127.81, 122.71, 106.75, 108.5, 98.48, 96.78, 102.38, 97.32, 112.62, 126.42, 151.35, 164.68, 176.76, 160.65, 144.79, 122.83, 103.95, 87.24, 78.13, 67.85, 57.0, 54.72, 53.42, 46.07, 51.03, 56.45, 59.37, 64.0, 78.25, 91.45, 117.62, 148.51, 177.14, 224.0, 194.0, 173.98, 150.02, 150.03, 148.29, 138.4, 132.02, 117.95, 108.98, 107.31, 110.99, 115.06]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -48.11, -186.95, -321.98, -464.3, -464.3, -294.15, -121.36, 49.64, 49.64, 49.64, 49.64, 49.64, 49.64, 4.26, -83.35, -177.61, -268.37, -365.42, -365.42, -365.42, -195.51, -60.64, -210.55, -356.54, -356.54, -166.02, 22.1, 213.14, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51, 386.51], "profit_aud": 386.51}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -159.2, -159.2, -304.12, -365.77, -500.79, -643.11, -643.11, -489.97, -317.19, -146.19, 14.1, -138.66, -2.93, -2.93, -2.93, -2.93, -90.54, -5.71, -5.71, -5.71, -5.71, -69.02, -238.93, -407.51, -557.41, -703.41, -703.41, -703.41, -703.41, -703.41, -703.41, -703.41, -554.5, -554.5, -554.5, -554.5, -554.5, -554.5, -554.5, -428.42, -428.42, -307.81, -191.76], "profit_aud": -191.76}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -159.2, -321.86, -466.78, -605.62, -665.57, -665.57, -665.57, -495.42, -322.64, -151.64, 8.65, 8.65, 8.65, 8.65, 8.65, -93.55, -181.16, -223.01, -313.78, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -410.82, -237.45, -76.95, 71.96, 209.38, 209.38, 209.38, 209.38, 209.38, 209.38, 209.38, 209.38, 209.38, 209.38], "profit_aud": 209.38}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -75.14, -75.14, -237.8, -382.73, -521.57, -656.59, -656.59, -656.59, -486.44, -313.65, -142.66, 17.63, 17.63, 17.63, 17.63, 17.63, 17.63, 17.63, 17.63, -73.13, -170.17, -298.11, -440.71, -516.15, -516.15, -516.15, -516.15, -516.15, -516.15, -516.15, -325.11, -151.74, 8.76, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66, 157.66], "profit_aud": 157.66}}} \ No newline at end of file diff --git a/results/daily/2026-05-22.json b/results/daily/2026-05-22.json new file mode 100644 index 0000000..7295352 --- /dev/null +++ b/results/daily/2026-05-22.json @@ -0,0 +1 @@ +{"date": "2026-05-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [95.6, 96.57, 95.21, 93.44, 93.68, 89.5, 93.94, 85.8, 84.42, 82.72, 81.18, 82.36, 106.1, 118.34, 106.02, 87.05, 76.84, 54.61, 43.42, 39.11, 41.26, 41.86, 65.01, 69.79, 110.07, 156.03, 150.33, 200.04, 164.1, 174.39, 150.3, 143.34, 129.42, 140.58, 143.13, 142.3, 122.98, 110.38, 112.15, 125.46, 126.04, 102.83, 93.63, 83.66, 80.34, 58.4, 55.34, 49.24], "forecast_price": {"naive": [139.0, 142.07, 137.46, 137.73, 135.39, 127.36, 130.13, 115.94, 111.07, 108.02, 113.86, 123.71, 136.12, 138.23, 136.8, 128.23, 122.2, 108.59, 100.04, 90.79, 81.76, 70.09, 75.41, 72.61, 77.63, 102.35, 114.08, 135.92, 134.86, 119.92, 116.8, 134.71, 152.42, 150.5, 152.84, 138.69, 128.4, 119.12, 109.94, 106.03, 108.58, 102.85, 102.2, 98.79, 100.87, 99.42, 96.49, 92.84], "lightgbm": [107.06, 104.8, 101.9, 94.19, 90.85, 84.24, 89.93, 85.06, 84.72, 83.18, 91.3, 100.47, 113.62, 122.38, 131.6, 112.22, 91.6, 91.54, 82.51, 79.13, 68.67, 52.57, 51.8, 53.76, 67.67, 75.39, 59.83, 63.57, 65.27, 63.32, 69.2, 90.56, 118.27, 134.26, 143.73, 144.31, 128.35, 125.36, 116.17, 110.97, 111.75, 102.67, 97.58, 92.1, 91.16, 91.45, 90.19, 88.32], "lstm": [85.34, 79.47, 75.93, 75.99, 65.33, 66.39, 64.02, 64.5, 66.41, 63.13, 69.0, 78.33, 98.28, 107.82, 109.1, 118.35, 104.44, 92.38, 85.26, 70.55, 62.72, 62.14, 49.85, 51.13, 54.92, 47.5, 49.36, 55.68, 55.24, 61.5, 68.53, 81.23, 97.37, 112.44, 124.23, 161.58, 125.87, 125.48, 107.3, 108.25, 102.03, 102.94, 100.4, 88.92, 95.78, 85.42, 89.2, 93.27]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -35.04, -138.43, -239.91, -342.86, -210.23, -62.3, 70.23, 70.23, 70.23, 39.92, -14.36, -63.25, -114.82, -167.15, -167.15, -167.15, -167.15, 27.89, 27.89, 277.94, 483.07, 701.06, 701.06, 701.06, 701.06, 701.06, 701.06, 701.06, 701.06, 563.08, 422.89, 548.35, 705.91, 705.91, 705.91, 705.91, 705.91, 705.91, 705.91, 705.91], "profit_aud": 705.91}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -35.61, -141.14, -244.54, -346.01, -346.01, -213.38, -65.45, 67.08, 67.08, 67.08, 67.08, 67.08, 67.08, 44.18, -8.15, -89.41, -176.65, -314.24, -314.24, -314.24, -64.18, 99.92, -118.07, -305.95, -305.95, -144.18, 31.55, 210.46, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34, 388.34], "profit_aud": 388.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 1.39, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 3.25, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -111.88, -164.02, -271.26, -376.79, -480.19, -480.19, -480.19, -347.56, -199.63, -67.1, 41.71, 41.71, 41.71, 41.71, 41.71, 41.71, -10.61, -91.88, -179.12, -179.12, 15.91, -172.0, -311.03, -311.03, -529.02, -529.02, -529.02, -529.02, -353.29, -174.38, 3.5, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22, 157.22], "profit_aud": 157.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -117.1, -166.78, -284.2, -391.44, -391.44, -494.84, -494.84, -494.84, -494.84, -346.91, -214.38, -105.57, -9.52, -9.52, -9.52, -9.52, -9.52, -9.52, -90.79, -178.03, -239.12, -434.15, -622.06, -622.06, -622.06, -622.06, -622.06, -622.06, -622.06, -622.06, -443.15, -265.27, -111.56, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42, 26.42], "profit_aud": 26.42}}} \ No newline at end of file diff --git a/results/daily/2026-05-23.json b/results/daily/2026-05-23.json new file mode 100644 index 0000000..65f2f2f --- /dev/null +++ b/results/daily/2026-05-23.json @@ -0,0 +1 @@ +{"date": "2026-05-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [54.88, 53.22, 45.98, 48.38, 39.82, 36.6, 33.39, 31.18, 38.96, 35.1, 36.72, 40.0, 37.01, 29.51, 24.78, 20.44, 25.71, 35.78, 30.42, 20.55, 28.24, 28.61, 31.32, 22.2, 16.19, 16.59, 22.32, 15.43, 32.1, 56.0, 45.1, 82.46, 92.68, 93.28, 94.82, 98.1, 101.08, 92.98, 81.31, 67.48, 70.83, 69.06, 67.13, 70.97, 75.69, 75.54, 74.57, 69.81], "forecast_price": {"naive": [95.6, 96.57, 95.21, 93.44, 93.68, 89.5, 93.94, 85.8, 84.42, 82.72, 81.18, 82.36, 106.1, 118.34, 106.02, 87.05, 76.84, 54.61, 43.42, 39.11, 41.26, 41.86, 65.01, 69.79, 110.07, 156.03, 150.33, 200.04, 164.1, 174.39, 150.3, 143.34, 129.42, 140.58, 143.13, 142.3, 122.98, 110.38, 112.15, 125.46, 126.04, 102.83, 93.63, 83.66, 80.34, 58.4, 55.34, 49.24], "lightgbm": [101.2, 101.06, 95.02, 88.25, 83.66, 81.66, 80.68, 78.98, 79.23, 81.68, 82.46, 89.43, 92.88, 95.22, 91.52, 75.22, 71.62, 43.06, 32.0, 30.57, 28.27, 26.78, 38.85, 41.07, 55.59, 59.32, 56.72, 64.35, 62.51, 71.33, 75.77, 90.6, 98.36, 128.01, 137.78, 148.49, 131.76, 121.92, 125.01, 128.9, 126.3, 107.09, 98.39, 87.59, 84.32, 71.33, 71.39, 68.27], "lstm": [44.4, 47.25, 44.47, 43.3, 36.32, 33.33, 36.97, 33.42, 34.22, 28.09, 31.11, 37.72, 42.18, 47.86, 49.76, 50.04, 46.88, 37.95, 37.94, 26.21, 23.53, 21.22, 17.17, 18.23, 15.31, 19.23, 25.54, 28.64, 29.47, 34.62, 44.33, 48.47, 62.08, 73.96, 86.96, 112.65, 98.18, 87.4, 78.16, 74.07, 68.47, 68.37, 69.14, 61.42, 61.83, 55.16, 60.78, 62.27]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 2.0, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -41.74, -80.71, -41.75, -41.75, -41.75, 8.25, 8.25, 8.25, -22.73, -48.28, -80.42, -35.69, 2.33, -23.36, -23.36, -1.9, 37.24, 9.49, -10.74, -31.48, -43.87, -63.16, -63.16, -0.16, -56.53, -56.53, -56.53, 60.06, 178.59, 301.22, 427.56, 427.56, 427.56, 343.21, 343.21, 343.21, 259.3, 259.3, 353.92, 429.46, 429.46, 429.46], "profit_aud": 429.46}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -16.17, -60.04, -105.94, -155.94, -109.68, -72.79, -41.81, -41.81, -41.81, -61.67, -99.69, -125.38, -160.67, -196.43, -196.43, -196.43, -196.43, -175.69, -175.69, -156.39, -116.28, -46.27, -46.27, -46.27, -46.27, -46.27, -46.27, -46.27, -46.27, -162.5, -264.14, -196.66, -108.12, -108.12, -108.12, -108.12, -108.12, -108.12, -108.12, -108.12], "profit_aud": -108.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -15.19, -56.93, -95.9, -144.61, -144.61, -144.61, -144.61, -98.34, -61.45, -30.47, -30.47, -30.47, -30.47, -68.49, -94.18, -129.47, -165.23, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -182.61, -64.08, 58.54, 184.89, 184.89, 184.89, 269.23, 269.23, 269.23, 269.23, 269.23, 269.23, 269.23, 269.23, 269.23], "profit_aud": 269.23}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -45.76, -45.76, -84.73, -106.35, -150.22, -196.13, -196.13, -196.13, -159.24, -128.26, -102.7, -70.57, -70.57, -70.57, -70.57, -70.57, -86.45, -125.59, -153.34, -173.57, -194.31, -194.31, -194.31, -194.31, -194.31, -194.31, -194.31, -194.31, -194.31, -75.78, 46.84, 173.19, 289.41, 289.41, 289.41, 289.41, 289.41, 289.41, 289.41, 289.41, 194.98, 194.98, 273.52], "profit_aud": 273.52}}} \ No newline at end of file diff --git a/results/daily/2026-05-24.json b/results/daily/2026-05-24.json new file mode 100644 index 0000000..7245668 --- /dev/null +++ b/results/daily/2026-05-24.json @@ -0,0 +1 @@ +{"date": "2026-05-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.49, 68.86, 65.04, 62.67, 50.38, 54.48, 38.64, 56.33, 58.98, 59.56, 62.98, 60.67, 63.0, 68.72, 70.36, 61.81, 62.55, 57.06, 65.35, 61.53, 81.72, 78.48, 85.68, 93.41, 106.39, 92.28, 87.34, 115.14, 123.67, 129.71, 126.24, 119.44, 126.64, 127.46, 118.71, 127.6, 129.92, 151.18, 137.39, 129.31, 127.28, 120.91, 92.88, 79.6, 72.17, 70.73, 63.06, 74.62], "forecast_price": {"naive": [54.88, 53.22, 45.98, 48.38, 39.82, 36.6, 33.39, 31.18, 38.96, 35.1, 36.72, 40.0, 37.01, 29.51, 24.78, 20.44, 25.71, 35.78, 30.42, 20.55, 28.24, 28.61, 31.32, 22.2, 16.19, 16.59, 22.32, 15.43, 32.1, 56.0, 45.1, 82.46, 92.68, 93.28, 94.82, 98.1, 101.08, 92.98, 81.31, 67.48, 70.83, 69.06, 67.13, 70.97, 75.69, 75.54, 74.57, 69.81], "lightgbm": [59.31, 58.37, 52.58, 51.17, 45.94, 44.52, 41.93, 40.62, 44.83, 42.88, 46.96, 48.84, 51.43, 52.64, 50.35, 49.68, 50.34, 44.79, 39.87, 36.29, 36.55, 35.47, 37.35, 30.63, 29.92, 30.13, 30.13, 30.77, 35.37, 53.97, 47.54, 67.08, 70.54, 80.43, 92.23, 103.59, 103.25, 101.01, 94.07, 78.95, 81.28, 76.58, 72.71, 72.65, 74.15, 73.43, 72.73, 71.08], "lstm": [60.7, 58.58, 56.45, 56.55, 47.11, 47.1, 45.95, 39.92, 39.91, 34.82, 38.39, 38.36, 39.58, 42.45, 41.48, 41.22, 42.28, 35.96, 36.65, 27.71, 25.09, 23.67, 19.16, 19.89, 21.38, 17.83, 23.17, 28.18, 31.59, 36.76, 45.54, 50.69, 62.79, 80.05, 89.84, 123.32, 115.03, 96.44, 83.33, 79.18, 70.96, 70.83, 67.8, 59.47, 59.68, 57.14, 58.57, 61.7]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -62.97, -131.07, -179.37, -249.78, -282.52, -282.52, -282.52, -282.52, -282.52, -196.62, -108.68, -125.98, -125.98, -197.31, -197.31, -274.22, -274.22, -274.22, -274.22, -274.22, -141.23, -154.15, -263.33, -263.33, -263.33, -101.19, -101.19, -101.19, -101.19, -101.19, -101.19, -101.19, 61.21, 250.18, 421.92, 421.92, 421.92, 421.92, 421.92, 421.92, 421.92, 421.92, 343.1, 427.05], "profit_aud": 427.05}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 2.0, 2.0, 1.25, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -48.3, -118.72, -59.73, -59.73, -59.73, 16.11, 16.11, 16.11, -71.84, -149.1, -227.28, -155.95, -74.27, -151.18, -151.18, -92.31, 14.78, -101.98, -234.96, -350.31, -398.79, -542.71, -542.71, -396.79, -554.59, -554.59, -554.59, -395.26, -246.88, -87.38, 75.02, 75.02, 75.02, -86.62, -86.62, -86.62, -202.72, -202.72, -112.51, -41.78, -41.78, -41.78], "profit_aud": -41.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -68.1, -116.4, -186.81, -219.55, -294.0, -294.0, -294.0, -215.25, -129.35, -41.41, -41.41, 36.77, 36.77, 36.77, 36.77, 36.77, 36.77, 36.77, -79.98, -212.96, -328.32, -437.49, -501.39, -501.39, -355.47, -513.27, -513.27, -513.27, -513.27, -513.27, -353.77, -191.37, -2.4, 169.34, 169.34, 169.34, 169.34, 169.34, 169.34, 169.34, 169.34, 169.34, 169.34], "profit_aud": 169.34}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -74.45, -74.45, -74.45, -74.45, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, -104.23, -220.99, -353.97, -469.33, -517.8, -517.8, -517.8, -517.8, -517.8, -517.8, -517.8, -517.8, -369.41, -209.92, -47.52, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46, 141.46], "profit_aud": 141.46}}} \ No newline at end of file diff --git a/results/daily/2026-05-25.json b/results/daily/2026-05-25.json new file mode 100644 index 0000000..b67f6c4 --- /dev/null +++ b/results/daily/2026-05-25.json @@ -0,0 +1 @@ +{"date": "2026-05-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [74.38, 71.07, 66.05, 64.08, 56.68, 60.43, 63.74, 62.6, 60.66, 59.34, 63.2, 76.04, 80.81, 83.74, 93.66, 99.24, 86.74, 97.18, 93.33, 96.61, 106.9, 102.54, 102.66, 112.09, 106.16, 107.84, 106.42, 105.42, 124.77, 111.34, 111.37, 136.85, 159.7, 134.73, 137.12, 167.48, 139.98, 153.06, 133.78, 133.35, 137.82, 97.58, 135.15, 116.84, 97.53, 93.67, 88.06, 134.48], "forecast_price": {"naive": [71.49, 68.86, 65.04, 62.67, 50.38, 54.48, 38.64, 56.33, 58.98, 59.56, 62.98, 60.67, 63.0, 68.72, 70.36, 61.81, 62.55, 57.06, 65.35, 61.53, 81.72, 78.48, 85.68, 93.41, 106.39, 92.28, 87.34, 115.14, 123.67, 129.71, 126.24, 119.44, 126.64, 127.46, 118.71, 127.6, 129.92, 151.18, 137.39, 129.31, 127.28, 120.91, 92.88, 79.6, 72.17, 70.73, 63.06, 74.62], "lightgbm": [91.96, 91.94, 88.07, 82.71, 81.29, 77.65, 75.06, 77.18, 78.32, 82.81, 94.17, 94.1, 103.23, 109.18, 108.8, 108.28, 104.6, 97.13, 102.3, 95.28, 99.13, 89.89, 87.52, 86.24, 83.18, 85.83, 84.91, 80.84, 82.93, 87.02, 86.49, 101.31, 112.03, 121.39, 132.23, 136.92, 142.02, 152.37, 144.3, 125.26, 124.89, 117.06, 109.5, 95.65, 91.19, 91.07, 90.49, 90.47], "lstm": [65.33, 66.12, 61.21, 59.59, 54.9, 51.07, 53.27, 50.8, 51.45, 51.27, 55.7, 67.38, 74.1, 86.1, 91.84, 109.91, 103.33, 93.95, 93.4, 80.26, 71.54, 66.13, 63.21, 67.97, 62.98, 61.71, 66.84, 72.37, 65.68, 77.01, 76.78, 91.06, 91.27, 114.63, 122.04, 154.93, 129.8, 127.83, 107.9, 106.83, 97.8, 89.8, 89.96, 79.57, 83.58, 73.17, 82.52, 81.06]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -70.85, -146.39, -146.39, -181.14, -256.96, -331.13, -331.13, -331.13, -331.13, -331.13, -331.13, -219.48, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -327.91, -171.95, -311.12, -326.71, -326.71, -127.09, -127.09, -127.09, 82.27, 257.24, 448.56, 448.56, 448.56, 448.56, 326.58, 478.63, 478.63, 478.63, 465.51, 355.44, 523.53], "profit_aud": 523.53}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -70.85, -146.39, -226.06, -304.32, -337.98, -337.98, -337.98, -337.98, -337.98, -233.31, -116.23, -144.02, -144.02, -265.49, -265.49, -386.25, -386.25, -386.25, -386.25, -386.25, -253.55, -268.65, -401.67, -401.67, -401.67, -262.5, -262.5, -262.5, -262.5, -262.5, -262.5, -262.5, -87.53, 103.8, 271.03, 271.03, 271.03, 271.03, 271.03, 271.03, 271.03, 271.03, 160.95, 312.24], "profit_aud": 312.24}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -31.46, -107.0, -186.67, -264.92, -340.74, -340.74, -340.74, -340.74, -340.74, -236.07, -118.99, 5.05, 113.48, 113.48, 113.48, 113.48, 113.48, 113.48, 113.48, 113.48, -19.22, -79.08, -212.1, -343.88, -499.84, -499.84, -499.84, -499.84, -499.84, -499.84, -499.84, -290.48, -115.51, 75.81, 243.04, 243.04, 243.04, 243.04, 243.04, 243.04, 243.04, 243.04, 243.04, 243.04], "profit_aud": 243.04}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -75.54, -110.92, -189.17, -264.99, -339.16, -339.16, -339.16, -339.16, -339.16, -339.16, -215.11, -106.68, 14.79, 131.45, 131.45, 131.45, 74.55, -53.78, -53.78, -186.48, -321.28, -321.28, -321.28, -477.24, -477.24, -477.24, -477.24, -477.24, -477.24, -305.85, -96.49, 78.48, 269.8, 269.8, 269.8, 269.8, 269.8, 269.8, 269.8, 269.8, 152.71, 251.78, 251.78], "profit_aud": 251.78}}} \ No newline at end of file diff --git a/results/daily/2026-05-26.json b/results/daily/2026-05-26.json new file mode 100644 index 0000000..3c5b35f --- /dev/null +++ b/results/daily/2026-05-26.json @@ -0,0 +1 @@ +{"date": "2026-05-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [120.84, 130.0, 141.01, 134.96, 138.36, 144.06, 148.83, 158.44, 184.18, 196.06, 202.86, 175.21, 274.36, 243.93, 146.62, 138.2, 142.11, 133.44, 120.57, 124.36, 105.26, 84.53, 81.7, 85.09, 94.76, 117.22, 232.01, 242.45, 169.43, 140.09, 148.61, 177.94, 238.66, 178.63, 122.79, 106.62, 97.41, 84.86, 95.46, 95.86, 104.0, 103.66, 96.74, 90.11, 106.45, 92.49, 103.23, 89.43], "forecast_price": {"naive": [74.38, 71.07, 66.05, 64.08, 56.68, 60.43, 63.74, 62.6, 60.66, 59.34, 63.2, 76.04, 80.81, 83.74, 93.66, 99.24, 86.74, 97.18, 93.33, 96.61, 106.9, 102.54, 102.66, 112.09, 106.16, 107.84, 106.42, 105.42, 124.77, 111.34, 111.37, 136.85, 159.7, 134.73, 137.12, 167.48, 139.98, 153.06, 133.78, 133.35, 137.82, 97.58, 135.15, 116.84, 97.53, 93.67, 88.06, 134.48], "lightgbm": [88.65, 88.13, 80.88, 74.61, 64.29, 67.04, 68.38, 66.37, 64.15, 65.34, 74.24, 82.66, 94.66, 103.25, 105.02, 104.05, 94.1, 92.53, 97.31, 84.62, 86.31, 78.78, 81.29, 79.6, 71.56, 70.22, 70.08, 68.43, 74.2, 73.36, 77.66, 97.6, 106.37, 122.18, 134.94, 146.42, 145.37, 146.57, 140.48, 136.53, 134.06, 100.19, 120.25, 96.01, 90.79, 88.52, 83.82, 103.4], "lstm": [89.14, 87.76, 88.12, 86.03, 74.53, 69.35, 73.39, 67.45, 71.11, 68.17, 77.77, 82.62, 90.31, 98.5, 108.99, 120.07, 119.19, 101.7, 102.53, 86.77, 80.6, 76.17, 67.79, 69.66, 70.22, 65.89, 69.45, 72.84, 74.81, 82.78, 85.42, 101.81, 108.46, 129.88, 144.19, 179.74, 146.37, 146.14, 119.61, 120.63, 112.88, 107.5, 107.13, 96.98, 99.18, 84.28, 88.2, 92.19]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.12, 0.12, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-151.05, -313.55, -391.81, -560.51, -733.47, -733.47, -733.47, -733.47, -733.47, -488.39, -234.82, -234.82, 108.13, 413.04, 413.04, 413.04, 413.04, 413.04, 413.04, 413.04, 354.62, 248.95, 146.83, 40.47, -77.98, -77.98, 212.03, 515.09, 684.52, 509.41, 323.65, 546.07, 844.4, 1067.69, 1067.69, 1067.69, 1067.69, 961.61, 961.61, 961.61, 1065.61, 1065.61, 1065.61, 952.96, 1086.02, 970.41, 1086.54, 1086.54], "profit_aud": 1086.54}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.95, -353.02, -353.02, -440.96, -671.18, -916.26, -916.26, -916.26, -916.26, -916.26, -916.26, -760.78, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -938.42, -726.63, -901.74, -922.55, -922.55, -624.22, -624.22, -624.22, -490.94, -369.18, -263.1, -263.1, -263.1, -263.1, -392.67, -283.85, -283.85, -283.85, -296.79, -425.83, -314.04], "profit_aud": -314.04}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.95, -252.91, -252.91, -450.96, -681.18, -926.26, -926.26, -926.26, -926.26, -621.34, -438.06, -265.31, -265.31, -265.31, -114.6, -114.6, -114.6, -114.6, -114.6, -114.6, -233.05, -379.57, -669.58, -972.64, -972.64, -1050.39, -1050.39, -1050.39, -1050.39, -1050.39, -1050.39, -917.11, -795.35, -689.27, -569.95, -569.95, -569.95, -699.53, -590.7, -590.7, -590.7, -603.65, -732.68, -620.89], "profit_aud": -620.89}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -180.07, -262.67, -460.72, -690.94, -936.02, -936.02, -936.02, -936.02, -936.02, -752.74, -579.99, -402.36, -402.36, -251.64, -251.64, -251.64, -251.64, -353.76, -460.13, -512.72, -659.24, -949.26, -949.26, -949.26, -949.26, -949.26, -949.26, -949.26, -949.26, -795.77, -662.49, -540.72, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65, -434.65], "profit_aud": -434.65}}} \ No newline at end of file diff --git a/results/daily/2026-05-27.json b/results/daily/2026-05-27.json new file mode 100644 index 0000000..c06654b --- /dev/null +++ b/results/daily/2026-05-27.json @@ -0,0 +1 @@ +{"date": "2026-05-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [121.33, 128.25, 116.2, 132.67, 108.23, 152.65, 163.04, 163.66, 159.76, 181.23, 174.43, 173.06, 187.39, 169.33, 175.51, 193.89, 204.02, 197.12, 191.46, 176.94, 189.53, 178.85, 156.6, 171.45, 183.22, 175.43, 159.58, 162.48, 165.17, 162.85, 170.42, 176.36, 168.09, 185.01, 178.06, 182.86, 177.71, 177.03, 155.78, 149.0, 146.84, 151.81, 155.42, 160.64, 152.99, 134.68, 146.32, 132.95], "forecast_price": {"naive": [120.84, 130.0, 141.01, 134.96, 138.36, 144.06, 148.83, 158.44, 184.18, 196.06, 202.86, 175.21, 274.36, 243.93, 146.62, 138.2, 142.11, 133.44, 120.57, 124.36, 105.26, 84.53, 81.7, 85.09, 94.76, 117.22, 232.01, 242.45, 169.43, 140.09, 148.61, 177.94, 238.66, 178.63, 122.79, 106.62, 97.41, 84.86, 95.46, 95.86, 104.0, 103.66, 96.74, 90.11, 106.45, 92.49, 103.23, 89.43], "lightgbm": [112.41, 114.66, 111.89, 105.43, 100.63, 98.86, 100.25, 100.85, 102.8, 104.97, 111.65, 115.02, 133.24, 147.91, 133.2, 131.36, 123.97, 117.56, 97.4, 81.78, 65.73, 57.94, 55.71, 51.46, 54.03, 58.33, 79.15, 82.79, 66.69, 71.95, 81.12, 114.03, 139.5, 146.93, 123.01, 120.92, 120.55, 109.77, 116.51, 114.86, 113.52, 108.63, 103.18, 91.45, 96.58, 91.35, 95.94, 91.26], "lstm": [78.58, 79.06, 78.78, 73.1, 65.46, 62.63, 61.88, 60.54, 64.24, 57.58, 66.03, 74.91, 81.49, 85.71, 90.88, 110.6, 105.02, 96.08, 90.94, 78.99, 75.05, 74.85, 68.31, 72.33, 71.72, 62.63, 68.04, 72.36, 66.35, 81.49, 82.63, 81.96, 101.2, 111.16, 123.26, 143.03, 122.24, 122.54, 103.28, 109.17, 97.69, 94.78, 92.89, 85.59, 85.62, 74.15, 80.71, 87.07]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-151.66, -311.98, -457.23, -530.87, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -666.15, -423.78, -168.76, 77.64, 316.97, 316.97, 316.97, 316.97, 121.22, 121.22, 327.34, 327.34, 127.86, -75.24, -75.24, -120.84, -120.84, -120.84, -120.84, 110.43, 110.43, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01, 339.01], "profit_aud": 339.01}, "naive": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.12, 0.12, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-151.66, -311.98, -376.47, -542.31, -677.6, -677.6, -677.6, -677.6, -677.6, -451.05, -233.01, -233.01, 1.23, 212.89, 212.89, 212.89, 212.89, 212.89, 212.89, 212.89, 107.7, -115.87, -311.62, -525.92, -754.95, -754.95, -555.47, -352.37, -187.2, -390.76, -603.78, -383.34, -173.23, 58.04, 58.04, 58.04, 58.04, -163.25, -163.25, -163.25, -16.41, -16.41, -16.41, -217.21, -25.97, -194.33, -29.71, -29.71], "profit_aud": -29.71}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -135.28, -326.09, -529.9, -734.47, -823.14, -823.14, -823.14, -823.14, -588.9, -377.24, -157.85, 84.51, 84.51, 84.51, 84.51, 84.51, 84.51, -139.05, -334.8, -549.11, -778.13, -875.5, -875.5, -672.4, -878.86, -901.66, -901.66, -901.66, -691.56, -460.29, -237.71, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13, -9.13], "profit_aud": -9.13}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -190.81, -394.62, -599.19, -687.86, -914.4, -914.4, -914.4, -914.4, -914.4, -914.4, -672.04, -417.01, -170.61, 68.71, 68.71, 68.71, 68.71, -127.04, -127.04, -228.72, -448.01, -647.49, -647.49, -853.95, -853.95, -853.95, -853.95, -853.95, -853.95, -631.38, -402.8, -180.66, 40.63, 40.63, 40.63, 40.63, 40.63, 40.63, 40.63, 40.63, -127.72, -127.72, 21.85], "profit_aud": 21.85}}} \ No newline at end of file diff --git a/results/daily/2026-05-28.json b/results/daily/2026-05-28.json new file mode 100644 index 0000000..53b3c84 --- /dev/null +++ b/results/daily/2026-05-28.json @@ -0,0 +1 @@ +{"date": "2026-05-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [146.91, 140.61, 151.1, 138.02, 138.01, 138.0, 137.99, 134.37, 128.07, 131.96, 126.56, 135.62, 139.59, 146.76, 164.66, 178.17, 186.52, 172.37, 156.76, 148.63, 156.88, 143.56, 149.15, 146.05, 154.31, 148.21, 139.69, 131.86, 107.32, 123.76, 138.03, 152.86, 160.23, 174.94, 170.85, 173.72, 155.21, 161.45, 157.62, 153.47, 146.62, 154.31, 166.4, 166.67, 174.83, 161.2, 155.77, 130.6], "forecast_price": {"naive": [121.33, 128.25, 116.2, 132.67, 108.23, 152.65, 163.04, 163.66, 159.76, 181.23, 174.43, 173.06, 187.39, 169.33, 175.51, 193.89, 204.02, 197.12, 191.46, 176.94, 189.53, 178.85, 156.6, 171.45, 183.22, 175.43, 159.58, 162.48, 165.17, 162.85, 170.42, 176.36, 168.09, 185.01, 178.06, 182.86, 177.71, 177.03, 155.78, 149.0, 146.84, 151.81, 155.42, 160.64, 152.99, 134.68, 146.32, 132.95], "lightgbm": [140.1, 141.43, 133.86, 133.75, 118.99, 138.89, 137.42, 136.34, 140.55, 147.6, 155.41, 158.66, 187.25, 185.14, 168.83, 174.78, 175.04, 161.41, 149.0, 133.21, 124.17, 114.05, 99.55, 98.03, 101.61, 90.93, 89.69, 83.86, 87.75, 92.72, 113.98, 140.91, 157.53, 181.84, 184.59, 183.42, 184.34, 178.72, 170.53, 164.48, 160.04, 150.28, 143.34, 135.49, 131.87, 131.93, 130.61, 123.72], "lstm": [121.27, 111.83, 113.9, 109.08, 94.34, 99.46, 97.7, 87.55, 96.87, 87.59, 103.15, 110.98, 115.87, 117.8, 128.71, 142.74, 141.21, 128.93, 124.95, 109.55, 103.65, 100.68, 90.05, 89.19, 87.39, 79.53, 86.68, 96.73, 89.07, 98.94, 111.15, 121.76, 137.33, 149.11, 163.12, 197.01, 165.34, 164.43, 141.7, 146.82, 133.6, 130.31, 125.7, 116.98, 109.49, 102.29, 110.97, 113.02]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -167.96, -328.05, -493.0, -651.19, -726.46, -726.46, -726.46, -520.63, -297.92, -64.77, 150.69, 150.69, 150.69, 150.69, 150.69, 150.69, 150.69, 150.69, 150.69, 73.16, -91.66, -225.82, -380.52, -553.06, -553.06, -553.06, -334.38, -120.82, 96.33, 96.33, 96.33, 96.33, 96.33, -86.95, -86.95, -86.95, 100.56, 319.1, 319.1, 319.1, 319.1], "profit_aud": 319.1}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-183.64, -359.4, -548.28, -624.88, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -797.39, -574.68, -341.53, -126.07, 69.87, 69.87, 69.87, 69.87, -116.56, -116.56, 57.04, 57.04, -117.57, -282.39, -282.39, -317.05, -317.05, -317.05, -317.05, -98.37, -98.37, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78, 118.78], "profit_aud": 118.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -188.88, -361.4, -533.92, -533.92, -610.5, -778.47, -778.47, -778.47, -778.47, -778.47, -603.97, -420.53, -420.53, -197.82, 35.33, 35.33, 35.33, 35.33, 35.33, 35.33, 35.33, 35.33, 35.33, -149.92, -324.53, -489.36, -623.51, -692.2, -692.2, -692.2, -692.2, -473.53, -259.96, -42.81, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2, 151.2], "profit_aud": 151.2}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.52, -172.52, -249.1, -417.06, -577.15, -742.1, -742.1, -742.1, -742.1, -742.1, -536.27, -313.56, -80.4, 135.05, 135.05, 135.05, 135.05, 135.05, 135.05, 54.0, -138.89, -324.15, -498.76, -498.76, -632.92, -632.92, -632.92, -632.92, -632.92, -632.92, -419.35, -202.2, -8.19, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62, 193.62], "profit_aud": 193.62}}} \ No newline at end of file diff --git a/results/daily/2026-05-29.json b/results/daily/2026-05-29.json new file mode 100644 index 0000000..55ba161 --- /dev/null +++ b/results/daily/2026-05-29.json @@ -0,0 +1 @@ +{"date": "2026-05-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [135.86, 134.51, 140.99, 198.23, 230.78, 215.54, 190.29, 170.44, 149.73, 132.48, 140.45, 107.73, 106.74, 118.83, 126.94, 148.78, 195.59, 138.02, 107.9, 84.19, 82.45, 82.39, 87.01, 69.61, 70.67, 71.94, 73.4, 72.82, 72.82, 74.34, 70.62, 74.0, 90.68, 107.38, 108.39, 97.13, 82.67, 71.13, 61.42, 69.42, 64.93, 58.97, 52.39, 50.47, 60.46, 50.36, 44.6, 37.32], "forecast_price": {"naive": [146.91, 140.61, 151.1, 138.02, 138.01, 138.0, 137.99, 134.37, 128.07, 131.96, 126.56, 135.62, 139.59, 146.76, 164.66, 178.17, 186.52, 172.37, 156.76, 148.63, 156.88, 143.56, 149.15, 146.05, 154.31, 148.21, 139.69, 131.86, 107.32, 123.76, 138.03, 152.86, 160.23, 174.94, 170.85, 173.72, 155.21, 161.45, 157.62, 153.47, 146.62, 154.31, 166.4, 166.67, 174.83, 161.2, 155.77, 130.6], "lightgbm": [133.94, 131.91, 128.68, 116.81, 114.44, 115.39, 115.69, 114.27, 107.24, 113.93, 118.89, 131.96, 151.25, 154.07, 149.88, 152.89, 151.53, 140.48, 128.18, 113.12, 108.14, 100.29, 94.75, 101.56, 87.08, 87.27, 87.93, 86.67, 77.43, 89.56, 105.75, 124.16, 138.03, 155.6, 160.3, 160.24, 164.11, 162.69, 157.17, 155.47, 151.25, 142.66, 132.91, 124.47, 125.65, 121.31, 123.49, 113.23], "lstm": [122.74, 113.87, 111.8, 108.48, 94.34, 99.73, 97.31, 92.24, 95.29, 88.04, 102.08, 106.74, 120.57, 121.11, 127.64, 149.33, 141.57, 137.28, 131.27, 117.45, 103.72, 110.72, 91.23, 88.08, 95.55, 84.48, 81.71, 88.36, 90.34, 101.87, 106.96, 123.75, 143.15, 148.54, 167.01, 186.34, 152.45, 169.63, 146.94, 151.41, 137.73, 145.41, 136.85, 122.56, 130.52, 115.41, 124.29, 124.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-169.82, -337.96, -514.19, -340.74, -52.26, 217.16, 217.16, 217.16, 217.16, 217.16, 217.16, 82.5, -50.92, -199.46, -199.46, -13.48, 231.01, 351.78, 351.78, 351.78, 351.78, 351.78, 351.78, 264.77, 176.43, 86.51, 86.51, 86.51, 46.09, 46.09, -42.18, -42.18, 71.16, 205.38, 340.87, 462.28, 462.28, 462.28, 385.51, 463.6, 463.6, 463.6, 456.27, 393.19, 468.77, 468.77, 468.77, 468.77], "profit_aud": 468.77}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -213.05, -400.21, -565.82, -741.38, -801.17, -801.17, -801.17, -642.5, -456.52, -212.03, -39.51, -39.51, -39.51, -39.51, -39.51, -39.51, -39.51, -39.51, -39.51, -80.25, -171.28, -262.3, -355.23, -443.5, -443.5, -443.5, -309.28, -173.79, -52.38, -52.38, -52.38, -52.38, -52.38, -133.55, -133.55, -133.55, -76.77, -1.19, -1.19, -1.19, -1.19], "profit_aud": -1.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -288.48, -408.1, -408.1, -621.15, -808.32, -973.92, -973.92, -973.92, -840.5, -691.95, -691.95, -505.98, -261.49, -261.49, -261.49, -261.49, -261.49, -261.49, -261.49, -261.49, -349.83, -439.75, -480.49, -571.52, -662.54, -662.54, -662.54, -662.54, -662.54, -662.54, -527.05, -405.64, -302.3, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39, -213.39], "profit_aud": -213.39}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -288.48, -288.48, -394.09, -607.14, -794.3, -959.91, -959.91, -959.91, -959.91, -959.91, -959.91, -773.93, -529.44, -356.91, -222.04, -222.04, -222.04, -222.04, -222.04, -309.05, -309.05, -398.97, -490.72, -581.75, -622.17, -622.17, -622.17, -622.17, -622.17, -622.17, -486.68, -365.27, -261.93, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01, -173.01], "profit_aud": -173.01}}} \ No newline at end of file diff --git a/results/daily/2026-05-30.json b/results/daily/2026-05-30.json new file mode 100644 index 0000000..e0730ae --- /dev/null +++ b/results/daily/2026-05-30.json @@ -0,0 +1 @@ +{"date": "2026-05-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [30.19, 33.98, 30.2, 29.1, 19.61, 21.02, 20.64, 19.34, 14.76, 10.88, 10.21, 12.62, 17.94, 22.88, 31.05, 31.02, 30.45, 29.58, 24.68, 18.04, 10.1, 5.7, 4.89, 4.36, 0.8, -0.35, 4.31, 4.68, 9.2, 12.18, 11.06, 10.74, 37.03, 44.92, 43.06, 44.41, 35.19, 42.21, 42.97, 47.58, 44.64, 33.45, 35.21, 32.65, 29.45, 24.88, 31.48, 26.19], "forecast_price": {"naive": [135.86, 134.51, 140.99, 198.23, 230.78, 215.54, 190.29, 170.44, 149.73, 132.48, 140.45, 107.73, 106.74, 118.83, 126.94, 148.78, 195.59, 138.02, 107.9, 84.19, 82.45, 82.39, 87.01, 69.61, 70.67, 71.94, 73.4, 72.82, 72.82, 74.34, 70.62, 74.0, 90.68, 107.38, 108.39, 97.13, 82.67, 71.13, 61.42, 69.42, 64.93, 58.97, 52.39, 50.47, 60.46, 50.36, 44.6, 37.32], "lightgbm": [111.57, 108.79, 101.69, 98.47, 93.62, 90.82, 89.87, 89.73, 86.42, 88.66, 93.43, 82.94, 79.74, 83.87, 83.07, 90.9, 91.26, 80.52, 58.07, 36.93, 37.08, 36.64, 36.31, 25.77, 24.94, 24.83, 27.09, 26.98, 33.25, 41.8, 43.24, 59.96, 77.8, 95.73, 108.95, 108.72, 100.41, 88.34, 79.99, 82.71, 77.2, 70.52, 65.06, 61.93, 65.16, 62.45, 58.15, 59.04], "lstm": [29.22, 33.22, 29.87, 28.22, 22.65, 22.35, 23.53, 20.87, 20.13, 15.26, 20.17, 22.01, 28.12, 31.59, 34.28, 35.99, 35.43, 28.49, 29.71, 17.72, 15.92, 13.63, 14.15, 9.99, 7.34, 9.6, 13.24, 16.62, 21.3, 28.69, 34.22, 36.19, 51.39, 57.99, 72.72, 90.91, 80.61, 78.58, 74.02, 71.19, 65.52, 65.32, 64.15, 56.94, 55.3, 54.78, 53.12, 56.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 3.75, 2.62, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-37.74, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, -17.96, -31.57, -44.33, -60.11, -70.07, -70.07, -31.25, 7.52, 45.58, 82.55, 82.55, 82.55, 82.55, 82.55, 82.55, 77.1, 76.1, 76.54, 71.16, 68.56, 68.56, 82.26, 82.26, 68.83, 68.83, 124.98, 173.42, 228.93, 184.94, 184.94, 184.94, 244.42, 300.21, 300.21, 300.21, 300.21, 300.21, 269.12, 304.54, 304.54], "profit_aud": 304.54}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-37.74, -80.21, -117.96, -92.5, -67.99, -41.7, -41.7, -41.7, -41.7, -41.7, -41.7, -57.48, -79.91, -108.52, -108.52, -69.74, -31.69, -5.8, -5.8, -5.8, -5.8, -5.8, -5.8, -11.26, -12.25, -11.81, -11.81, -11.81, -16.92, -16.92, -30.75, -30.75, 15.54, 71.69, 125.51, 181.02, 181.02, 181.02, 127.31, 180.83, 180.83, 180.83, 175.9, 135.09, 171.9, 171.9, 171.9, 171.9], "profit_aud": 171.9}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -22.43, -22.43, -22.43, -22.43, 11.82, 11.82, 11.82, 11.82, 11.82, 11.82, 11.82, 6.37, 5.37, 5.81, 3.42, -2.43, -2.43, -2.43, -2.43, -2.43, -2.43, 53.72, 107.54, 163.05, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04, 207.04], "profit_aud": 207.04}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-37.74, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, -23.69, -42.14, -55.75, -68.51, -75.52, -75.52, -46.91, -8.1, 30.68, 68.73, 68.73, 68.73, 68.73, 68.73, 65.57, 65.57, 60.12, 59.12, 59.56, 54.17, 54.17, 54.17, 54.17, 54.17, 54.17, 54.17, 54.17, 54.17, 109.69, 153.68, 206.45, 260.16, 260.16, 260.16, 260.16, 260.16, 260.16, 260.16, 260.16, 260.16, 260.16], "profit_aud": 260.16}}} \ No newline at end of file diff --git a/results/daily/2026-05-31.json b/results/daily/2026-05-31.json new file mode 100644 index 0000000..48abf9d --- /dev/null +++ b/results/daily/2026-05-31.json @@ -0,0 +1 @@ +{"date": "2026-05-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [17.2, 13.99, 9.6, 13.51, 11.09, 3.74, 0.85, -0.07, 2.44, 1.39, -0.18, 4.76, 8.37, 20.37, 32.71, 32.12, 22.61, 17.47, 13.12, 5.46, 2.12, 0.62, 0.0, -1.21, -0.76, -0.78, 0.85, -0.14, 0.33, -0.05, -0.24, 43.84, 77.92, 79.52, 93.83, 99.86, 100.44, 109.18, 96.84, 87.62, 90.14, 96.62, 99.64, 72.48, 64.08, 41.42, 31.94, 28.84], "forecast_price": {"naive": [30.19, 33.98, 30.2, 29.1, 19.61, 21.02, 20.64, 19.34, 14.76, 10.88, 10.21, 12.62, 17.94, 22.88, 31.05, 31.02, 30.45, 29.58, 24.68, 18.04, 10.1, 5.7, 4.89, 4.36, 0.8, -0.35, 4.31, 4.68, 9.2, 12.18, 11.06, 10.74, 37.03, 44.92, 43.06, 44.41, 35.19, 42.21, 42.97, 47.58, 44.64, 33.45, 35.21, 32.65, 29.45, 24.88, 31.48, 26.19], "lightgbm": [30.42, 30.85, 26.26, 21.5, 15.27, 16.75, 12.61, 14.02, 14.36, 15.24, 17.49, 18.37, 22.34, 28.36, 30.16, 25.86, 27.33, 25.14, 26.44, 22.52, 24.84, 22.74, 20.23, 17.74, 15.88, 17.24, 18.13, 16.17, 16.69, 19.74, 22.25, 24.65, 33.9, 43.33, 48.05, 55.16, 51.2, 54.1, 54.13, 56.66, 52.55, 46.47, 44.1, 40.72, 40.41, 39.78, 38.12, 39.82], "lstm": [23.42, 21.47, 19.58, 17.19, 14.54, 11.71, 10.3, 8.32, 9.62, 6.98, 11.65, 13.18, 15.0, 22.64, 25.04, 26.5, 28.58, 21.48, 24.88, 13.39, 11.55, 11.77, 7.8, 6.22, 5.14, 5.68, 3.76, 9.64, 13.62, 19.35, 23.8, 27.54, 40.41, 52.74, 64.13, 85.78, 82.37, 73.8, 66.49, 64.75, 59.89, 58.33, 54.55, 46.59, 45.64, 44.23, 44.61, 44.69]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.67, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -12.0, 3.19, 3.19, 3.19, 2.13, 2.22, 0.86, -0.88, -0.66, -0.66, -0.66, 24.8, 65.69, 105.85, 134.11, 134.11, 134.11, 134.11, 134.11, 134.11, 134.11, 135.62, 136.56, 137.54, 138.6, 138.77, 139.19, 139.25, 139.55, 139.55, 139.55, 139.55, 139.55, 264.38, 389.94, 526.41, 526.41, 526.41, 526.41, 526.41, 650.96, 650.96, 650.96, 650.96, 650.96, 650.96], "profit_aud": 650.96}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 3.75, 2.62, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-21.5, -5.76, -5.76, -5.76, -5.76, -5.76, -5.76, -5.76, -8.82, -10.56, -10.34, -16.29, -20.93, -20.93, 19.96, 60.11, 88.37, 110.21, 110.21, 110.21, 110.21, 110.21, 110.21, 111.72, 112.67, 113.64, 112.58, 112.65, 112.65, 112.6, 112.6, 57.79, 57.79, 157.19, 262.75, 387.58, 262.03, 262.03, 262.03, 371.56, 484.23, 484.23, 484.23, 484.23, 484.23, 432.46, 468.4, 468.4], "profit_aud": 468.4}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -6.16, -6.16, -7.22, -7.13, -10.18, -11.93, -11.93, -11.93, -11.93, 13.53, 54.42, 54.42, 82.68, 82.68, 99.08, 99.08, 99.08, 99.08, 99.08, 99.75, 100.7, 101.67, 101.67, 101.84, 101.43, 101.43, 101.43, 101.43, 101.43, 101.43, 101.43, 226.26, 226.26, 362.74, 483.79, 593.32, 593.32, 593.32, 593.32, 593.32, 593.32, 593.32, 593.32, 593.32], "profit_aud": 593.32}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06, -0.98, -4.03, -5.77, -5.67, -5.67, -5.67, -5.67, 35.22, 75.37, 103.63, 103.63, 120.03, 120.03, 120.03, 120.03, 120.03, 121.54, 122.49, 123.46, 122.4, 122.4, 122.4, 122.4, 122.4, 122.4, 122.4, 122.4, 122.4, 247.23, 372.78, 509.26, 630.31, 630.31, 630.31, 630.31, 630.31, 630.31, 630.31, 630.31, 630.31, 630.31], "profit_aud": 630.31}}} \ No newline at end of file diff --git a/results/daily/2026-06-01.json b/results/daily/2026-06-01.json new file mode 100644 index 0000000..b9dac1f --- /dev/null +++ b/results/daily/2026-06-01.json @@ -0,0 +1 @@ +{"date": "2026-06-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [49.45, 48.25, 48.18, 38.46, 33.63, 32.99, 31.16, 31.28, 39.02, 36.17, 39.98, 44.88, 58.82, 67.53, 68.22, 56.08, 47.64, 34.15, 31.03, 26.91, 21.08, 16.23, 25.38, 22.1, 16.02, 17.24, 13.41, 3.07, 1.6, 14.64, 11.25, 19.07, 3.88, 3.0, -2.72, -5.13, -3.11, -0.2, -1.14, 4.52, 17.68, 16.44, 15.47, 3.34, 6.58, -0.07, -0.08, -0.25], "forecast_price": {"naive": [17.2, 13.99, 9.6, 13.51, 11.09, 3.74, 0.85, -0.07, 2.44, 1.39, -0.18, 4.76, 8.37, 20.37, 32.71, 32.12, 22.61, 17.47, 13.12, 5.46, 2.12, 0.62, 0.0, -1.21, -0.76, -0.78, 0.85, -0.14, 0.33, -0.05, -0.24, 43.84, 77.92, 79.52, 93.83, 99.86, 100.44, 109.18, 96.84, 87.62, 90.14, 96.62, 99.64, 72.48, 64.08, 41.42, 31.94, 28.84], "lightgbm": [48.3, 47.03, 41.17, 39.19, 33.88, 30.98, 34.26, 32.4, 30.98, 33.61, 42.78, 47.38, 56.79, 65.25, 67.62, 68.27, 62.49, 53.08, 51.88, 49.22, 45.75, 40.25, 36.39, 34.15, 35.08, 35.08, 33.97, 35.08, 33.21, 39.73, 44.51, 57.02, 79.33, 92.1, 111.48, 121.62, 120.25, 120.59, 119.28, 110.03, 110.09, 112.48, 104.61, 84.25, 79.05, 63.73, 59.25, 60.89], "lstm": [41.92, 40.69, 34.28, 30.41, 27.65, 23.78, 22.84, 20.46, 19.8, 24.79, 27.15, 38.13, 49.44, 71.27, 84.08, 100.1, 95.46, 78.88, 76.64, 62.39, 52.91, 43.44, 37.78, 34.43, 32.78, 30.33, 31.69, 32.47, 34.77, 41.59, 51.35, 61.05, 67.64, 96.3, 119.98, 164.06, 134.78, 120.31, 98.42, 97.03, 89.77, 79.87, 78.09, 66.07, 68.51, 57.84, 59.89, 62.18]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -42.04, -83.28, -122.23, -161.33, -161.33, -181.41, -181.41, -181.41, -107.88, -23.46, 61.81, 131.9, 131.9, 131.9, 131.9, 131.9, 128.95, 108.66, 140.39, 140.39, 140.39, 140.39, 140.39, 136.56, 134.55, 152.85, 149.7, 173.54, 173.54, 173.54, 176.94, 183.36, 187.25, 187.38, 188.8, 193.89, 215.99, 236.55, 255.89, 251.71, 259.93, 260.01, 260.11, 260.42], "profit_aud": 260.42}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.67, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 1.88, 3.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -60.23, -16.97, -16.97, -16.97, -55.92, -95.02, -116.68, -161.89, -211.87, -211.87, -211.87, -127.45, -42.18, 27.91, 87.46, 87.46, 87.46, 87.46, 87.46, 87.46, 66.26, 38.63, 18.6, -2.95, 13.81, 9.97, 11.97, -6.32, -20.39, -20.39, -20.39, -20.39, -20.39, -26.81, -30.7, -30.95, -30.95, -30.95, -30.95, -30.95, -11.61, -11.61, -11.61, -11.61, -11.61, -11.61], "profit_aud": -11.61}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -18.67, -59.9, -59.9, -99.01, -147.79, -193.0, -193.0, -193.0, -193.0, -108.59, -23.31, 46.78, 106.33, 106.33, 106.33, 106.33, 106.33, 106.33, 106.33, 78.69, 58.67, 49.1, 32.34, 32.34, 30.34, 30.34, 30.34, 30.34, 30.34, 30.34, 30.34, 23.92, 20.03, 19.78, 18.35, 18.35, 18.35, 18.35, 18.35, 18.35, 18.35, 18.35, 18.35, 18.35], "profit_aud": 18.35}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -41.24, -80.19, -119.29, -168.07, -188.14, -188.14, -188.14, -188.14, -188.14, -102.87, -32.78, 26.77, 69.46, 69.46, 69.46, 69.46, 69.46, 69.46, 57.19, 37.16, 15.61, -1.15, -4.99, -4.99, -4.99, -4.99, -4.99, -4.99, -4.99, -8.39, -14.81, -18.7, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95, -18.95], "profit_aud": -18.95}}} \ No newline at end of file diff --git a/results/daily/2026-06-02.json b/results/daily/2026-06-02.json new file mode 100644 index 0000000..2cdea68 --- /dev/null +++ b/results/daily/2026-06-02.json @@ -0,0 +1 @@ +{"date": "2026-06-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.09, -0.08, -0.53, -1.5, -1.56, -1.98, -2.28, -2.1, -2.01, -1.88, -1.79, -0.87, -0.08, 5.33, 18.91, 26.15, 27.6, 23.07, 11.59, 8.0, 0.02, 1.25, 4.11, -2.33, -1.4, 4.76, -1.5, 7.89, 11.99, 10.02, 11.6, 14.91, 31.97, 48.83, 58.77, 54.28, 47.2, 37.93, 37.3, 46.13, 26.55, 24.12, 22.66, 3.24, -0.01, -1.03, -0.88, -1.7], "forecast_price": {"naive": [49.45, 48.25, 48.18, 38.46, 33.63, 32.99, 31.16, 31.28, 39.02, 36.17, 39.98, 44.88, 58.82, 67.53, 68.22, 56.08, 47.64, 34.15, 31.03, 26.91, 21.08, 16.23, 25.38, 22.1, 16.02, 17.24, 13.41, 3.07, 1.6, 14.64, 11.25, 19.07, 3.88, 3.0, -2.72, -5.13, -3.11, -0.2, -1.14, 4.52, 17.68, 16.44, 15.47, 3.34, 6.58, -0.07, -0.08, -0.25], "lightgbm": [46.18, 40.78, 37.09, 31.87, 28.69, 27.24, 25.35, 24.84, 26.42, 26.87, 35.49, 41.72, 55.54, 67.5, 63.35, 61.45, 54.63, 45.14, 44.05, 37.43, 36.65, 34.76, 33.13, 32.01, 27.86, 26.95, 27.84, 25.21, 24.05, 29.61, 30.25, 33.02, 33.97, 36.87, 45.66, 55.1, 57.42, 55.36, 56.71, 56.03, 54.26, 53.32, 52.74, 48.02, 46.4, 42.57, 43.69, 41.65], "lstm": [-0.34, -1.36, -3.9, -9.27, -11.84, -13.17, -16.15, -13.88, -13.92, -8.32, -4.32, 0.61, 14.15, 28.43, 32.52, 42.52, 34.67, 25.14, 24.3, 18.63, 12.41, 4.55, 1.98, -1.34, -5.95, -4.59, -5.06, -6.6, -1.74, 5.02, 6.21, 12.51, 21.62, 34.8, 55.51, 66.43, 69.53, 59.93, 63.49, 58.85, 54.44, 54.02, 50.91, 43.65, 36.56, 33.13, 34.07, 39.97]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [0.11, 0.03, 0.1, 0.28, 0.48, 2.95, 5.8, 8.42, 10.94, 12.11, 12.33, 12.44, 12.45, 12.45, 36.09, 68.78, 103.28, 132.12, 132.12, 132.12, 132.1, 130.55, 128.26, 131.18, 132.93, 138.29, 140.16, 140.16, 153.66, 141.14, 141.14, 141.14, 141.14, 202.18, 275.64, 343.49, 402.49, 397.18, 350.55, 408.22, 408.22, 408.22, 408.22, 408.22, 408.23, 409.52, 410.61, 412.73], "profit_aud": 412.73}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 1.95, 4.42, 7.27, 9.89, 9.89, 10.93, 10.93, 10.93, 10.84, 17.51, 41.15, 73.83, 73.83, 73.83, 73.83, 73.83, 73.83, 72.27, 77.41, 77.41, 77.41, 77.41, 77.41, 67.55, 52.56, 65.08, 61.83, 80.47, 80.47, 80.47, 7.0, -60.85, -119.84, -143.55, -190.17, -138.27, -105.08, -74.94, -46.61, -50.66, -50.67, -49.38, -48.29, -46.17], "profit_aud": -46.17}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.1, 3.95, 6.57, 9.08, 11.43, 11.43, 11.43, 11.33, 18.0, 41.64, 74.33, 74.33, 74.33, 74.33, 74.33, 74.33, 74.33, 74.33, 74.33, 75.1, 69.15, 71.02, 61.16, 46.17, 46.17, 46.17, 46.17, 46.17, 46.17, 46.17, 46.17, 105.16, 152.57, 199.2, 256.87, 256.87, 256.87, 256.87, 256.87, 256.87, 256.87, 256.87, 256.87], "profit_aud": 256.87}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.01, 0.02, 0.09, 0.27, 1.25, 3.72, 6.57, 9.19, 11.71, 11.94, 12.17, 12.17, 12.17, 18.83, 42.47, 75.16, 109.66, 109.66, 109.66, 109.66, 109.66, 109.66, 109.66, 109.96, 111.7, 105.75, 107.62, 97.76, 90.26, 90.26, 90.26, 90.26, 90.26, 90.26, 90.26, 158.11, 217.11, 264.52, 311.15, 311.15, 311.15, 311.15, 311.15, 311.15, 311.15, 312.43, 312.56, 310.44], "profit_aud": 310.44}}} \ No newline at end of file diff --git a/results/daily/2026-06-03.json b/results/daily/2026-06-03.json new file mode 100644 index 0000000..39324e9 --- /dev/null +++ b/results/daily/2026-06-03.json @@ -0,0 +1 @@ +{"date": "2026-06-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.89, 0.12, -0.05, -0.09, -1.07, -1.29, -1.35, -1.77, -0.86, -1.68, -0.89, -0.09, 1.38, 22.2, 22.42, 19.12, 19.52, 14.7, 13.06, 4.35, -1.1, -1.34, -1.09, -1.45, -1.77, -1.93, -3.39, -2.23, -2.07, -2.18, -1.88, -1.47, 19.09, 51.25, 52.45, 55.22, 71.08, 54.78, 54.84, 66.26, 92.63, 110.39, 39.18, 29.93, 9.55, 1.83, 0.03, 0.0], "forecast_price": {"naive": [-0.09, -0.08, -0.53, -1.5, -1.56, -1.98, -2.28, -2.1, -2.01, -1.88, -1.79, -0.87, -0.08, 5.33, 18.91, 26.15, 27.6, 23.07, 11.59, 8.0, 0.02, 1.25, 4.11, -2.33, -1.4, 4.76, -1.5, 7.89, 11.99, 10.02, 11.6, 14.91, 31.97, 48.83, 58.77, 54.28, 47.2, 37.93, 37.3, 46.13, 26.55, 24.12, 22.66, 3.24, -0.01, -1.03, -0.88, -1.7], "lightgbm": [24.86, 23.92, 20.01, 16.1, 14.87, 13.82, 13.82, 13.82, 14.33, 16.3, 21.38, 24.45, 30.18, 35.55, 37.18, 40.28, 40.23, 35.01, 33.47, 30.17, 29.12, 24.97, 21.82, 19.16, 19.02, 18.91, 19.72, 21.51, 22.19, 25.18, 27.41, 29.77, 38.08, 51.81, 58.46, 68.16, 63.18, 59.34, 57.3, 61.65, 51.21, 49.28, 48.0, 44.73, 44.72, 44.33, 44.33, 44.74], "lstm": [1.53, 4.46, -2.25, -7.71, -10.36, -11.32, -14.23, -12.46, -11.98, -8.18, -2.5, -1.15, 14.64, 28.71, 34.81, 39.67, 36.76, 26.6, 25.79, 21.68, 15.7, 9.61, 7.92, 1.9, 0.55, 2.74, -0.09, 0.26, 3.79, 9.4, 12.21, 18.0, 23.05, 36.6, 52.83, 75.21, 67.58, 62.33, 62.64, 55.73, 51.93, 49.74, 43.16, 41.86, 35.55, 28.1, 33.16, 39.22]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [1.12, 1.25, 1.26, 1.27, 2.6, 4.21, 5.89, 8.1, 7.63, 9.73, 9.84, 9.85, 9.85, 37.61, 65.64, 89.53, 113.93, 113.93, 113.93, 113.93, 114.07, 115.74, 114.53, 114.71, 114.94, 116.14, 120.39, 123.17, 125.76, 128.49, 128.72, 128.91, 128.91, 128.91, 128.91, 128.91, 217.75, 217.75, 217.75, 300.58, 416.36, 554.35, 554.35, 554.35, 554.35, 554.35, 554.35, 554.35], "profit_aud": 554.35}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [1.12, 1.25, 1.25, 1.27, 1.4, 3.01, 4.69, 6.9, 7.97, 9.02, 9.14, 9.15, 8.97, 8.97, 37.01, 60.9, 85.3, 103.68, 103.68, 103.68, 105.05, 106.72, 107.33, 109.14, 111.35, 109.18, 113.42, 113.42, 111.09, 113.81, 113.81, 113.81, 113.81, 177.88, 243.44, 312.47, 401.31, 393.65, 325.09, 407.92, 407.92, 407.92, 407.92, 407.92, 395.98, 393.69, 393.66, 393.66], "profit_aud": 393.66}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, 0.59, 2.2, 3.89, 6.1, 7.17, 7.17, 7.17, 7.17, 7.17, 34.92, 62.95, 86.85, 111.25, 111.25, 111.25, 111.25, 111.25, 111.25, 111.25, 113.06, 115.27, 117.68, 121.93, 123.17, 123.17, 123.17, 123.17, 123.17, 123.17, 123.17, 123.17, 192.19, 281.04, 349.5, 349.5, 432.33, 432.33, 432.33, 432.33, 432.33, 432.33, 432.33, 432.33, 432.33], "profit_aud": 432.33}, "lstm": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [1.12, 1.25, 1.26, 1.27, 1.93, 3.54, 5.23, 7.44, 8.51, 8.72, 8.83, 8.84, 8.84, 36.59, 64.63, 88.52, 112.92, 112.92, 112.92, 112.92, 112.92, 112.92, 112.92, 114.73, 116.94, 118.02, 122.26, 125.05, 125.05, 125.05, 125.05, 125.05, 125.05, 125.05, 125.05, 194.07, 282.92, 351.38, 419.94, 419.94, 419.94, 419.94, 419.94, 419.94, 419.94, 417.65, 417.65, 417.65], "profit_aud": 417.65}}} \ No newline at end of file diff --git a/results/daily/2026-06-04.json b/results/daily/2026-06-04.json new file mode 100644 index 0000000..f396c47 --- /dev/null +++ b/results/daily/2026-06-04.json @@ -0,0 +1 @@ +{"date": "2026-06-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [0.85, 1.31, 0.88, 0.32, 4.54, 0.98, 7.91, 15.44, 9.77, 20.42, 3.7, 0.34, -0.1, 15.9, 13.56, 32.63, 26.87, 0.77, -2.19, -2.05, -3.17, -2.83, -2.34, -2.5, -3.37, -3.24, -2.02, -2.5, -5.34, 0.05, 2.5, 15.46, 9.76, -10.02, -3.76, 5.46, 20.05, 51.32, 49.05, 57.33, 65.06, 58.82, 42.51, 31.77, 35.08, 33.68, 27.38, 25.35], "forecast_price": {"naive": [-0.89, 0.12, -0.05, -0.09, -1.07, -1.29, -1.35, -1.77, -0.86, -1.68, -0.89, -0.09, 1.38, 22.2, 22.42, 19.12, 19.52, 14.7, 13.06, 4.35, -1.1, -1.34, -1.09, -1.45, -1.77, -1.93, -3.39, -2.23, -2.07, -2.18, -1.88, -1.47, 19.09, 51.25, 52.45, 55.22, 71.08, 54.78, 54.84, 66.26, 92.63, 110.39, 39.18, 29.93, 9.55, 1.83, 0.03, 0.0], "lightgbm": [30.09, 29.16, 24.89, 21.11, 19.87, 20.14, 20.14, 20.14, 20.14, 22.56, 25.73, 28.24, 34.04, 42.74, 42.84, 42.63, 42.2, 36.03, 36.3, 31.44, 29.96, 26.28, 23.7, 22.26, 22.39, 22.65, 22.87, 22.78, 24.22, 27.71, 30.44, 30.61, 38.75, 54.94, 60.02, 71.8, 81.34, 70.66, 69.12, 75.16, 93.4, 93.0, 56.19, 52.88, 51.69, 49.62, 49.62, 50.06], "lstm": [4.1, 5.76, 1.71, -2.23, -7.79, -7.57, -10.55, -11.91, -11.92, -3.0, 0.05, 3.11, 23.06, 36.71, 46.08, 47.57, 41.15, 30.73, 26.53, 22.51, 15.69, 8.93, 4.43, -1.2, -1.84, -0.01, -2.2, 1.26, 1.07, 4.06, 11.1, 19.56, 26.9, 40.21, 59.52, 85.2, 76.01, 64.34, 65.44, 58.47, 54.85, 51.85, 46.61, 45.5, 40.23, 29.94, 34.09, 40.19]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 3.75, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 4.25, 3.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-1.06, -2.7, -3.8, -4.2, -1.36, -2.58, -2.58, 16.72, 25.27, 50.79, 46.16, 45.74, 45.86, 65.73, 82.68, 123.47, 157.06, 157.06, 157.61, 157.61, 161.57, 165.11, 165.11, 165.11, 169.32, 173.36, 170.84, 173.34, 180.02, 180.02, 180.02, 199.33, 211.54, 224.07, 228.76, 227.24, 227.24, 291.39, 291.39, 363.05, 444.37, 517.9, 517.9, 517.9, 517.9, 517.9, 517.9, 517.9], "profit_aud": 517.9}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-1.06, 0.42, 0.31, 0.27, -5.41, -6.63, -16.52, -35.82, -30.4, -55.92, -56.39, -56.43, -56.43, -36.56, -19.61, 21.17, 54.77, 54.77, 54.77, 54.77, 55.16, 58.7, 56.11, 56.42, 56.85, 58.87, 61.39, 64.52, 71.19, 71.13, 70.82, 68.89, 68.89, 68.89, 68.89, 68.89, 93.95, 93.95, 93.95, 165.61, 246.93, 320.45, 320.45, 320.45, 320.45, 320.45, 320.45, 320.45], "profit_aud": 320.45}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -5.67, -6.89, -16.78, -36.09, -41.51, -41.51, -41.51, -41.51, -41.51, -21.64, -4.69, 36.1, 69.69, 69.69, 69.69, 69.69, 69.69, 69.69, 69.69, 72.81, 77.02, 81.07, 82.19, 85.32, 85.32, 85.32, 85.32, 85.32, 85.32, 85.32, 85.32, 85.32, 110.38, 110.38, 110.38, 182.04, 263.36, 336.89, 336.89, 336.89, 336.89, 336.89, 336.89, 336.89], "profit_aud": 336.89}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-1.06, 0.42, 0.42, 0.38, -5.3, -5.91, -15.8, -35.1, -47.31, -49.87, -49.87, -49.87, -49.87, -30.0, -13.05, 27.74, 61.33, 61.33, 61.33, 61.33, 61.33, 61.33, 61.33, 64.46, 68.67, 72.71, 75.24, 73.67, 80.34, 80.34, 80.34, 80.34, 80.34, 80.34, 80.34, 87.17, 112.22, 176.38, 237.69, 237.69, 237.69, 237.69, 237.69, 237.69, 237.69, 195.59, 191.76, 223.44], "profit_aud": 223.44}}} \ No newline at end of file diff --git a/results/daily/2026-06-05.json b/results/daily/2026-06-05.json new file mode 100644 index 0000000..55cf703 --- /dev/null +++ b/results/daily/2026-06-05.json @@ -0,0 +1 @@ +{"date": "2026-06-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [27.32, 28.78, 25.25, 27.01, 24.37, 23.7, 28.36, 37.76, 43.38, 53.11, 66.84, 72.53, 82.72, 85.15, 81.91, 90.23, 102.33, 93.44, 89.7, 98.17, 91.73, 79.5, 72.4, 63.9, 64.49, 71.35, 76.83, 75.35, 77.89, 66.65, 63.07, 73.61, 96.45, 105.15, 105.05, 114.5, 103.17, 99.74, 92.88, 88.65, 84.92, 79.24, 82.76, 86.52, 76.0, 71.14, 99.42, 88.38], "forecast_price": {"naive": [0.85, 1.31, 0.88, 0.32, 4.54, 0.98, 7.91, 15.44, 9.77, 20.42, 3.7, 0.34, -0.1, 15.9, 13.56, 32.63, 26.87, 0.77, -2.19, -2.05, -3.17, -2.83, -2.34, -2.5, -3.37, -3.24, -2.02, -2.5, -5.34, 0.05, 2.5, 15.46, 9.76, -10.02, -3.76, 5.46, 20.05, 51.32, 49.05, 57.33, 65.06, 58.82, 42.51, 31.77, 35.08, 33.68, 27.38, 25.35], "lightgbm": [20.42, 19.82, 16.16, 12.92, 10.03, 9.82, 12.23, 13.27, 12.69, 16.86, 16.4, 20.25, 25.25, 33.24, 33.28, 36.62, 37.59, 26.19, 24.97, 23.81, 22.61, 21.25, 18.46, 18.27, 18.28, 18.11, 17.98, 17.98, 14.94, 20.62, 22.79, 27.15, 27.47, 22.83, 39.05, 49.76, 52.49, 56.25, 53.3, 57.84, 64.05, 57.55, 41.94, 38.54, 38.26, 37.09, 35.31, 35.94], "lstm": [20.37, 18.52, 15.96, 12.46, 7.5, 5.93, 3.87, 3.32, 5.9, 9.99, 13.94, 19.91, 38.99, 45.36, 51.79, 52.31, 44.4, 32.31, 28.64, 24.43, 18.96, 8.71, 4.9, 1.98, 1.42, -0.76, -1.68, 2.28, 2.08, 4.75, 7.67, 17.03, 24.24, 34.79, 56.41, 77.11, 72.81, 67.61, 67.93, 61.2, 57.7, 53.2, 56.54, 48.12, 46.86, 40.61, 42.93, 42.58]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-15.16, -15.16, -46.73, -80.49, -110.96, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -140.59, -12.68, 104.12, 104.12, 226.84, 341.5, 341.5, 341.5, 261.62, 181.01, 141.41, 141.41, 141.41, 141.41, 58.1, -20.74, -20.74, -20.74, 110.69, 242.01, 385.13, 514.09, 514.09, 514.09, 514.09, 514.09, 491.9, 491.9, 491.9, 396.9, 307.98, 432.26, 542.73], "profit_aud": 542.73}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 1.75, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 3.75, 2.88, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 2.12, 2.0, 3.12, 4.25, 3.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-34.15, -70.12, -101.69, -135.45, -120.22, -149.85, -149.85, -102.65, -64.69, 1.69, -81.86, -172.52, -275.92, -169.48, -67.09, 45.7, 173.61, 173.61, 151.18, 151.18, 36.52, -62.86, -62.86, -62.86, -143.48, -232.66, -136.63, -211.98, -309.34, -309.34, -309.34, -217.32, -96.76, -228.2, -359.51, -391.57, -391.57, -266.9, -266.9, -156.08, -49.93, 49.12, 49.12, 49.12, 49.12, 49.12, 49.12, 49.12], "profit_aud": 49.12}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -14.99, -45.45, -75.09, -110.54, -110.54, -164.76, -164.76, -164.76, -164.76, -164.76, -58.32, 44.07, 156.86, 284.77, 284.77, 284.77, 284.77, 284.77, 284.77, 284.77, 249.31, 249.31, 160.12, 64.09, -30.1, -127.46, -127.46, -127.46, -127.46, -18.95, -150.39, -150.39, -150.39, -150.39, -25.71, -25.71, 85.11, 191.25, 290.31, 290.31, 290.31, 290.31, 290.31, 290.31, 290.31], "profit_aud": 290.31}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -13.53, -43.16, -78.61, -125.81, -180.03, -180.03, -180.03, -180.03, -180.03, -73.59, 28.8, 141.59, 269.5, 269.5, 269.5, 269.5, 269.5, 269.5, 269.5, 189.62, 109.0, 19.82, -76.21, -76.21, -119.44, -119.44, -119.44, -119.44, -119.44, -119.44, -119.44, 23.68, 152.64, 277.31, 393.41, 393.41, 393.41, 393.41, 393.41, 393.41, 393.41, 393.41, 393.41, 393.41], "profit_aud": 393.41}}} \ No newline at end of file diff --git a/results/daily/2026-06-06.json b/results/daily/2026-06-06.json new file mode 100644 index 0000000..f0897b0 --- /dev/null +++ b/results/daily/2026-06-06.json @@ -0,0 +1 @@ +{"date": "2026-06-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [96.63, 104.08, 105.14, 88.76, 96.39, 107.99, 79.92, 87.1, 93.53, 91.86, 102.77, 91.85, 101.18, 102.23, 105.17, 103.93, 95.42, 66.53, 46.08, 48.8, 33.97, 41.17, 37.23, 39.57, 44.69, 53.51, 47.33, 50.52, 46.14, 43.61, 38.28, 72.8, 109.05, 110.05, 112.37, 117.23, 113.51, 114.89, 113.92, 110.47, 118.04, 113.12, 117.37, 122.1, 121.91, 113.3, 109.29, 126.32], "forecast_price": {"naive": [27.32, 28.78, 25.25, 27.01, 24.37, 23.7, 28.36, 37.76, 43.38, 53.11, 66.84, 72.53, 82.72, 85.15, 81.91, 90.23, 102.33, 93.44, 89.7, 98.17, 91.73, 79.5, 72.4, 63.9, 64.49, 71.35, 76.83, 75.35, 77.89, 66.65, 63.07, 73.61, 96.45, 105.15, 105.05, 114.5, 103.17, 99.74, 92.88, 88.65, 84.92, 79.24, 82.76, 86.52, 76.0, 71.14, 99.42, 88.38], "lightgbm": [62.97, 58.05, 58.6, 53.19, 47.23, 46.72, 46.21, 39.9, 39.04, 45.2, 50.85, 52.82, 57.03, 65.57, 64.79, 65.11, 61.99, 59.52, 50.35, 48.21, 43.99, 39.3, 31.91, 30.78, 32.27, 33.19, 35.57, 33.53, 41.14, 41.69, 46.7, 52.98, 72.61, 81.62, 91.35, 108.56, 102.43, 103.13, 97.97, 93.16, 92.59, 82.64, 82.85, 78.32, 69.34, 69.2, 81.16, 82.03], "lstm": [75.85, 68.95, 67.11, 66.28, 56.2, 51.97, 52.14, 48.74, 48.31, 45.72, 48.52, 53.02, 56.81, 62.85, 64.57, 62.5, 58.1, 45.95, 41.41, 35.03, 33.34, 29.09, 23.97, 22.1, 22.23, 22.37, 21.4, 24.53, 24.06, 29.75, 34.17, 43.33, 54.24, 61.88, 83.32, 111.27, 107.48, 93.82, 82.0, 76.01, 71.63, 68.66, 67.78, 58.03, 64.8, 50.96, 59.25, 62.13]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 2.25, 3.38, 2.12, 3.25, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -110.94, -124.44, 10.54, -89.35, -198.23, -198.23, -313.05, -184.58, -299.39, -299.39, -222.72, -91.25, 38.66, 38.66, 38.66, 38.66, 38.66, -3.81, -55.27, -101.8, -151.27, -176.07, -109.18, -109.18, -58.66, -58.66, -113.17, -161.03, -161.03, -161.03, -161.03, -161.03, -161.03, -161.03, -161.03, -161.03, -161.03, -13.48, -13.48, -13.48, 139.15, 291.53, 291.53, 291.53, 449.43], "profit_aud": 449.43}, "naive": {"charge_mw": [1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.25, 1.38, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-53.63, -53.63, -185.06, -296.0, -416.49, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -551.48, -432.19, -349.04, -349.04, -288.03, -245.56, -245.56, -245.56, -295.03, -350.89, -380.59, -380.59, -380.59, -380.59, -435.11, -482.96, -482.96, -482.96, -345.4, -204.94, -58.41, 83.48, 83.48, 83.48, 83.48, 83.48, 51.81, 51.81, 51.81, -100.58, -242.21, -105.6, 52.3], "profit_aud": 52.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -59.93, -159.83, -268.7, -385.62, -500.44, -500.44, -500.44, -500.44, -372.65, -241.18, -111.27, 8.01, 8.01, 8.01, 8.01, 8.01, 8.01, -38.53, -87.99, -143.85, -210.74, -210.74, -238.78, -238.78, -238.78, -238.78, -238.78, -238.78, -238.78, -238.78, -92.25, 49.64, 193.25, 335.65, 335.65, 335.65, 335.65, 335.65, 335.65, 183.27, 41.64, 150.93, 308.82], "profit_aud": 308.82}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -59.93, -59.93, -168.81, -285.72, -400.54, -529.01, -529.01, -529.01, -401.22, -269.75, -139.84, -20.56, -20.56, -20.56, -20.56, -20.56, -20.56, -41.22, -90.69, -146.55, -213.44, -272.6, -272.6, -272.6, -272.6, -272.6, -272.6, -272.6, -272.6, -132.14, 14.39, 156.28, 299.89, 299.89, 299.89, 299.89, 299.89, 299.89, 147.27, 284.42, 142.78, 142.78, 284.89], "profit_aud": 284.89}}} \ No newline at end of file diff --git a/results/daily/2026-06-07.json b/results/daily/2026-06-07.json new file mode 100644 index 0000000..99ff633 --- /dev/null +++ b/results/daily/2026-06-07.json @@ -0,0 +1 @@ +{"date": "2026-06-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [121.05, 113.3, 111.03, 117.06, 129.7, 136.44, 167.37, 157.18, 141.86, 153.34, 142.15, 143.94, 134.98, 141.35, 150.21, 197.58, 108.05, 71.05, 48.96, 49.88, 51.8, 49.0, 52.93, 54.35, 55.76, 56.13, 66.08, 59.1, 69.7, 99.76, 100.94, 104.94, 121.44, 106.19, 107.34, 107.09, 106.27, 102.15, 98.4, 93.36, 90.38, 95.06, 91.38, 89.34, 93.09, 88.66, 91.3, 94.23], "forecast_price": {"naive": [96.63, 104.08, 105.14, 88.76, 96.39, 107.99, 79.92, 87.1, 93.53, 91.86, 102.77, 91.85, 101.18, 102.23, 105.17, 103.93, 95.42, 66.53, 46.08, 48.8, 33.97, 41.17, 37.23, 39.57, 44.69, 53.51, 47.33, 50.52, 46.14, 43.61, 38.28, 72.8, 109.05, 110.05, 112.37, 117.23, 113.51, 114.89, 113.92, 110.47, 118.04, 113.12, 117.37, 122.1, 121.91, 113.3, 109.29, 126.32], "lightgbm": [85.14, 82.78, 81.51, 72.36, 71.29, 67.31, 63.38, 64.83, 66.36, 64.4, 68.49, 68.09, 73.37, 81.27, 81.91, 80.27, 70.43, 59.64, 42.22, 44.58, 37.31, 36.4, 33.74, 33.28, 33.89, 38.44, 34.61, 37.91, 36.46, 39.09, 44.45, 63.83, 89.77, 97.11, 114.1, 119.8, 119.12, 120.43, 118.07, 110.79, 111.58, 106.92, 101.52, 94.33, 91.43, 86.26, 85.38, 97.22], "lstm": [115.31, 105.48, 105.45, 107.43, 90.82, 88.42, 82.83, 75.94, 76.22, 65.17, 71.09, 69.36, 68.98, 68.16, 70.38, 66.75, 62.67, 51.63, 48.8, 39.11, 36.3, 30.8, 27.75, 24.73, 27.0, 20.09, 20.59, 24.93, 31.37, 36.44, 43.33, 54.34, 69.06, 88.87, 115.71, 152.73, 150.64, 125.01, 107.48, 100.95, 93.49, 89.81, 85.3, 72.59, 78.18, 69.79, 70.72, 78.65]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-151.31, -292.95, -431.73, -578.05, -650.03, -650.03, -440.82, -244.34, -244.34, -52.67, -52.67, -52.67, -221.4, -221.4, -52.41, 194.56, 194.56, 194.56, 133.37, 71.01, 6.26, -54.98, -84.36, -84.36, -84.36, -84.36, -10.02, -83.89, -83.89, -83.89, -83.89, -83.89, 67.92, 67.92, 202.1, 335.96, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79, 468.79], "profit_aud": 468.79}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 2.25, 2.25, 3.38, 2.12, 3.25, 3.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -146.32, -164.48, 6.07, -203.15, -399.62, -399.62, -591.3, -413.61, -593.53, -593.53, -487.52, -299.75, -52.78, -52.78, -52.78, -52.78, -52.78, -117.53, -178.78, -244.95, -312.89, -343.83, -273.67, -273.67, -214.57, -214.57, -339.28, -465.45, -465.45, -465.45, -465.45, -465.45, -465.45, -465.45, -465.45, -465.45, -465.45, -352.48, -352.48, -352.48, -240.8, -124.44, -124.44, -124.44, -6.65], "profit_aud": -6.65}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -209.22, -405.69, -464.56, -656.24, -656.24, -656.24, -656.24, -479.55, -291.78, -44.81, -44.81, -44.81, -44.81, -44.81, -44.81, -72.01, -138.17, -206.12, -275.81, -275.81, -358.42, -358.42, -358.42, -358.42, -358.42, -358.42, -358.42, -358.42, -358.42, -224.56, -91.72, 35.97, 158.97, 158.97, 158.97, 158.97, 158.97, 158.97, 158.97, 146.55, 32.44, 150.22], "profit_aud": 150.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -67.94, -98.89, -169.05, -251.65, -325.52, -325.52, -325.52, -325.52, -325.52, -325.52, -325.52, -191.34, -57.48, 75.35, 203.04, 203.04, 203.04, 203.04, 203.04, 203.04, 203.04, 203.04, 92.21, 79.43, 197.22], "profit_aud": 197.22}}} \ No newline at end of file diff --git a/results/daily/2026-06-08.json b/results/daily/2026-06-08.json new file mode 100644 index 0000000..efc2b33 --- /dev/null +++ b/results/daily/2026-06-08.json @@ -0,0 +1 @@ +{"date": "2026-06-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [98.44, 100.64, 94.76, 73.3, 69.21, 64.5, 65.94, 57.07, 57.69, 62.65, 62.19, 64.4, 61.75, 76.5, 75.74, 56.53, 32.11, 15.24, 7.83, 11.33, 11.19, 3.9, 7.28, 5.97, 4.75, 5.36, 12.14, 17.78, 11.23, 1.32, -0.77, 7.74, 60.38, 84.35, 92.04, 86.06, 86.63, 86.23, 75.89, 64.27, 47.21, 46.2, 38.41, 36.55, 9.0, 6.75, 10.2, 6.87], "forecast_price": {"naive": [121.05, 113.3, 111.03, 117.06, 129.7, 136.44, 167.37, 157.18, 141.86, 153.34, 142.15, 143.94, 134.98, 141.35, 150.21, 197.58, 108.05, 71.05, 48.96, 49.88, 51.8, 49.0, 52.93, 54.35, 55.76, 56.13, 66.08, 59.1, 69.7, 99.76, 100.94, 104.94, 121.44, 106.19, 107.34, 107.09, 106.27, 102.15, 98.4, 93.36, 90.38, 95.06, 91.38, 89.34, 93.09, 88.66, 91.3, 94.23], "lightgbm": [87.39, 84.64, 81.24, 71.64, 66.09, 72.58, 65.86, 70.32, 68.16, 67.83, 67.2, 63.29, 59.68, 70.49, 65.72, 60.78, 45.35, 29.14, 17.24, 18.41, 15.35, 12.75, 15.74, 15.83, 16.79, 12.67, 18.51, 13.68, 23.11, 28.7, 32.58, 41.52, 45.74, 51.91, 64.29, 69.23, 69.19, 69.19, 66.78, 60.72, 54.99, 56.17, 50.24, 47.16, 49.34, 47.55, 48.2, 50.81], "lstm": [83.1, 77.2, 80.08, 76.31, 66.7, 63.87, 60.98, 56.77, 60.88, 58.75, 54.89, 66.46, 72.85, 77.25, 77.45, 81.66, 78.69, 57.06, 56.18, 47.76, 41.06, 33.13, 33.26, 31.72, 25.58, 25.21, 30.35, 34.91, 33.78, 39.39, 47.36, 61.81, 66.92, 96.97, 119.43, 146.55, 140.23, 125.52, 99.35, 86.58, 85.94, 87.9, 80.61, 70.26, 70.85, 73.14, 68.36, 74.12]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -71.33, -143.44, -143.44, -143.44, -143.44, -160.73, -65.11, 29.57, 29.57, 29.57, 29.57, 19.78, 32.52, 32.52, 27.64, 23.6, 16.14, 10.21, 3.5, 18.67, 40.89, 50.72, 49.06, 50.03, 40.35, 40.35, 40.35, 155.4, 262.98, 371.27, 479.05, 479.05, 479.05, 479.05, 479.05, 479.05, 479.05, 477.79, 469.35, 482.1, 482.1], "profit_aud": 482.1}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-123.05, -248.85, -367.31, -458.94, -497.35, -497.35, -414.92, -343.59, -343.59, -265.28, -265.28, -265.28, -342.47, -342.47, -257.26, -186.6, -186.6, -186.6, -196.39, -210.55, -224.54, -229.42, -233.46, -233.46, -233.46, -233.46, -219.81, -242.03, -242.03, -242.03, -242.03, -242.03, -166.56, -166.56, -51.51, 56.07, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36, 164.36], "profit_aud": 164.36}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.02, -86.2, 9.42, 9.42, 9.42, 9.42, 9.42, 9.42, 9.42, -4.57, -9.45, -18.55, -21.86, -21.86, -28.57, -14.92, -37.14, -37.14, -37.14, -37.14, -37.14, -37.14, -37.14, -37.14, 70.44, 178.73, 286.52, 381.38, 381.38, 381.38, 381.38, 381.38, 381.38, 381.38, 381.38, 381.38, 381.38], "profit_aud": 381.38}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -36.6, -107.93, -180.04, -258.35, -336.08, -336.08, -336.08, -240.46, -145.78, -75.12, -34.98, -34.98, -34.98, -34.98, -34.98, -37.15, -37.15, -44.61, -50.55, -57.25, -72.42, -72.42, -72.42, -72.42, -72.42, -72.42, -72.42, -72.42, 42.63, 150.21, 258.5, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28, 366.28], "profit_aud": 366.28}}} \ No newline at end of file diff --git a/results/daily/2026-06-09.json b/results/daily/2026-06-09.json new file mode 100644 index 0000000..52243bb --- /dev/null +++ b/results/daily/2026-06-09.json @@ -0,0 +1 @@ +{"date": "2026-06-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [5.7, 3.92, 3.22, 2.2, -0.0, 2.12, 1.02, 0.44, 0.29, -0.17, -0.19, 0.73, 1.82, 12.96, 10.39, 15.16, 22.78, 11.75, -1.0, -1.62, -0.63, -2.0, -2.5, -3.0, -2.83, -2.84, -4.58, -2.83, -2.5, -3.31, -4.29, -2.83, -1.28, 5.09, 9.72, 9.16, 6.14, 11.18, 10.12, -0.03, -0.06, -0.42, -2.47, -2.45, -3.76, -3.62, -4.49, -3.45], "forecast_price": {"naive": [98.44, 100.64, 94.76, 73.3, 69.21, 64.5, 65.94, 57.07, 57.69, 62.65, 62.19, 64.4, 61.75, 76.5, 75.74, 56.53, 32.11, 15.24, 7.83, 11.33, 11.19, 3.9, 7.28, 5.97, 4.75, 5.36, 12.14, 17.78, 11.23, 1.32, -0.77, 7.74, 60.38, 84.35, 92.04, 86.06, 86.63, 86.23, 75.89, 64.27, 47.21, 46.2, 38.41, 36.55, 9.0, 6.75, 10.2, 6.87], "lightgbm": [49.55, 49.55, 48.49, 42.8, 40.04, 40.31, 40.31, 36.25, 36.25, 38.8, 48.62, 50.17, 52.68, 60.92, 60.81, 53.87, 36.12, 29.23, 25.54, 25.09, 23.3, 21.84, 20.0, 19.93, 19.53, 20.1, 23.02, 22.84, 22.31, 22.95, 26.82, 29.43, 54.15, 73.38, 84.75, 94.33, 94.33, 94.33, 85.77, 73.37, 56.05, 54.62, 51.89, 49.39, 46.47, 47.3, 46.47, 47.3], "lstm": [3.88, 1.41, -0.25, -8.24, -9.03, -12.0, -13.67, -11.63, -12.94, -9.03, -7.37, -2.27, 10.16, 24.8, 29.75, 39.59, 33.51, 20.44, 19.05, 11.38, 5.74, -0.55, -0.63, -5.02, -8.5, -7.26, -6.7, -5.74, 0.0, 6.64, 13.54, 20.93, 30.47, 46.02, 64.86, 81.85, 84.51, 71.69, 65.91, 65.35, 61.63, 58.45, 55.64, 45.4, 41.87, 37.46, 33.9, 43.07]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.75, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 2.39, 2.39, 1.84, 1.48, 1.69, 1.93, 1.53, 1.53, 17.72, 17.72, 36.67, 65.15, 79.84, 80.09, 82.12, 81.33, 81.58, 81.9, 85.65, 85.65, 89.2, 94.93, 97.41, 94.28, 98.42, 103.78, 104.14, 104.3, 104.3, 116.45, 127.9, 127.9, 141.87, 154.51, 154.52, 154.53, 154.58, 156.43, 156.43, 161.13, 165.65, 171.26, 175.57], "profit_aud": 175.57}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.55, -0.91, -0.91, -0.91, -0.91, -1.42, 14.77, 27.76, 27.76, 27.76, 27.76, 29.01, 27.19, 27.19, 29.69, 31.08, 34.83, 38.37, 41.92, 36.19, 32.65, 30.46, 34.59, 39.96, 43.5, 43.5, 43.5, 55.65, 67.1, 74.78, 88.75, 88.75, 88.75, 88.75, 88.75, 88.75, 88.75, 89.28, 93.8, 88.19, 88.19], "profit_aud": 88.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.56, -1.12, -1.48, -1.27, -1.27, -1.27, 1.01, 17.2, 30.18, 49.13, 49.13, 49.13, 49.13, 49.13, 49.13, 50.25, 53.37, 57.13, 60.67, 64.22, 64.22, 64.22, 64.22, 64.22, 64.22, 64.22, 64.22, 64.22, 64.22, 75.67, 83.35, 97.32, 109.96, 109.96, 109.96, 109.96, 109.96, 109.96, 109.96, 109.96, 109.96, 109.96], "profit_aud": 109.96}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -0.4, -0.68, -0.68, -3.33, -4.61, -5.16, -5.52, -5.42, -5.39, -5.48, -5.48, 10.71, 23.7, 42.65, 71.13, 71.13, 71.13, 71.13, 71.13, 71.38, 71.69, 73.57, 77.11, 80.65, 86.38, 89.93, 89.93, 89.93, 89.93, 89.93, 89.93, 89.93, 89.93, 101.38, 109.06, 123.03, 135.68, 135.68, 135.68, 135.68, 135.68, 135.68, 135.68, 136.18, 141.8, 137.49], "profit_aud": 137.49}}} \ No newline at end of file diff --git a/results/daily/2026-06-10.json b/results/daily/2026-06-10.json new file mode 100644 index 0000000..4bfda42 --- /dev/null +++ b/results/daily/2026-06-10.json @@ -0,0 +1 @@ +{"date": "2026-06-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.69, -2.86, -2.92, -4.43, -4.8, -6.28, -4.83, -3.14, -4.87, -3.36, -2.67, -2.13, 0.34, -0.21, 3.41, 25.52, 64.05, 38.73, 51.94, 36.74, 72.61, 95.41, 78.99, 101.1, 83.36, 83.5, 88.92, 76.24, 90.29, 96.22, 133.9, 111.21, 135.34, 151.85, 170.67, 154.14, 132.35, 126.78, 126.04, 121.97, 124.21, 123.38, 128.61, 124.91, 117.22, 106.96, 109.44, 106.96], "forecast_price": {"naive": [5.7, 3.92, 3.22, 2.2, -0.0, 2.12, 1.02, 0.44, 0.29, -0.17, -0.19, 0.73, 1.82, 12.96, 10.39, 15.16, 22.78, 11.75, -1.0, -1.62, -0.63, -2.0, -2.5, -3.0, -2.83, -2.84, -4.58, -2.83, -2.5, -3.31, -4.29, -2.83, -1.28, 5.09, 9.72, 9.16, 6.14, 11.18, 10.12, -0.03, -0.06, -0.42, -2.47, -2.45, -3.76, -3.62, -4.49, -3.45], "lightgbm": [0.75, -0.23, -1.79, -2.16, -2.16, -1.95, -1.95, -1.28, -1.28, -0.35, 4.64, 6.19, 7.49, 12.56, 9.99, 9.41, 9.54, 10.48, 8.68, 6.89, 6.0, 5.48, 4.01, 3.9, 3.76, 3.76, 3.76, 3.76, 3.76, 3.83, 5.16, 7.38, 10.82, 19.2, 33.89, 43.5, 46.96, 43.9, 42.68, 43.34, 40.56, 42.17, 33.17, 32.39, 32.02, 30.4, 30.08, 30.4], "lstm": [1.77, 3.92, -1.61, -7.57, -10.07, -10.48, -13.4, -9.64, -9.27, -7.6, -0.73, -1.25, 13.56, 27.55, 31.88, 38.4, 33.33, 22.27, 21.29, 17.1, 13.05, 4.7, 6.16, 1.31, -1.72, -0.47, -3.8, -3.47, 0.31, 5.74, 5.29, 14.99, 17.53, 32.63, 44.95, 63.79, 59.39, 58.58, 58.34, 57.02, 54.9, 51.62, 47.02, 41.74, 35.32, 29.23, 33.58, 39.12]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.34, 0.69, 1.06, 6.6, 12.6, 20.45, 26.49, 24.75, 30.84, 31.26, 31.59, 31.86, 32.24, 32.5, 32.5, 32.5, 112.56, 64.15, 116.09, 70.17, 70.17, 189.43, 90.7, 217.07, 193.73, 193.73, 193.73, 98.42, 98.42, 98.42, 249.06, 110.05, 279.22, 469.04, 682.38, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05, 875.05], "profit_aud": 875.05}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.75, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 5.99, -1.08, -1.08, 2.84, 8.93, 13.12, 16.47, 17.65, 17.65, 17.39, 17.39, 49.29, 129.35, 177.77, 164.78, 118.86, 209.63, 197.7, 187.83, 61.45, 61.45, -42.93, -154.07, -220.78, -107.92, -228.19, -395.57, -409.47, -426.39, -426.39, -213.05, -20.38, -20.38, 138.1, 295.64, 280.4, 264.87, 249.45, 152.99, 152.99, 6.46, -127.23, -264.03, -397.73], "profit_aud": -397.73}, "lightgbm": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.36, 2.18, 7.73, 13.72, 21.58, 27.62, 27.62, 28.83, 29.25, 29.25, 29.25, 29.25, 28.99, 33.26, 33.26, 113.32, 161.74, 161.74, 161.74, 161.74, 161.74, 161.74, 161.74, 57.53, -46.85, -157.99, -253.3, -303.41, -303.41, -303.41, -303.41, -303.41, -303.41, -303.41, -110.73, 54.71, 213.18, 213.18, 365.65, 365.65, 365.65, 365.65, 365.65, 365.65, 365.65, 365.65, 365.65], "profit_aud": 365.65}, "lstm": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [3.37, 0.15, 0.52, 1.07, 7.06, 14.92, 20.96, 24.88, 27.92, 28.34, 25.37, 28.04, 28.04, 27.78, 32.04, 63.94, 144.01, 144.01, 144.01, 144.01, 144.01, 24.74, 113.61, 113.61, 9.4, -94.98, -206.13, -301.43, -351.54, -351.54, -351.54, -351.54, -351.54, -351.54, -351.54, -158.86, 6.58, 165.05, 322.6, 322.6, 322.6, 322.6, 322.6, 322.6, 322.6, 188.91, 173.59, 307.29], "profit_aud": 307.29}}} \ No newline at end of file diff --git a/results/daily/2026-06-11.json b/results/daily/2026-06-11.json new file mode 100644 index 0000000..bb4a20d --- /dev/null +++ b/results/daily/2026-06-11.json @@ -0,0 +1 @@ +{"date": "2026-06-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [163.24, 118.46, 111.62, 118.65, 113.96, 122.52, 115.37, 110.35, 116.02, 114.5, 135.25, 147.44, 161.01, 156.52, 167.57, 162.66, 141.05, 109.72, 88.84, 82.96, 88.68, 81.76, 86.74, 82.59, 77.02, 73.39, 67.05, 56.89, 60.0, 86.93, 75.92, 100.22, 103.48, 106.63, 98.29, 100.52, 97.37, 98.01, 86.88, 75.06, 71.59, 65.67, 62.24, 52.19, 48.05, 11.32, 9.85, -2.19], "forecast_price": {"naive": [-2.69, -2.86, -2.92, -4.43, -4.8, -6.28, -4.83, -3.14, -4.87, -3.36, -2.67, -2.13, 0.34, -0.21, 3.41, 25.52, 64.05, 38.73, 51.94, 36.74, 72.61, 95.41, 78.99, 101.1, 83.36, 83.5, 88.92, 76.24, 90.29, 96.22, 133.9, 111.21, 135.34, 151.85, 170.67, 154.14, 132.35, 126.78, 126.04, 121.97, 124.21, 123.38, 128.61, 124.91, 117.22, 106.96, 109.44, 106.96], "lightgbm": [61.32, 61.32, 60.45, 56.51, 53.28, 52.05, 52.31, 51.22, 51.22, 50.98, 53.46, 54.78, 55.58, 52.98, 43.26, 57.12, 62.5, 33.51, 38.41, 30.75, 40.45, 38.84, 33.94, 36.54, 33.33, 33.33, 32.63, 32.6, 33.7, 37.62, 45.1, 53.17, 68.33, 93.5, 94.62, 105.09, 105.55, 106.09, 105.69, 102.66, 102.92, 98.45, 93.29, 88.46, 86.28, 81.13, 79.74, 81.44], "lstm": [97.6, 89.06, 87.47, 81.37, 77.91, 74.26, 72.05, 67.9, 71.0, 67.51, 76.85, 81.09, 94.28, 112.1, 122.84, 124.75, 124.43, 100.67, 89.24, 78.41, 76.18, 67.06, 70.41, 62.07, 62.17, 54.82, 57.41, 63.14, 58.46, 63.04, 70.33, 83.64, 89.52, 106.97, 124.64, 160.23, 134.97, 133.43, 116.96, 115.93, 109.74, 96.14, 93.19, 80.45, 84.66, 71.79, 72.24, 79.06]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12], "cumulative_profit_aud": [0.0, 0.0, -139.53, -139.53, -281.98, -281.98, -346.01, -483.94, -483.94, -627.08, -627.08, -627.08, -425.82, -230.16, -20.71, 182.61, 182.61, 182.61, 182.61, 182.61, 182.61, 182.61, 182.61, 182.61, 139.87, 48.13, -35.68, -106.8, -181.8, -84.0, -178.9, -53.62, 75.73, 209.02, 209.02, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 334.67, 337.41], "profit_aud": 337.41}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.56, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 3.75, 4.88, 3.62, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-20.41, -35.21, -49.17, -197.48, -339.93, -493.09, -637.3, -576.06, -721.08, -735.4, -752.3, -770.73, -589.6, -785.25, -785.25, -785.25, -608.94, -746.09, -657.25, -760.96, -760.96, -658.76, -767.19, -663.95, -685.52, -685.52, -685.52, -756.63, -756.63, -756.63, -671.22, -796.5, -667.15, -533.86, -410.99, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35, -285.35], "profit_aud": -285.35}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 1.38, 1.38, 1.38, 1.38, 2.5, 1.25, 0.0, 1.12, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.49, -175.62, -175.62, -175.62, -175.62, -175.62, -385.08, -181.76, -5.44, -142.59, -142.59, -246.3, -135.45, -53.7, -53.7, -53.7, -149.97, -241.7, -325.52, -396.63, -429.93, -429.93, -429.93, -429.93, -429.93, -429.93, -429.93, -304.29, -182.58, -60.06, 48.54, 48.54, 48.54, 48.54, 48.54, 48.54, 48.54, 48.54, 48.54, 48.54], "profit_aud": 48.54}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -68.0, -212.22, -350.15, -495.18, -638.31, -638.31, -638.31, -638.31, -442.66, -233.2, -29.88, 146.44, 146.44, 146.44, 146.44, 146.44, 146.44, 146.44, 43.2, 0.45, -91.28, -175.09, -175.09, -250.1, -250.1, -250.1, -250.1, -250.1, -250.1, -127.24, -1.59, 120.12, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63, 242.63], "profit_aud": 242.63}}} \ No newline at end of file diff --git a/results/daily/2026-06-12.json b/results/daily/2026-06-12.json new file mode 100644 index 0000000..9029574 --- /dev/null +++ b/results/daily/2026-06-12.json @@ -0,0 +1 @@ +{"date": "2026-06-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [6.98, 1.73, 1.02, -0.59, -0.86, -0.09, -0.52, -1.67, -1.85, 0.5, -0.08, -0.07, -0.2, 0.66, 10.82, 18.09, 7.49, -0.87, -2.32, -2.76, -3.39, -2.98, -3.89, -3.88, -3.36, -3.72, -6.9, -8.41, -6.36, -7.92, -7.74, -4.95, -2.98, -8.11, -15.44, -11.28, -17.26, -14.38, -10.61, -3.27, -4.22, -4.73, -4.16, -5.14, -3.57, -6.53, -5.97, -7.82], "forecast_price": {"naive": [163.24, 118.46, 111.62, 118.65, 113.96, 122.52, 115.37, 110.35, 116.02, 114.5, 135.25, 147.44, 161.01, 156.52, 167.57, 162.66, 141.05, 109.72, 88.84, 82.96, 88.68, 81.76, 86.74, 82.59, 77.02, 73.39, 67.05, 56.89, 60.0, 86.93, 75.92, 100.22, 103.48, 106.63, 98.29, 100.52, 97.37, 98.01, 86.88, 75.06, 71.59, 65.67, 62.24, 52.19, 48.05, 11.32, 9.85, -2.19], "lightgbm": [80.84, 82.27, 75.79, 67.01, 65.45, 65.29, 64.02, 65.86, 65.6, 66.81, 78.67, 81.03, 85.33, 91.51, 91.51, 93.57, 94.42, 85.95, 81.43, 69.63, 68.47, 64.8, 56.02, 56.0, 52.74, 53.15, 58.97, 57.81, 58.53, 57.88, 58.24, 72.24, 86.42, 92.2, 104.46, 107.99, 107.23, 108.23, 98.04, 90.5, 88.57, 81.84, 76.78, 70.49, 64.59, 58.92, 59.61, 59.91], "lstm": [12.05, 11.84, 6.17, 4.68, -0.33, -0.26, -0.51, 0.05, 1.77, -0.35, 4.76, 8.06, 20.01, 32.67, 39.34, 45.17, 43.65, 32.52, 32.79, 26.63, 22.02, 17.04, 17.31, 12.96, 7.11, 8.09, 8.04, 9.45, 13.35, 16.83, 19.52, 27.66, 32.08, 48.35, 56.46, 74.68, 65.69, 62.84, 58.23, 57.67, 55.09, 52.72, 52.41, 47.18, 43.68, 38.15, 38.38, 43.43]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 1.25, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 3.0, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.73, 1.8, 1.75, 2.41, 4.5, 6.81, 7.43, 7.54, 7.47, 7.71, 8.54, 22.07, 44.69, 54.05, 54.16, 54.45, 54.79, 59.03, 55.72, 60.59, 62.04, 57.84, 57.84, 58.71, 69.22, 63.91, 73.81, 83.49, 77.3, 73.58, 74.6, 93.89, 107.99, 129.57, 147.55, 154.18, 150.09, 144.82, 147.78, 142.58, 149.0, 144.54, 152.7, 160.16, 169.93], "profit_aud": 169.93}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12], "cumulative_profit_aud": [0.0, 0.0, -1.27, -1.27, -0.2, -0.2, 0.09, 2.18, 2.18, 1.55, 1.55, 1.55, 1.31, 2.14, 15.67, 38.28, 38.28, 38.28, 38.28, 38.28, 38.28, 38.28, 38.28, 38.28, 40.15, 44.8, 53.42, 63.93, 71.88, 62.96, 72.64, 66.45, 62.73, 52.59, 52.59, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 38.49, 48.26], "profit_aud": 48.26}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 1.07, 1.18, 1.84, 2.76, 5.08, 5.08, 5.08, 5.08, 5.08, 5.91, 19.43, 42.05, 51.41, 51.41, 51.41, 51.41, 51.41, 51.41, 56.27, 61.12, 65.32, 69.97, 69.97, 74.64, 74.64, 74.64, 74.64, 74.64, 74.64, 74.64, 55.34, 41.24, 19.67, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69, 1.69], "profit_aud": 1.69}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 1.07, 1.18, 1.84, 3.92, 2.77, 2.14, 2.14, 2.14, 2.14, 2.14, 15.67, 38.29, 47.65, 47.65, 44.75, 44.75, 44.75, 44.75, 44.75, 46.9, 51.1, 55.75, 64.38, 74.89, 74.89, 74.89, 74.89, 74.89, 74.89, 74.89, 74.89, 60.79, 39.21, 21.23, 7.96, 7.96, 7.96, 7.96, 7.96, 7.96, 7.96, 16.13, 16.96, 7.19], "profit_aud": 7.19}}} \ No newline at end of file diff --git a/results/daily/2026-06-13.json b/results/daily/2026-06-13.json new file mode 100644 index 0000000..fcf2b7b --- /dev/null +++ b/results/daily/2026-06-13.json @@ -0,0 +1 @@ +{"date": "2026-06-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-6.63, -7.82, -2.74, -8.36, -6.67, -8.45, -10.27, -9.37, -9.91, -6.99, -8.93, -7.05, -4.44, -2.82, -2.47, -2.25, -0.93, -1.01, -0.1, -0.1, -0.1, -0.07, -0.04, -0.02, 4.16, 13.22, 15.08, 24.42, 52.66, 58.95, 58.21, 65.16, 67.36, 69.28, 71.55, 72.66, 69.42, 69.18, 68.29, 71.15, 71.29, 72.17, 71.22, 67.54, 67.77, 66.99, 73.76, 72.8], "forecast_price": {"naive": [6.98, 1.73, 1.02, -0.59, -0.86, -0.09, -0.52, -1.67, -1.85, 0.5, -0.08, -0.07, -0.2, 0.66, 10.82, 18.09, 7.49, -0.87, -2.32, -2.76, -3.39, -2.98, -3.89, -3.88, -3.36, -3.72, -6.9, -8.41, -6.36, -7.92, -7.74, -4.95, -2.98, -8.11, -15.44, -11.28, -17.26, -14.38, -10.61, -3.27, -4.22, -4.73, -4.16, -5.14, -3.57, -6.53, -5.97, -7.82], "lightgbm": [1.12, -0.73, -3.28, -3.65, -5.33, -5.5, -5.58, -7.81, -7.81, -5.49, -2.41, -1.6, 0.63, 1.9, 5.67, 7.12, 4.37, 2.5, 2.24, 1.97, -1.98, -2.31, -3.4, -3.51, -1.97, -1.22, -1.92, -6.8, -2.6, -5.03, -4.97, 4.0, 8.08, 10.54, 18.67, 29.86, 38.04, 42.09, 43.09, 43.64, 43.64, 42.31, 41.3, 40.92, 38.93, 38.97, 39.12, 34.99], "lstm": [5.62, 3.0, -2.54, -3.36, -7.77, -9.13, -7.9, -5.84, -5.17, -7.23, -1.88, 1.21, 5.58, 16.78, 20.64, 21.85, 19.55, 11.77, 10.08, 7.1, 2.49, -2.17, -3.19, -7.15, -9.92, -9.39, -10.56, -6.35, -6.9, -1.74, -2.69, 7.99, 15.26, 24.63, 35.1, 48.77, 49.84, 45.81, 47.11, 47.66, 47.08, 47.03, 45.72, 38.73, 35.28, 30.91, 34.18, 38.01]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [1.66, 11.43, 8.01, 18.46, 11.05, 21.62, 34.46, 46.17, 58.55, 54.67, 65.83, 66.71, 67.27, 67.62, 67.93, 68.21, 68.21, 68.47, 68.48, 68.49, 68.5, 68.51, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 68.52, 159.35, 159.35, 159.35, 159.35, 159.35, 159.35, 249.56, 249.56, 249.56, 249.56, 249.56, 341.75, 432.75], "profit_aud": 432.75}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 1.75, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 1.25, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.38, 0.12, 0.0, 0.0, 1.12, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 3.0, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 10.45, 18.79, 14.1, 26.94, 38.65, 51.03, 42.3, 53.46, 46.62, 52.17, 48.65, 45.56, 42.75, 41.59, 41.71, 41.72, 41.74, 41.86, 41.79, 41.84, 41.84, 47.05, 47.05, 45.17, 14.64, 58.61, -15.08, -87.83, -6.38, 77.83, 69.17, -20.27, -111.1, -197.88, -284.36, -327.03, -238.1, -148.99, -194.09, -105.07, -189.49, -104.78, -188.52, -280.71, -371.71], "profit_aud": -371.71}, "lightgbm": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.98, 1.32, 2.36, 3.2, 13.77, 26.61, 38.32, 50.7, 55.07, 56.18, 57.07, 57.07, 57.07, 53.98, 51.17, 50.0, 48.73, 48.73, 48.73, 48.75, 48.83, 48.88, 48.9, 50.07, 66.6, 85.45, 54.92, -10.9, -84.59, -157.35, -157.35, -157.35, -157.35, -157.35, -157.35, -157.35, -157.35, -71.99, 16.95, 106.06, 196.26, 196.26, 196.26, 196.26, 196.26, 196.26, 196.26], "profit_aud": 196.26}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.34, 1.39, 9.73, 20.3, 33.14, 44.85, 39.35, 48.08, 49.2, 49.2, 49.2, 45.68, 42.59, 39.78, 38.61, 38.61, 38.61, 38.61, 38.61, 38.62, 38.63, 38.65, 33.44, 16.92, -1.93, -1.93, -41.43, 24.01, -48.75, -48.75, -48.75, -48.75, -48.75, 42.08, 128.86, 128.86, 214.22, 303.16, 303.16, 303.16, 303.16, 303.16, 303.16, 219.42, 209.1, 300.1], "profit_aud": 300.1}}} \ No newline at end of file diff --git a/results/daily/2026-06-14.json b/results/daily/2026-06-14.json new file mode 100644 index 0000000..ee30849 --- /dev/null +++ b/results/daily/2026-06-14.json @@ -0,0 +1 @@ +{"date": "2026-06-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.05, 70.44, 66.05, 64.89, 62.53, 58.95, 56.13, 54.25, 59.38, 59.0, 56.06, 54.23, 56.39, 43.94, 51.82, 35.01, 39.11, 12.99, 17.3, 0.72, -2.18, -3.69, -4.22, -5.94, -5.61, -2.39, -2.34, -2.0, -1.35, -1.25, -1.52, 0.01, 54.96, 70.71, 81.79, 81.83, 81.46, 74.97, 69.48, 45.35, 51.59, 53.78, 55.09, 56.5, 56.38, 50.27, 57.22, 53.67], "forecast_price": {"naive": [-6.63, -7.82, -2.74, -8.36, -6.67, -8.45, -10.27, -9.37, -9.91, -6.99, -8.93, -7.05, -4.44, -2.82, -2.47, -2.25, -0.93, -1.01, -0.1, -0.1, -0.1, -0.07, -0.04, -0.02, 4.16, 13.22, 15.08, 24.42, 52.66, 58.95, 58.21, 65.16, 67.36, 69.28, 71.55, 72.66, 69.42, 69.18, 68.29, 71.15, 71.29, 72.17, 71.22, 67.54, 67.77, 66.99, 73.76, 72.8], "lightgbm": [29.75, 22.45, 28.02, 19.11, 24.11, 18.74, 18.02, 14.79, 15.04, 24.9, 19.65, 27.7, 28.97, 30.18, 29.84, 29.26, 28.14, 23.96, 23.01, 22.12, 20.99, 20.26, 20.33, 20.21, 19.23, 22.16, 24.62, 22.76, 35.96, 48.15, 50.16, 51.92, 54.79, 63.7, 69.15, 76.9, 76.51, 76.51, 76.14, 75.32, 73.05, 73.42, 71.49, 63.78, 65.86, 63.78, 70.53, 69.88], "lstm": [76.55, 70.19, 64.46, 65.79, 58.47, 54.48, 51.5, 48.86, 47.95, 40.96, 42.89, 43.3, 44.4, 49.77, 52.99, 48.13, 47.09, 41.88, 39.44, 28.92, 31.88, 25.12, 25.77, 22.41, 24.01, 19.09, 18.75, 24.42, 25.96, 31.12, 34.62, 45.51, 52.4, 70.03, 87.83, 114.45, 106.83, 92.01, 79.91, 74.86, 74.43, 69.11, 63.55, 54.86, 61.74, 51.4, 51.84, 59.5]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -54.92, 3.38, -40.38, 3.61, -12.62, 6.84, 6.84, 7.11, 11.73, 17.0, 24.42, 31.44, 32.93, 33.22, 33.47, 33.47, 32.26, 34.17, 34.17, 34.17, 34.17, 136.4, 238.69, 340.51, 434.22, 434.22, 377.53, 377.53, 377.53, 377.53, 434.04, 434.04, 371.2, 442.73, 442.73], "profit_aud": 442.73}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.12, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-17.76, -105.81, -23.24, -104.35, -34.94, -108.62, -178.78, -246.6, -320.82, -288.08, -358.16, -364.94, -371.99, -377.48, -383.96, -388.33, -388.33, -391.58, -393.74, -393.83, -393.56, -393.1, -392.57, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -391.83, -289.53, -289.53, -289.53, -289.53, -289.53, -289.53, -222.3, -222.3, -222.3, -222.3, -222.3, -150.78, -83.69], "profit_aud": -83.69}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -88.05, -13.74, -94.84, -55.76, -129.45, -199.61, -267.42, -341.64, -275.27, -345.35, -345.35, -274.87, -219.95, -155.16, -111.4, -111.4, -111.4, -111.4, -111.4, -110.19, -105.58, -100.31, -92.88, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, -85.87, 16.43, 118.25, 211.96, 298.81, 298.81, 298.81, 298.81, 298.81, 298.81, 298.81, 298.81, 298.81, 298.81], "profit_aud": 298.81}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -73.74, -143.82, -211.61, -211.61, -156.69, -91.91, -61.28, -61.28, -61.28, -61.28, -61.28, -61.28, -61.28, -61.28, -53.85, -46.84, -43.85, -40.93, -39.81, -39.81, -39.81, -39.81, -39.81, -39.81, -39.81, 62.42, 164.71, 266.53, 360.25, 360.25, 360.25, 360.25, 360.25, 360.25, 289.62, 353.04, 290.21, 282.2, 349.29], "profit_aud": 349.29}}} \ No newline at end of file diff --git a/results/daily/2026-06-15.json b/results/daily/2026-06-15.json new file mode 100644 index 0000000..5bfc6b4 --- /dev/null +++ b/results/daily/2026-06-15.json @@ -0,0 +1 @@ +{"date": "2026-06-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [61.38, 68.92, 70.38, 64.66, 63.96, 60.63, 51.21, 53.22, 50.8, 54.15, 58.67, 61.97, 66.59, 77.43, 85.24, 78.34, 74.58, 46.98, 42.42, 42.13, 46.18, 51.86, 56.1, 56.62, 57.41, 44.65, 47.25, 34.6, 30.84, 53.09, 80.12, 82.61, 83.28, 86.17, 89.67, 77.24, 68.72, 61.99, 42.02, 38.61, 50.44, 47.58, 41.31, 38.64, 34.78, 11.9, 4.42, 1.66], "forecast_price": {"naive": [71.05, 70.44, 66.05, 64.89, 62.53, 58.95, 56.13, 54.25, 59.38, 59.0, 56.06, 54.23, 56.39, 43.94, 51.82, 35.01, 39.11, 12.99, 17.3, 0.72, -2.18, -3.69, -4.22, -5.94, -5.61, -2.39, -2.34, -2.0, -1.35, -1.25, -1.52, 0.01, 54.96, 70.71, 81.79, 81.83, 81.46, 74.97, 69.48, 45.35, 51.59, 53.78, 55.09, 56.5, 56.38, 50.27, 57.22, 53.67], "lightgbm": [60.54, 60.54, 59.91, 51.46, 49.87, 49.08, 47.55, 44.7, 47.18, 48.75, 54.28, 58.0, 59.28, 59.2, 64.55, 51.43, 46.66, 37.04, 36.19, 32.49, 33.17, 32.02, 29.54, 28.48, 28.48, 29.54, 29.64, 29.64, 31.24, 32.09, 32.17, 37.75, 58.61, 75.57, 92.09, 98.57, 98.57, 92.94, 80.36, 65.01, 65.36, 65.58, 62.18, 59.37, 58.43, 56.55, 60.18, 60.18], "lstm": [50.21, 48.33, 43.95, 40.37, 34.35, 33.57, 33.19, 32.4, 32.81, 32.83, 40.17, 42.84, 59.15, 73.67, 76.89, 82.38, 69.47, 52.87, 50.87, 41.89, 36.7, 26.01, 26.37, 25.16, 22.49, 20.15, 20.04, 23.75, 22.2, 26.48, 32.46, 41.98, 46.77, 70.03, 85.85, 126.39, 109.04, 92.22, 78.03, 74.85, 70.14, 64.88, 65.81, 56.99, 59.29, 51.24, 52.39, 56.24]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.0, 0.75, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-76.73, -76.73, 2.45, 2.45, 2.45, 2.45, -61.56, -128.1, -191.6, -259.28, -291.85, -291.85, -291.85, -195.06, -88.51, 9.42, 102.64, 43.91, -9.12, -61.78, -119.5, -119.5, -49.38, 21.39, 93.16, 37.35, -8.48, -51.73, -90.28, -90.28, -90.28, 12.98, 117.08, 224.79, 336.87, 336.87, 336.87, 336.87, 284.35, 236.08, 299.13, 346.71, 346.71, 346.71, 346.71, 346.71, 346.71, 346.71], "profit_aud": 346.71}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -96.79, -0.89, -98.82, -14.92, -73.65, -25.92, -25.92, -31.69, -96.51, -166.63, -237.41, -309.17, -337.08, -342.98, -347.31, -347.31, -295.81, -395.96, -395.96, -395.96, -395.96, -283.88, -187.33, -101.42, -23.93, -23.93, -72.2, -72.2, -72.2, -72.2, -33.56, -33.56, -48.44, -42.92, -42.92], "profit_aud": -42.92}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -33.65, -97.66, -164.19, -227.69, -295.38, -295.38, -217.92, -134.68, -37.89, 68.66, 68.66, 68.66, 68.66, 68.66, 68.66, 68.66, 68.66, -1.46, -72.24, -144.0, -199.81, -199.81, -219.01, -219.01, -219.01, -219.01, -219.01, -219.01, -219.01, -106.93, -10.38, 75.52, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02, 153.02], "profit_aud": 153.02}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -33.65, -97.66, -164.19, -227.69, -295.38, -295.38, -295.38, -295.38, -198.59, -92.04, 5.88, 99.1, 99.1, 99.1, 99.1, 99.1, 99.1, 99.1, 99.1, 27.34, -28.47, -87.53, -106.73, -145.28, -145.28, -145.28, -145.28, -145.28, -145.28, -33.2, 63.35, 149.25, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74, 226.74], "profit_aud": 226.74}}} \ No newline at end of file diff --git a/results/daily/2026-06-16.json b/results/daily/2026-06-16.json new file mode 100644 index 0000000..71dcdbb --- /dev/null +++ b/results/daily/2026-06-16.json @@ -0,0 +1 @@ +{"date": "2026-06-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [0.24, -0.03, 0.09, -0.37, -0.37, -1.03, -0.98, -1.01, -1.52, -2.04, -1.9, -0.57, 1.26, 4.27, 24.4, 21.75, 12.36, 5.27, 4.85, 6.27, 5.27, 12.48, 22.83, 18.14, 14.03, 27.87, 30.46, 23.1, 30.03, 40.64, 70.4, 65.75, 65.35, 62.2, 65.44, 67.84, 78.17, 70.9, 62.91, 64.23, 58.01, 49.1, 11.52, 1.19, 4.48, 2.18, 1.55, 0.38], "forecast_price": {"naive": [61.38, 68.92, 70.38, 64.66, 63.96, 60.63, 51.21, 53.22, 50.8, 54.15, 58.67, 61.97, 66.59, 77.43, 85.24, 78.34, 74.58, 46.98, 42.42, 42.13, 46.18, 51.86, 56.1, 56.62, 57.41, 44.65, 47.25, 34.6, 30.84, 53.09, 80.12, 82.61, 83.28, 86.17, 89.67, 77.24, 68.72, 61.99, 42.02, 38.61, 50.44, 47.58, 41.31, 38.64, 34.78, 11.9, 4.42, 1.66], "lightgbm": [48.88, 51.43, 48.74, 44.81, 44.92, 42.39, 40.32, 40.32, 40.93, 39.78, 46.93, 48.51, 53.68, 59.55, 62.39, 60.15, 58.59, 36.4, 33.24, 32.37, 32.86, 37.37, 36.28, 36.14, 35.97, 30.81, 31.15, 28.79, 27.25, 37.95, 50.28, 53.78, 58.48, 66.02, 82.74, 84.83, 77.97, 67.76, 54.73, 48.48, 57.63, 49.7, 46.66, 44.93, 44.61, 42.45, 44.35, 44.76], "lstm": [12.73, 10.0, 6.78, 0.92, -0.29, -3.49, -4.23, -3.51, -4.78, -2.24, -0.75, 4.03, 13.92, 27.73, 33.73, 41.6, 37.73, 27.06, 25.72, 21.7, 14.54, 10.26, 9.46, 6.01, 3.0, 2.7, 4.11, 5.93, 8.37, 15.55, 18.21, 23.78, 32.41, 44.77, 62.82, 79.43, 74.42, 62.78, 59.73, 56.71, 52.53, 48.99, 48.3, 40.96, 37.82, 31.59, 31.36, 39.15]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.04, 0.14, 0.19, 0.24, 1.52, 1.52, 2.28, 4.17, 6.73, 9.1, 9.18, 9.18, 9.18, 39.67, 66.87, 82.32, 75.74, 69.68, 67.07, 60.48, 60.48, 89.02, 86.48, 68.94, 68.94, 103.21, 74.34, 74.34, 74.34, 162.33, 162.33, 162.33, 162.33, 162.33, 247.14, 344.85, 433.47, 433.47, 433.47, 433.47, 433.47, 433.47, 431.98, 437.02, 437.02, 437.02, 437.02], "profit_aud": 437.02}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.94, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.0, 0.75, 1.88, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.3, -0.3, -0.2, -0.2, -0.2, -0.2, 1.03, 2.3, 4.2, 6.75, 7.8, 7.8, 7.8, 13.14, 43.64, 70.83, 86.29, 79.7, 73.64, 65.8, 59.21, 59.21, 87.74, 110.42, 127.96, 93.12, 63.57, 34.7, -2.84, -2.84, -2.84, 79.34, 161.03, 238.78, 320.58, 320.58, 320.58, 320.58, 241.95, 161.66, 234.17, 283.27, 283.27, 283.27, 283.27, 283.27, 283.27, 283.27], "profit_aud": 283.27}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.75, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.57, 1.8, 3.06, 4.96, 7.51, 7.51, 7.51, 7.51, 12.85, 43.35, 70.54, 86.0, 86.0, 86.0, 78.15, 74.49, 90.08, 90.08, 90.08, 90.08, 55.24, 17.17, -11.71, -49.25, -49.25, -49.25, -49.25, -49.25, -49.25, 32.56, 117.36, 215.07, 303.7, 303.7, 223.41, 288.67, 288.67, 288.67, 288.67, 288.67, 288.67, 288.67, 288.67], "profit_aud": 288.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.05, 1.33, 2.55, 3.82, 5.72, 7.0, 7.23, 7.23, 7.23, 12.57, 43.07, 70.26, 85.72, 85.72, 85.72, 85.72, 85.72, 85.72, 85.72, 75.65, 58.11, 23.27, -14.81, -43.68, -43.68, -43.68, -43.68, -43.68, -43.68, -43.68, 38.12, 122.93, 220.64, 309.26, 309.26, 309.26, 309.26, 309.26, 309.26, 309.26, 309.26, 308.96, 307.02, 307.5], "profit_aud": 307.5}}} \ No newline at end of file diff --git a/results/daily/2026-06-17.json b/results/daily/2026-06-17.json new file mode 100644 index 0000000..b7c6b5d --- /dev/null +++ b/results/daily/2026-06-17.json @@ -0,0 +1 @@ +{"date": "2026-06-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [0.86, 0.55, 0.24, 0.05, -0.08, -0.08, -0.03, -0.02, -1.2, -0.73, -1.03, 0.31, -0.02, 9.02, 32.0, 39.52, 26.09, 6.81, -1.38, 0.86, 3.17, 2.38, 21.29, 9.45, 3.54, 11.76, 30.28, 13.19, 22.55, 35.42, 38.61, 42.35, 11.54, 17.97, 24.56, 39.25, 35.3, 28.0, 9.75, 9.24, 9.81, 9.07, 7.55, -0.91, -2.96, -2.33, -2.06, -2.35], "forecast_price": {"naive": [0.24, -0.03, 0.09, -0.37, -0.37, -1.03, -0.98, -1.01, -1.52, -2.04, -1.9, -0.57, 1.26, 4.27, 24.4, 21.75, 12.36, 5.27, 4.85, 6.27, 5.27, 12.48, 22.83, 18.14, 14.03, 27.87, 30.46, 23.1, 30.03, 40.64, 70.4, 65.75, 65.35, 62.2, 65.44, 67.84, 78.17, 70.9, 62.91, 64.23, 58.01, 49.1, 11.52, 1.19, 4.48, 2.18, 1.55, 0.38], "lightgbm": [22.09, 22.06, 20.0, 19.09, 19.09, 17.55, 17.99, 18.59, 17.99, 18.73, 22.04, 22.28, 25.57, 26.53, 25.97, 26.18, 34.14, 24.23, 26.68, 24.12, 27.93, 29.01, 30.74, 28.3, 28.86, 30.72, 31.74, 30.05, 31.53, 35.81, 47.44, 53.85, 55.57, 58.84, 68.44, 77.01, 87.3, 78.5, 72.45, 71.05, 69.17, 65.05, 50.04, 48.17, 48.07, 47.45, 47.82, 47.82], "lstm": [9.45, 11.43, 5.21, -1.85, -1.98, -4.33, -5.76, -5.62, -4.86, -4.49, -0.46, 0.52, 13.09, 26.08, 31.62, 38.44, 36.17, 26.28, 26.34, 22.09, 16.71, 11.26, 12.28, 7.37, 5.47, 7.39, 5.98, 7.02, 8.62, 16.23, 16.52, 22.07, 27.35, 40.86, 53.41, 76.8, 65.11, 59.94, 58.23, 53.46, 50.01, 45.92, 41.94, 38.79, 35.63, 26.86, 30.95, 37.09]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.1, 0.21, 0.24, 0.21, 1.72, 2.63, 3.92, 4.27, 4.3, 15.58, 55.58, 104.98, 137.59, 133.81, 135.54, 134.47, 130.51, 127.54, 154.14, 152.82, 148.4, 148.4, 186.25, 169.75, 166.6, 210.87, 259.13, 312.07, 297.65, 275.19, 268.31, 317.38, 361.51, 396.51, 396.51, 396.51, 396.51, 396.51, 396.51, 397.08, 400.79, 403.7, 406.28, 409.22], "profit_aud": 409.22}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -0.68, -0.41, -0.42, -0.41, -0.3, -0.3, -0.29, 1.22, 2.13, 3.42, 3.38, 3.38, 3.38, 43.39, 92.79, 125.4, 116.89, 118.61, 118.26, 114.3, 114.3, 140.91, 139.59, 135.17, 135.17, 169.23, 152.74, 152.74, 152.74, 201.0, 201.0, 201.0, 201.0, 201.0, 250.06, 294.2, 329.2, 329.2, 329.2, 329.2, 329.2, 329.2, 330.34, 327.01, 327.01, 327.01, 327.01], "profit_aud": 327.01}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.11, 0.15, 0.17, 1.67, 2.08, 2.08, 2.08, 2.08, 2.08, 2.08, 2.08, 34.69, 33.73, 33.73, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 32.66, 81.73, 125.86, 160.86, 173.05, 173.05, 173.05, 173.05, 173.05, 173.05, 173.05, 173.05, 173.05, 173.05], "profit_aud": 173.05}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-1.08, -0.46, -0.46, -0.47, -0.46, -0.41, -0.36, -0.34, 1.16, 2.07, 2.2, 2.2, 2.2, 2.2, 42.21, 91.61, 124.22, 124.22, 122.49, 122.49, 122.49, 122.49, 122.49, 110.68, 106.25, 99.73, 61.88, 45.39, 45.39, 45.39, 45.39, 45.39, 45.39, 45.39, 45.39, 94.46, 138.59, 173.59, 185.78, 185.78, 185.78, 185.78, 185.78, 185.78, 185.78, 188.69, 188.98, 186.05], "profit_aud": 186.05}}} \ No newline at end of file diff --git a/results/daily/2026-06-18.json b/results/daily/2026-06-18.json new file mode 100644 index 0000000..1c043d6 --- /dev/null +++ b/results/daily/2026-06-18.json @@ -0,0 +1 @@ +{"date": "2026-06-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.78, 4.76, 0.79, -2.53, -2.24, -2.01, -2.36, -2.53, -2.52, -2.62, -2.65, -2.76, -2.14, -2.0, -2.0, 2.75, 3.54, 0.93, -3.33, -6.3, -4.03, -7.44, -2.18, -2.83, -2.5, -3.11, -4.8, -9.17, -15.82, -19.24, -7.6, -2.56, -1.99, -0.27, -0.34, 6.21, 10.01, 9.64, 10.44, 10.64, 9.59, 9.88, 10.31, 0.78, -0.1, -1.08, -2.25, -1.68], "forecast_price": {"naive": [0.86, 0.55, 0.24, 0.05, -0.08, -0.08, -0.03, -0.02, -1.2, -0.73, -1.03, 0.31, -0.02, 9.02, 32.0, 39.52, 26.09, 6.81, -1.38, 0.86, 3.17, 2.38, 21.29, 9.45, 3.54, 11.76, 30.28, 13.19, 22.55, 35.42, 38.61, 42.35, 11.54, 17.97, 24.56, 39.25, 35.3, 28.0, 9.75, 9.24, 9.81, 9.07, 7.55, -0.91, -2.96, -2.33, -2.06, -2.35], "lightgbm": [12.8, 13.42, 10.66, 9.32, 9.32, 8.65, 8.65, 8.65, 7.44, 8.57, 10.95, 14.24, 16.35, 24.18, 27.34, 31.59, 27.19, 21.9, 21.47, 21.2, 20.52, 21.12, 24.64, 23.04, 19.43, 22.88, 24.81, 21.1, 21.67, 29.52, 27.38, 30.29, 26.31, 34.14, 43.26, 54.18, 57.19, 55.08, 47.4, 46.57, 45.2, 43.5, 41.27, 37.86, 37.58, 35.49, 35.49, 33.82], "lstm": [6.08, 7.76, 3.94, -0.85, -4.2, -3.99, -6.94, -7.35, -6.67, -3.41, -0.33, -0.23, 16.67, 28.06, 35.98, 40.84, 35.7, 26.4, 25.21, 22.42, 17.82, 10.72, 13.2, 6.16, 4.81, 6.46, 5.21, 8.69, 6.87, 11.51, 12.52, 21.55, 26.88, 37.13, 48.72, 70.26, 56.0, 49.98, 53.61, 50.77, 47.09, 43.68, 40.53, 38.74, 35.69, 26.51, 28.71, 36.69]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 4.88, 3.88, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 2.62, 1.38, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [3.47, 8.83, 8.83, 11.99, 12.55, 10.04, 10.34, 13.5, 15.08, 18.35, 21.67, 25.11, 25.11, 23.17, 23.17, 26.6, 31.03, 32.19, 34.27, 42.15, 47.19, 56.48, 53.76, 50.21, 47.09, 47.09, 50.09, 61.55, 81.33, 105.38, 114.88, 115.2, 115.45, 115.15, 115.58, 115.58, 128.09, 128.09, 141.15, 154.45, 154.45, 154.45, 167.34, 167.34, 167.46, 168.81, 171.62, 173.73], "profit_aud": 173.73}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.88, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, 0.0, 2.8, 5.31, 7.08, 3.92, 7.06, 10.34, 13.65, 10.55, 13.22, 10.72, 8.22, 11.65, 16.07, 15.55, 19.72, 27.6, 32.64, 41.93, 39.2, 39.6, 42.73, 42.73, 36.73, 48.2, 50.41, 26.36, 16.86, 13.66, 16.16, 16.49, 16.59, 24.35, 36.87, 48.93, 48.93, 48.93, 48.93, 48.93, 48.93, 48.44, 48.56, 49.91, 52.72, 54.83], "profit_aud": 54.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 1.67, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.25, 4.38, 4.38, 3.12, 4.25, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 4.06, 7.23, 10.37, 13.65, 13.65, 13.65, 13.65, 11.15, 8.65, 12.08, 16.5, 16.5, 20.67, 28.54, 33.58, 42.88, 40.15, 40.15, 43.28, 43.28, 37.28, 48.75, 61.96, 61.96, 61.96, 59.08, 61.57, 61.57, 61.57, 69.34, 81.86, 93.91, 106.96, 106.96, 106.96, 106.96, 106.96, 106.96, 106.96, 106.96, 106.96, 106.96], "profit_aud": 106.96}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [3.47, 8.83, 8.83, 9.15, 11.95, 13.21, 16.16, 19.32, 22.47, 22.79, 23.12, 23.47, 23.47, 20.97, 18.47, 21.9, 26.32, 26.32, 26.32, 26.32, 26.32, 35.62, 33.16, 36.7, 39.83, 43.72, 49.71, 43.98, 63.76, 63.76, 63.76, 63.76, 63.76, 63.76, 63.76, 71.52, 84.04, 84.04, 97.09, 110.4, 110.4, 110.4, 110.4, 110.4, 110.4, 111.75, 112.06, 109.95], "profit_aud": 109.95}}} \ No newline at end of file diff --git a/results/daily/2026-06-19.json b/results/daily/2026-06-19.json new file mode 100644 index 0000000..ce1f123 --- /dev/null +++ b/results/daily/2026-06-19.json @@ -0,0 +1 @@ +{"date": "2026-06-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.18, -1.09, -0.25, -0.87, -1.72, -2.27, -2.76, -2.86, -2.74, -2.89, -2.19, -2.14, -0.08, 3.1, 15.73, 27.22, 18.69, 10.32, 4.38, -0.7, -0.08, 2.22, 6.5, 5.67, 9.51, 14.95, 27.09, 42.85, 53.17, 52.22, 54.29, 53.6, 76.02, 77.48, 78.51, 79.8, 78.93, 79.27, 78.29, 75.62, 67.91, 66.35, 70.54, 72.18, 75.87, 66.93, 67.99, 61.37], "forecast_price": {"naive": [-2.78, 4.76, 0.79, -2.53, -2.24, -2.01, -2.36, -2.53, -2.52, -2.62, -2.65, -2.76, -2.14, -2.0, -2.0, 2.75, 3.54, 0.93, -3.33, -6.3, -4.03, -7.44, -2.18, -2.83, -2.5, -3.11, -4.8, -9.17, -15.82, -19.24, -7.6, -2.56, -1.99, -0.27, -0.34, 6.21, 10.01, 9.64, 10.44, 10.64, 9.59, 9.88, 10.31, 0.78, -0.1, -1.08, -2.25, -1.68], "lightgbm": [-3.52, -0.56, -4.77, -5.65, -5.65, -5.65, -5.65, -5.65, -5.35, -5.51, -0.92, -0.42, 1.74, 3.52, -0.27, 1.64, 0.46, 1.13, -0.09, -2.31, -2.45, -5.22, -4.69, -4.8, -4.94, -4.94, -5.92, -19.07, -19.52, -18.28, -15.64, 0.88, 6.77, 14.37, 20.34, 32.3, 34.37, 33.07, 32.87, 33.97, 33.97, 33.13, 32.12, 31.14, 30.55, 28.55, 28.83, 27.65], "lstm": [3.33, 3.55, -0.16, -2.51, -8.56, -7.31, -8.18, -9.14, -7.64, -7.49, -2.9, 1.76, 15.38, 23.18, 29.69, 35.49, 30.64, 20.58, 21.7, 19.1, 14.79, 5.11, 7.21, 1.1, -2.34, -0.69, -2.5, 1.66, 0.93, 5.05, 2.83, 12.98, 17.66, 28.96, 42.36, 58.37, 50.88, 46.15, 51.81, 48.37, 44.02, 41.18, 43.39, 37.68, 35.77, 30.69, 30.67, 35.36]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [2.73, 4.09, 3.77, 2.93, 3.14, 4.56, 8.01, 11.58, 15.0, 18.61, 18.89, 19.15, 19.16, 19.16, 38.83, 72.86, 96.22, 109.13, 103.66, 104.53, 104.63, 101.85, 105.92, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 98.83, 196.97, 296.72, 395.38, 494.47, 494.47, 494.47, 484.96, 402.02, 402.02, 402.02, 496.86, 496.86, 496.86, 496.86], "profit_aud": 496.86}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 2.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 4.88, 3.88, 3.75, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 2.62, 1.38, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5], "cumulative_profit_aud": [2.73, 1.5, 1.5, 2.59, 3.02, 0.18, 0.53, 4.09, 5.81, 9.42, 12.16, 14.84, 14.84, 17.84, 17.84, 51.87, 75.23, 88.14, 85.4, 86.28, 86.37, 83.6, 91.73, 98.81, 110.7, 110.7, 93.77, 40.2, -26.26, -91.53, -159.39, -166.09, -175.6, -89.6, -187.74, -187.74, -89.07, -89.07, 8.79, 103.31, 103.31, 103.31, 191.49, 191.49, 96.65, 12.99, -72.01, -148.71], "profit_aud": -148.71}, "lightgbm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.0, 2.25, 2.25, 2.5, 2.5, 0.0, 2.5, 2.25, 2.5, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.38, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.38, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [2.73, 1.52, 1.55, 2.64, 3.71, 6.56, 10.0, 13.57, 13.57, 14.29, 14.57, 14.83, 14.73, 18.6, -1.06, 32.97, 53.99, 66.9, 66.35, 66.44, 66.45, 63.67, 68.19, 68.19, 68.19, 68.19, 51.26, -2.3, -68.76, -134.03, -201.9, -201.9, -201.9, -201.9, -201.9, -201.9, -103.24, -103.24, -103.24, -8.72, 76.17, 159.12, 159.12, 159.12, 159.12, 159.12, 159.12, 159.12], "profit_aud": 159.12}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.03, 0.14, 2.29, 2.29, 5.73, 9.3, 12.72, 14.89, 15.16, 15.16, 15.16, 19.04, 38.7, 72.74, 96.1, 96.1, 96.1, 96.1, 96.1, 93.32, 100.64, 93.55, 81.66, 62.97, 29.11, 55.89, -10.57, 48.17, -19.69, -19.69, -19.69, -19.69, -19.69, 80.05, 178.72, 178.72, 276.58, 371.1, 371.1, 371.1, 371.1, 371.1, 371.1, 361.73, 276.74, 353.44], "profit_aud": 353.44}}} \ No newline at end of file diff --git a/results/daily/2026-06-20.json b/results/daily/2026-06-20.json new file mode 100644 index 0000000..c629f37 --- /dev/null +++ b/results/daily/2026-06-20.json @@ -0,0 +1 @@ +{"date": "2026-06-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [65.32, 67.08, 60.94, 59.86, 55.65, 56.06, 56.84, 57.96, 57.84, 58.26, 64.38, 59.88, 61.02, 70.48, 76.05, 81.84, 82.43, 97.88, 95.53, 85.64, 74.86, 59.23, 55.45, 57.48, 58.42, 55.74, 45.38, 41.16, 38.56, 42.03, 59.0, 64.6, 84.52, 118.23, 123.63, 147.56, 221.56, 144.54, 147.11, 130.82, 91.84, 97.1, 116.55, 152.03, 129.51, 94.1, 88.37, 112.8], "forecast_price": {"naive": [-2.18, -1.09, -0.25, -0.87, -1.72, -2.27, -2.76, -2.86, -2.74, -2.89, -2.19, -2.14, -0.08, 3.1, 15.73, 27.22, 18.69, 10.32, 4.38, -0.7, -0.08, 2.22, 6.5, 5.67, 9.51, 14.95, 27.09, 42.85, 53.17, 52.22, 54.29, 53.6, 76.02, 77.48, 78.51, 79.8, 78.93, 79.27, 78.29, 75.62, 67.91, 66.35, 70.54, 72.18, 75.87, 66.93, 67.99, 61.37], "lightgbm": [21.71, 21.69, 21.66, 17.03, 18.06, 16.66, 16.58, 16.02, 16.02, 17.04, 17.15, 19.04, 20.45, 20.19, 17.11, 22.12, 16.71, 15.64, 13.13, 12.88, 12.5, 12.24, 11.96, 10.25, 12.32, 13.34, 18.56, 23.49, 32.94, 35.55, 40.43, 44.76, 48.8, 60.46, 70.66, 83.93, 82.69, 82.69, 81.78, 76.39, 69.31, 68.13, 68.73, 65.98, 67.89, 63.68, 63.4, 61.83], "lstm": [61.34, 57.9, 51.69, 51.41, 43.3, 40.94, 39.09, 34.84, 35.42, 32.96, 32.02, 37.87, 43.62, 48.68, 50.16, 48.6, 44.83, 37.6, 32.34, 26.55, 26.86, 21.01, 19.55, 16.23, 16.65, 16.81, 18.43, 24.01, 21.41, 29.07, 32.72, 40.47, 51.35, 60.74, 78.42, 105.54, 92.86, 80.22, 73.89, 66.26, 63.79, 59.09, 60.24, 48.59, 58.75, 46.26, 49.51, 53.0]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -69.56, -139.63, -210.68, -242.85, -315.16, -315.16, -315.16, -315.16, -315.16, -315.16, -315.16, -315.16, -212.12, -89.77, 29.64, 136.68, 136.68, 136.68, 105.91, 105.91, 105.91, 105.91, 49.18, -2.27, -50.48, -103.01, -103.01, -103.01, -103.01, -103.01, -103.01, 81.44, 358.4, 539.07, 722.95, 722.95, 608.16, 486.78, 454.15, 644.19, 806.08, 792.9, 682.44, 823.45], "profit_aud": 823.45}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 1.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-81.65, -165.49, -89.31, -31.25, -38.21, -73.24, -144.29, -216.75, -289.05, -361.88, -369.93, -377.42, -385.04, -385.04, -289.98, -187.67, -84.63, 37.71, -81.7, -188.75, -282.33, -356.36, -321.7, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -393.55, -239.01, -54.56, 222.4, 403.07, 403.07, 403.07, 390.21, 268.84, 268.84, 268.84, 430.72, 430.72, 430.72, 430.72], "profit_aud": 430.72}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -33.22, -33.22, -103.29, -174.34, -246.8, -319.1, -319.1, -319.1, -244.26, -167.98, -79.88, -79.88, 22.43, 22.43, 22.43, 22.43, 22.43, -19.12, -93.16, -162.47, -234.32, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -307.34, -122.89, 154.07, 334.74, 518.62, 518.62, 518.62, 518.62, 518.62, 518.62, 518.62, 518.62, 518.62, 518.62], "profit_aud": 518.62}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -72.45, -144.76, -217.59, -298.07, -331.3, -331.3, -243.2, -148.13, -45.82, 57.21, 57.21, 57.21, 57.21, 57.21, 57.21, 26.44, -45.41, -118.44, -188.12, -244.84, -198.53, -246.73, -246.73, -246.73, -246.73, -246.73, -246.73, -92.19, 92.26, 369.22, 549.89, 549.89, 549.89, 549.89, 549.89, 549.89, 359.85, 505.54, 387.91, 387.91, 514.82], "profit_aud": 514.82}}} \ No newline at end of file diff --git a/results/daily/2026-06-21.json b/results/daily/2026-06-21.json new file mode 100644 index 0000000..21a24ca --- /dev/null +++ b/results/daily/2026-06-21.json @@ -0,0 +1 @@ +{"date": "2026-06-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [114.36, 98.64, 92.77, 99.93, 88.9, 98.21, 99.93, 98.04, 91.71, 88.23, 86.53, 84.35, 92.34, 94.27, 98.32, 115.86, 138.78, 157.51, 111.52, 76.79, 102.84, 125.4, 128.04, 101.35, 83.56, 93.53, 93.16, 96.02, 104.53, 112.13, 145.64, 109.98, 176.28, 210.19, 266.5, 314.03, 316.83, 429.67, 322.61, 8688.62, 4322.57, 655.36, 678.44, 909.36, 780.17, 308.73, 381.25, 442.53], "forecast_price": {"naive": [65.32, 67.08, 60.94, 59.86, 55.65, 56.06, 56.84, 57.96, 57.84, 58.26, 64.38, 59.88, 61.02, 70.48, 76.05, 81.84, 82.43, 97.88, 95.53, 85.64, 74.86, 59.23, 55.45, 57.48, 58.42, 55.74, 45.38, 41.16, 38.56, 42.03, 59.0, 64.6, 84.52, 118.23, 123.63, 147.56, 221.56, 144.54, 147.11, 130.82, 91.84, 97.1, 116.55, 152.03, 129.51, 94.1, 88.37, 112.8], "lightgbm": [78.71, 79.91, 72.15, 69.38, 64.96, 61.46, 58.65, 57.57, 59.02, 59.63, 62.09, 59.76, 55.49, 58.15, 62.39, 63.65, 60.14, 57.82, 52.21, 46.61, 42.89, 38.02, 33.81, 33.68, 34.33, 33.51, 26.25, 24.99, 26.82, 32.19, 46.69, 55.86, 78.21, 101.42, 114.7, 127.18, 144.78, 126.12, 124.99, 117.63, 96.5, 95.26, 101.4, 106.65, 99.04, 84.24, 81.73, 90.43], "lstm": [124.55, 118.0, 110.83, 111.44, 100.92, 95.82, 93.36, 87.89, 82.58, 72.8, 77.92, 79.64, 77.44, 77.06, 83.53, 73.32, 72.38, 61.88, 54.3, 43.62, 45.68, 39.31, 37.52, 35.11, 34.63, 28.61, 29.4, 32.36, 38.14, 42.09, 49.65, 59.67, 69.78, 96.51, 120.65, 155.13, 154.85, 131.4, 114.13, 108.35, 104.47, 92.36, 86.76, 74.28, 82.61, 72.7, 73.13, 84.85]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -111.12, -111.12, -111.12, -111.12, -162.02, -272.31, -380.48, -485.91, -485.91, -485.91, -485.91, -341.08, -167.6, 29.29, 29.29, -66.7, -81.1, 75.66, 235.7, 179.45, 75.0, -41.91, -158.36, -278.38, -278.38, -278.38, -114.53, -252.0, -252.0, -252.0, -252.0, -252.0, -252.0, 231.38, -171.89, 10688.89, 16092.1, 16092.1, 16092.1, 17228.8, 18204.01, 17818.1, 17764.73, 18317.89], "profit_aud": 18317.89}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -111.12, -233.89, -358.81, -413.22, -527.85, -527.85, -527.85, -527.85, -527.85, -527.85, -527.85, -527.85, -354.37, -157.49, -18.09, 77.89, 77.89, 77.89, 6.83, 6.83, 6.83, 6.83, -109.62, -229.64, -360.3, -500.46, -500.46, -500.46, -500.46, -500.46, -500.46, -107.92, 288.12, 825.21, 1228.47, 1228.47, -4174.74, -4993.94, -5183.9, -4047.2, -3071.99, -3115.21, -3591.77, -3038.6], "profit_aud": -3038.6}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -115.43, -115.43, -115.43, 14.92, 14.92, 14.92, 14.92, 14.92, 14.92, 14.92, 14.92, 14.92, 14.92, -36.99, -153.44, -273.46, -404.12, -544.28, -544.28, -544.28, -544.28, -544.28, -544.28, -151.74, 244.3, 781.39, 1184.65, 1184.65, 1184.65, 365.45, 365.45, 1388.48, 1388.48, 1388.48, 1388.48, 1388.48], "profit_aud": 1388.48}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -110.29, -110.29, -110.29, -110.29, -110.29, 0.32, 0.32, 0.32, 0.32, 0.32, 0.32, 0.32, 0.32, 0.32, -55.92, -160.37, -277.28, -393.74, -513.76, -513.76, -513.76, -513.76, -513.76, -513.76, -513.76, -180.63, 211.91, 607.95, 1145.04, 1145.04, 1145.04, 1145.04, 1145.04, 1145.04, 8.34, 886.03, 500.12, 446.74, 999.91], "profit_aud": 999.91}}} \ No newline at end of file diff --git a/results/daily/2026-06-22.json b/results/daily/2026-06-22.json new file mode 100644 index 0000000..93f5e4d --- /dev/null +++ b/results/daily/2026-06-22.json @@ -0,0 +1 @@ +{"date": "2026-06-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [303.95, 353.68, 371.97, 383.6, 385.28, 336.98, 356.9, 351.95, 343.3, 422.08, 373.14, 555.58, 1727.12, 2247.63, 12713.28, 20300.0, 3835.63, 342.49, 286.62, 237.05, 264.84, 226.41, 219.18, 281.65, 300.5, 301.68, 312.01, 309.66, 559.16, 542.22, 501.78, 576.57, 652.58, 524.63, 384.33, 379.63, 406.44, 316.89, 312.93, 299.88, 295.05, 295.0, 286.82, 227.49, 220.96, 217.84, 215.19, 265.31], "forecast_price": {"naive": [114.36, 98.64, 92.77, 99.93, 88.9, 98.21, 99.93, 98.04, 91.71, 88.23, 86.53, 84.35, 92.34, 94.27, 98.32, 115.86, 138.78, 157.51, 111.52, 76.79, 102.84, 125.4, 128.04, 101.35, 83.56, 93.53, 93.16, 96.02, 104.53, 112.13, 145.64, 109.98, 176.28, 210.19, 266.5, 314.03, 316.83, 429.67, 322.61, 8688.62, 4322.57, 655.36, 678.44, 909.36, 780.17, 308.73, 381.25, 442.53], "lightgbm": [109.11, 102.88, 94.77, 95.59, 89.13, 91.5, 91.5, 91.5, 87.35, 86.62, 90.32, 89.94, 95.16, 107.99, 112.66, 116.18, 132.9, 115.55, 78.01, 60.16, 67.75, 53.64, 45.94, 55.36, 51.45, 55.31, 57.14, 55.29, 52.99, 57.37, 52.5, 68.35, 88.92, 104.35, 163.88, 154.87, 166.64, 154.22, 142.88, 146.45, 143.41, 139.29, 140.31, 131.97, 131.89, 128.39, 131.32, 130.49], "lstm": [301.73, 305.21, 285.05, 283.57, 293.0, 236.8, 269.28, 238.97, 237.23, 248.92, 249.69, 276.83, 309.71, 327.85, 348.22, 368.73, 353.04, 270.44, 226.63, 217.29, 172.21, 159.66, 146.17, 135.51, 122.23, 124.92, 124.71, 104.94, 127.39, 131.51, 147.47, 181.06, 206.64, 263.09, 345.5, 423.39, 406.64, 377.82, 333.48, 323.72, 306.67, 258.64, 261.94, 203.77, 256.6, 197.84, 194.61, 212.46]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 1.62, 1.62, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-379.94, -576.23, -576.23, -576.23, -576.23, -997.45, -997.45, -1437.39, -1866.51, -1391.68, -1858.1, -1858.1, -1858.1, 951.44, 16843.03, 42218.03, 47012.57, 47012.57, 47012.57, 46716.25, 46385.2, 46102.19, 45828.21, 45671.9, 45671.9, 45671.9, 45671.9, 45671.9, 46370.85, 47048.61, 47048.61, 47769.32, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48585.04, 48554.54, 48285.56, 48617.2], "profit_aud": 48617.2}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -481.6, -481.6, -481.6, -481.6, -672.13, -1199.73, -1666.15, -2360.63, -2360.63, -2360.63, -2360.63, 23014.37, 27808.91, 28237.03, 28237.03, 27940.71, 27903.63, 28186.65, 28460.63, 28304.31, 27928.68, 27551.59, 27161.57, 26774.5, 26774.5, 26774.5, 27339.01, 26618.3, 26618.3, 26618.3, 26618.3, 26618.3, 26618.3, 26974.8, 26583.64, 26958.49, 27327.3, 27327.3, 27327.3, 27611.67, 27887.87, 27615.57, 27585.44, 27917.08], "profit_aud": 27917.08}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 1.62, 2.75, 2.75, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -481.6, -481.6, -481.6, -481.6, -910.72, -1438.32, -1645.41, -2339.89, -2339.89, -2339.89, 13551.71, 38926.71, 43721.24, 44149.36, 44149.36, 43853.05, 44150.99, 44025.33, 43751.35, 43751.35, 43375.73, 43375.73, 43375.73, 43375.73, 42676.78, 42676.78, 42049.55, 42049.55, 42049.55, 42049.55, 42529.96, 43004.51, 43512.56, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67, 43908.67], "profit_aud": 43908.67}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -421.22, -421.22, -861.16, -1290.28, -1817.88, -2024.97, -2024.97, -2024.97, 784.57, 16676.17, 42051.17, 46845.7, 46845.7, 46845.7, 46845.7, 46845.7, 46845.7, 46845.7, 46845.7, 46470.07, 46092.97, 45702.96, 45315.89, 45005.55, 45005.55, 45005.55, 45005.55, 45005.55, 45005.55, 45485.97, 45960.51, 46468.57, 46864.68, 46864.68, 46864.68, 46864.68, 46864.68, 46864.68, 46580.32, 46828.9, 46828.9, 46828.9, 46828.9], "profit_aud": 46828.9}}} \ No newline at end of file diff --git a/results/daily/2026-06-23.json b/results/daily/2026-06-23.json new file mode 100644 index 0000000..959dbb4 --- /dev/null +++ b/results/daily/2026-06-23.json @@ -0,0 +1 @@ +{"date": "2026-06-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [287.42, 244.77, 213.1, 217.86, 227.35, 227.35, 231.14, 239.02, 253.48, 227.35, 253.48, 265.49, 265.94, 288.58, 306.52, 307.11, 307.7, 336.74, 306.05, 293.85, 295.94, 295.44, 259.76, 249.73, 212.64, 175.98, 164.46, 151.92, 143.3, 143.43, 139.63, 137.22, 247.06, 339.84, 383.67, 477.05, 513.27, 481.29, 489.54, 404.8, 400.31, 351.34, 317.06, 352.91, 372.19, 344.86, 256.44, 299.44], "forecast_price": {"naive": [303.95, 353.68, 371.97, 383.6, 385.28, 336.98, 356.9, 351.95, 343.3, 422.08, 373.14, 555.58, 1727.12, 2247.63, 12713.28, 20300.0, 3835.63, 342.49, 286.62, 237.05, 264.84, 226.41, 219.18, 281.65, 300.5, 301.68, 312.01, 309.66, 559.16, 542.22, 501.78, 576.57, 652.58, 524.63, 384.33, 379.63, 406.44, 316.89, 312.93, 299.88, 295.05, 295.0, 286.82, 227.49, 220.96, 217.84, 215.19, 265.31], "lightgbm": [208.87, 209.35, 203.35, 192.5, 189.0, 185.21, 185.21, 185.21, 185.21, 178.55, 170.97, 180.19, 198.93, 205.14, 205.96, 205.96, 205.96, 170.07, 140.71, 116.3, 109.65, 88.13, 76.27, 80.34, 77.35, 82.37, 82.37, 80.08, 80.07, 83.94, 114.48, 141.79, 212.1, 251.61, 280.76, 297.41, 306.92, 274.7, 264.81, 259.57, 256.38, 248.16, 243.13, 181.66, 178.24, 173.16, 173.16, 205.86], "lstm": [189.53, 179.26, 188.02, 165.72, 155.83, 148.41, 157.25, 152.08, 153.38, 140.86, 154.69, 167.8, 214.04, 224.49, 256.02, 284.14, 244.68, 200.97, 183.18, 147.76, 142.11, 111.21, 103.2, 92.68, 86.13, 87.39, 83.77, 78.84, 88.77, 96.01, 110.33, 149.95, 179.68, 216.18, 296.38, 322.35, 295.13, 276.58, 268.81, 265.54, 237.84, 222.5, 221.05, 198.14, 196.45, 168.61, 164.59, 173.15]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -266.37, -538.7, -822.89, -1107.08, -1107.08, -1107.08, -948.66, -1232.84, -1232.84, -1232.84, -1232.84, -1232.84, -849.69, -465.8, -81.18, 339.75, 339.75, 339.75, 339.75, 339.75, 339.75, 339.75, 339.75, 339.75, 339.75, 255.43, 76.31, -102.98, -277.52, -449.04, -449.04, -449.04, -449.04, 147.28, 788.86, 1390.48, 2002.4, 2002.4, 2002.4, 2002.4, 1606.07, 1606.07, 2024.78, 2024.78, 1704.23, 2041.1], "profit_aud": 2041.1}, "naive": {"charge_mw": [2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 1.62, 1.62, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [-359.28, -495.13, -495.13, -495.13, -495.13, -779.32, -779.32, -1078.1, -1394.94, -1139.17, -1456.02, -1456.02, -1456.02, -1095.29, -712.14, -328.25, 56.38, 56.38, 56.38, -310.93, -680.86, -1050.16, -1374.87, -1513.47, -1513.47, -1513.47, -1513.47, -1513.47, -1334.35, -1155.06, -1155.06, -983.54, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -674.72, -723.0, -1043.55, -669.25], "profit_aud": -669.25}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -95.92, -95.92, -95.92, -380.11, -696.96, -1028.82, -1028.82, -1028.82, -645.66, -261.77, 122.85, 122.85, 122.85, 122.85, 122.85, 122.85, -201.85, -340.46, -606.26, -606.26, -606.26, -796.16, -975.28, -975.28, -975.28, -975.28, -975.28, -975.28, -495.7, 100.62, 742.21, 1343.82, 1343.82, 1343.82, 1343.82, 1343.82, 1343.82, 1343.82, 1343.82, 1295.54, 974.99, 1349.29], "profit_aud": 1349.29}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -284.19, -284.19, -582.97, -899.81, -1184.0, -1324.68, -1324.68, -1324.68, -963.95, -580.8, -196.91, 187.71, 187.71, 187.71, 187.71, 187.71, 187.71, 187.71, 187.71, -78.09, -298.06, -503.64, -693.54, -773.07, -773.07, -773.07, -773.07, -773.07, -773.07, -293.48, 302.83, 944.42, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03, 1546.03], "profit_aud": 1546.03}}} \ No newline at end of file diff --git a/results/daily/2026-06-24.json b/results/daily/2026-06-24.json new file mode 100644 index 0000000..c9b0bb9 --- /dev/null +++ b/results/daily/2026-06-24.json @@ -0,0 +1 @@ +{"date": "2026-06-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [299.44, 301.54, 304.25, 328.39, 341.7, 303.72, 357.72, 354.89, 387.3, 439.56, 375.87, 396.71, 472.4, 675.46, 598.03, 575.4, 540.84, 467.46, 341.84, 318.84, 325.67, 267.73, 309.17, 245.62, 308.72, 310.82, 305.06, 286.56, 298.39, 307.82, 360.27, 511.98, 586.21, 367.97, 398.81, 350.16, 320.4, 267.06, 226.57, 177.25, 160.3, 165.24, 160.29, 138.64, 140.72, 127.72, 126.67, 115.44], "forecast_price": {"naive": [287.42, 244.77, 213.1, 217.86, 227.35, 227.35, 231.14, 239.02, 253.48, 227.35, 253.48, 265.49, 265.94, 288.58, 306.52, 307.11, 307.7, 336.74, 306.05, 293.85, 295.94, 295.44, 259.76, 249.73, 212.64, 175.98, 164.46, 151.92, 143.3, 143.43, 139.63, 137.22, 247.06, 339.84, 383.67, 477.05, 513.27, 481.29, 489.54, 404.8, 400.31, 351.34, 317.06, 352.91, 372.19, 344.86, 256.44, 299.44], "lightgbm": [195.85, 200.69, 192.26, 172.24, 162.82, 165.21, 165.21, 160.8, 155.52, 159.81, 159.59, 164.85, 188.1, 203.0, 203.0, 203.0, 203.0, 201.55, 187.17, 181.55, 161.99, 147.68, 133.32, 119.63, 122.56, 118.83, 108.8, 105.45, 96.21, 103.52, 109.64, 128.13, 176.16, 212.52, 217.92, 211.83, 214.48, 212.54, 210.64, 215.43, 215.43, 212.38, 207.4, 195.79, 194.83, 194.83, 178.46, 194.84], "lstm": [245.29, 235.0, 242.93, 208.07, 191.3, 177.22, 179.98, 173.93, 157.79, 166.89, 175.44, 195.38, 230.78, 219.93, 239.14, 281.33, 240.84, 208.83, 179.32, 156.14, 130.14, 110.42, 99.96, 91.18, 84.83, 79.89, 84.76, 74.47, 84.63, 95.73, 115.9, 141.56, 175.28, 227.47, 296.29, 330.72, 336.17, 316.05, 316.02, 292.81, 276.37, 262.99, 253.94, 210.54, 218.5, 183.64, 185.49, 196.47]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-374.3, -751.22, -1131.53, -1313.78, -1313.78, -1693.43, -1693.43, -1693.43, -1693.43, -1198.93, -1668.77, -1668.77, -1668.77, -824.45, -76.92, 642.33, 1318.38, 1318.38, 1318.38, 1318.38, 1318.38, 983.72, 983.72, 676.69, 676.69, 676.69, 507.38, 149.18, -223.8, -223.8, -223.8, 416.17, 1148.94, 1608.9, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41, 2107.41], "profit_aud": 2107.41}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, -380.31, -790.79, -1217.91, -1597.56, -1597.56, -1597.56, -1355.5, -1904.95, -1904.95, -1904.95, -1904.95, -1904.95, -1157.41, -438.17, 237.88, 822.21, 822.21, 822.21, 822.21, 822.21, 822.21, 822.21, 822.21, 822.21, 822.21, 663.17, 290.18, -94.6, -544.94, -1184.91, -1184.91, -1184.91, -1184.91, -747.21, -346.71, -12.89, 270.32, 270.32, 270.32, 270.32, 69.96, 69.96, 228.28, 228.28, 69.94, 199.81], "profit_aud": 199.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -189.64, -189.64, -189.64, -633.25, -1117.38, -1666.83, -2136.66, -2136.66, -2136.66, -1292.35, -544.81, 174.43, 850.48, 850.48, 850.48, 850.48, 850.48, 850.48, 850.48, 850.48, 850.48, 850.48, 469.16, 110.96, -262.02, -646.8, -846.75, -846.75, -846.75, -846.75, -348.24, -348.24, 52.26, 52.26, 52.26, 273.82, 474.19, 474.19, 474.19, 474.19, 474.19, 474.19, 474.19, 474.19], "profit_aud": 474.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -168.56, -168.56, -612.17, -1096.3, -1645.75, -2115.59, -2115.59, -1525.08, -1525.08, -777.55, -58.3, 617.75, 617.75, 617.75, 617.75, 617.75, 617.75, 617.75, 617.75, 446.41, 57.88, -323.43, -681.63, -1054.62, -1054.62, -1054.62, -1054.62, -1054.62, -1054.62, -1054.62, -616.92, -216.42, 117.4, 400.61, 400.61, 400.61, 400.61, 400.61, 400.61, 400.61, 400.61, 400.61, 400.61], "profit_aud": 400.61}}} \ No newline at end of file diff --git a/results/daily/2026-06-25.json b/results/daily/2026-06-25.json new file mode 100644 index 0000000..89219bf --- /dev/null +++ b/results/daily/2026-06-25.json @@ -0,0 +1 @@ +{"date": "2026-06-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [119.24, 117.19, 116.04, 129.19, 123.83, 126.5, 111.25, 120.53, 130.6, 141.15, 142.3, 152.57, 155.49, 130.36, 141.98, 145.72, 148.31, 120.68, 107.64, 105.82, 120.42, 119.04, 118.89, 110.0, 106.5, 98.94, 102.03, 102.24, 99.45, 105.42, 115.64, 129.44, 170.92, 199.04, 194.18, 170.59, 177.1, 155.5, 160.95, 150.91, 160.58, 142.92, 125.24, 125.07, 123.88, 112.53, 99.42, 99.84], "forecast_price": {"naive": [299.44, 301.54, 304.25, 328.39, 341.7, 303.72, 357.72, 354.89, 387.3, 439.56, 375.87, 396.71, 472.4, 675.46, 598.03, 575.4, 540.84, 467.46, 341.84, 318.84, 325.67, 267.73, 309.17, 245.62, 308.72, 310.82, 305.06, 286.56, 298.39, 307.82, 360.27, 511.98, 586.21, 367.97, 398.81, 350.16, 320.4, 267.06, 226.57, 177.25, 160.3, 165.24, 160.29, 138.64, 140.72, 127.72, 126.67, 115.44], "lightgbm": [176.24, 176.24, 171.13, 168.1, 167.63, 168.09, 168.08, 168.08, 168.08, 161.99, 163.93, 166.79, 172.49, 185.56, 185.56, 185.56, 185.56, 167.95, 161.93, 157.0, 139.88, 113.56, 97.68, 90.56, 105.25, 106.7, 107.11, 107.11, 106.46, 110.97, 116.82, 122.43, 159.04, 180.51, 182.8, 183.07, 183.07, 172.08, 153.49, 147.78, 139.74, 135.76, 132.45, 123.56, 122.93, 110.31, 110.31, 106.76], "lstm": [94.45, 85.48, 86.29, 71.86, 65.65, 64.9, 63.35, 58.86, 59.64, 53.78, 62.82, 71.13, 102.08, 105.4, 126.11, 165.92, 136.01, 112.62, 113.23, 83.15, 78.09, 58.02, 57.63, 46.23, 48.8, 45.53, 46.29, 55.01, 56.99, 71.22, 86.18, 110.45, 136.99, 163.41, 217.89, 239.6, 221.19, 194.53, 208.19, 198.3, 157.38, 165.29, 154.12, 137.41, 128.0, 106.53, 109.46, 111.11]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-149.05, -295.54, -440.59, -440.59, -440.59, -440.59, -579.64, -646.54, -646.54, -646.54, -646.54, -455.83, -261.47, -261.47, -261.47, -79.33, 106.06, 106.06, 90.99, -41.28, 109.24, 109.24, 109.24, 109.24, 109.24, -14.44, -141.97, -269.77, -394.08, -452.59, -452.59, -452.59, -238.94, 9.86, 252.58, 252.58, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96, 473.96], "profit_aud": 473.96}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-149.05, -295.54, -440.59, -512.28, -512.28, -670.4, -670.4, -670.4, -670.4, -511.61, -689.48, -689.48, -689.48, -526.53, -349.06, -166.92, 18.47, 18.47, 18.47, 18.47, 18.47, -130.33, -130.33, -267.83, -267.83, -267.83, -324.46, -452.26, -576.57, -576.57, -576.57, -414.77, -201.12, 47.68, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4, 290.4], "profit_aud": 290.4}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -176.44, -354.32, -545.02, -545.02, -545.02, -420.79, -238.65, -53.27, -53.27, -53.27, -53.27, -53.27, -53.27, -201.88, -339.38, -472.51, -527.43, -527.43, -527.43, -651.74, -651.74, -651.74, -651.74, -651.74, -402.94, -160.22, 53.02, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4, 274.4], "profit_aud": 274.4}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -61.74, -212.4, -375.65, -552.09, -729.96, -729.96, -729.96, -729.96, -552.49, -370.35, -184.96, -184.96, -50.41, -50.41, -50.41, -50.41, -50.41, -187.92, -321.05, -444.73, -572.26, -629.01, -629.01, -629.01, -629.01, -629.01, -629.01, -629.01, -386.29, -173.05, 48.33, 48.33, 249.51, 249.51, 249.51, 249.51, 249.51, 249.51, 249.51, 249.51, 249.51, 249.51], "profit_aud": 249.51}}} \ No newline at end of file diff --git a/results/daily/2026-06-26.json b/results/daily/2026-06-26.json new file mode 100644 index 0000000..85ed621 --- /dev/null +++ b/results/daily/2026-06-26.json @@ -0,0 +1 @@ +{"date": "2026-06-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [97.71, 98.87, 95.28, 100.63, 102.63, 95.74, 100.15, 85.37, 92.4, 100.78, 112.71, 106.79, 129.87, 131.45, 151.08, 163.65, 166.56, 168.69, 169.51, 165.22, 165.27, 168.15, 174.87, 130.54, 124.85, 107.9, 129.27, 150.75, 128.21, 147.67, 157.79, 186.85, 201.06, 193.98, 172.57, 164.69, 183.9, 181.04, 173.94, 180.95, 174.15, 189.11, 197.31, 193.89, 179.87, 151.08, 152.34, 147.76], "forecast_price": {"naive": [119.24, 117.19, 116.04, 129.19, 123.83, 126.5, 111.25, 120.53, 130.6, 141.15, 142.3, 152.57, 155.49, 130.36, 141.98, 145.72, 148.31, 120.68, 107.64, 105.82, 120.42, 119.04, 118.89, 110.0, 106.5, 98.94, 102.03, 102.24, 99.45, 105.42, 115.64, 129.44, 170.92, 199.04, 194.18, 170.59, 177.1, 155.5, 160.95, 150.91, 160.58, 142.92, 125.24, 125.07, 123.88, 112.53, 99.42, 99.84], "lightgbm": [111.64, 111.64, 80.7, 71.54, 68.71, 68.01, 71.69, 67.34, 70.38, 75.19, 84.18, 87.86, 101.43, 112.73, 117.47, 119.73, 115.91, 94.53, 88.95, 86.07, 85.68, 83.7, 70.47, 70.69, 68.16, 67.72, 71.1, 81.57, 81.57, 87.65, 89.15, 101.53, 129.96, 157.59, 160.9, 153.46, 158.74, 149.02, 147.65, 146.28, 141.81, 135.99, 119.41, 112.13, 111.55, 103.23, 94.93, 94.93], "lstm": [76.12, 70.32, 66.06, 55.11, 51.61, 49.22, 43.89, 43.79, 40.15, 38.2, 46.49, 57.0, 82.32, 90.14, 101.85, 133.93, 112.79, 92.88, 91.88, 67.13, 56.31, 46.51, 37.96, 33.13, 32.15, 28.47, 28.08, 32.01, 38.77, 50.21, 53.9, 77.18, 96.28, 130.5, 166.16, 197.34, 177.13, 167.42, 167.32, 162.31, 136.82, 142.67, 136.69, 119.1, 121.17, 106.93, 100.51, 98.7]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 0.5, 1.62, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 3.62, 3.62, 3.62, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-54.23, -54.23, -173.32, -173.32, -173.32, -292.99, -292.99, -399.7, -515.2, -515.2, -515.2, -515.2, -515.2, -515.2, -515.2, -515.2, -515.2, -304.33, -92.45, -92.45, -92.45, 117.74, 336.33, 173.16, 17.1, -117.77, -279.36, -185.14, -345.4, -345.4, -345.4, -345.4, -94.08, 148.39, 148.39, -57.48, -57.48, -57.48, -57.48, -57.48, -57.48, 155.27, 401.91, 644.28, 644.28, 644.28, 644.28, 644.28], "profit_aud": 644.28}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-122.14, -245.73, -364.82, -364.82, -364.82, -364.82, -490.0, -537.38, -537.38, -537.38, -537.38, -403.9, -241.56, -241.56, -241.56, -37.0, 171.2, 171.2, 147.47, -59.05, 147.54, 147.54, 147.54, 147.54, 147.54, 12.67, -148.91, -337.35, -497.61, -579.57, -579.57, -579.57, -328.25, -85.78, 129.94, 129.94, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81, 359.81], "profit_aud": 359.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -55.85, -184.13, -303.8, -303.8, -410.51, -526.01, -526.01, -526.01, -526.01, -526.01, -361.7, -172.86, 31.7, 239.91, 239.91, 239.91, 239.91, 239.91, 239.91, 21.32, -141.85, -297.92, -432.79, -504.53, -504.53, -504.53, -504.53, -504.53, -504.53, -504.53, -262.06, -46.35, 159.52, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39, 389.39], "profit_aud": 389.39}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -125.18, -231.89, -347.39, -473.36, -535.92, -535.92, -535.92, -535.92, -347.08, -142.52, 65.69, 276.56, 276.56, 276.56, 276.56, 276.56, 276.56, 204.11, 48.04, -86.83, -248.41, -436.84, -436.84, -436.84, -436.84, -436.84, -436.84, -436.84, -436.84, -230.98, -1.11, 225.19, 442.62, 442.62, 442.62, 442.62, 442.62, 442.62, 442.62, 442.62, 442.62, 442.62], "profit_aud": 442.62}}} \ No newline at end of file diff --git a/results/daily/2026-06-27.json b/results/daily/2026-06-27.json new file mode 100644 index 0000000..d5af0fc --- /dev/null +++ b/results/daily/2026-06-27.json @@ -0,0 +1 @@ +{"date": "2026-06-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [139.26, 137.45, 129.17, 125.4, 120.2, 114.23, 115.88, 113.67, 105.85, 109.1, 116.68, 117.65, 109.74, 113.9, 125.41, 141.39, 145.83, 119.82, 103.48, 103.6, 99.34, 97.22, 95.83, 93.13, 85.26, 82.5, 85.74, 86.64, 88.12, 91.91, 98.48, 100.93, 106.0, 111.37, 102.22, 102.65, 101.0, 97.14, 90.14, 85.96, 79.48, 72.84, 69.82, 64.4, 69.0, 73.17, 75.65, 70.58], "forecast_price": {"naive": [97.71, 98.87, 95.28, 100.63, 102.63, 95.74, 100.15, 85.37, 92.4, 100.78, 112.71, 106.79, 129.87, 131.45, 151.08, 163.65, 166.56, 168.69, 169.51, 165.22, 165.27, 168.15, 174.87, 130.54, 124.85, 107.9, 129.27, 150.75, 128.21, 147.67, 157.79, 186.85, 201.06, 193.98, 172.57, 164.69, 183.9, 181.04, 173.94, 180.95, 174.15, 189.11, 197.31, 193.89, 179.87, 151.08, 152.34, 147.76], "lightgbm": [97.15, 97.15, 91.68, 88.95, 89.28, 83.59, 85.6, 80.2, 81.65, 84.74, 89.48, 85.66, 96.03, 98.21, 102.11, 101.57, 100.64, 99.68, 92.38, 81.06, 79.19, 75.0, 73.8, 71.5, 70.83, 69.25, 71.36, 73.08, 66.52, 76.75, 79.84, 92.52, 108.66, 130.49, 128.18, 124.91, 155.2, 133.37, 127.33, 132.25, 125.91, 126.04, 126.35, 117.58, 116.36, 106.89, 106.06, 107.43], "lstm": [139.63, 131.18, 126.89, 114.12, 103.4, 96.89, 94.27, 92.63, 82.14, 77.69, 79.03, 89.67, 94.95, 101.12, 109.6, 116.97, 104.2, 94.95, 87.4, 66.96, 56.74, 44.36, 40.75, 35.72, 29.74, 30.86, 35.06, 36.89, 41.48, 46.2, 57.49, 74.19, 101.14, 139.24, 179.98, 194.68, 196.35, 180.78, 171.42, 161.21, 144.57, 150.88, 146.52, 129.13, 126.17, 115.99, 117.74, 118.68]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -132.31, -268.69, -268.69, -268.69, -405.86, -405.86, -296.13, -119.39, 62.9, 62.9, 62.9, 62.9, 62.9, 62.9, 62.9, 62.9, -43.68, -146.81, -253.98, -362.29, -411.19, -411.19, -411.19, -411.19, -278.69, -139.48, -11.71, 116.6, 116.6, 116.6, 116.6, 116.6, 116.6, 116.6, 116.6, 36.11, 36.11, 36.11, 121.21, 121.21], "profit_aud": 121.21}, "naive": {"charge_mw": [1.11, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.5, 0.5, 1.62, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 3.62, 3.62, 3.62, 3.62, 3.62, 3.62, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-77.29, -77.29, -238.75, -238.75, -238.75, -381.54, -381.54, -523.62, -655.93, -655.93, -655.93, -655.93, -655.93, -655.93, -655.93, -655.93, -655.93, -506.16, -376.81, -376.81, -376.81, -255.28, -135.49, -251.89, -358.47, -461.6, -568.77, -514.62, -624.77, -624.77, -624.77, -624.77, -492.27, -353.06, -353.06, -481.37, -481.37, -481.37, -481.37, -481.37, -481.37, -399.42, -312.15, -231.66, -231.66, -231.66, -231.66, -231.66], "profit_aud": -231.66}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -142.79, -207.1, -349.18, -481.49, -617.87, -617.87, -617.87, -617.87, -617.87, -461.11, -284.37, -102.09, 47.69, 47.69, 47.69, 47.69, 47.69, 47.69, -4.0, -110.57, -213.7, -320.88, -320.88, -431.03, -431.03, -431.03, -431.03, -431.03, -291.81, -291.81, -291.81, -165.57, -44.14, -44.14, 63.31, 63.31, 63.31, 63.31, 63.31, 63.31, 63.31, 63.31, 63.31], "profit_aud": 63.31}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -132.31, -268.69, -414.54, -561.6, -561.6, -476.17, -319.41, -142.67, 39.61, 39.61, 39.61, 39.61, 39.61, 39.61, 39.61, -76.79, -183.37, -286.5, -393.67, -441.76, -441.76, -441.76, -441.76, -441.76, -441.76, -441.76, -313.99, -185.68, -59.43, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99, 61.99], "profit_aud": 61.99}}} \ No newline at end of file diff --git a/results/daily/2026-06-28.json b/results/daily/2026-06-28.json new file mode 100644 index 0000000..a9b65e3 --- /dev/null +++ b/results/daily/2026-06-28.json @@ -0,0 +1 @@ +{"date": "2026-06-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [73.75, 77.59, 74.73, 78.42, 75.35, 70.26, 69.92, 68.42, 63.97, 63.52, 64.26, 71.36, 69.29, 73.15, 80.4, 77.64, 79.05, 73.66, 67.9, 61.64, 60.72, 58.28, 57.93, 56.46, 56.13, 53.76, 55.03, 53.81, 54.36, 60.87, 62.64, 94.71, 100.45, 101.91, 100.72, 93.66, 85.11, 80.5, 78.96, 78.2, 78.1, 74.24, 68.93, 66.7, 64.4, 53.15, 37.44, 39.86], "forecast_price": {"naive": [139.26, 137.45, 129.17, 125.4, 120.2, 114.23, 115.88, 113.67, 105.85, 109.1, 116.68, 117.65, 109.74, 113.9, 125.41, 141.39, 145.83, 119.82, 103.48, 103.6, 99.34, 97.22, 95.83, 93.13, 85.26, 82.5, 85.74, 86.64, 88.12, 91.91, 98.48, 100.93, 106.0, 111.37, 102.22, 102.65, 101.0, 97.14, 90.14, 85.96, 79.48, 72.84, 69.82, 64.4, 69.0, 73.17, 75.65, 70.58], "lightgbm": [109.17, 111.39, 105.24, 101.69, 98.91, 96.06, 96.47, 94.07, 89.69, 90.8, 93.04, 92.33, 93.87, 97.89, 98.37, 99.68, 99.47, 95.37, 88.38, 80.07, 84.11, 79.07, 77.19, 78.15, 71.81, 73.69, 73.18, 72.75, 73.43, 77.37, 83.38, 90.53, 92.56, 110.27, 111.92, 114.05, 114.49, 113.44, 107.89, 104.1, 100.68, 89.78, 83.72, 75.59, 77.81, 80.24, 82.94, 77.88], "lstm": [43.64, 39.95, 35.17, 34.52, 29.89, 27.23, 25.2, 19.45, 16.46, 12.59, 16.91, 19.13, 22.74, 27.46, 33.72, 45.07, 41.7, 36.22, 38.82, 24.05, 17.84, 8.71, 10.72, 6.96, 4.17, 5.34, 3.49, 10.09, 19.78, 26.16, 28.35, 41.87, 58.13, 81.41, 105.96, 132.8, 132.75, 112.62, 107.44, 101.43, 83.22, 86.26, 84.3, 75.0, 67.99, 64.17, 57.79, 61.41]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -28.39, -108.36, -187.76, -268.08, -268.08, -268.08, -268.08, -167.59, -70.54, 28.27, 28.27, 28.27, 28.27, 28.27, 28.27, 28.27, 28.27, -2.88, -70.08, -138.87, -206.13, -274.08, -274.08, -274.08, -155.7, -30.13, 97.26, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15, 223.15], "profit_aud": 223.15}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -79.96, -159.37, -159.37, -159.37, -245.98, -245.98, -175.64, -78.59, 20.22, 20.22, 20.22, 20.22, 20.22, 20.22, 20.22, 20.22, -49.94, -117.14, -185.93, -253.19, -283.36, -283.36, -283.36, -283.36, -157.79, -30.41, 95.49, 212.57, 212.57, 212.57, 212.57, 212.57, 212.57, 212.57, 212.57, 129.19, 129.19, 129.19, 171.31, 171.31], "profit_aud": 171.31}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -79.96, -79.96, -79.96, -79.96, -79.96, -79.96, -79.96, 7.37, 7.37, 7.37, 7.37, 7.37, 7.37, 7.37, 7.37, 7.37, -62.79, -92.62, -161.42, -228.68, -296.62, -296.62, -296.62, -296.62, -296.62, -296.62, -170.73, -53.65, 52.74, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36, 153.36], "profit_aud": 153.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -37.97, -117.94, -197.34, -277.66, -366.87, -366.87, -366.87, -366.87, -269.82, -171.01, -78.94, 5.94, 5.94, 5.94, -66.92, -30.71, -101.29, -171.45, -238.65, -307.44, -307.44, -307.44, -307.44, -307.44, -307.44, -307.44, -307.44, -307.44, -190.37, -83.98, 16.65, 115.34, 115.34, 115.34, 115.34, 115.34, 115.34, 115.34, 115.34, 115.34, 115.34], "profit_aud": 115.34}}} \ No newline at end of file diff --git a/results/daily/2026-06-29.json b/results/daily/2026-06-29.json new file mode 100644 index 0000000..5ee816a --- /dev/null +++ b/results/daily/2026-06-29.json @@ -0,0 +1 @@ +{"date": "2026-06-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [42.68, 42.49, 41.08, 40.17, 39.86, 38.23, 30.56, 15.95, 19.95, 8.34, 19.59, 40.31, 57.55, 75.05, 80.24, 79.77, 93.61, 99.98, 106.76, 112.68, 125.64, 121.48, 115.95, 99.36, 100.98, 103.55, 101.04, 105.51, 147.05, 232.73, 214.5, 207.61, 287.78, 342.36, 457.78, 351.91, 376.08, 359.55, 319.39, 274.58, 236.95, 200.97, 195.02, 164.49, 149.74, 130.98, 129.2, 150.0], "forecast_price": {"naive": [73.75, 77.59, 74.73, 78.42, 75.35, 70.26, 69.92, 68.42, 63.97, 63.52, 64.26, 71.36, 69.29, 73.15, 80.4, 77.64, 79.05, 73.66, 67.9, 61.64, 60.72, 58.28, 57.93, 56.46, 56.13, 53.76, 55.03, 53.81, 54.36, 60.87, 62.64, 94.71, 100.45, 101.91, 100.72, 93.66, 85.11, 80.5, 78.96, 78.2, 78.1, 74.24, 68.93, 66.7, 64.4, 53.15, 37.44, 39.86], "lightgbm": [66.58, 66.58, 64.05, 62.45, 61.36, 61.71, 61.71, 61.71, 63.11, 63.48, 78.3, 81.61, 84.65, 88.74, 92.23, 89.79, 90.95, 87.07, 88.52, 84.37, 83.88, 79.99, 75.75, 75.75, 75.75, 75.75, 75.75, 75.75, 75.75, 76.04, 76.92, 96.67, 99.71, 106.11, 114.89, 116.3, 110.31, 108.87, 106.32, 106.32, 105.7, 97.89, 91.07, 82.73, 85.44, 82.43, 73.11, 73.22], "lstm": [31.15, 26.52, 21.36, 16.78, 15.69, 12.83, 10.39, 11.73, 8.91, 12.48, 15.73, 25.05, 34.93, 54.01, 61.99, 86.86, 80.94, 69.83, 70.53, 53.14, 46.22, 33.86, 35.51, 31.5, 25.73, 27.16, 26.54, 31.11, 33.95, 41.16, 45.77, 55.2, 67.47, 88.13, 109.69, 142.91, 123.32, 103.27, 95.71, 95.33, 82.75, 78.88, 75.88, 69.79, 63.07, 58.77, 59.55, 62.23]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.88, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -16.96, -36.9, -61.84, -72.27, -96.76, -96.76, -96.76, -96.76, -96.76, -96.76, -96.76, -96.76, -96.76, -96.76, 60.29, 212.15, 357.09, 232.88, 106.66, 63.68, -62.61, -62.61, -62.61, 199.21, 199.21, -60.3, -60.3, -60.3, 511.92, 951.81, 1421.9, 1871.34, 1871.34, 1871.34, 1871.34, 1871.34, 1871.34, 1871.34, 1871.34, 1853.01, 1691.51, 1879.01], "profit_aud": 1879.01}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -6.62, -31.56, -41.99, -66.47, -66.47, -66.47, -66.47, 33.83, 133.54, 250.56, 250.56, 250.56, 250.56, 250.56, 250.56, 250.56, 250.56, 194.51, 65.08, -61.21, -193.1, -376.92, -376.92, -376.92, -117.4, 242.32, 670.27, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49, 1242.49], "profit_aud": 1242.49}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -22.29, -72.12, -119.9, -158.11, -178.05, -178.05, -178.05, -178.05, -178.05, -178.05, -84.24, 16.06, 115.77, 232.79, 232.79, 232.79, 232.79, 232.79, 232.79, 87.85, -36.36, -162.58, -292.02, -348.09, -348.09, -348.09, -348.09, -348.09, -348.09, -348.09, -348.09, 224.13, 664.02, 1134.11, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55, 1583.55], "profit_aud": 1583.55}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -21.22, -59.42, -79.36, -104.3, -114.73, -114.73, -114.73, -114.73, -114.73, -114.73, -15.01, 102.0, 226.98, 360.43, 360.43, 360.43, 360.43, 360.43, 305.28, 179.06, 49.62, -76.67, -208.56, -208.56, -208.56, -208.56, -208.56, -208.56, -208.56, 363.66, 803.55, 1273.64, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08, 1723.08], "profit_aud": 1723.08}}} \ No newline at end of file diff --git a/results/daily/2026-06-30.json b/results/daily/2026-06-30.json new file mode 100644 index 0000000..835f885 --- /dev/null +++ b/results/daily/2026-06-30.json @@ -0,0 +1 @@ +{"date": "2026-06-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [133.72, 136.71, 123.21, 101.56, 106.66, 109.75, 106.94, 110.91, 119.29, 121.69, 130.6, 147.18, 132.53, 136.26, 135.25, 150.08, 155.92, 144.96, 139.73, 136.67, 118.46, 116.48, 135.83, 165.99, 174.03, 146.53, 200.8, 184.14, 159.79, 157.41, 145.97, 142.92, 120.48, 143.19, 139.66, 115.43, 105.12, 92.93, 87.23, 87.05, 83.0, 76.06, 49.13, 61.84, 60.23, 28.64, 18.46, 12.44], "forecast_price": {"naive": [42.68, 42.49, 41.08, 40.17, 39.86, 38.23, 30.56, 15.95, 19.95, 8.34, 19.59, 40.31, 57.55, 75.05, 80.24, 79.77, 93.61, 99.98, 106.76, 112.68, 125.64, 121.48, 115.95, 99.36, 100.98, 103.55, 101.04, 105.51, 147.05, 232.73, 214.5, 207.61, 287.78, 342.36, 457.78, 351.91, 376.08, 359.55, 319.39, 274.58, 236.95, 200.97, 195.02, 164.49, 149.74, 130.98, 129.2, 150.0], "lightgbm": [106.7, 105.04, 100.72, 95.67, 94.03, 92.73, 92.81, 87.22, 90.16, 93.66, 89.96, 98.4, 99.58, 115.22, 121.6, 121.6, 126.51, 121.64, 112.23, 109.85, 111.41, 103.58, 96.07, 83.94, 83.67, 83.67, 83.67, 83.98, 108.97, 136.17, 141.8, 136.62, 214.11, 315.02, 337.72, 308.69, 326.2, 326.2, 269.93, 253.4, 225.78, 205.31, 197.91, 149.39, 148.28, 133.62, 129.76, 144.69], "lstm": [130.81, 121.1, 118.39, 109.81, 101.84, 86.93, 87.08, 84.18, 85.03, 85.33, 90.26, 105.33, 115.85, 138.11, 151.0, 175.55, 176.27, 144.14, 137.3, 124.86, 110.68, 95.4, 88.16, 87.06, 79.9, 77.43, 81.56, 83.05, 87.05, 89.23, 102.56, 130.1, 150.67, 183.46, 219.69, 262.28, 225.31, 204.92, 174.43, 183.7, 158.26, 150.16, 147.18, 140.09, 127.66, 111.94, 110.59, 114.21]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -126.95, -260.28, -397.47, -531.15, -592.7, -592.7, -592.7, -592.7, -592.7, -592.7, -592.7, -592.7, -442.62, -247.72, -247.72, -247.72, -247.72, -395.79, -541.39, -541.39, -333.9, -116.36, -116.36, 134.63, 364.8, 364.8, 364.8, 364.8, 364.8, 214.2, 375.29, 375.29, 375.29, 375.29, 375.29, 375.29, 375.29, 375.29, 375.29, 313.89, 383.45, 383.45, 383.45, 383.45, 383.45], "profit_aud": 383.45}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 3.88, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -59.35, -197.99, -347.09, -499.2, -662.46, -662.46, -662.46, -662.46, -662.46, -662.46, -662.46, -662.46, -662.46, -662.46, -514.38, -368.79, -198.99, -406.49, -624.02, -684.83, -935.82, -935.82, -935.82, -758.74, -758.74, -937.39, -937.39, -937.39, -762.81, -618.53, -487.12, -370.96, -370.96, -370.96, -370.96, -370.96, -370.96, -370.96, -370.96, -374.97, -398.04, -382.5], "profit_aud": -382.5}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -137.19, -196.54, -335.17, -484.28, -484.28, -647.54, -647.54, -647.54, -647.54, -478.47, -290.87, -95.97, 85.23, 85.23, 85.23, 85.23, 85.23, 85.23, -122.26, -339.8, -522.96, -773.95, -876.15, -876.15, -876.15, -876.15, -876.15, -876.15, -697.16, -522.58, -522.58, -391.17, -275.01, -275.01, -275.01, -275.01, -275.01, -275.01, -275.01, -275.01, -275.01, -298.08, -284.09], "profit_aud": -284.09}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -137.19, -196.54, -335.17, -484.28, -636.39, -636.39, -636.39, -636.39, -636.39, -467.33, -279.72, -84.82, 96.38, 96.38, 96.38, 96.38, 96.38, 96.38, 96.38, -121.16, -304.32, -555.31, -785.48, -874.17, -874.17, -874.17, -874.17, -874.17, -874.17, -699.59, -555.3, -423.9, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74, -307.74], "profit_aud": -307.74}}} \ No newline at end of file diff --git a/results/daily/2026-07-01.json b/results/daily/2026-07-01.json new file mode 100644 index 0000000..3a2b72c --- /dev/null +++ b/results/daily/2026-07-01.json @@ -0,0 +1 @@ +{"date": "2026-07-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [13.12, 11.37, 12.5, 10.84, 14.98, 5.72, 4.79, 0.11, 0.0, -0.02, 3.4, 1.32, 16.64, 60.34, 70.82, 66.18, 63.79, 65.2, 54.8, 49.77, 52.76, 48.65, 49.26, 47.94, 49.68, 54.41, 51.1, 44.52, 45.9, 47.12, 40.93, 45.16, 58.94, 67.88, 58.98, 38.42, 43.31, 37.79, -2.16, 34.11, 18.62, -0.02, 0.86, -0.08, -0.09, 1.82, -1.52, -1.7], "forecast_price": {"naive": [133.72, 136.71, 123.21, 101.56, 106.66, 109.75, 106.94, 110.91, 119.29, 121.69, 130.6, 147.18, 132.53, 136.26, 135.25, 150.08, 155.92, 144.96, 139.73, 136.67, 118.46, 116.48, 135.83, 165.99, 174.03, 146.53, 200.8, 184.14, 159.79, 157.41, 145.97, 142.92, 120.48, 143.19, 139.66, 115.43, 105.12, 92.93, 87.23, 87.05, 83.0, 76.06, 49.13, 61.84, 60.23, 28.64, 18.46, 12.44], "lightgbm": [101.05, 102.02, 88.35, 70.58, 69.32, 64.48, 64.89, 64.48, 68.21, 68.81, 83.47, 92.4, 99.6, 115.0, 115.0, 116.07, 118.11, 108.7, 104.45, 90.15, 63.47, 58.7, 68.46, 70.8, 76.08, 74.24, 79.45, 78.41, 70.4, 76.15, 83.32, 102.53, 97.96, 140.48, 149.84, 132.2, 115.18, 110.73, 104.08, 100.92, 100.32, 89.81, 75.48, 72.68, 72.26, 61.45, 61.49, 59.26], "lstm": [26.47, 25.06, 17.35, 14.19, 13.47, 8.29, 4.87, 6.12, 6.48, 5.34, 10.41, 15.66, 23.12, 39.32, 47.41, 67.49, 66.73, 54.17, 53.83, 42.56, 40.74, 31.33, 33.14, 31.01, 21.93, 23.91, 21.75, 24.9, 28.01, 38.01, 38.17, 42.08, 53.79, 70.22, 82.19, 105.25, 101.42, 88.49, 86.73, 85.22, 70.4, 70.08, 65.67, 61.87, 54.11, 44.83, 45.31, 51.32]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 1.12, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25], "cumulative_profit_aud": [0.0, -1.59, -1.59, -15.14, 3.59, 3.59, 3.59, 3.45, 3.45, 3.47, 1.58, -0.07, -0.07, -0.07, 88.45, 171.17, 250.9, 332.41, 332.41, 332.41, 332.41, 325.6, 325.6, 265.67, 265.67, 333.69, 333.69, 278.03, 258.99, 258.99, 207.83, 151.38, 225.06, 309.91, 383.64, 335.61, 384.33, 384.33, 387.03, 425.41, 425.41, 425.43, 426.39, 426.49, 426.6, 428.87, 430.78, 432.9], "profit_aud": 432.9}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -13.55, -32.28, -39.44, -45.42, -45.48, -45.48, -45.48, -45.48, -45.48, -45.48, -45.48, -45.48, 20.69, 100.43, 100.43, 100.43, 100.43, 34.48, -26.33, -26.33, 33.59, 95.68, 95.68, 159.56, 215.21, 215.21, 215.21, 215.21, 215.21, 141.53, 217.9, 217.9, 217.9, 217.9, 217.9, 217.9, 217.9, 217.9, 217.9, 216.83, 216.74, 216.74, 216.74, 216.74, 216.74], "profit_aud": 216.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -7.16, -13.14, -13.28, -13.28, -13.27, -13.27, -13.27, -13.27, 62.16, 150.67, 233.39, 313.13, 313.13, 313.13, 313.13, 247.18, 186.37, 124.79, 64.86, 64.86, 64.86, 96.8, 96.8, 39.43, 39.43, 39.43, 39.43, 39.43, 124.28, 198.01, 246.03, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18, 300.18], "profit_aud": 300.18}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -3.18, -9.16, -9.3, -9.3, -9.28, -9.28, -9.28, -9.28, -9.28, -9.28, 73.44, 153.17, 234.68, 303.19, 303.19, 303.19, 303.19, 303.19, 303.19, 241.09, 173.08, 109.2, 53.55, 28.08, 28.08, 28.08, 28.08, 28.08, 28.08, 28.08, 76.11, 130.25, 177.48, 174.79, 174.79, 174.79, 174.79, 174.79, 174.79, 174.79, 172.52, 172.73, 170.61], "profit_aud": 170.61}}} \ No newline at end of file diff --git a/results/daily/2026-07-02.json b/results/daily/2026-07-02.json new file mode 100644 index 0000000..6137266 --- /dev/null +++ b/results/daily/2026-07-02.json @@ -0,0 +1 @@ +{"date": "2026-07-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.49, -4.4, -6.8, -6.76, -5.99, -7.61, -6.91, -7.28, -7.23, -9.3, -6.98, -6.84, -6.52, -5.3, -2.31, -2.41, -8.17, -9.84, -15.9, -23.81, -10.14, -3.48, -15.17, -10.06, -31.53, -22.29, -30.68, -3.96, -5.51, -5.46, -2.88, -12.94, -43.91, -42.62, -18.34, -8.74, 19.97, 72.89, 56.78, -29.42, -1.39, -7.5, 0.9, -1.82, 2.38, -4.58, -1.22, -1.26], "forecast_price": {"naive": [13.12, 11.37, 12.5, 10.84, 14.98, 5.72, 4.79, 0.11, 0.0, -0.02, 3.4, 1.32, 16.64, 60.34, 70.82, 66.18, 63.79, 65.2, 54.8, 49.77, 52.76, 48.65, 49.26, 47.94, 49.68, 54.41, 51.1, 44.52, 45.9, 47.12, 40.93, 45.16, 58.94, 67.88, 58.98, 38.42, 43.31, 37.79, -2.16, 34.11, 18.62, -0.02, 0.86, -0.08, -0.09, 1.82, -1.52, -1.7], "lightgbm": [30.81, 30.81, 28.38, 26.88, 27.81, 24.54, 24.24, 23.7, 23.7, 23.51, 27.92, 29.17, 36.62, 54.42, 53.64, 54.91, 54.79, 52.46, 50.07, 46.58, 47.24, 40.41, 42.77, 37.08, 41.07, 44.25, 43.95, 33.96, 34.6, 35.51, 34.14, 40.53, 53.32, 58.42, 67.15, 60.76, 63.69, 62.53, 57.95, 60.43, 56.29, 54.51, 49.46, 51.08, 51.13, 47.45, 46.69, 46.69], "lstm": [12.45, 15.83, 5.68, 5.05, 2.75, 0.88, -5.11, -1.51, -0.73, -3.43, 3.05, 6.44, 18.39, 34.87, 45.31, 59.02, 59.73, 48.13, 47.48, 38.12, 35.75, 28.59, 30.28, 22.41, 14.07, 21.12, 15.64, 16.82, 22.54, 26.77, 26.39, 35.23, 42.29, 56.41, 65.0, 85.21, 72.14, 67.4, 71.41, 72.19, 59.22, 57.34, 52.27, 54.76, 48.54, 36.26, 38.7, 50.21]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 1.94, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 0.0, 2.0, 2.5, 0.0, 2.5, 0.0, 0.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.75], "soc_mwh": [0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 1.0, 2.12, 3.0, 4.12, 4.0, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 2.0, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 3.38, 4.5, 3.25, 4.38, 4.25, 5.0], "cumulative_profit_aud": [0.19, 0.74, 9.24, 10.93, 3.44, 12.96, 12.96, 22.07, 29.3, 40.92, 40.92, 40.92, 40.92, 34.3, 31.42, 28.41, 29.43, 30.66, 50.53, 80.29, 80.29, 75.94, 94.91, 92.09, 131.5, 159.37, 197.71, 192.76, 185.87, 179.04, 175.43, 191.61, 246.5, 299.77, 322.69, 328.16, 353.12, 444.23, 515.21, 551.99, 553.73, 563.11, 564.23, 566.51, 569.49, 575.22, 575.22, 576.31], "profit_aud": 576.31}, "naive": {"charge_mw": [0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.83, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 0.0, 0.0, 1.12, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 2.12, 3.25], "cumulative_profit_aud": [-0.0, 0.62, 0.62, 9.06, 1.58, 1.58, 1.58, 10.68, 19.72, 31.35, 35.22, 43.77, 43.77, 43.77, 40.88, 37.87, 27.66, 15.36, 15.36, 15.36, 15.36, 15.85, 15.85, 28.43, 28.43, 0.56, 0.56, 5.52, 7.8, 7.8, 11.41, 27.59, -27.29, -80.56, -103.49, -92.57, -70.1, -70.1, -141.08, -174.19, -174.19, -164.8, -163.8, -161.51, -164.49, -170.22, -168.7, -167.13], "profit_aud": -167.13}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, 0.0, 0.0, 4.23, 12.87, 21.97, 31.01, 42.64, 42.64, 42.64, 42.64, 36.02, 33.13, 30.12, 19.91, 19.91, 19.91, 19.91, 19.91, 19.91, 19.91, 32.49, 32.49, 18.56, 18.56, 23.51, 30.4, 37.23, 40.84, 40.84, 40.84, 40.84, 17.91, 6.99, 31.95, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06, 123.06], "profit_aud": 123.06}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [1.86, -3.08, -3.08, -3.08, -3.08, 1.14, 9.78, 18.89, 27.93, 39.56, 39.56, 39.56, 39.56, 39.56, 39.56, 36.55, 26.34, 14.03, -5.83, -5.83, -5.83, -5.83, -5.83, -0.25, 39.17, 67.03, 105.38, 110.33, 110.33, 110.33, 110.33, 110.33, 110.33, 110.33, 110.33, 99.41, 124.37, 124.37, 195.35, 158.57, 158.57, 158.57, 158.57, 158.57, 158.57, 164.29, 164.47, 162.9], "profit_aud": 162.9}}} \ No newline at end of file diff --git a/results/daily/2026-07-03.json b/results/daily/2026-07-03.json new file mode 100644 index 0000000..bf9ae44 --- /dev/null +++ b/results/daily/2026-07-03.json @@ -0,0 +1 @@ +{"date": "2026-07-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.65, -4.24, -4.33, -5.29, -5.6, -6.52, -6.42, -6.6, -6.51, -6.69, -5.28, -4.9, -1.63, -0.54, 21.43, 19.02, 15.39, 88.11, 38.82, 36.66, 17.01, 26.59, 4.35, -3.76, -0.56, 1.81, 4.83, 36.98, 23.4, 81.57, 144.22, 176.27, 107.17, 131.88, 159.03, 154.98, 156.82, 136.42, 138.21, 143.38, 154.15, 145.77, 144.16, 141.59, 141.02, 141.42, 138.03, 143.42], "forecast_price": {"naive": [-1.49, -4.4, -6.8, -6.76, -5.99, -7.61, -6.91, -7.28, -7.23, -9.3, -6.98, -6.84, -6.52, -5.3, -2.31, -2.41, -8.17, -9.84, -15.9, -23.81, -10.14, -3.48, -15.17, -10.06, -31.53, -22.29, -30.68, -3.96, -5.51, -5.46, -2.88, -12.94, -43.91, -42.62, -18.34, -8.74, 19.97, 72.89, 56.78, -29.42, -1.39, -7.5, 0.9, -1.82, 2.38, -4.58, -1.22, -1.26], "lightgbm": [15.66, 15.66, 12.57, 11.79, 11.64, 7.02, 11.79, 11.79, 11.79, 7.47, 17.13, 17.98, 20.66, 23.44, 24.74, 25.0, 20.98, 17.25, 15.5, 11.54, 9.42, 12.54, 3.71, 3.61, 4.4, 8.24, 4.4, 10.2, 10.08, 13.09, 14.69, 13.44, 13.97, 18.94, 34.13, 40.16, 55.78, 80.43, 68.41, 42.31, 49.52, 47.32, 48.95, 47.71, 48.48, 47.28, 46.71, 46.71], "lstm": [-0.6, 1.54, -6.4, -9.69, -13.83, -13.87, -15.57, -12.38, -11.39, -12.71, -5.89, -2.95, 8.01, 22.48, 28.54, 39.88, 38.05, 29.17, 31.93, 26.37, 19.76, 13.47, 13.18, 7.53, -0.72, 5.49, 0.39, 0.4, 2.98, 7.79, 4.3, 14.35, 18.71, 35.13, 44.42, 60.86, 53.05, 53.21, 57.37, 57.11, 49.91, 49.92, 48.0, 44.54, 38.09, 33.32, 33.87, 40.71]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.21, 0.74, 1.28, 1.94, 2.64, 10.79, 14.8, 23.06, 31.19, 39.55, 40.21, 40.82, 41.03, 41.1, 67.88, 86.9, 67.67, 177.8, 226.32, 272.15, 250.88, 284.11, 278.68, 283.39, 284.08, 281.81, 279.13, 320.74, 291.49, 291.49, 291.49, 511.82, 377.86, 359.4, 558.18, 751.91, 947.92, 947.92, 947.92, 947.92, 1140.61, 1140.61, 1140.61, 1140.61, 1140.61, 1140.61, 1140.61, 1140.61], "profit_aud": 1140.61}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 1.94, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [2.25, 2.25, 0.0, 2.0, 2.5, 0.0, 2.5, 0.0, 0.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.75], "soc_mwh": [0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 1.0, 2.12, 3.0, 4.12, 4.0, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 2.0, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 2.38, 3.5, 4.62, 3.38, 4.5, 3.25, 4.38, 4.25, 5.0], "cumulative_profit_aud": [0.21, 0.74, 6.15, 7.47, 0.46, 8.62, 8.62, 16.87, 23.38, 31.74, 31.74, 31.74, 31.74, 31.07, 57.86, 81.64, 79.71, 68.7, 20.18, -25.65, -25.65, 7.59, 2.15, 1.1, 1.79, -0.47, -6.51, 39.72, 68.97, 170.94, 351.22, 130.88, -3.08, -167.93, -366.72, -463.58, -267.56, -97.04, 75.72, -103.51, -296.2, -478.41, -298.21, -475.2, -298.92, -475.7, -475.7, -601.19], "profit_aud": -601.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, 6.61, 13.61, 21.77, 25.33, 25.33, 25.33, 33.69, 33.69, 33.69, 33.69, 33.02, 59.81, 83.59, 102.82, 102.82, 102.82, 102.82, 81.55, 111.47, 106.03, 110.74, 111.43, 110.43, 104.39, 104.39, 104.39, 104.39, 104.39, 104.39, 104.39, 104.39, 104.39, 104.39, 300.41, 470.93, 643.69, 464.46, 657.14, 657.14, 819.33, 819.33, 819.33, 819.33, 819.33, 819.33], "profit_aud": 819.33}, "lstm": {"charge_mw": [2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [2.06, -2.7, -2.16, -1.5, 5.51, 13.66, 21.68, 26.63, 26.63, 35.0, 35.66, 36.27, 36.27, 36.27, 36.27, 60.05, 79.28, 189.42, 237.94, 237.94, 237.94, 237.94, 237.94, 237.94, 238.63, 237.63, 231.59, 185.36, 156.11, 247.88, 67.6, 67.6, 67.6, 67.6, 67.6, 261.32, 261.32, 431.84, 604.6, 783.83, 783.83, 783.83, 783.83, 783.83, 783.83, 607.06, 587.73, 767.0], "profit_aud": 767.0}}} \ No newline at end of file diff --git a/results/daily/2026-07-04.json b/results/daily/2026-07-04.json new file mode 100644 index 0000000..3572ea3 --- /dev/null +++ b/results/daily/2026-07-04.json @@ -0,0 +1 @@ +{"date": "2026-07-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [142.3, 141.85, 144.38, 140.0, 138.02, 138.01, 138.17, 138.18, 138.52, 138.34, 138.0, 138.02, 138.39, 139.24, 141.78, 166.1, 166.54, 146.49, 141.77, 138.18, 138.01, 138.65, 141.6, 138.03, 142.23, 163.95, 125.28, 146.07, 140.33, 139.79, 138.09, 137.7, 160.14, 122.82, 108.84, 111.83, 107.19, 112.46, 107.84, 104.86, 102.72, 101.85, 102.44, 99.92, 101.58, 93.97, 94.15, 87.7], "forecast_price": {"naive": [-1.65, -4.24, -4.33, -5.29, -5.6, -6.52, -6.42, -6.6, -6.51, -6.69, -5.28, -4.9, -1.63, -0.54, 21.43, 19.02, 15.39, 88.11, 38.82, 36.66, 17.01, 26.59, 4.35, -3.76, -0.56, 1.81, 4.83, 36.98, 23.4, 81.57, 144.22, 176.27, 107.17, 131.88, 159.03, 154.98, 156.82, 136.42, 138.21, 143.38, 154.15, 145.77, 144.16, 141.59, 141.02, 141.42, 138.03, 143.42], "lightgbm": [76.99, 76.46, 75.39, 69.32, 67.87, 64.73, 63.99, 63.97, 63.97, 63.97, 64.06, 63.92, 56.27, 56.24, 55.18, 56.26, 51.11, 71.82, 37.64, 34.14, 29.3, 29.56, 19.37, 18.58, 16.35, 17.02, 17.59, 30.98, 27.65, 44.28, 45.23, 56.09, 67.41, 78.79, 100.88, 106.38, 107.83, 112.38, 107.0, 100.72, 105.8, 96.54, 96.19, 91.24, 90.75, 88.62, 92.01, 90.75], "lstm": [117.46, 111.21, 101.38, 108.14, 90.9, 83.33, 80.06, 78.58, 75.89, 74.1, 71.28, 76.16, 74.72, 86.26, 93.19, 86.67, 87.1, 74.47, 57.18, 50.42, 52.7, 46.52, 42.34, 36.47, 30.09, 31.22, 32.69, 34.47, 37.08, 40.53, 50.84, 59.14, 70.01, 91.2, 112.37, 139.71, 129.49, 124.63, 113.29, 106.56, 106.62, 99.72, 97.27, 82.53, 89.29, 74.59, 77.75, 84.42]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 1.5, 1.5, 1.5, 1.5, 2.62, 2.62, 2.62, 2.62, 2.62, 1.38, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -57.28, -229.79, -229.79, -229.79, -229.79, -229.79, -402.3, -402.3, -402.3, -402.3, -402.3, -194.68, 13.49, 13.49, 13.49, 13.49, -159.02, -159.02, -159.02, -159.02, -159.02, 45.92, -110.68, -110.68, -110.68, -110.68, -110.68, -129.96, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21, 70.21], "profit_aud": 70.21}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-17.79, -35.52, -53.57, -71.07, -88.32, -260.84, -347.2, -519.92, -693.07, -865.99, -883.24, -900.49, -917.79, -935.2, -757.98, -591.88, -800.06, -616.94, -439.73, -267.0, -439.51, -266.2, -443.21, -615.74, -793.53, -998.47, -1068.0, -903.68, -1079.09, -1079.09, -1079.09, -906.96, -1107.13, -1124.32, -988.27, -848.49, -714.5, -714.5, -714.5, -714.5, -586.1, -586.1, -586.1, -586.1, -586.1, -586.1, -586.1, -586.1], "profit_aud": -586.1}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -19.85, -19.85, -228.02, -44.9, -44.9, -44.9, -44.9, -44.9, -123.5, -296.03, -473.82, -678.76, -835.36, -671.03, -846.44, -846.44, -846.44, -846.44, -846.44, -846.44, -846.44, -706.66, -572.67, -432.1, -297.3, -297.3, -297.3, -297.3, -297.3, -297.3, -297.3, -297.3, -297.3, -297.3], "profit_aud": -297.3}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -173.15, -346.07, -518.57, -595.17, -768.17, -594.12, -416.9, -209.28, -1.11, -1.11, -1.11, -1.11, -1.11, -1.11, -1.11, -77.71, -255.51, -460.44, -617.04, -799.63, -799.63, -799.63, -799.63, -799.63, -799.63, -799.63, -799.63, -659.84, -525.85, -385.28, -250.48, -250.48, -250.48, -250.48, -250.48, -250.48, -250.48, -367.95, -367.95, -269.29], "profit_aud": -269.29}}} \ No newline at end of file diff --git a/results/daily/2026-07-05.json b/results/daily/2026-07-05.json new file mode 100644 index 0000000..462ebad --- /dev/null +++ b/results/daily/2026-07-05.json @@ -0,0 +1 @@ +{"date": "2026-07-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [92.42, 87.07, 84.26, 76.38, 72.98, 71.65, 67.77, 71.3, 67.78, 61.14, 62.8, 58.27, 67.43, 74.52, 85.84, 89.97, 94.28, 74.74, 55.78, 58.72, 54.48, 64.87, 64.36, 99.01, 113.56, 123.04, 122.94, 138.36, 136.74, 137.1, 151.07, 144.39, 132.22, 127.38, 110.35, 108.18, 111.26, 103.33, 101.58, 96.09, 93.85, 81.98, 78.98, 75.15, 72.1, 68.07, 70.44, 68.99], "forecast_price": {"naive": [142.3, 141.85, 144.38, 140.0, 138.02, 138.01, 138.17, 138.18, 138.52, 138.34, 138.0, 138.02, 138.39, 139.24, 141.78, 166.1, 166.54, 146.49, 141.77, 138.18, 138.01, 138.65, 141.6, 138.03, 142.23, 163.95, 125.28, 146.07, 140.33, 139.79, 138.09, 137.7, 160.14, 122.82, 108.84, 111.83, 107.19, 112.46, 107.84, 104.86, 102.72, 101.85, 102.44, 99.92, 101.58, 93.97, 94.15, 87.7], "lightgbm": [107.56, 107.05, 104.48, 99.26, 96.93, 92.81, 93.21, 92.62, 90.83, 90.83, 91.69, 93.5, 95.63, 98.18, 99.91, 99.38, 98.46, 95.52, 82.99, 73.75, 72.64, 71.02, 68.59, 65.33, 68.17, 68.17, 69.79, 68.17, 68.17, 71.27, 77.15, 90.71, 100.84, 107.17, 101.1, 109.54, 102.24, 105.92, 100.98, 98.92, 98.92, 92.41, 89.56, 84.32, 83.86, 82.61, 82.61, 80.13], "lstm": [100.66, 95.32, 86.55, 87.89, 79.95, 75.53, 72.58, 70.92, 69.12, 56.14, 63.38, 60.88, 59.16, 62.61, 64.31, 70.39, 71.59, 65.91, 63.38, 52.5, 52.96, 46.82, 47.09, 42.42, 38.92, 36.77, 35.98, 38.95, 43.05, 48.66, 52.85, 63.29, 72.96, 94.19, 107.29, 137.75, 134.71, 120.72, 105.05, 100.58, 95.6, 91.08, 83.92, 81.67, 80.78, 70.49, 69.95, 79.66]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -76.42, -154.93, -227.77, -255.75, -255.75, -148.45, -35.99, 81.86, 81.86, 12.14, -61.26, -129.37, -165.37, -245.82, -245.82, -245.82, -245.82, -245.82, -72.88, -72.88, 98.5, 287.34, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83, 467.83], "profit_aud": 467.83}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 1.5, 1.5, 1.5, 1.5, 2.62, 2.62, 2.62, 2.62, 2.62, 1.38, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -30.29, -119.86, -119.86, -119.86, -119.86, -119.86, -198.36, -198.36, -198.36, -198.36, -198.36, -85.9, 31.95, 31.95, 31.95, 31.95, -36.16, -36.16, -36.16, -36.16, -36.16, 117.64, -36.04, -36.04, -36.04, -36.04, -36.04, -56.25, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03, 109.03], "profit_aud": 109.03}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -123.76, -186.79, -340.58, -340.58, -513.53, -684.46, -684.46, -684.46, -684.46, -684.46, -525.24, -525.24, -390.01, -250.94, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78, -121.78], "profit_aud": -121.78}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -76.42, -76.42, -92.74, -177.02, -177.02, -177.02, -64.56, 53.29, 53.29, 53.29, 53.29, 53.29, 53.29, 53.29, -1.67, -143.61, -297.41, -451.08, -624.03, -624.03, -624.03, -624.03, -624.03, -624.03, -624.03, -486.09, -350.86, -211.79, -82.63, -82.63, -82.63, -82.63, -82.63, -82.63, -82.63, -82.63, -92.16, -180.21, -93.97], "profit_aud": -93.97}}} \ No newline at end of file diff --git a/results/daily/2026-07-06.json b/results/daily/2026-07-06.json new file mode 100644 index 0000000..cedf9e6 --- /dev/null +++ b/results/daily/2026-07-06.json @@ -0,0 +1 @@ +{"date": "2026-07-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [71.28, 75.7, 71.84, 65.02, 72.61, 60.63, 70.63, 65.06, 63.1, 56.35, 74.75, 83.11, 89.81, 99.59, 103.5, 101.54, 100.54, 101.98, 93.09, 68.73, 60.21, 63.08, 52.06, 45.39, 46.5, 48.2, 52.32, 51.11, 50.23, 47.4, 54.73, 78.68, 97.46, 104.2, 102.71, 100.45, 104.06, 102.91, 98.6, 86.96, 75.32, 84.86, 91.31, 79.39, 58.72, 16.25, 9.1, 5.32], "forecast_price": {"naive": [92.42, 87.07, 84.26, 76.38, 72.98, 71.65, 67.77, 71.3, 67.78, 61.14, 62.8, 58.27, 67.43, 74.52, 85.84, 89.97, 94.28, 74.74, 55.78, 58.72, 54.48, 64.87, 64.36, 99.01, 113.56, 123.04, 122.94, 138.36, 136.74, 137.1, 151.07, 144.39, 132.22, 127.38, 110.35, 108.18, 111.26, 103.33, 101.58, 96.09, 93.85, 81.98, 78.98, 75.15, 72.1, 68.07, 70.44, 68.99], "lightgbm": [89.35, 87.8, 84.02, 75.87, 77.62, 75.91, 73.9, 74.24, 71.64, 66.36, 75.45, 76.55, 88.32, 100.24, 105.36, 106.29, 113.13, 100.37, 94.65, 93.08, 91.09, 85.66, 81.4, 96.97, 99.16, 91.57, 94.91, 94.28, 94.82, 109.74, 112.18, 115.67, 120.69, 129.64, 123.92, 127.35, 133.88, 124.01, 122.84, 121.89, 118.53, 106.24, 100.74, 90.74, 89.98, 89.5, 89.98, 89.5], "lstm": [70.94, 65.55, 60.17, 57.53, 53.62, 50.27, 49.35, 47.54, 50.95, 46.15, 50.98, 58.04, 66.54, 79.96, 88.56, 116.47, 105.66, 98.62, 95.27, 85.5, 76.34, 69.47, 67.83, 68.49, 62.18, 60.9, 60.76, 63.03, 59.27, 71.28, 69.89, 82.92, 89.23, 102.3, 119.67, 152.7, 133.26, 123.44, 103.22, 104.24, 97.17, 91.33, 89.44, 79.99, 82.72, 69.55, 75.5, 77.06]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -81.28, -35.9, -111.68, -111.68, -193.02, -271.9, -342.33, -342.33, -342.33, -342.33, -342.33, -212.96, -86.03, 39.64, 167.11, 167.11, 167.11, 167.11, 167.11, 167.11, 110.37, 52.24, -8.01, -8.01, -8.01, -35.89, -95.13, -95.13, -95.13, -95.13, 35.11, 163.51, 163.51, 293.59, 422.22, 422.22, 422.22, 328.07, 328.07, 430.79, 430.79, 430.79, 430.79, 430.79, 430.79], "profit_aud": 430.79}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -70.44, -163.88, -267.76, -305.03, -305.03, -175.66, -48.73, 76.94, 76.94, -39.42, -125.33, -200.59, -235.6, -300.67, -300.67, -300.67, -300.67, -300.67, -236.78, -236.78, -177.53, -109.12, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77, -10.77], "profit_aud": -10.77}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 2.38, 3.5, 4.62, 4.62, 4.62, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -88.28, -169.61, -248.5, -318.93, -360.42, -360.42, -360.42, -360.42, -231.05, -104.12, 21.55, 21.55, 21.55, 21.55, -53.71, -132.55, -197.63, -197.63, -197.63, -217.63, -217.63, -217.63, -217.63, -217.63, -217.63, -217.63, -217.63, -87.38, -87.38, 38.18, 168.26, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89, 296.89], "profit_aud": 296.89}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -75.78, -164.07, -245.4, -280.42, -350.86, -350.86, -350.86, -350.86, -350.86, -350.86, -223.93, -98.26, 29.21, 145.57, 145.57, 145.57, 145.57, 145.57, 145.57, 87.45, 27.2, -38.2, -66.57, -129.36, -129.36, -129.36, -129.36, -129.36, -129.36, -0.97, 124.6, 254.68, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31, 383.31], "profit_aud": 383.31}}} \ No newline at end of file diff --git a/results/daily/2026-07-07.json b/results/daily/2026-07-07.json new file mode 100644 index 0000000..a41bedc --- /dev/null +++ b/results/daily/2026-07-07.json @@ -0,0 +1 @@ +{"date": "2026-07-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [29.52, 45.54, 3.96, -5.83, -7.0, -7.01, -7.01, -7.01, -6.83, -6.0, 55.93, 91.04, 100.52, 102.15, 106.99, 111.23, 122.94, 117.23, 109.08, 94.58, 100.7, 105.9, 92.57, 97.87, 98.65, 111.13, 93.31, 102.77, 104.03, 118.78, 119.48, 124.94, 141.76, 161.11, 150.69, 137.57, 123.01, 116.86, 102.89, 98.56, 101.03, 101.03, 97.94, 97.93, 105.46, 95.54, 94.67, 95.66], "forecast_price": {"naive": [71.28, 75.7, 71.84, 65.02, 72.61, 60.63, 70.63, 65.06, 63.1, 56.35, 74.75, 83.11, 89.81, 99.59, 103.5, 101.54, 100.54, 101.98, 93.09, 68.73, 60.21, 63.08, 52.06, 45.39, 46.5, 48.2, 52.32, 51.11, 50.23, 47.4, 54.73, 78.68, 97.46, 104.2, 102.71, 100.45, 104.06, 102.91, 98.6, 86.96, 75.32, 84.86, 91.31, 79.39, 58.72, 16.25, 9.1, 5.32], "lightgbm": [71.24, 72.38, 67.76, 64.9, 64.67, 61.64, 63.04, 63.65, 61.18, 56.75, 74.95, 83.59, 88.14, 93.36, 93.5, 94.22, 94.05, 91.0, 80.17, 71.36, 66.1, 66.96, 57.28, 48.15, 46.47, 49.99, 54.57, 54.56, 54.56, 51.1, 62.73, 78.84, 86.95, 91.91, 102.67, 108.98, 108.55, 108.47, 108.38, 100.03, 92.08, 94.92, 92.42, 82.68, 65.91, 46.62, 48.19, 49.51], "lstm": [16.15, 15.18, 9.8, 5.81, 5.07, 1.56, -0.78, -0.78, -0.67, -0.81, 2.2, 7.13, 15.16, 32.19, 40.72, 55.06, 55.91, 45.44, 45.52, 34.64, 30.91, 22.53, 22.76, 17.81, 11.88, 14.45, 12.52, 14.81, 22.71, 27.97, 31.92, 35.79, 43.83, 65.56, 81.6, 101.07, 93.79, 82.49, 78.4, 77.78, 66.51, 63.62, 62.93, 55.82, 50.87, 43.37, 40.44, 47.37]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.38, 2.38, 3.5, 4.62, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-36.9, 14.33, 14.33, 15.06, 23.82, 32.57, 41.33, 50.1, 54.37, 55.12, 55.12, 55.12, 55.12, 55.12, 55.12, 194.16, 347.83, 494.37, 494.37, 376.15, 376.15, 376.15, 260.44, 138.1, 97.16, 222.18, 105.54, 105.54, 105.54, 105.54, 105.54, 105.54, 282.74, 484.13, 672.49, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45, 844.45], "profit_aud": 844.45}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 7.29, 2.91, 11.67, 11.67, 20.43, 28.98, 36.48, 36.48, 36.48, 36.48, 36.48, 170.21, 309.25, 462.93, 609.47, 609.47, 609.47, 609.47, 609.47, 609.47, 487.13, 363.82, 224.91, 224.91, 224.91, 167.17, 18.7, 18.7, 18.7, 18.7, 220.09, 408.46, 408.46, 562.22, 708.29, 708.29, 708.29, 581.99, 581.99, 692.17, 692.17, 692.17, 692.17, 692.17, 692.17], "profit_aud": 692.17}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 8.76, 17.52, 21.41, 29.95, 37.45, 37.45, 37.45, 37.45, 165.14, 298.87, 437.91, 591.59, 591.59, 591.59, 591.59, 591.59, 591.59, 591.59, 469.25, 345.94, 207.03, 207.03, 149.99, 149.99, 1.52, 1.52, 1.52, 1.52, 1.52, 1.52, 173.48, 327.24, 473.31, 601.92, 601.92, 601.92, 601.92, 601.92, 601.92, 601.92, 601.92, 601.92, 601.92], "profit_aud": 601.92}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 3.89, 12.65, 21.41, 29.95, 37.45, 37.45, 37.45, 37.45, 37.45, 37.45, 176.49, 330.17, 476.71, 613.06, 613.06, 613.06, 613.06, 613.06, 558.74, 435.43, 296.52, 179.88, 51.42, 51.42, 51.42, 51.42, 51.42, 51.42, 51.42, 239.79, 411.75, 565.51, 711.58, 711.58, 711.58, 711.58, 711.58, 711.58, 711.58, 711.58, 711.58, 593.24, 700.86], "profit_aud": 700.86}}} \ No newline at end of file diff --git a/results/daily/2026-07-08.json b/results/daily/2026-07-08.json new file mode 100644 index 0000000..27c277a --- /dev/null +++ b/results/daily/2026-07-08.json @@ -0,0 +1 @@ +{"date": "2026-07-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [97.03, 95.0, 94.09, 93.85, 93.62, 92.49, 92.37, 90.77, 92.63, 96.83, 102.3, 103.99, 118.43, 115.91, 134.05, 139.13, 163.48, 164.16, 180.08, 203.06, 230.42, 225.23, 223.1, 215.95, 190.96, 246.31, 258.43, 275.27, 195.99, 219.41, 192.95, 249.06, 280.58, 392.95, 548.75, 393.41, 437.89, 498.98, 1324.04, 5082.59, 513.26, 351.88, 361.57, 250.17, 191.02, 166.16, 142.92, 121.52], "forecast_price": {"naive": [29.52, 45.54, 3.96, -5.83, -7.0, -7.01, -7.01, -7.01, -6.83, -6.0, 55.93, 91.04, 100.52, 102.15, 106.99, 111.23, 122.94, 117.23, 109.08, 94.58, 100.7, 105.9, 92.57, 97.87, 98.65, 111.13, 93.31, 102.77, 104.03, 118.78, 119.48, 124.94, 141.76, 161.11, 150.69, 137.57, 123.01, 116.86, 102.89, 98.56, 101.03, 101.03, 97.94, 97.93, 105.46, 95.54, 94.67, 95.66], "lightgbm": [64.75, 64.44, 65.67, 64.42, 62.64, 60.41, 62.35, 60.68, 60.68, 60.28, 65.24, 81.31, 88.0, 95.28, 97.4, 99.4, 102.72, 97.45, 80.07, 62.41, 59.51, 59.18, 48.85, 50.58, 50.38, 51.11, 49.15, 51.33, 51.33, 55.94, 57.8, 76.72, 103.05, 127.74, 136.24, 138.65, 125.05, 120.82, 107.67, 105.8, 105.59, 101.18, 96.31, 89.96, 87.19, 83.8, 83.8, 83.8], "lstm": [82.86, 78.06, 74.32, 65.01, 62.45, 54.95, 52.51, 50.62, 53.17, 55.67, 60.16, 67.23, 75.95, 89.99, 101.71, 126.85, 124.25, 102.07, 93.44, 82.54, 81.88, 77.19, 69.52, 72.43, 64.57, 55.57, 60.0, 58.54, 55.55, 65.0, 73.92, 75.1, 89.53, 106.57, 118.18, 145.53, 137.95, 130.28, 108.5, 110.58, 103.87, 94.39, 91.93, 82.52, 88.29, 65.94, 71.94, 78.91]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 3.88, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -51.96, -167.56, -283.03, -396.5, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -512.28, -253.06, -253.06, -253.06, -253.06, -491.76, -276.24, 46.8, 390.88, 145.9, -128.37, -369.56, -369.56, -369.56, -369.56, 316.38, -175.38, -236.69, 387.04, 2042.08, 8395.32, 9036.9, 9036.9, 9036.9, 9036.9, 9036.9, 9036.9, 9036.9, 9036.9], "profit_aud": 9036.9}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 2.38, 2.38, 2.38, 3.5, 4.62, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-121.29, -14.41, -14.41, -26.15, -143.16, -258.77, -374.24, -487.71, -545.6, -557.7, -557.7, -557.7, -557.7, -557.7, -557.7, -383.79, -179.44, 25.77, 25.77, -228.05, -228.05, -228.05, -506.93, -776.86, -856.11, -579.0, -902.04, -902.04, -902.04, -902.04, -902.04, -902.04, -551.32, -60.13, 625.8, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56, 1117.56], "profit_aud": 1117.56}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -115.61, -166.88, -280.34, -396.13, -517.16, -517.16, -517.16, -517.16, -517.16, -349.6, -175.69, 28.66, 233.87, 233.87, 233.87, 233.87, 233.87, -45.01, -314.94, -553.64, -690.34, -1013.38, -1013.38, -1013.38, -1013.38, -1013.38, -1013.38, -1013.38, -522.19, 163.74, 655.5, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86, 1202.86], "profit_aud": 1202.86}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -115.61, -231.08, -344.54, -460.33, -514.07, -514.07, -514.07, -514.07, -514.07, -346.51, -172.59, 31.76, 236.96, 236.96, 236.96, 236.96, 236.96, 236.96, 236.96, 130.98, -176.91, -499.95, -844.03, -1089.01, -1089.01, -1089.01, -1089.01, -1089.01, -1089.01, -403.08, 88.68, 636.04, 1259.76, 1259.76, 1259.76, 1259.76, 1259.76, 1259.76, 1259.76, 1259.76, 1052.07, 1052.07, 1188.78], "profit_aud": 1188.78}}} \ No newline at end of file diff --git a/results/daily/2026-07-09.json b/results/daily/2026-07-09.json new file mode 100644 index 0000000..f8473dc --- /dev/null +++ b/results/daily/2026-07-09.json @@ -0,0 +1 @@ +{"date": "2026-07-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [153.74, 132.16, 130.82, 117.7, 115.28, 103.48, 109.15, 106.77, 105.9, 113.0, 125.72, 123.78, 124.47, 169.94, 159.21, 190.47, 212.23, 202.96, 179.64, 159.67, 139.19, 135.46, 132.89, 139.1, 129.13, 129.17, 125.4, 143.34, 102.75, 94.06, 102.89, 105.5, 133.6, 202.82, 201.61, 192.29, 173.72, 163.72, 155.56, 160.22, 152.78, 157.83, 164.01, 159.58, 156.11, 146.27, 137.6, 132.0], "forecast_price": {"naive": [97.03, 95.0, 94.09, 93.85, 93.62, 92.49, 92.37, 90.77, 92.63, 96.83, 102.3, 103.99, 118.43, 115.91, 134.05, 139.13, 163.48, 164.16, 180.08, 203.06, 230.42, 225.23, 223.1, 215.95, 190.96, 246.31, 258.43, 275.27, 195.99, 219.41, 192.95, 249.06, 280.58, 392.95, 548.75, 393.41, 437.89, 498.98, 1324.04, 5082.59, 513.26, 351.88, 361.57, 250.17, 191.02, 166.16, 142.92, 121.52], "lightgbm": [100.03, 97.26, 94.84, 84.53, 85.0, 70.04, 77.38, 68.36, 77.38, 76.94, 82.7, 88.28, 97.62, 98.63, 124.69, 128.43, 128.72, 116.64, 96.85, 82.95, 85.63, 75.75, 71.53, 70.35, 63.01, 74.25, 84.46, 80.15, 61.73, 68.73, 74.95, 102.12, 116.87, 134.3, 153.64, 152.64, 152.64, 163.51, 156.66, 154.68, 154.68, 150.34, 147.73, 124.83, 101.48, 90.94, 90.91, 76.28], "lstm": [174.76, 169.21, 164.35, 155.52, 142.73, 134.99, 129.03, 116.26, 129.2, 130.33, 132.78, 141.53, 138.96, 157.11, 160.29, 192.02, 210.36, 161.61, 153.86, 147.32, 140.13, 124.13, 129.83, 122.3, 115.96, 114.13, 116.25, 120.61, 122.61, 127.13, 137.84, 168.28, 186.19, 205.23, 241.44, 268.25, 256.28, 254.21, 225.55, 211.66, 180.29, 178.31, 155.75, 140.49, 138.59, 114.43, 112.66, 117.72]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -129.35, -265.79, -399.25, -531.63, -594.35, -594.35, -594.35, -594.35, -594.35, -594.35, -356.26, -90.97, 162.73, 387.28, 387.28, 387.28, 387.28, 387.28, 387.28, 387.28, 387.28, 230.53, 320.11, 191.67, 74.1, -54.51, -186.39, -186.39, 67.14, 319.15, 559.52, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66, 776.66], "profit_aud": 776.66}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 3.88, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -63.98, -193.33, -329.77, -463.23, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -595.61, -439.02, -439.02, -439.02, -439.02, -600.43, -487.41, -330.65, -151.48, -279.93, -397.5, -526.11, -526.11, -526.11, -526.11, -274.1, -514.46, -538.78, -334.13, -139.67, 60.6, 251.57, 251.57, 251.57, 251.57, 251.57, 251.57, 251.57, 251.57], "profit_aud": 251.57}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -129.35, -265.79, -399.25, -458.03, -599.28, -599.28, -599.28, -599.28, -599.28, -400.27, -162.18, 103.1, 356.81, 356.81, 356.81, 356.81, 356.81, 190.7, 16.83, -144.58, -234.35, -77.6, -77.6, -206.04, -323.61, -323.61, -323.61, -323.61, -323.61, -323.61, -323.61, -323.61, -118.95, 75.5, 275.77, 466.75, 466.75, 466.75, 466.75, 466.75, 466.75, 466.75, 466.75], "profit_aud": 466.75}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -136.44, -269.9, -402.28, -543.54, -613.31, -613.31, -613.31, -613.31, -414.3, -176.21, 89.08, 342.78, 342.78, 342.78, 342.78, 342.78, 342.78, 265.59, 104.18, -57.28, -214.04, -393.21, -393.21, -393.21, -393.21, -393.21, -393.21, -393.21, -141.19, 99.17, 316.32, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97, 520.97], "profit_aud": 520.97}}} \ No newline at end of file diff --git a/results/daily/2026-07-10.json b/results/daily/2026-07-10.json new file mode 100644 index 0000000..be63b76 --- /dev/null +++ b/results/daily/2026-07-10.json @@ -0,0 +1 @@ +{"date": "2026-07-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [127.87, 126.01, 125.91, 126.18, 126.77, 125.71, 129.71, 133.38, 135.69, 132.98, 123.43, 125.59, 130.13, 127.47, 133.08, 138.66, 145.7, 126.77, 112.22, 103.79, 108.0, 102.12, 94.22, 92.0, 87.31, 86.14, 75.73, 69.24, 68.79, 70.86, 79.37, 89.7, 110.46, 125.06, 132.94, 133.45, 118.0, 106.21, 101.2, 99.74, 99.78, 97.8, 98.35, 95.36, 92.96, 77.23, 82.17, 51.1], "forecast_price": {"naive": [153.74, 132.16, 130.82, 117.7, 115.28, 103.48, 109.15, 106.77, 105.9, 113.0, 125.72, 123.78, 124.47, 169.94, 159.21, 190.47, 212.23, 202.96, 179.64, 159.67, 139.19, 135.46, 132.89, 139.1, 129.13, 129.17, 125.4, 143.34, 102.75, 94.06, 102.89, 105.5, 133.6, 202.82, 201.61, 192.29, 173.72, 163.72, 155.56, 160.22, 152.78, 157.83, 164.01, 159.58, 156.11, 146.27, 137.6, 132.0], "lightgbm": [108.73, 109.44, 106.38, 98.63, 95.71, 90.58, 91.06, 89.8, 89.8, 92.47, 101.32, 101.77, 106.18, 112.09, 107.61, 117.13, 116.82, 123.65, 118.96, 96.54, 84.04, 85.02, 72.26, 70.75, 69.04, 64.43, 64.43, 74.33, 62.22, 80.06, 83.94, 94.14, 117.7, 153.31, 158.45, 151.92, 145.9, 144.64, 144.64, 144.07, 144.07, 137.76, 133.85, 126.74, 121.55, 116.55, 116.55, 109.5], "lstm": [112.44, 107.53, 100.9, 100.25, 90.96, 87.52, 77.2, 76.71, 72.21, 69.92, 80.32, 84.0, 99.82, 110.15, 129.18, 140.86, 150.35, 126.93, 117.3, 104.09, 94.31, 90.91, 80.29, 67.58, 70.33, 64.47, 59.08, 56.46, 63.58, 74.05, 75.94, 92.63, 108.99, 133.5, 164.19, 199.79, 172.78, 169.98, 158.23, 150.72, 142.96, 138.16, 124.12, 117.36, 120.69, 101.02, 98.53, 101.53]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -154.29, -171.87, -171.87, -171.87, -171.87, -171.87, 10.25, 10.25, 10.25, 10.25, 10.25, 10.25, 10.25, 10.25, 10.25, 10.25, -84.41, -170.96, -256.95, -345.52, -389.57, -389.57, -389.57, -233.25, -67.07, 99.74, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23, 247.23], "profit_aud": 247.23}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -157.14, -319.27, -486.0, -655.61, -729.42, -729.42, -729.42, -729.42, -729.42, -729.42, -556.09, -373.97, -215.51, -75.23, -75.23, -75.23, -75.23, -75.23, -75.23, -75.23, -75.23, -169.89, -126.62, -212.61, -301.18, -400.39, -512.51, -512.51, -356.19, -190.02, -23.21, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29, 124.29], "profit_aud": 124.29}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -157.14, -319.27, -486.0, -655.61, -729.42, -729.42, -729.42, -729.42, -729.42, -729.42, -556.09, -373.97, -215.51, -75.23, -75.23, -75.23, -75.23, -75.23, -126.29, -235.43, -343.1, -437.77, -437.77, -523.76, -523.76, -523.76, -523.76, -523.76, -367.44, -201.26, -34.45, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04, 113.04], "profit_aud": 113.04}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -162.14, -328.86, -498.47, -664.7, -733.2, -733.2, -733.2, -733.2, -566.85, -393.53, -211.41, -52.95, -52.95, -52.95, -52.95, -52.95, -52.95, -104.01, -104.01, -211.68, -306.34, -392.89, -478.88, -478.88, -478.88, -478.88, -478.88, -478.88, -312.7, -145.89, 1.6, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36, 134.36], "profit_aud": 134.36}}} \ No newline at end of file diff --git a/results/daily/2026-07-11.json b/results/daily/2026-07-11.json new file mode 100644 index 0000000..d8adb27 --- /dev/null +++ b/results/daily/2026-07-11.json @@ -0,0 +1 @@ +{"date": "2026-07-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [48.22, 39.15, 3.35, 0.19, -0.18, 0.0, -0.5, -5.06, -6.35, -6.68, -6.97, -6.92, -6.07, -3.88, -4.66, 15.45, 14.98, 1.98, 10.76, -0.45, -14.0, -9.29, -1.08, -3.74, -1.09, -1.08, -1.07, -0.87, 1.45, -0.14, -0.74, 5.16, 3.59, 27.82, 6.49, 22.31, 33.22, 44.59, 42.34, 37.31, 23.81, 12.45, 8.92, 9.2, -0.47, 1.85, -0.26, -0.86], "forecast_price": {"naive": [127.87, 126.01, 125.91, 126.18, 126.77, 125.71, 129.71, 133.38, 135.69, 132.98, 123.43, 125.59, 130.13, 127.47, 133.08, 138.66, 145.7, 126.77, 112.22, 103.79, 108.0, 102.12, 94.22, 92.0, 87.31, 86.14, 75.73, 69.24, 68.79, 70.86, 79.37, 89.7, 110.46, 125.06, 132.94, 133.45, 118.0, 106.21, 101.2, 99.74, 99.78, 97.8, 98.35, 95.36, 92.96, 77.23, 82.17, 51.1], "lightgbm": [95.98, 95.98, 92.51, 87.62, 84.25, 83.71, 83.28, 88.1, 88.1, 84.94, 84.13, 86.49, 88.84, 90.48, 91.73, 96.38, 96.38, 91.26, 82.23, 78.64, 75.39, 70.26, 67.32, 65.88, 63.81, 63.81, 57.59, 51.36, 53.04, 55.59, 69.4, 79.66, 89.46, 106.73, 117.47, 128.66, 116.11, 105.74, 105.32, 104.89, 104.27, 99.3, 95.37, 88.52, 85.24, 75.83, 82.56, 64.64], "lstm": [55.22, 55.57, 46.95, 48.1, 39.76, 37.24, 31.47, 29.56, 29.02, 26.56, 30.93, 32.12, 35.63, 45.02, 51.17, 51.99, 55.9, 46.97, 40.39, 30.82, 25.28, 18.04, 18.29, 12.25, 10.27, 12.05, 10.82, 13.19, 16.48, 23.5, 31.73, 39.59, 52.09, 73.67, 95.77, 121.67, 120.71, 102.19, 91.06, 84.54, 84.41, 80.74, 76.82, 69.2, 63.68, 59.69, 56.41, 60.03]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.25, 2.5, 2.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.23, 0.23, 0.29, 0.93, 8.86, 17.21, 25.91, 34.57, 38.36, 34.05, 39.88, 59.19, 77.92, 80.39, 93.84, 93.89, 111.39, 123.01, 123.01, 127.68, 129.04, 129.85, 129.98, 130.09, 131.91, 131.94, 132.86, 138.67, 134.18, 168.96, 160.85, 157.73, 199.25, 254.99, 307.91, 354.55, 354.55, 354.55, 354.55, 354.55, 355.14, 357.22, 357.54, 358.62], "profit_aud": 358.62}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.71, 9.68, 9.68, 9.68, 9.68, 9.68, 28.4, 28.4, 28.4, 28.4, 28.4, 28.4, 28.4, 28.4, 28.4, 28.4, 29.73, 30.82, 29.01, 29.18, 29.59, 29.59, 29.59, 64.37, 72.48, 100.37, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89, 141.89], "profit_aud": 141.89}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.62, 0.62, 0.62, 0.62, 2.57, 2.57, 2.57, 2.57, 2.57, 21.89, 40.61, 40.61, 40.61, 40.61, 40.61, 40.61, 40.61, 40.61, 41.22, 41.22, 42.55, 43.64, 41.82, 41.99, 41.99, 41.99, 41.99, 76.77, 84.89, 112.77, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3, 154.3], "profit_aud": 154.3}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 6.6, 14.54, 22.88, 31.59, 31.59, 31.59, 31.59, 25.76, 45.08, 63.8, 66.28, 66.28, 66.28, 66.28, 66.28, 66.28, 70.95, 72.31, 73.65, 74.99, 75.47, 75.47, 75.47, 75.47, 75.47, 75.47, 75.47, 83.58, 111.47, 152.99, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73, 208.73], "profit_aud": 208.73}}} \ No newline at end of file diff --git a/results/daily/2026-07-12.json b/results/daily/2026-07-12.json new file mode 100644 index 0000000..450287d --- /dev/null +++ b/results/daily/2026-07-12.json @@ -0,0 +1 @@ +{"date": "2026-07-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.14, -1.16, -0.97, -0.76, -0.43, 0.57, -2.38, -1.66, 0.07, -2.36, 0.12, -1.04, -1.6, 0.45, 0.46, -1.07, -4.06, -8.65, -8.58, -5.69, -3.01, -3.49, -7.99, -18.94, -16.86, -37.62, -58.58, -7.58, -5.11, -5.12, -4.11, -5.41, -16.18, -12.66, -2.39, -1.27, 1.37, -3.32, -5.87, -1.08, -3.87, -0.96, 1.46, -2.6, -4.94, -5.54, -5.93, -2.59], "forecast_price": {"naive": [48.22, 39.15, 3.35, 0.19, -0.18, 0.0, -0.5, -5.06, -6.35, -6.68, -6.97, -6.92, -6.07, -3.88, -4.66, 15.45, 14.98, 1.98, 10.76, -0.45, -14.0, -9.29, -1.08, -3.74, -1.09, -1.08, -1.07, -0.87, 1.45, -0.14, -0.74, 5.16, 3.59, 27.82, 6.49, 22.31, 33.22, 44.59, 42.34, 37.31, 23.81, 12.45, 8.92, 9.2, -0.47, 1.85, -0.26, -0.86], "lightgbm": [23.82, 23.19, 12.04, 10.9, 9.99, 9.78, 9.44, 9.5, 9.39, 10.19, 13.42, 13.27, 13.9, 15.46, 15.26, 20.11, 20.6, 14.24, 16.96, 12.91, 9.29, 8.01, 10.86, 10.38, 10.27, 10.27, 10.27, 10.27, 10.27, 12.22, 14.35, 17.71, 19.99, 35.14, 38.72, 52.88, 57.86, 59.96, 59.35, 57.44, 54.6, 50.9, 48.59, 47.51, 46.23, 46.08, 46.23, 45.7], "lstm": [-4.27, -2.86, -11.67, -14.11, -11.4, -15.19, -16.39, -19.12, -12.82, -17.78, -14.35, -11.45, -10.54, 2.21, 7.77, 15.77, 15.94, 12.47, 9.93, 0.68, -3.63, -5.75, -8.47, -9.15, -13.61, -12.45, -17.89, -15.09, -6.25, 0.17, 2.37, 10.56, 22.54, 41.39, 52.87, 70.78, 73.27, 73.41, 66.71, 66.08, 56.91, 58.99, 53.11, 46.2, 45.47, 37.12, 35.09, 40.43]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.25, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 0.88, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.25, 4.12, 2.88, 2.75, 3.88, 5.0, 4.62, 3.38, 2.12, 3.25, 4.38, 3.12, 4.25, 3.0, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0], "cumulative_profit_aud": [1.42, 2.87, 4.08, 3.45, 2.91, 3.62, 6.59, 8.67, 8.75, 11.71, 11.85, 12.5, 14.5, 15.06, 15.63, 15.77, 16.27, 27.09, 37.81, 39.95, 36.18, 31.82, 36.81, 60.49, 81.57, 128.59, 201.82, 202.77, 199.21, 199.21, 194.07, 194.07, 214.3, 230.13, 229.46, 227.87, 229.59, 233.74, 241.08, 239.74, 244.57, 243.38, 245.21, 245.21, 251.39, 258.32, 265.74, 266.06], "profit_aud": 266.06}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.25, 2.5, 2.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.53, 1.17, 1.47, 1.68, 1.59, 4.55, 4.4, 5.7, 6.7, 7.2, 6.63, 5.3, 0.23, -10.59, -21.31, -20.6, -16.84, -12.47, -12.47, 11.2, 32.28, 60.49, 67.82, 68.76, 62.37, 63.65, 68.79, 62.71, 82.93, 67.11, 70.09, 70.26, 71.98, 67.82, 60.48, 59.14, 59.14, 59.14, 59.14, 59.14, 65.32, 59.08, 66.5, 69.74], "profit_aud": 69.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 0.24, -0.47, 2.5, 4.58, 4.49, 4.49, 4.49, 4.49, 4.49, 5.06, 5.06, 3.72, -1.34, -1.34, -12.07, -12.07, -8.3, -3.94, -3.94, -3.94, 17.14, 64.16, 96.67, 96.67, 96.67, 96.67, 96.67, 96.67, 96.67, 96.67, 96.67, 96.67, 98.38, 94.23, 86.89, 85.54, 85.54, 85.54, 85.54, 85.54, 85.54, 85.54, 85.54, 85.54], "profit_aud": 85.54}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [1.42, 0.13, 0.25, 1.21, 0.74, 0.03, 3.0, 5.07, 5.11, 8.07, 7.92, 8.05, 8.25, 8.25, 8.25, 6.92, 1.85, -8.96, -19.69, -19.69, -19.31, -18.87, -17.87, -6.04, 15.04, 62.06, 135.29, 144.77, 145.41, 145.41, 145.41, 145.41, 145.41, 145.41, 145.41, 143.82, 145.53, 141.38, 134.04, 134.04, 134.04, 134.04, 134.04, 134.04, 134.04, 134.04, 141.45, 138.53], "profit_aud": 138.53}}} \ No newline at end of file diff --git a/results/daily/2026-07-13.json b/results/daily/2026-07-13.json new file mode 100644 index 0000000..079140a --- /dev/null +++ b/results/daily/2026-07-13.json @@ -0,0 +1 @@ +{"date": "2026-07-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-2.82, -0.74, -1.1, -2.12, -5.92, -5.65, -6.2, -6.39, -6.02, -4.78, -6.13, -5.04, -3.18, -3.06, -7.11, -11.16, -9.69, -9.41, -7.07, -11.37, -17.6, -19.99, -23.04, -35.37, -19.74, -14.89, -32.3, -31.18, -22.3, -23.57, -66.78, -71.15, -7.91, -15.71, -7.06, 25.16, 43.77, 56.45, 42.35, 0.57, 19.78, 11.26, 22.82, 7.49, 5.4, -0.21, -1.74, -1.65], "forecast_price": {"naive": [-1.14, -1.16, -0.97, -0.76, -0.43, 0.57, -2.38, -1.66, 0.07, -2.36, 0.12, -1.04, -1.6, 0.45, 0.46, -1.07, -4.06, -8.65, -8.58, -5.69, -3.01, -3.49, -7.99, -18.94, -16.86, -37.62, -58.58, -7.58, -5.11, -5.12, -4.11, -5.41, -16.18, -12.66, -2.39, -1.27, 1.37, -3.32, -5.87, -1.08, -3.87, -0.96, 1.46, -2.6, -4.94, -5.54, -5.93, -2.59], "lightgbm": [4.93, 4.53, 1.96, 1.06, 1.16, 0.11, 1.16, 0.12, 0.12, 0.6, 10.47, 11.1, 12.58, 13.06, 12.7, 14.8, 18.59, 14.63, 14.91, 19.86, 14.04, 13.06, 8.38, -1.51, 5.22, -2.2, -8.89, 8.18, 13.25, 13.7, 17.6, 18.51, 16.24, 26.82, 41.09, 53.76, 54.35, 54.32, 55.18, 53.0, 53.0, 52.17, 50.97, 49.41, 46.26, 45.15, 45.15, 43.43], "lstm": [-11.24, -7.7, -13.89, -19.12, -18.89, -22.23, -22.01, -21.13, -20.92, -17.41, -10.58, -4.6, 0.3, 16.03, 24.74, 39.07, 34.89, 24.36, 24.68, 15.58, 10.52, 2.98, 0.92, -3.41, -8.91, -6.66, -9.48, -16.17, -7.99, -4.5, -2.57, 4.55, 14.56, 31.82, 42.69, 59.88, 60.73, 58.84, 62.53, 61.39, 56.07, 52.83, 51.53, 49.14, 42.01, 33.63, 37.03, 41.54]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 2.12, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [3.53, 2.72, 2.85, 3.12, 7.55, 7.55, 15.3, 23.28, 30.8, 24.83, 32.49, 26.19, 22.21, 18.39, 19.28, 33.22, 36.86, 36.86, 28.01, 29.44, 31.64, 34.13, 62.93, 107.14, 87.99, 69.37, 109.74, 148.73, 148.73, 166.4, 249.88, 338.82, 330.04, 349.68, 350.57, 382.01, 436.72, 507.29, 560.23, 559.51, 579.29, 565.22, 593.74, 593.74, 593.74, 594.0, 596.18, 598.25], "profit_aud": 598.25}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 1.25, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 1.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 1.12, 2.25, 1.0, 2.12, 0.88, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.25, 4.12, 2.88, 2.75, 3.88, 5.0, 4.62, 3.38, 2.12, 3.25, 4.38, 3.12, 4.25, 3.0, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0], "cumulative_profit_aud": [3.53, 4.45, 5.83, 4.06, -3.34, -10.4, -2.65, 5.33, -2.19, 3.79, -3.88, -0.73, 3.26, -0.57, -9.46, -8.07, -6.86, 4.9, 13.75, 18.01, -4.0, -28.99, -14.59, 29.62, 54.3, 72.92, 113.29, 117.19, 101.69, 101.69, 18.21, 18.21, 28.09, 47.73, 45.75, 77.2, 131.91, 61.35, 8.41, 9.12, -15.61, -1.53, 27.0, 27.0, 20.25, 20.5, 22.69, 22.89], "profit_aud": 22.89}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 1.18, 1.18, 8.24, 8.24, 16.22, 23.74, 29.72, 29.72, 29.72, 29.72, 29.72, 29.72, 15.77, 3.66, 3.66, -5.18, -19.39, -19.39, -19.39, -19.39, 24.82, 49.51, 68.12, 108.5, 125.8, 125.8, 125.8, 125.8, 45.76, 55.64, 55.64, 55.64, 87.09, 141.8, 212.36, 265.3, 265.3, 265.3, 265.3, 265.3, 265.3, 265.3, 265.3, 265.3, 265.3], "profit_aud": 265.3}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [3.53, 2.72, 2.85, 4.45, 4.45, 11.51, 19.25, 27.24, 34.76, 35.35, 36.12, 36.75, 36.75, 36.75, 27.86, 13.91, 1.8, 1.8, -7.04, -7.04, -7.04, -7.04, -7.04, -2.62, 22.06, 31.37, 71.74, 110.73, 138.6, 141.55, 149.89, 149.89, 149.89, 149.89, 149.89, 181.34, 236.05, 236.05, 288.99, 289.71, 289.71, 289.71, 289.71, 289.71, 289.71, 289.97, 290.21, 288.15], "profit_aud": 288.15}}} \ No newline at end of file diff --git a/results/daily/2026-07-14.json b/results/daily/2026-07-14.json new file mode 100644 index 0000000..e5bc069 --- /dev/null +++ b/results/daily/2026-07-14.json @@ -0,0 +1 @@ +{"date": "2026-07-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.1, -1.61, -2.28, -3.54, -2.76, -2.61, -1.57, -1.07, -1.09, -2.9, -0.76, 0.41, 0.69, 7.58, 20.15, 24.14, 32.0, 53.56, 62.52, 29.73, 22.44, 16.29, 5.95, 0.06, 0.02, -1.11, -0.94, -6.72, -24.38, -7.14, -8.71, 9.88, 29.27, 47.27, 89.27, 101.35, 102.59, 102.03, 102.84, 102.6, 99.36, 102.17, 101.54, 103.87, 103.87, 95.47, 98.51, 96.03], "forecast_price": {"naive": [-2.82, -0.74, -1.1, -2.12, -5.92, -5.65, -6.2, -6.39, -6.02, -4.78, -6.13, -5.04, -3.18, -3.06, -7.11, -11.16, -9.69, -9.41, -7.07, -11.37, -17.6, -19.99, -23.04, -35.37, -19.74, -14.89, -32.3, -31.18, -22.3, -23.57, -66.78, -71.15, -7.91, -15.71, -7.06, 25.16, 43.77, 56.45, 42.35, 0.57, 19.78, 11.26, 22.82, 7.49, 5.4, -0.21, -1.74, -1.65], "lightgbm": [17.87, 17.65, 11.85, 11.25, 11.58, 11.58, 11.58, 11.58, 11.58, 13.21, 24.34, 24.91, 29.16, 29.7, 26.97, 27.17, 27.26, 18.39, 17.02, 9.36, 10.71, 7.74, 4.63, -0.84, 2.61, 2.0, -1.29, 0.73, 4.43, 5.8, -0.07, 5.18, 22.89, 26.35, 41.89, 60.46, 64.99, 72.27, 63.4, 59.17, 61.24, 58.61, 59.26, 54.89, 54.37, 54.37, 54.5, 54.8], "lstm": [-10.33, -4.32, -11.39, -19.09, -19.81, -24.38, -23.52, -24.49, -24.37, -19.81, -15.25, -10.51, -2.31, 11.92, 16.88, 27.87, 22.51, 14.42, 11.86, 3.69, -0.88, -10.69, -15.49, -18.06, -22.83, -20.91, -21.82, -21.29, -16.39, -8.4, -9.51, -2.98, 9.59, 25.53, 42.55, 58.58, 66.9, 59.53, 64.62, 60.38, 58.44, 52.84, 49.65, 46.03, 41.09, 31.97, 32.75, 35.23]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.14, 1.14, 3.99, 8.42, 11.87, 15.14, 15.34, 14.3, 14.3, 17.93, 18.02, 18.02, 18.02, 18.02, 18.02, 18.02, 58.02, 124.97, 203.12, 240.28, 240.28, 240.28, 240.28, 240.28, 240.28, 241.67, 241.14, 249.55, 280.03, 288.95, 299.84, 299.84, 299.84, 299.84, 299.84, 299.84, 299.84, 299.84, 428.39, 556.65, 556.65, 556.65, 556.65, 686.49, 816.33, 816.33, 816.33, 816.33], "profit_aud": 816.33}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 1.75, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.38, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 2.25, 2.12, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [1.38, -0.41, -0.13, 0.32, 2.39, 2.39, 4.35, 5.68, 7.04, 3.42, 4.37, 4.89, 5.75, 15.23, 12.71, -17.47, -29.47, -29.47, 48.68, 44.97, 42.16, 40.13, 32.69, 32.62, 32.64, 31.26, 32.43, 40.83, 40.83, 46.19, 57.08, 44.73, 77.22, 18.13, 6.97, 133.66, 261.9, 389.44, 517.99, 389.73, 489.1, 361.39, 488.31, 488.31, 488.31, 368.98, 245.84, 125.81], "profit_aud": 125.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 4.43, 7.88, 7.88, 8.75, 10.08, 11.44, 11.44, 11.44, 11.44, 12.3, 21.78, 21.78, 51.96, 91.95, 91.95, 91.95, 54.79, 80.03, 80.03, 80.03, 79.96, 79.95, 81.33, 82.5, 90.91, 90.91, 81.98, 92.87, 91.49, 91.49, 91.49, 91.49, 91.49, 219.73, 347.27, 475.82, 475.82, 600.03, 600.03, 600.03, 600.03, 600.03, 600.03, 600.03, 600.03], "profit_aud": 600.03}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [1.38, -0.41, -0.13, 0.32, 0.66, 3.93, 5.89, 7.23, 8.58, 10.39, 10.49, 10.44, 10.35, 10.35, 35.54, 65.72, 105.72, 172.66, 172.66, 172.66, 169.86, 167.82, 167.08, 167.04, 167.01, 168.4, 169.57, 177.98, 181.03, 173.1, 183.99, 182.75, 182.75, 182.75, 182.75, 182.75, 310.99, 438.53, 567.08, 695.34, 695.34, 695.34, 695.34, 695.34, 695.34, 695.34, 695.34, 695.34], "profit_aud": 695.34}}} \ No newline at end of file diff --git a/results/daily/2026-07-15.json b/results/daily/2026-07-15.json new file mode 100644 index 0000000..9c2caa3 --- /dev/null +++ b/results/daily/2026-07-15.json @@ -0,0 +1 @@ +{"date": "2026-07-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [101.42, 116.54, 117.99, 162.02, 104.46, 106.67, 110.03, 103.3, 136.7, 139.26, 126.42, 114.85, 103.3, 102.68, 114.46, 124.38, 126.3, 111.37, 101.11, 101.02, 96.11, 72.45, 68.18, 72.55, 70.77, 66.54, 83.18, 89.27, 89.52, 107.5, 120.23, 114.15, 131.67, 141.69, 160.92, 145.81, 141.99, 147.94, 154.16, 154.38, 162.42, 155.91, 147.12, 130.4, 126.72, 109.8, 109.06, 110.98], "forecast_price": {"naive": [-1.1, -1.61, -2.28, -3.54, -2.76, -2.61, -1.57, -1.07, -1.09, -2.9, -0.76, 0.41, 0.69, 7.58, 20.15, 24.14, 32.0, 53.56, 62.52, 29.73, 22.44, 16.29, 5.95, 0.06, 0.02, -1.11, -0.94, -6.72, -24.38, -7.14, -8.71, 9.88, 29.27, 47.27, 89.27, 101.35, 102.59, 102.03, 102.84, 102.6, 99.36, 102.17, 101.54, 103.87, 103.87, 95.47, 98.51, 96.03], "lightgbm": [35.16, 35.59, 32.42, 30.51, 30.95, 30.95, 30.95, 30.95, 30.95, 31.36, 34.32, 34.56, 35.53, 40.01, 42.15, 43.14, 41.27, 47.33, 47.04, 26.39, 21.13, 17.77, 12.1, 9.78, 12.76, 14.8, 10.88, 10.44, -3.23, 4.85, 4.26, 25.86, 36.64, 53.57, 87.3, 107.72, 107.72, 108.46, 107.72, 106.51, 106.64, 102.32, 99.0, 91.17, 90.31, 88.04, 87.37, 88.04], "lstm": [120.9, 131.15, 111.98, 102.59, 97.31, 80.23, 80.45, 78.56, 77.81, 84.79, 92.37, 91.49, 116.76, 133.92, 146.05, 139.95, 118.42, 107.8, 85.04, 69.79, 63.39, 49.45, 45.7, 41.04, 31.08, 28.36, 28.06, 25.55, 27.7, 36.89, 41.48, 44.81, 63.52, 96.94, 123.75, 179.58, 193.57, 173.98, 147.81, 138.62, 137.89, 122.35, 113.28, 94.77, 109.42, 83.48, 83.15, 87.8]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 1.25, 0.0, 1.12, 2.25, 2.88, 4.0, 2.75, 1.5, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-126.78, -143.09, -143.09, 59.43, -71.15, -204.48, -280.95, -410.08, -239.21, -65.14, 92.89, 92.89, -36.24, -164.58, -164.58, -9.11, 148.76, 148.76, 148.76, 148.76, 148.76, 58.19, -27.03, -67.29, -155.76, -238.93, -238.93, -238.93, -238.93, -238.93, -238.93, -238.93, -238.93, -238.93, -37.78, -37.78, -37.78, -37.78, -37.78, 155.19, 358.22, 553.11, 553.11, 553.11, 553.11, 553.11, 553.11, 553.11], "profit_aud": 553.11}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-12.68, -85.52, -233.0, -435.53, -566.1, -699.44, -713.19, -612.99, -612.99, -787.05, -802.86, -802.86, -802.86, -802.86, -802.86, -802.86, -644.99, -505.77, -379.38, -253.11, -253.11, -253.11, -253.11, -253.11, -253.11, -336.28, -290.12, -401.7, -513.59, -647.97, -798.26, -798.26, -798.26, -798.26, -798.26, -798.26, -798.26, -798.26, -605.57, -412.59, -412.59, -412.59, -412.59, -249.59, -91.19, -91.19, -91.19, -91.19], "profit_aud": -91.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -202.52, -202.52, -261.72, -399.26, -528.39, -699.26, -699.26, -699.26, -699.26, -699.26, -699.26, -556.19, -400.72, -400.72, -261.5, -135.11, -135.11, -135.11, -135.11, -144.66, -235.35, -235.35, -152.18, -198.34, -309.93, -421.82, -556.2, -706.49, -706.49, -706.49, -706.49, -706.49, -524.22, -346.74, -161.81, 30.88, 30.88, 30.88, 30.88, 30.88, 30.88, 30.88, 30.88, 30.88, 30.88], "profit_aud": 30.88}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -133.33, -270.87, -400.0, -570.88, -648.16, -648.16, -648.16, -648.16, -519.82, -376.74, -221.27, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -63.4, -102.68, -185.85, -289.82, -401.41, -513.3, -513.3, -513.3, -513.3, -513.3, -513.3, -513.3, -331.03, -153.55, 31.38, 224.07, 224.07, 224.07, 224.07, 224.07, 61.06, 203.62, 203.62, 203.62, 203.62], "profit_aud": 203.62}}} \ No newline at end of file diff --git a/results/daily/2026-07-16.json b/results/daily/2026-07-16.json new file mode 100644 index 0000000..a4ce128 --- /dev/null +++ b/results/daily/2026-07-16.json @@ -0,0 +1 @@ +{"date": "2026-07-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [113.67, 115.41, 113.5, 106.12, 94.67, 96.67, 94.71, 89.29, 96.35, 97.62, 102.36, 99.45, 111.07, 115.71, 141.27, 133.97, 126.84, 106.79, 89.99, 89.56, 88.21, 83.39, 93.05, 88.11, 98.1, 91.9, 83.94, 75.49, 66.06, 75.05, 38.59, 60.53, 98.43, 115.77, 132.4, 128.94, 129.17, 124.32, 120.7, 120.08, 122.24, 115.31, 111.96, 117.93, 109.53, 127.51, 129.34, 132.28], "forecast_price": {"naive": [101.42, 116.54, 117.99, 162.02, 104.46, 106.67, 110.03, 103.3, 136.7, 139.26, 126.42, 114.85, 103.3, 102.68, 114.46, 124.38, 126.3, 111.37, 101.11, 101.02, 96.11, 72.45, 68.18, 72.55, 70.77, 66.54, 83.18, 89.27, 89.52, 107.5, 120.23, 114.15, 131.67, 141.69, 160.92, 145.81, 141.99, 147.94, 154.16, 154.38, 162.42, 155.91, 147.12, 130.4, 126.72, 109.8, 109.06, 110.98], "lightgbm": [88.95, 91.56, 85.45, 76.93, 72.11, 70.44, 71.2, 72.81, 75.91, 73.57, 79.35, 79.65, 85.33, 88.26, 92.79, 94.26, 92.65, 84.74, 81.29, 75.3, 71.92, 55.32, 55.09, 54.47, 54.32, 53.71, 63.54, 62.82, 64.5, 67.53, 72.53, 80.31, 88.36, 112.28, 129.45, 131.2, 130.28, 129.2, 128.06, 129.99, 126.82, 123.3, 117.38, 104.16, 99.87, 89.78, 89.78, 89.78], "lstm": [114.45, 120.86, 117.87, 102.36, 100.56, 94.28, 89.28, 86.9, 83.69, 82.32, 87.28, 91.75, 101.1, 132.67, 133.72, 137.43, 130.9, 98.78, 88.25, 71.51, 65.47, 52.65, 53.06, 49.59, 45.16, 44.03, 43.81, 44.28, 39.72, 46.89, 49.98, 61.49, 81.84, 109.46, 134.13, 187.15, 173.27, 165.5, 135.57, 127.37, 113.41, 106.32, 96.2, 83.91, 84.38, 71.02, 71.08, 79.28]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.38, 3.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -118.34, -172.0, -290.38, -401.99, -522.43, -522.43, -522.43, -522.43, -522.43, -377.79, -201.21, -33.75, 124.8, 124.8, 124.8, 124.8, 124.8, 20.55, 20.55, 8.22, 130.84, 130.84, 130.84, 88.94, 6.36, -87.45, -135.68, -211.35, -211.35, -211.35, -45.85, 115.32, 276.79, 276.79, 276.79, 276.79, 276.79, 276.79, 136.84, 136.84, -0.07, 127.44, 289.12, 454.47], "profit_aud": 454.47}, "naive": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.25, 1.25, 0.0, 1.12, 2.25, 2.88, 4.0, 2.75, 1.5, 0.25, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-142.09, -158.24, -158.24, -25.59, -143.93, -264.78, -330.6, -442.21, -321.78, -199.76, -71.8, -71.8, -210.65, -355.28, -355.28, -187.83, -29.28, -29.28, -29.28, -29.28, -29.28, -133.52, -249.83, -298.73, -421.35, -536.23, -536.23, -536.23, -536.23, -536.23, -536.23, -536.23, -536.23, -536.23, -370.73, -370.73, -370.73, -370.73, -370.73, -220.63, -67.84, 76.3, 76.3, 76.3, 76.3, 76.3, 76.3, 76.3], "profit_aud": 76.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -118.34, -239.18, -357.57, -469.18, -469.18, -523.36, -523.36, -523.36, -523.36, -378.72, -202.13, -34.68, 123.87, 123.87, 123.87, 123.87, 123.87, 77.58, -38.72, -148.86, -271.48, -386.36, -386.36, -386.36, -386.36, -386.36, -386.36, -386.36, -386.36, -386.36, -220.86, -59.68, 101.78, 101.78, 101.78, 251.88, 251.88, 251.88, 251.88, 251.88, 251.88, 251.88, 251.88, 251.88], "profit_aud": 251.88}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -52.56, -164.18, -284.61, -406.63, -534.58, -534.58, -534.58, -389.94, -213.36, -45.9, 112.64, 112.64, 112.64, 112.64, 112.64, 112.64, 112.64, 112.64, 58.2, -56.67, -161.59, -255.96, -338.54, -338.54, -338.54, -338.54, -338.54, -338.54, -338.54, -177.37, -15.9, 139.5, 290.37, 290.37, 290.37, 290.37, 290.37, 290.37, 290.37, 130.98, 112.87, 278.22], "profit_aud": 278.22}}} \ No newline at end of file diff --git a/results/daily/2026-07-17.json b/results/daily/2026-07-17.json new file mode 100644 index 0000000..96d5c1a --- /dev/null +++ b/results/daily/2026-07-17.json @@ -0,0 +1 @@ +{"date": "2026-07-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [116.36, 113.14, 129.39, 134.24, 138.04, 136.67, 141.35, 138.75, 114.02, 108.25, 134.06, 126.01, 128.17, 122.92, 119.84, 113.36, 101.84, 94.83, 73.26, 77.76, 77.09, 67.74, 66.74, 61.65, 63.08, 54.3, 55.7, 63.77, 65.97, 58.06, 56.54, 85.46, 104.96, 134.21, 143.75, 137.2, 130.73, 126.66, 126.09, 128.73, 131.47, 135.06, 136.28, 130.94, 124.68, 151.64, 143.19, 147.49], "forecast_price": {"naive": [113.67, 115.41, 113.5, 106.12, 94.67, 96.67, 94.71, 89.29, 96.35, 97.62, 102.36, 99.45, 111.07, 115.71, 141.27, 133.97, 126.84, 106.79, 89.99, 89.56, 88.21, 83.39, 93.05, 88.11, 98.1, 91.9, 83.94, 75.49, 66.06, 75.05, 38.59, 60.53, 98.43, 115.77, 132.4, 128.94, 129.17, 124.32, 120.7, 120.08, 122.24, 115.31, 111.96, 117.93, 109.53, 127.51, 129.34, 132.28], "lightgbm": [92.98, 93.58, 88.79, 77.57, 78.15, 77.79, 77.79, 75.84, 77.79, 78.04, 83.07, 84.47, 92.1, 99.89, 104.18, 104.3, 99.61, 90.48, 85.03, 77.69, 74.9, 70.65, 71.25, 70.7, 74.8, 71.59, 65.24, 58.11, 55.86, 57.68, 47.1, 64.29, 87.39, 103.57, 117.07, 119.81, 119.26, 119.26, 116.94, 116.47, 115.79, 108.66, 102.81, 97.91, 91.41, 100.14, 100.57, 101.84], "lstm": [117.67, 116.5, 118.54, 105.49, 102.69, 96.65, 93.02, 93.45, 89.08, 87.74, 93.37, 93.85, 111.81, 137.75, 136.4, 140.53, 130.68, 103.82, 94.23, 72.41, 59.87, 54.47, 52.06, 45.59, 48.56, 44.94, 40.35, 35.81, 38.38, 42.65, 47.63, 60.27, 78.19, 109.32, 134.04, 195.28, 170.59, 164.53, 135.5, 127.58, 123.75, 126.41, 110.62, 96.36, 105.51, 89.53, 82.63, 96.02]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 1.12, 2.25, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-145.45, -286.88, -286.88, -286.88, -286.88, -286.88, -110.19, 28.55, -113.98, -249.28, -81.71, -81.71, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 46.46, 12.24, 12.24, -55.63, -125.25, -125.25, -125.25, -197.83, -268.51, -268.51, -268.51, -268.51, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, -88.83, 100.72, 279.71, 464.07], "profit_aud": 464.07}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 2.38, 2.38, 3.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -172.55, -248.4, -425.08, -598.52, -741.05, -741.05, -741.05, -741.05, -741.05, -587.39, -437.6, -295.89, -168.59, -168.59, -168.59, -168.59, -168.59, -253.27, -253.27, -261.9, -183.05, -183.05, -183.05, -218.45, -300.91, -373.48, -444.16, -550.99, -550.99, -550.99, -371.3, -199.81, -36.39, -36.39, -36.39, -36.39, -36.39, -36.39, -206.74, -206.74, -362.6, -210.96, -31.97, 152.39], "profit_aud": 152.39}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -167.8, -167.8, -243.65, -420.33, -593.77, -736.3, -736.3, -736.3, -736.3, -736.3, -582.64, -432.85, -291.14, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -243.56, -326.02, -398.59, -469.27, -516.7, -516.7, -516.7, -337.02, -165.52, -2.11, 156.22, 156.22, 156.22, 156.22, 156.22, 156.22, 156.22, 0.36, 0.36, 0.36, 166.29], "profit_aud": 166.29}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -176.68, -253.69, -396.22, -531.53, -699.1, -699.1, -699.1, -545.44, -395.65, -253.95, -126.64, -126.64, -126.64, -126.64, -126.64, -126.64, -126.64, -126.64, -126.64, -156.78, -226.4, -306.12, -388.58, -461.16, -461.16, -461.16, -461.16, -461.16, -461.16, -289.66, -126.25, 32.08, 189.69, 189.69, 189.69, 189.69, 189.69, 189.69, 189.69, 189.69, 10.7, 176.63], "profit_aud": 176.63}}} \ No newline at end of file diff --git a/results/daily/2026-07-18.json b/results/daily/2026-07-18.json new file mode 100644 index 0000000..7a9ae15 --- /dev/null +++ b/results/daily/2026-07-18.json @@ -0,0 +1 @@ +{"date": "2026-07-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [132.97, 125.54, 151.73, 122.0, 123.3, 124.24, 127.26, 117.18, 114.29, 110.1, 126.58, 128.81, 128.67, 134.33, 158.28, 157.64, 142.46, 86.15, 59.84, 60.49, 63.15, 42.63, 43.32, 42.26, 48.48, 48.1, 44.11, 46.73, 27.87, 48.39, 48.38, 53.55, 81.57, 103.41, 104.78, 111.56, 115.5, 117.74, 114.5, 115.02, 114.57, 108.67, 106.86, 102.65, 106.74, 109.6, 102.2, 112.99], "forecast_price": {"naive": [116.36, 113.14, 129.39, 134.24, 138.04, 136.67, 141.35, 138.75, 114.02, 108.25, 134.06, 126.01, 128.17, 122.92, 119.84, 113.36, 101.84, 94.83, 73.26, 77.76, 77.09, 67.74, 66.74, 61.65, 63.08, 54.3, 55.7, 63.77, 65.97, 58.06, 56.54, 85.46, 104.96, 134.21, 143.75, 137.2, 130.73, 126.66, 126.09, 128.73, 131.47, 135.06, 136.28, 130.94, 124.68, 151.64, 143.19, 147.49], "lightgbm": [91.22, 89.06, 89.45, 85.07, 81.02, 80.76, 80.08, 80.08, 77.72, 77.57, 80.38, 81.07, 81.67, 84.87, 83.26, 80.71, 74.29, 68.76, 50.14, 49.63, 46.38, 38.78, 39.8, 38.03, 37.89, 34.93, 34.93, 39.27, 39.24, 37.77, 37.69, 60.36, 72.65, 110.16, 120.0, 123.23, 115.39, 112.77, 112.77, 112.31, 115.47, 115.59, 111.62, 100.22, 97.88, 106.35, 106.5, 106.5], "lstm": [138.63, 129.49, 132.42, 118.5, 111.89, 105.38, 99.07, 99.16, 94.88, 88.0, 90.33, 87.59, 88.37, 96.81, 94.33, 88.64, 81.86, 65.75, 57.1, 40.66, 30.29, 23.11, 23.17, 19.05, 18.01, 20.02, 20.04, 15.12, 19.67, 25.23, 36.04, 51.61, 67.27, 102.91, 132.84, 174.22, 172.08, 151.57, 134.98, 124.19, 123.89, 117.84, 112.65, 101.66, 97.98, 87.71, 87.94, 104.66]}, "methods": {"perfect_foresight": {"charge_mw": [0.28, 2.5, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 1.25, 0.0, 0.38, 0.38, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-18.62, -175.54, 14.13, -36.5, -36.5, -36.5, -36.5, -182.98, -325.84, -463.47, -463.47, -463.47, -463.47, -463.47, -265.62, -68.57, 109.51, 109.51, 109.51, 109.51, 109.51, 56.21, 2.07, -50.76, -50.76, -50.76, -75.24, -75.24, -110.08, -110.08, -110.08, -110.08, -110.08, -110.08, -110.08, -110.08, 34.3, 181.48, 181.48, 325.25, 468.47, 468.47, 468.47, 468.47, 468.47, 468.47, 468.47, 468.47], "profit_aud": 468.47}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 1.0, 0.0, 1.12, 2.25, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-166.22, -323.14, -323.14, -323.14, -323.14, -323.14, -164.06, -46.88, -189.74, -327.37, -169.15, -169.15, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -40.48, -63.93, -63.93, -124.05, -179.19, -179.19, -179.19, -239.68, -300.16, -300.16, -300.16, -300.16, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -169.19, -32.18, 95.57, 236.8], "profit_aud": 236.8}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -26.91, -87.03, -142.16, -142.16, -142.16, -202.65, -263.13, -263.13, -263.13, -263.13, -132.16, 7.28, 7.28, 7.28, 7.28, 7.28, 150.5, 286.34, 286.34, 286.34, 286.34, 286.34, 286.34, 286.34], "profit_aud": 286.34}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -52.83, -113.43, -140.12, -140.12, -198.53, -233.37, -233.37, -233.37, -233.37, -233.37, -233.37, -233.37, -93.92, 50.45, 197.63, 340.77, 340.77, 340.77, 340.77, 340.77, 340.77, 340.77, 203.76, 189.45, 330.69], "profit_aud": 330.69}}} \ No newline at end of file diff --git a/results/daily/2026-07-19.json b/results/daily/2026-07-19.json new file mode 100644 index 0000000..2f594d4 --- /dev/null +++ b/results/daily/2026-07-19.json @@ -0,0 +1 @@ +{"date": "2026-07-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [94.34, 95.55, 82.44, 77.68, 82.18, 70.75, 69.11, 65.17, 65.88, 56.68, 55.35, 55.95, 52.7, 52.29, 40.42, 40.2, 43.53, 33.73, 34.65, 32.24, 25.47, 30.42, 32.75, 32.52, 32.87, 30.08, 26.78, 33.6, 42.24, 27.15, 105.04, 125.44, 85.88, 88.73, 117.45, 132.2, 128.21, 130.35, 127.1, 120.1, 106.03, 88.06, 77.8, 72.62, 83.27, 88.72, 51.75, 45.63], "forecast_price": {"naive": [132.97, 125.54, 151.73, 122.0, 123.3, 124.24, 127.26, 117.18, 114.29, 110.1, 126.58, 128.81, 128.67, 134.33, 158.28, 157.64, 142.46, 86.15, 59.84, 60.49, 63.15, 42.63, 43.32, 42.26, 48.48, 48.1, 44.11, 46.73, 27.87, 48.39, 48.38, 53.55, 81.57, 103.41, 104.78, 111.56, 115.5, 117.74, 114.5, 115.02, 114.57, 108.67, 106.86, 102.65, 106.74, 109.6, 102.2, 112.99], "lightgbm": [85.58, 85.44, 82.65, 79.51, 75.8, 75.31, 74.9, 74.46, 73.23, 71.66, 74.57, 74.93, 75.49, 80.33, 79.77, 79.54, 78.14, 60.49, 44.07, 44.03, 43.51, 30.6, 27.26, 25.81, 30.95, 21.25, 18.3, 29.34, 22.08, 33.31, 35.75, 44.52, 62.56, 79.3, 90.54, 107.29, 109.68, 109.68, 108.03, 109.68, 107.4, 96.0, 90.43, 85.13, 85.49, 86.89, 85.13, 92.83], "lstm": [109.29, 99.88, 102.55, 93.57, 87.71, 84.73, 78.23, 73.51, 69.78, 62.75, 63.22, 58.4, 58.18, 60.97, 57.88, 53.98, 46.37, 36.86, 33.4, 18.14, 12.09, 3.98, 5.33, 1.19, 2.37, -2.34, -3.22, -2.75, 6.25, 10.45, 19.89, 36.02, 50.49, 87.23, 113.81, 149.54, 158.57, 143.18, 124.88, 118.43, 113.73, 106.65, 101.72, 92.86, 82.66, 74.5, 75.89, 90.26]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -17.9, -49.74, -87.76, -87.76, -87.76, -87.76, -125.37, -158.84, -158.84, -111.32, -145.26, -40.22, 116.58, 9.23, -101.68, -101.68, 63.57, 223.83, 386.77, 545.65, 545.65, 545.65, 545.65, 534.75, 443.98, 443.98, 554.89, 554.89, 554.89], "profit_aud": 554.89}, "naive": {"charge_mw": [0.28, 2.5, 0.0, 0.83, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 1.25, 0.0, 0.38, 0.38, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-13.21, -132.65, -29.59, -61.83, -61.83, -61.83, -61.83, -143.29, -225.64, -296.49, -296.49, -296.49, -296.49, -296.49, -245.97, -195.72, -141.31, -141.31, -141.31, -141.31, -141.31, -179.33, -220.27, -260.91, -260.91, -260.91, -275.78, -275.78, -328.57, -328.57, -328.57, -328.57, -328.57, -328.57, -328.57, -328.57, -168.31, -5.37, -5.37, 144.75, 277.29, 277.29, 277.29, 277.29, 277.29, 277.29, 277.29, 277.29], "profit_aud": 277.29}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -70.85, -70.85, -70.85, -70.85, -12.02, -12.02, -12.02, -12.02, -12.02, -12.02, -12.02, -12.02, -12.02, -52.95, -93.6, -73.06, -110.66, -144.14, -144.14, -196.94, -196.94, -196.94, -196.94, -196.94, -196.94, -196.94, -196.94, -36.67, 126.27, 285.14, 435.26, 435.26, 435.26, 435.26, 435.26, 435.26, 435.26, 435.26, 435.26], "profit_aud": 435.26}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -38.02, -1.18, -41.83, -60.07, -97.68, -131.15, -173.16, -173.16, -173.16, -173.16, -173.16, -173.16, -173.16, -173.16, -7.91, 152.35, 315.29, 474.16, 474.16, 474.16, 474.16, 474.16, 474.16, 474.16, 363.26, 356.01, 413.05], "profit_aud": 413.05}}} \ No newline at end of file diff --git a/results/daily/2026-07-20.json b/results/daily/2026-07-20.json new file mode 100644 index 0000000..9cd7da6 --- /dev/null +++ b/results/daily/2026-07-20.json @@ -0,0 +1 @@ +{"date": "2026-07-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [49.84, 48.39, 53.8, 53.79, 47.46, 49.68, 50.14, 60.02, 62.16, 62.54, 74.96, 82.74, 81.07, 93.33, 103.32, 107.51, 105.25, 96.33, 72.23, 68.24, 58.75, 63.06, 75.6, 68.77, 75.59, 54.49, 45.9, 51.71, 58.27, 45.84, 72.41, 97.14, 110.04, 114.77, 121.61, 125.19, 125.08, 130.95, 124.32, 122.36, 120.47, 105.14, 102.1, 101.03, 104.7, 101.02, 97.51, 89.15], "forecast_price": {"naive": [94.34, 95.55, 82.44, 77.68, 82.18, 70.75, 69.11, 65.17, 65.88, 56.68, 55.35, 55.95, 52.7, 52.29, 40.42, 40.2, 43.53, 33.73, 34.65, 32.24, 25.47, 30.42, 32.75, 32.52, 32.87, 30.08, 26.78, 33.6, 42.24, 27.15, 105.04, 125.44, 85.88, 88.73, 117.45, 132.2, 128.21, 130.35, 127.1, 120.1, 106.03, 88.06, 77.8, 72.62, 83.27, 88.72, 51.75, 45.63], "lightgbm": [69.55, 69.55, 66.8, 59.85, 66.16, 57.83, 57.83, 57.64, 57.64, 54.43, 63.53, 65.16, 66.92, 64.33, 52.86, 50.76, 50.71, 48.95, 46.16, 44.0, 42.12, 41.15, 40.21, 37.77, 40.84, 40.02, 35.51, 39.16, 40.56, 37.71, 70.5, 73.81, 75.5, 78.44, 104.42, 116.84, 115.26, 116.49, 115.26, 112.99, 101.91, 89.4, 79.77, 73.81, 82.15, 82.03, 62.27, 55.32], "lstm": [42.97, 39.6, 39.37, 33.76, 31.93, 27.56, 26.68, 24.94, 25.98, 26.26, 31.9, 37.66, 46.61, 63.37, 68.86, 77.92, 69.62, 53.46, 54.69, 37.46, 31.74, 22.63, 25.06, 24.49, 20.91, 19.72, 23.75, 23.65, 26.76, 31.26, 38.64, 52.28, 60.21, 94.3, 106.85, 152.58, 143.71, 124.36, 101.65, 94.38, 85.29, 82.49, 79.56, 70.64, 65.78, 56.92, 59.47, 66.24]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-62.31, -122.79, -122.79, -122.79, -182.12, -244.23, -272.05, -272.05, -272.05, -272.05, -272.05, -272.05, -272.05, -272.05, -142.91, -8.52, 123.05, 243.46, 243.46, 243.46, 170.02, 91.19, 185.69, 185.69, 261.28, 193.17, 135.79, 71.15, 38.81, -18.48, -18.48, -18.48, -18.48, -18.48, -18.48, 138.0, 294.36, 458.04, 613.45, 613.45, 613.45, 613.45, 613.45, 613.45, 613.45, 613.45, 613.45, 613.45], "profit_aud": 613.45}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -37.87, -111.32, -190.14, -190.14, -190.14, -190.14, -258.26, -315.64, -315.64, -250.09, -307.38, -234.97, -113.55, -251.1, -394.56, -394.56, -238.07, -81.72, 81.96, 237.37, 237.37, 237.37, 237.37, 223.08, 96.79, 96.79, 223.07, 223.07, 223.07], "profit_aud": 223.07}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -20.62, -20.62, -95.64, -173.34, -251.51, -251.51, -148.08, -46.74, 69.92, 69.92, 69.92, 69.92, 69.92, 69.92, 69.92, 69.92, 69.92, 69.92, -16.04, -16.04, -46.29, -103.67, -168.3, -168.3, -225.6, -225.6, -225.6, -225.6, -225.6, -225.6, -69.11, 87.24, 250.93, 406.34, 406.34, 406.34, 406.34, 406.34, 280.05, 397.83, 397.83, 397.83, 397.83], "profit_aud": 397.83}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -27.58, -90.24, -165.26, -242.96, -321.13, -321.13, -321.13, -321.13, -204.47, -75.32, 59.07, 190.63, 190.63, 190.63, 190.63, 190.63, 111.8, 111.8, 111.8, 17.32, -50.8, -76.27, -140.91, -140.91, -140.91, -140.91, -140.91, -140.91, -140.91, 11.1, 167.59, 323.94, 487.63, 487.63, 487.63, 487.63, 487.63, 487.63, 487.63, 487.63, 361.35, 347.7, 459.13], "profit_aud": 459.13}}} \ No newline at end of file diff --git a/results/daily/2026-07-21.json b/results/daily/2026-07-21.json new file mode 100644 index 0000000..6a9c186 --- /dev/null +++ b/results/daily/2026-07-21.json @@ -0,0 +1 @@ +{"date": "2026-07-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [102.94, 108.6, 122.44, 111.75, 99.62, 92.27, 93.16, 95.32, 98.04, 101.47, 113.51, 126.17, 117.44, 124.93, 139.14, 134.46, 144.86, 119.57, 91.44, 98.29, 101.24, 87.72, 78.59, 62.33, 60.94, 62.46, 61.25, 72.66, 72.54, 74.5, 80.59, 101.9, 113.71, 114.73, 112.83, 111.46, 110.89, 110.88, 104.44, 102.28, 104.04, 98.62, 94.69, 95.4, 101.02, 94.69, 105.92, 98.92], "forecast_price": {"naive": [49.84, 48.39, 53.8, 53.79, 47.46, 49.68, 50.14, 60.02, 62.16, 62.54, 74.96, 82.74, 81.07, 93.33, 103.32, 107.51, 105.25, 96.33, 72.23, 68.24, 58.75, 63.06, 75.6, 68.77, 75.59, 54.49, 45.9, 51.71, 58.27, 45.84, 72.41, 97.14, 110.04, 114.77, 121.61, 125.19, 125.08, 130.95, 124.32, 122.36, 120.47, 105.14, 102.1, 101.03, 104.7, 101.02, 97.51, 89.15], "lightgbm": [72.15, 69.04, 67.87, 64.7, 58.92, 63.6, 63.6, 65.72, 65.72, 66.81, 82.51, 91.3, 92.39, 98.51, 99.73, 99.53, 97.21, 96.28, 83.73, 73.2, 61.73, 62.37, 67.87, 62.62, 67.0, 53.77, 46.31, 51.0, 55.56, 46.59, 67.97, 93.01, 102.56, 119.69, 129.79, 136.53, 136.53, 138.79, 136.53, 133.4, 132.64, 115.51, 110.06, 105.18, 104.64, 104.04, 102.12, 95.48], "lstm": [96.06, 94.83, 94.71, 87.25, 78.51, 70.78, 67.01, 62.3, 67.05, 64.76, 67.77, 82.13, 90.23, 115.15, 126.54, 129.58, 116.75, 95.33, 86.5, 68.99, 67.65, 53.13, 50.07, 48.05, 41.64, 38.08, 42.1, 45.22, 47.85, 49.67, 56.56, 71.52, 88.84, 123.46, 142.14, 190.29, 171.06, 153.81, 131.28, 129.06, 115.28, 103.35, 100.06, 89.83, 88.7, 73.18, 79.41, 79.88]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-128.67, -143.87, 9.18, 9.18, -46.11, -161.45, -277.9, -397.04, -519.59, -519.59, -519.59, -361.87, -361.87, -361.87, -187.94, -19.87, 161.21, 161.21, 161.21, 161.21, 161.21, 161.21, 161.21, 83.3, 7.12, -70.95, -147.51, -147.51, -187.77, -187.77, -187.77, -187.77, -45.63, 97.79, 238.82, 378.15, 378.15, 378.15, 378.15, 378.15, 378.15, 378.15, 259.79, 259.79, 259.79, 246.53, 378.93, 378.93], "profit_aud": 378.93}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-128.67, -264.42, -264.42, -264.42, -388.95, -504.29, -555.99, -555.99, -555.99, -555.99, -555.99, -555.99, -555.99, -555.99, -382.06, -213.99, -32.91, 116.56, 116.56, 116.56, -9.99, -119.65, -21.42, -21.42, 39.52, -38.55, -115.11, -205.94, -246.19, -339.32, -339.32, -339.32, -339.32, -339.32, -339.32, -199.99, -61.38, 77.23, 207.78, 207.78, 207.78, 207.78, 207.78, 207.78, 207.78, 207.78, 207.78, 207.78], "profit_aud": 207.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -139.69, -264.21, -379.55, -496.0, -548.9, -548.9, -548.9, -548.9, -548.9, -548.9, -392.74, -218.81, -50.73, 130.35, 130.35, 130.35, 130.35, 130.35, 130.35, 130.35, 130.35, 130.35, 52.27, -24.29, -115.11, -155.37, -248.5, -248.5, -248.5, -248.5, -248.5, -248.5, -109.17, 29.44, 168.05, 298.6, 298.6, 298.6, 298.6, 298.6, 298.6, 298.6, 298.6, 298.6, 298.6], "profit_aud": 298.6}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -116.45, -235.59, -358.14, -484.98, -547.97, -547.97, -547.97, -391.81, -217.88, -49.81, 131.27, 131.27, 131.27, 131.27, 131.27, 131.27, 131.27, 131.27, 55.1, -22.98, -99.54, -190.36, -230.62, -230.62, -230.62, -230.62, -230.62, -230.62, -89.58, 49.74, 188.36, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96, 326.96], "profit_aud": 326.96}}} \ No newline at end of file diff --git a/results/daily/2026-07-22.json b/results/daily/2026-07-22.json new file mode 100644 index 0000000..bc16463 --- /dev/null +++ b/results/daily/2026-07-22.json @@ -0,0 +1 @@ +{"date": "2026-07-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [109.3, 101.02, 96.83, 72.44, 85.24, 70.33, 53.89, 50.33, 52.02, 61.96, 51.78, 46.86, 79.04, 89.6, 90.74, 93.88, 97.04, 65.03, 49.6, 32.3, 33.22, 31.78, 46.72, 41.47, 26.38, 5.22, 1.21, -1.16, -0.7, -1.64, 1.65, 38.29, 77.95, 90.95, 97.31, 108.5, 100.03, 99.36, 99.96, 103.52, 117.79, 121.45, 125.46, 121.33, 105.23, 105.5, 90.88, 81.11], "forecast_price": {"naive": [102.94, 108.6, 122.44, 111.75, 99.62, 92.27, 93.16, 95.32, 98.04, 101.47, 113.51, 126.17, 117.44, 124.93, 139.14, 134.46, 144.86, 119.57, 91.44, 98.29, 101.24, 87.72, 78.59, 62.33, 60.94, 62.46, 61.25, 72.66, 72.54, 74.5, 80.59, 101.9, 113.71, 114.73, 112.83, 111.46, 110.89, 110.88, 104.44, 102.28, 104.04, 98.62, 94.69, 95.4, 101.02, 94.69, 105.92, 98.92], "lightgbm": [85.33, 84.91, 77.31, 67.43, 72.09, 69.78, 70.53, 71.34, 72.5, 71.85, 78.23, 82.05, 91.35, 96.32, 100.48, 101.08, 99.9, 93.34, 84.06, 82.54, 79.47, 71.92, 67.77, 58.32, 57.1, 54.5, 56.1, 60.72, 60.91, 62.09, 72.91, 85.85, 95.31, 104.06, 111.85, 115.16, 109.99, 109.99, 107.88, 107.43, 106.8, 101.74, 95.12, 90.27, 91.8, 89.35, 91.73, 91.35], "lstm": [84.86, 84.65, 86.25, 78.88, 73.63, 64.7, 62.19, 60.8, 62.44, 57.61, 65.58, 74.17, 79.42, 97.3, 102.94, 108.06, 103.24, 85.46, 77.27, 62.12, 60.63, 53.25, 49.87, 49.47, 40.16, 40.26, 43.2, 42.72, 39.76, 44.41, 48.39, 52.38, 69.32, 92.06, 101.05, 138.02, 129.82, 120.26, 100.54, 97.88, 93.32, 83.19, 80.7, 72.59, 72.29, 58.38, 68.31, 72.49]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -90.55, 5.35, 5.35, -62.02, -124.92, -189.95, -151.23, -215.95, -274.53, -274.53, -162.53, -49.11, 68.24, 189.55, 189.55, 189.55, 149.18, 139.88, 100.15, 158.55, 210.39, 210.39, 210.39, 208.88, 210.32, 211.2, 213.25, 212.34, 212.34, 212.34, 212.34, 212.34, 212.34, 212.34, 212.34, 212.34, 212.34, 359.57, 511.39, 668.21, 819.87, 819.87, 819.87, 819.87, 819.87], "profit_aud": 819.87}, "naive": {"charge_mw": [2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [1.12, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-136.63, -150.77, -29.74, -29.74, -77.05, -164.97, -232.33, -295.24, -360.27, -360.27, -360.27, -301.69, -301.69, -301.69, -188.27, -70.92, 50.39, 50.39, 50.39, 50.39, 50.39, 50.39, 50.39, -1.45, -34.43, -40.96, -42.47, -42.47, -42.09, -42.09, -42.09, -42.09, 55.36, 169.04, 290.68, 426.3, 426.3, 426.3, 426.3, 426.3, 426.3, 426.3, 269.48, 269.48, 269.48, 254.71, 368.31, 368.31], "profit_aud": 368.31}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -90.55, -90.55, -178.47, -245.83, -308.74, -308.74, -343.13, -343.13, -343.13, -343.13, -231.13, -117.71, -0.36, 120.95, 120.95, 120.95, 120.95, 120.95, 120.95, 120.95, 69.11, 36.13, 29.6, 28.09, 28.73, 28.73, 28.73, 28.73, 28.73, 28.73, 28.73, 150.36, 285.99, 411.03, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24, 535.24], "profit_aud": 535.24}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -39.04, -106.4, -169.31, -234.34, -311.79, -311.79, -311.79, -311.79, -199.79, -86.37, 30.98, 152.29, 152.29, 152.29, 152.29, 152.29, 152.29, 152.29, 152.29, 119.31, 112.78, 112.11, 113.56, 114.43, 114.43, 114.43, 114.43, 114.43, 114.43, 236.07, 371.69, 496.73, 620.94, 620.94, 620.94, 620.94, 620.94, 620.94, 620.94, 620.94, 489.07, 489.07, 580.31], "profit_aud": 580.31}}} \ No newline at end of file diff --git a/results/daily/2026-07-23.json b/results/daily/2026-07-23.json new file mode 100644 index 0000000..fa9deb7 --- /dev/null +++ b/results/daily/2026-07-23.json @@ -0,0 +1 @@ +{"date": "2026-07-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [76.64, 71.09, 66.48, 66.0, 65.35, 64.57, 65.17, 66.6, 68.78, 73.2, 59.11, 84.64, 61.39, 74.17, 86.07, 91.19, 74.26, 73.52, 73.79, 37.71, 24.89, 15.43, 25.05, 2.08, 9.8, 1.41, 1.35, -0.86, 1.65, 3.18, 1.06, 19.2, 26.02, 69.75, 78.23, 83.84, 90.27, 91.82, 88.38, 90.71, 95.61, 94.66, 99.07, 96.07, 99.59, 95.44, 96.36, 86.48], "forecast_price": {"naive": [109.3, 101.02, 96.83, 72.44, 85.24, 70.33, 53.89, 50.33, 52.02, 61.96, 51.78, 46.86, 79.04, 89.6, 90.74, 93.88, 97.04, 65.03, 49.6, 32.3, 33.22, 31.78, 46.72, 41.47, 26.38, 5.22, 1.21, -1.16, -0.7, -1.64, 1.65, 38.29, 77.95, 90.95, 97.31, 108.5, 100.03, 99.36, 99.96, 103.52, 117.79, 121.45, 125.46, 121.33, 105.23, 105.5, 90.88, 81.11], "lightgbm": [66.23, 72.13, 67.84, 57.89, 60.18, 56.5, 55.66, 57.04, 54.69, 55.6, 61.64, 61.64, 78.18, 82.32, 82.99, 82.47, 84.31, 68.18, 61.29, 49.51, 49.73, 45.35, 50.33, 46.47, 38.62, 32.68, 33.25, 34.88, 35.09, 36.96, 34.64, 50.04, 76.17, 85.92, 100.03, 106.51, 106.04, 106.04, 106.04, 105.61, 110.68, 106.22, 103.83, 95.55, 89.17, 89.12, 83.81, 81.21], "lstm": [100.5, 93.08, 94.44, 83.97, 76.89, 73.55, 69.23, 66.15, 67.08, 64.35, 73.9, 80.79, 94.28, 116.01, 128.13, 128.26, 121.64, 98.8, 90.28, 70.51, 69.84, 54.1, 53.89, 45.24, 42.39, 35.48, 40.74, 42.33, 39.62, 43.12, 52.75, 64.98, 79.58, 108.51, 121.58, 168.87, 148.84, 137.76, 119.51, 113.04, 111.63, 100.16, 90.89, 86.06, 79.6, 70.48, 78.09, 79.76]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 3.88, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -36.63, -118.32, -199.03, -280.49, -280.49, -280.49, -280.49, -354.38, -248.58, -325.33, -241.89, -134.3, -20.31, 72.51, 72.51, 72.51, 72.51, 72.51, 53.23, 81.41, 78.81, 89.84, 88.08, 86.39, 87.46, 85.4, 87.39, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 86.06, 209.9, 329.98, 454.47, 454.47, 574.92, 574.92], "profit_aud": 574.92}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -82.51, -8.99, -8.99, -90.45, -173.71, -259.69, -213.94, -287.82, -393.62, -393.62, -300.9, -193.32, -79.33, 13.5, 13.5, 13.5, -33.64, -40.61, -59.89, -28.58, -25.98, -25.98, -25.98, -27.66, -26.59, -28.65, -32.63, -33.22, -33.22, -33.22, -33.22, -33.22, -33.22, -33.22, -33.22, -33.22, -33.22, 86.29, 204.62, 328.45, 448.54, 448.54, 448.54, 448.54, 448.54], "profit_aud": 448.54}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -80.71, -162.17, -199.14, -285.12, -376.61, -376.61, -376.61, -376.61, -283.9, -176.32, -62.33, 30.5, 30.5, 30.5, 30.5, 30.5, 30.5, 30.5, 30.5, 30.5, 28.74, 27.05, 28.12, 27.21, 27.21, 25.88, 25.88, 25.88, 25.88, 25.88, 130.67, 243.51, 243.51, 243.51, 243.51, 363.03, 481.35, 481.35, 481.35, 481.35, 481.35, 481.35, 481.35], "profit_aud": 481.35}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -35.84, -117.3, -200.55, -286.53, -378.03, -378.03, -378.03, -378.03, -285.32, -177.73, -63.75, 29.08, 29.08, 29.08, 29.08, 29.08, 29.08, 29.08, 29.08, 23.65, 21.89, 20.2, 21.27, 19.21, 19.21, 19.21, 19.21, 19.21, 19.21, 117.0, 221.79, 334.63, 449.41, 449.41, 449.41, 449.41, 449.41, 449.41, 449.41, 449.41, 330.11, 330.11, 427.4], "profit_aud": 427.4}}} \ No newline at end of file diff --git a/results/daily/2026-07-24.json b/results/daily/2026-07-24.json new file mode 100644 index 0000000..e293fe2 --- /dev/null +++ b/results/daily/2026-07-24.json @@ -0,0 +1 @@ +{"date": "2026-07-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [95.09, 81.22, 95.0, 89.89, 84.46, 81.85, 83.71, 80.58, 84.33, 78.11, 71.61, 84.66, 79.78, 82.65, 93.62, 106.8, 107.1, 91.6, 85.14, 52.77, 38.23, 80.4, 76.23, 52.18, 62.2, 73.51, 63.44, 58.21, 73.14, 75.28, 92.07, 94.22, 93.6, 116.65, 110.57, 113.15, 124.04, 114.76, 119.94, 116.74, 115.53, 114.53, 102.75, 100.47, 101.03, 101.94, 103.78, 104.42], "forecast_price": {"naive": [76.64, 71.09, 66.48, 66.0, 65.35, 64.57, 65.17, 66.6, 68.78, 73.2, 59.11, 84.64, 61.39, 74.17, 86.07, 91.19, 74.26, 73.52, 73.79, 37.71, 24.89, 15.43, 25.05, 2.08, 9.8, 1.41, 1.35, -0.86, 1.65, 3.18, 1.06, 19.2, 26.02, 69.75, 78.23, 83.84, 90.27, 91.82, 88.38, 90.71, 95.61, 94.66, 99.07, 96.07, 99.59, 95.44, 96.36, 86.48], "lightgbm": [53.59, 56.93, 51.52, 47.53, 46.44, 47.09, 46.3, 46.3, 48.21, 50.33, 55.13, 63.66, 63.66, 66.24, 70.38, 72.38, 65.83, 62.17, 53.92, 41.0, 35.36, 33.61, 35.9, 28.28, 32.25, 27.81, 27.81, 28.99, 29.13, 29.34, 31.05, 39.53, 44.11, 71.28, 85.03, 95.25, 96.84, 97.99, 96.84, 96.44, 100.62, 95.22, 93.46, 87.17, 88.67, 86.71, 86.71, 81.62], "lstm": [94.03, 87.37, 87.18, 79.96, 73.81, 64.57, 63.96, 64.98, 60.31, 58.52, 66.08, 71.71, 86.26, 101.08, 111.34, 114.14, 103.52, 85.29, 75.28, 58.27, 54.2, 45.73, 40.3, 31.91, 32.07, 23.02, 27.31, 27.03, 27.51, 30.89, 37.51, 50.37, 62.1, 91.27, 104.9, 151.01, 134.09, 128.99, 112.73, 106.88, 110.17, 105.05, 95.64, 90.92, 90.59, 78.22, 80.16, 85.71]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -101.53, 5.34, 5.34, 5.34, -40.08, -40.08, -140.81, -140.81, -238.44, -327.96, -327.96, -427.69, -427.69, -310.66, -177.16, -43.28, 71.23, 71.23, 5.27, -42.51, 57.98, 96.1, 30.86, -46.88, -46.88, -126.18, -198.94, -198.94, -198.94, -198.94, -198.94, -198.94, -53.13, -53.13, -53.13, 101.93, 101.93, 251.85, 397.77, 397.77, 397.77, 397.77, 397.77, 397.77, 397.77, 397.77, 397.77], "profit_aud": 397.77}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 3.88, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -49.89, -155.46, -257.78, -362.41, -362.41, -362.41, -362.41, -451.93, -346.11, -445.84, -352.86, -235.83, -102.33, 31.55, 31.55, 31.55, 31.55, 31.55, -68.94, 16.82, -48.42, 21.56, -70.33, -149.63, -222.39, -313.81, -266.76, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -381.85, -253.41, -127.83, -1.54, -1.54, 128.19, 128.19], "profit_aud": 128.19}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -49.89, -155.46, -257.78, -362.41, -463.14, -463.14, -463.14, -463.14, -463.14, -463.14, -359.83, -242.8, -109.29, 24.59, 24.59, 24.59, 24.59, 24.59, 24.59, 24.59, -40.65, -40.65, -132.53, -211.83, -284.59, -325.18, -325.18, -325.18, -325.18, -325.18, -325.18, -325.18, -325.18, -170.13, -26.68, 123.24, 123.24, 267.66, 267.66, 267.66, 267.66, 267.66, 267.66, 267.66, 267.66], "profit_aud": 267.66}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -102.31, -206.95, -251.67, -357.09, -454.72, -454.72, -454.72, -454.72, -351.41, -234.39, -100.88, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, 33.0, -58.89, -138.19, -210.95, -302.37, -344.15, -344.15, -344.15, -344.15, -344.15, -344.15, -202.71, -47.66, 95.79, 245.71, 245.71, 245.71, 245.71, 245.71, 245.71, 245.71, 245.71, 245.71, 245.71], "profit_aud": 245.71}}} \ No newline at end of file diff --git a/results/daily/2026-07-25.json b/results/daily/2026-07-25.json new file mode 100644 index 0000000..dfe294e --- /dev/null +++ b/results/daily/2026-07-25.json @@ -0,0 +1 @@ +{"date": "2026-07-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [88.54, 65.55, 73.2, 81.45, 68.63, 61.73, 62.34, 50.46, 54.18, 47.15, 39.35, 48.37, 74.42, 73.72, 71.18, 75.29, 57.38, 66.93, 70.55, 57.71, 39.83, 55.55, 33.78, 20.78, 7.06, 0.08, -0.74, -3.46, -5.62, -6.18, -2.63, 3.49, 34.63, 59.42, 73.56, 82.3, 83.12, 87.18, 85.9, 85.63, 87.48, 88.44, 88.17, 97.05, 101.28, 105.49, 100.53, 101.2], "forecast_price": {"naive": [95.09, 81.22, 95.0, 89.89, 84.46, 81.85, 83.71, 80.58, 84.33, 78.11, 71.61, 84.66, 79.78, 82.65, 93.62, 106.8, 107.1, 91.6, 85.14, 52.77, 38.23, 80.4, 76.23, 52.18, 62.2, 73.51, 63.44, 58.21, 73.14, 75.28, 92.07, 94.22, 93.6, 116.65, 110.57, 113.15, 124.04, 114.76, 119.94, 116.74, 115.53, 114.53, 102.75, 100.47, 101.03, 101.94, 103.78, 104.42], "lightgbm": [89.11, 84.23, 84.61, 79.06, 74.32, 73.11, 73.79, 72.2, 73.53, 70.82, 67.9, 79.23, 76.54, 80.28, 82.5, 83.96, 83.96, 80.94, 71.79, 45.64, 36.85, 56.91, 50.74, 37.61, 42.18, 47.22, 42.72, 39.92, 44.68, 54.12, 66.13, 72.07, 80.05, 99.42, 102.92, 112.48, 117.04, 112.99, 114.77, 112.53, 111.88, 105.94, 95.22, 90.37, 90.37, 90.37, 90.37, 90.37], "lstm": [95.35, 88.53, 87.37, 86.26, 75.31, 68.51, 64.59, 64.45, 63.45, 55.48, 60.91, 65.46, 62.53, 69.41, 77.98, 75.61, 74.52, 65.43, 55.9, 42.04, 38.92, 31.15, 29.89, 27.98, 24.02, 24.52, 29.95, 30.39, 31.51, 36.91, 45.63, 60.0, 71.12, 96.56, 113.47, 145.54, 135.31, 118.49, 108.3, 97.91, 97.29, 91.48, 86.45, 80.04, 79.7, 67.82, 74.78, 81.29]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -81.94, -92.19, 9.62, 9.62, 9.62, 9.62, -53.45, -83.52, -142.45, -191.64, -252.11, -159.09, -66.94, 22.04, 116.16, 44.44, 44.44, 123.8, 123.8, 74.01, 136.5, 136.5, 136.5, 136.5, 136.5, 136.96, 141.29, 148.31, 156.04, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 159.33, 285.92, 417.79, 543.45, 669.96], "profit_aud": 669.96}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -81.94, 0.41, 0.41, 0.41, -33.85, -33.85, -96.92, -96.92, -155.86, -205.05, -205.05, -298.07, -298.07, -209.09, -114.97, -43.26, 40.41, 40.41, -31.73, -81.52, -12.09, 4.8, -21.18, -30.0, -30.0, -29.07, -24.75, -24.75, -24.75, -24.75, -24.75, -24.75, 49.53, 49.53, 49.53, 153.42, 153.42, 260.79, 367.82, 367.82, 367.82, 367.82, 367.82, 367.82, 367.82, 367.82, 367.82], "profit_aud": 367.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 1.5, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -25.62, -25.62, -88.69, -88.69, -147.62, -196.82, -196.82, -196.82, -196.82, -107.84, -13.72, 58.0, 58.0, 58.0, -14.14, -63.93, 5.5, 39.28, 13.3, 4.48, 4.48, 5.41, 9.73, 12.85, 12.85, 12.85, 12.85, 12.85, 12.85, 12.85, 12.85, 116.74, 225.72, 333.09, 440.12, 440.12, 440.12, 440.12, 440.12, 440.12, 440.12, 440.12, 440.12], "profit_aud": 440.12}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -22.48, -81.42, -130.61, -130.61, -223.63, -223.63, -134.65, -40.54, 31.18, 31.18, 31.18, 31.18, 31.18, 31.18, -11.04, -37.01, -45.83, -45.93, -45.52, -45.52, -45.52, -45.52, -45.52, -45.52, -45.52, -45.52, 46.43, 149.3, 253.19, 362.17, 362.17, 362.17, 362.17, 362.17, 362.17, 362.17, 362.17, 230.31, 230.31, 344.17], "profit_aud": 344.17}}} \ No newline at end of file diff --git a/results/daily/2026-07-26.json b/results/daily/2026-07-26.json new file mode 100644 index 0000000..09b8b37 --- /dev/null +++ b/results/daily/2026-07-26.json @@ -0,0 +1 @@ +{"date": "2026-07-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [101.96, 104.67, 103.68, 102.63, 104.41, 101.04, 105.09, 106.88, 103.06, 104.41, 97.07, 100.25, 102.32, 108.11, 102.82, 102.64, 117.94, 109.57, 105.01, 100.63, 100.73, 103.94, 95.66, 92.66, 92.88, 87.7, 90.09, 80.54, 73.66, 79.17, 75.89, 71.93, 69.46, 98.91, 108.28, 112.14, 117.36, 116.32, 119.92, 120.32, 123.12, 122.1, 119.78, 112.67, 110.1, 106.62, 110.66, 110.62], "forecast_price": {"naive": [88.54, 65.55, 73.2, 81.45, 68.63, 61.73, 62.34, 50.46, 54.18, 47.15, 39.35, 48.37, 74.42, 73.72, 71.18, 75.29, 57.38, 66.93, 70.55, 57.71, 39.83, 55.55, 33.78, 20.78, 7.06, 0.08, -0.74, -3.46, -5.62, -6.18, -2.63, 3.49, 34.63, 59.42, 73.56, 82.3, 83.12, 87.18, 85.9, 85.63, 87.48, 88.44, 88.17, 97.05, 101.28, 105.49, 100.53, 101.2], "lightgbm": [61.75, 56.07, 56.43, 54.81, 52.26, 47.38, 46.92, 47.7, 47.75, 43.16, 41.94, 45.17, 51.34, 52.0, 46.94, 48.3, 41.98, 43.68, 42.73, 38.71, 28.54, 37.76, 33.7, 24.31, 22.9, 21.55, 15.19, 20.86, 21.51, 17.66, 31.46, 33.99, 43.55, 61.58, 74.4, 90.08, 90.08, 90.08, 90.08, 89.7, 89.2, 86.11, 82.79, 83.09, 85.32, 85.23, 80.9, 80.9], "lstm": [109.1, 100.05, 98.1, 95.35, 82.13, 77.08, 74.52, 73.88, 64.17, 59.56, 64.91, 62.48, 60.77, 65.59, 70.55, 64.91, 59.63, 53.32, 47.49, 31.63, 30.74, 21.77, 19.31, 13.76, 12.98, 5.73, 5.27, 8.83, 14.37, 17.47, 24.82, 40.32, 52.58, 87.14, 107.24, 142.18, 141.28, 132.99, 120.03, 111.45, 111.72, 101.68, 91.16, 88.89, 81.75, 70.19, 78.24, 88.15]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -121.34, -135.37, -135.37, -135.37, -135.37, -135.37, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, 12.06, -80.01, -123.95, -218.81, -308.73, -395.56, -395.56, -395.56, -395.56, -395.56, -395.56, -245.65, -95.26, 58.64, 211.27, 211.27, 211.27, 211.27, 211.27, 211.27, 211.27], "profit_aud": 211.27}, "naive": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.12, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, -130.84, -145.35, -17.06, -17.06, -17.06, -17.06, -150.66, -207.86, -338.37, -459.7, -585.02, -457.11, -321.98, -193.45, -65.15, -212.58, -212.58, -94.44, -94.44, -220.35, -103.42, -103.42, -103.42, -103.42, -103.42, -159.73, -260.4, -352.48, -451.43, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -546.29, -408.67, -275.4, -137.07, 1.2], "profit_aud": 1.2}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -130.51, -251.84, -279.91, -152.01, -16.88, -16.88, -16.88, -16.88, -16.88, -16.88, -16.88, -142.79, -25.86, -25.86, -25.86, -25.86, -74.53, -187.14, -287.82, -379.89, -478.85, -478.85, -478.85, -478.85, -478.85, -478.85, -338.68, -191.98, -46.57, 103.33, 103.33, 103.33, 103.33, 103.33, 103.33, 103.33, 103.33, 103.33, 103.33], "profit_aud": 103.33}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -130.51, -130.51, -130.51, -144.83, -144.83, -16.3, -16.3, -16.3, -16.3, -16.3, -16.3, -16.3, -16.3, -16.3, -67.73, -183.83, -293.46, -406.07, -506.74, -506.74, -506.74, -506.74, -506.74, -506.74, -506.74, -506.74, -366.57, -219.87, -74.46, 75.44, 75.44, 75.44, 75.44, 75.44, 75.44, 75.44, -57.83, -73.32, 64.95], "profit_aud": 64.95}}} \ No newline at end of file diff --git a/results/daily/2026-07-27.json b/results/daily/2026-07-27.json new file mode 100644 index 0000000..a529d85 --- /dev/null +++ b/results/daily/2026-07-27.json @@ -0,0 +1 @@ +{"date": "2026-07-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [128.44, 109.56, 109.18, 109.81, 107.09, 120.63, 119.61, 98.01, 96.86, 105.25, 105.11, 130.22, 132.22, 184.61, 168.99, 113.41, 91.57, 41.54, 9.0, -1.05, 14.32, -1.7, -1.43, -4.58, -4.1, -4.92, -4.67, -4.75, -5.08, -5.92, -8.7, -5.5, -4.75, -2.62, -29.41, 60.08, 73.78, 39.8, -7.7, -6.04, -6.99, -6.38, -4.5, -1.84, -2.84, -3.84, -3.58, -4.5], "forecast_price": {"naive": [101.96, 104.67, 103.68, 102.63, 104.41, 101.04, 105.09, 106.88, 103.06, 104.41, 97.07, 100.25, 102.32, 108.11, 102.82, 102.64, 117.94, 109.57, 105.01, 100.63, 100.73, 103.94, 95.66, 92.66, 92.88, 87.7, 90.09, 80.54, 73.66, 79.17, 75.89, 71.93, 69.46, 98.91, 108.28, 112.14, 117.36, 116.32, 119.92, 120.32, 123.12, 122.1, 119.78, 112.67, 110.1, 106.62, 110.66, 110.62], "lightgbm": [86.26, 89.19, 85.87, 80.14, 79.13, 80.06, 79.35, 79.67, 80.38, 79.58, 89.45, 95.71, 107.05, 115.63, 114.0, 114.0, 107.95, 108.49, 101.15, 93.73, 90.04, 88.09, 84.82, 83.74, 83.88, 82.36, 79.82, 80.93, 73.37, 79.06, 77.57, 79.87, 80.48, 105.91, 118.84, 123.96, 122.32, 122.32, 123.8, 123.8, 124.78, 117.67, 113.06, 106.21, 103.92, 103.06, 103.92, 102.45], "lstm": [115.95, 108.45, 107.19, 102.65, 98.0, 90.23, 89.91, 88.87, 89.35, 85.15, 96.96, 109.66, 119.21, 152.21, 163.49, 174.28, 162.56, 138.91, 134.62, 108.73, 95.95, 80.82, 82.51, 79.35, 70.83, 68.89, 71.65, 65.88, 64.71, 72.93, 77.33, 92.95, 111.04, 141.94, 162.87, 212.12, 195.83, 174.72, 144.71, 134.1, 134.57, 123.88, 115.47, 104.18, 106.55, 90.21, 99.63, 107.51]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 1.75, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 1.12, 0.0, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -133.86, -58.46, -58.46, -180.97, -302.04, -433.61, -564.99, -402.22, -236.95, -6.19, 205.05, 205.05, 205.05, 205.05, 203.79, 205.11, 223.01, 225.13, 223.55, 229.28, 224.73, 226.57, 226.57, 226.57, 232.93, 240.32, 251.2, 258.07, 258.07, 254.8, 291.57, 366.67, 458.9, 508.65, 518.27, 525.81, 534.55, 542.52, 543.08, 540.78, 537.23, 542.03, 543.37, 549.0], "profit_aud": 549.0}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -131.39, -149.62, -149.62, -149.62, -149.62, -149.62, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -35.15, -28.8, -25.51, -14.64, -7.77, -1.83, -1.83, -1.83, -1.83, -1.83, -1.83, -11.45, -18.99, -27.73, -35.7, -35.7, -35.7, -35.7, -35.7, -35.7, -35.7], "profit_aud": -35.7}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -133.86, -200.81, -350.32, -472.83, -472.83, -604.39, -604.39, -604.39, -604.39, -373.64, -162.39, -20.63, -20.63, 31.29, 31.29, 31.29, 31.29, 31.29, 31.29, 31.29, 31.29, 31.29, 37.12, 37.12, 43.48, 50.87, 61.75, 64.8, 64.8, 64.8, 64.8, 139.9, 139.9, 139.9, 130.29, 122.74, 114.01, 114.01, 114.01, 114.01, 114.01, 114.01, 114.01, 114.01], "profit_aud": 114.01}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -66.95, -216.47, -338.98, -460.05, -591.61, -591.61, -591.61, -591.61, -360.85, -149.61, -7.85, 106.62, 106.62, 106.62, 106.62, 106.62, 106.62, 106.62, 106.62, 111.74, 117.88, 120.47, 126.41, 132.77, 132.77, 132.77, 132.77, 132.77, 132.77, 96.0, 171.1, 263.34, 313.08, 313.08, 313.08, 313.08, 313.08, 313.08, 313.08, 313.08, 317.88, 317.88, 312.82], "profit_aud": 312.82}}} \ No newline at end of file diff --git a/results/daily/2026-07-28.json b/results/daily/2026-07-28.json new file mode 100644 index 0000000..afd4c8c --- /dev/null +++ b/results/daily/2026-07-28.json @@ -0,0 +1 @@ +{"date": "2026-07-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-4.42, -4.63, -4.8, -5.22, -4.9, -6.16, -6.64, -6.65, -6.72, -6.37, -5.0, -4.21, -1.58, -11.36, -18.26, -13.31, -2.71, 2.59, 3.81, 0.81, -1.07, -1.63, -10.85, -24.97, -60.44, -69.27, -71.22, -61.73, -29.26, -6.66, -39.89, -26.01, 3.52, -3.97, -15.33, -4.51, 45.42, 74.5, 76.05, 43.22, 44.12, 30.65, 32.16, 27.41, 28.17, 0.42, 0.99, 5.27], "forecast_price": {"naive": [128.44, 109.56, 109.18, 109.81, 107.09, 120.63, 119.61, 98.01, 96.86, 105.25, 105.11, 130.22, 132.22, 184.61, 168.99, 113.41, 91.57, 41.54, 9.0, -1.05, 14.32, -1.7, -1.43, -4.58, -4.1, -4.92, -4.67, -4.75, -5.08, -5.92, -8.7, -5.5, -4.75, -2.62, -29.41, 60.08, 73.78, 39.8, -7.7, -6.04, -6.99, -6.38, -4.5, -1.84, -2.84, -3.84, -3.58, -4.5], "lightgbm": [49.28, 51.67, 47.07, 39.98, 43.63, 37.55, 39.52, 49.36, 49.56, 44.7, 55.59, 58.37, 63.53, 70.35, 70.09, 71.45, 72.11, 47.03, 37.88, 33.52, 33.33, 27.56, 27.04, 24.66, 24.38, 23.15, 24.38, 27.8, 25.9, 28.07, 26.02, 34.52, 37.37, 43.95, 37.91, 77.01, 86.93, 64.21, 57.74, 61.68, 61.68, 60.36, 55.1, 54.36, 54.01, 53.39, 54.01, 54.01], "lstm": [-5.58, -4.5, -8.26, -14.18, -14.04, -18.66, -17.54, -18.63, -15.0, -12.55, -10.87, -3.46, 2.58, 17.08, 15.69, 22.53, 18.26, 4.35, 0.07, -9.3, -11.7, -16.88, -22.34, -25.15, -32.5, -35.0, -32.02, -31.07, -27.51, -22.75, -18.08, -8.85, 1.88, 17.01, 32.61, 45.75, 58.95, 55.43, 57.07, 60.49, 60.89, 61.69, 54.44, 47.02, 40.6, 36.83, 31.25, 44.86]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.55, 1.13, 1.73, 3.04, 3.04, 6.89, 15.19, 23.5, 31.9, 39.86, 35.68, 30.42, 28.45, 42.65, 65.47, 82.11, 82.45, 85.69, 90.45, 91.46, 90.13, 90.33, 91.69, 94.81, 170.37, 256.95, 345.98, 423.14, 441.43, 433.1, 482.96, 489.46, 493.87, 490.02, 509.18, 514.82, 571.6, 664.72, 759.79, 759.79, 814.95, 814.95, 814.95, 814.95, 814.95, 814.42, 814.28, 820.86], "profit_aud": 820.86}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 1.75, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 1.12, 0.0, 0.25, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 3.12, 4.25, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 3.62, 3.88, 5.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, 6.12, 2.27, 2.27, 10.58, 18.98, 26.94, 33.19, 27.93, 25.95, 11.75, -11.07, -11.07, -11.07, -11.07, -11.61, -12.62, -13.96, -11.92, -23.96, 7.26, -59.83, -33.86, -33.86, -33.86, 2.71, 11.04, 60.91, 93.42, 93.42, 88.46, 107.62, 101.99, 158.76, 251.89, 156.82, 102.8, 47.64, 9.32, 5.3, 39.57, 74.79, 74.26, 73.88, 67.3], "profit_aud": 67.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, 6.52, 12.64, 20.35, 28.65, 28.65, 28.65, 32.18, 32.18, 32.18, 32.18, 17.98, -4.85, -21.49, -24.87, -24.87, -24.87, -24.87, -24.87, -24.87, -24.87, 6.34, 81.9, 168.49, 257.51, 257.51, 273.75, 273.75, 273.75, 273.75, 273.75, 269.28, 288.45, 282.81, 339.59, 432.72, 432.72, 486.75, 486.75, 486.75, 486.75, 486.75, 486.75, 486.75, 486.75, 486.75], "profit_aud": 486.75}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [5.52, 0.38, 0.98, 4.89, 4.89, 12.6, 20.9, 29.21, 37.61, 38.41, 39.03, 39.56, 39.56, 25.35, 2.53, -14.11, -17.5, -17.5, -17.5, -17.6, -17.46, -17.26, -15.9, -12.78, 62.77, 149.36, 238.39, 315.55, 333.83, 334.67, 339.65, 342.9, 342.9, 342.9, 342.9, 342.9, 399.68, 399.68, 399.68, 453.71, 508.87, 547.18, 547.18, 547.18, 547.18, 547.12, 545.88, 552.47], "profit_aud": 552.47}}} \ No newline at end of file diff --git a/results/daily/2026-07-29.json b/results/daily/2026-07-29.json new file mode 100644 index 0000000..9818e14 --- /dev/null +++ b/results/daily/2026-07-29.json @@ -0,0 +1 @@ +{"date": "2026-07-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-5.16, -5.18, -5.54, 10.15, -4.67, 1.63, -5.8, -17.71, -17.86, -8.73, -4.92, -4.92, 76.62, 89.19, 106.29, 200.29, 205.95, 159.65, 115.73, 101.02, 92.79, 95.2, 127.32, 93.58, 83.29, 72.69, 43.55, 19.21, 23.8, 41.49, 22.07, 52.0, 88.57, 111.59, 151.77, 299.6, 165.62, 177.56, 186.61, 189.66, 170.24, 189.66, 164.07, 200.08, 218.41, 171.98, 183.72, 258.42], "forecast_price": {"naive": [-4.42, -4.63, -4.8, -5.22, -4.9, -6.16, -6.64, -6.65, -6.72, -6.37, -5.0, -4.21, -1.58, -11.36, -18.26, -13.31, -2.71, 2.59, 3.81, 0.81, -1.07, -1.63, -10.85, -24.97, -60.44, -69.27, -71.22, -61.73, -29.26, -6.66, -39.89, -26.01, 3.52, -3.97, -15.33, -4.51, 45.42, 74.5, 76.05, 43.22, 44.12, 30.65, 32.16, 27.41, 28.17, 0.42, 0.99, 5.27], "lightgbm": [12.25, 12.25, 8.75, 7.62, 7.62, 7.62, 7.56, 8.27, 8.47, 10.03, 18.69, 18.91, 23.03, 24.56, 24.59, 25.17, 29.33, 22.05, 19.95, 18.21, 17.77, 15.04, 8.18, 0.98, -9.27, -12.87, -13.25, -13.25, -0.3, 11.37, -0.04, 9.45, 26.28, 36.9, 34.53, 52.2, 62.89, 81.47, 79.21, 58.52, 59.89, 56.7, 55.05, 55.06, 53.81, 50.01, 49.64, 48.71], "lstm": [10.3, 12.92, 8.1, 0.96, 0.92, -2.85, -4.41, -0.65, -3.72, 3.85, 7.89, 12.25, 23.88, 39.61, 45.5, 52.78, 44.38, 35.64, 30.59, 23.57, 15.58, 5.93, 6.75, 1.0, -0.82, -1.07, -3.66, -4.83, -0.01, 6.21, 6.68, 17.77, 24.64, 45.44, 60.41, 82.12, 93.89, 88.57, 76.6, 70.83, 73.35, 65.89, 61.45, 56.13, 51.04, 39.46, 44.21, 46.82]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.88, 2.0, 3.12, 1.88, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 4.88, 4.88, 3.62, 3.88, 2.62, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [5.16, 11.64, 18.56, 31.24, 31.24, 33.27, 40.53, 62.67, 84.99, 95.9, 95.9, 97.13, 97.13, 97.13, 97.13, 347.49, 604.93, 804.49, 949.15, 949.15, 833.17, 819.84, 979.0, 979.0, 979.0, 979.0, 954.82, 930.81, 901.06, 849.19, 821.6, 821.6, 821.6, 821.6, 821.6, 1196.11, 989.08, 989.08, 989.08, 1226.16, 1178.49, 1415.57, 1210.48, 1460.59, 1733.6, 1733.6, 1733.6, 2056.62], "profit_aud": 2056.62}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.64, 1.29, 1.98, -0.55, -0.55, -1.57, 5.69, 27.82, 50.15, 61.06, 56.96, 50.81, 146.59, 35.1, -97.76, -348.12, -373.86, -174.3, -29.64, 96.64, 212.62, 200.72, 184.81, 173.11, 68.99, -21.87, -76.31, -100.32, -115.2, -63.34, -90.93, -103.93, 6.79, 115.03, -74.69, -449.2, -242.17, -20.22, 213.04, 213.04, 425.83, 425.83, 425.83, 425.83, 425.83, 210.86, 185.14, 508.16], "profit_aud": 508.16}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -12.68, -6.85, -8.88, -1.63, 8.2, 8.2, 8.2, 8.2, 8.2, 8.2, 119.69, 252.55, 502.91, 760.34, 760.34, 760.34, 760.34, 760.34, 760.34, 760.34, 760.34, 656.23, 565.37, 510.92, 486.91, 472.03, 523.9, 496.31, 489.03, 489.03, 489.03, 489.03, 489.03, 696.05, 918.0, 1151.26, 1151.26, 1364.06, 1364.06, 1364.06, 1364.06, 1364.06, 1364.06, 1364.06, 1364.06], "profit_aud": 1364.06}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [6.44, 0.61, 0.61, 0.61, 3.2, 1.17, 8.42, 30.56, 52.88, 52.88, 52.88, 52.88, 52.88, 164.37, 297.23, 547.59, 805.03, 805.03, 805.03, 805.03, 805.03, 686.03, 829.27, 829.27, 725.15, 634.29, 579.85, 555.84, 540.96, 540.96, 540.96, 540.96, 540.96, 540.96, 540.96, 915.46, 1122.49, 1344.44, 1577.7, 1577.7, 1577.7, 1577.7, 1577.7, 1577.7, 1577.7, 1362.73, 1362.73, 1653.44], "profit_aud": 1653.44}}} \ No newline at end of file diff --git a/results/daily/2026-07-30.json b/results/daily/2026-07-30.json new file mode 100644 index 0000000..1033194 --- /dev/null +++ b/results/daily/2026-07-30.json @@ -0,0 +1 @@ +{"date": "2026-07-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [286.09, 265.39, 243.33, 256.67, 289.96, 261.12, 285.21, 291.82, 283.41, 310.5, 293.41, 346.0, 358.49, 396.82, 411.93, 486.97, 359.26, 327.16, 317.12, 380.0, 324.01, 300.22, 306.63, 343.74, 500.44, 469.58, 438.02, 402.06, 387.34, 400.0, 395.56, 400.0, 420.85, 494.97, 488.8, 400.0, 422.91, 550.0, 467.39, 493.63, 462.2, 561.41, 533.43, 461.16, 416.74, 396.66, 416.74, 544.67], "forecast_price": {"naive": [-5.16, -5.18, -5.54, 10.15, -4.67, 1.63, -5.8, -17.71, -17.86, -8.73, -4.92, -4.92, 76.62, 89.19, 106.29, 200.29, 205.95, 159.65, 115.73, 101.02, 92.79, 95.2, 127.32, 93.58, 83.29, 72.69, 43.55, 19.21, 23.8, 41.49, 22.07, 52.0, 88.57, 111.59, 151.77, 299.6, 165.62, 177.56, 186.61, 189.66, 170.24, 189.66, 164.07, 200.08, 218.41, 171.98, 183.72, 258.42], "lightgbm": [80.89, 80.89, 73.23, 61.22, 61.36, 59.32, 61.1, 54.66, 54.66, 55.37, 55.47, 60.94, 56.3, 61.21, 62.49, 55.71, 57.18, 53.45, 49.34, 34.23, 33.19, 28.14, 26.64, 23.0, 22.58, 19.64, 12.11, 2.73, 4.84, 15.27, 9.72, 31.31, 46.96, 64.26, 87.33, 110.14, 101.45, 108.13, 108.04, 100.94, 100.34, 97.57, 96.49, 93.04, 95.05, 82.74, 84.58, 95.46], "lstm": [222.7, 211.85, 200.82, 178.57, 180.45, 159.74, 156.01, 147.68, 152.52, 179.97, 178.11, 185.36, 243.01, 320.63, 339.42, 335.62, 320.9, 241.04, 195.89, 164.55, 152.96, 115.58, 121.2, 91.59, 83.9, 73.14, 75.51, 69.35, 74.31, 78.11, 95.89, 120.03, 155.51, 205.94, 232.75, 305.9, 310.84, 288.24, 253.3, 239.93, 243.63, 214.58, 191.48, 166.73, 183.58, 153.79, 144.59, 158.46]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 3.62, 3.62, 4.75, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -331.74, -635.9, -956.74, -956.74, -1283.14, -1283.14, -1283.14, -1440.43, -1440.43, -1440.43, -1440.43, -1440.43, -944.4, -429.49, 179.22, 179.22, -2.35, -398.75, 76.26, -328.75, -704.03, -1087.31, -1087.31, -461.76, 125.2, 125.2, 125.2, -358.96, -358.96, -853.42, -965.42, -965.42, -346.71, 142.09, -357.91, -886.55, -199.04, -199.04, 417.99, 417.99, 1119.75, 1786.53, 1786.53, 1786.53, 1290.7, 1232.36, 1913.19], "profit_aud": 1913.19}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.88, 2.0, 3.12, 1.88, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 4.88, 4.88, 3.62, 3.88, 2.62, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-286.09, -617.82, -921.99, -601.16, -601.16, -274.76, -631.27, -996.04, -1350.3, -1738.43, -1738.43, -1824.93, -1824.93, -1824.93, -1824.93, -1216.22, -767.14, -358.2, 38.2, 38.2, -366.82, -408.85, -25.57, -25.57, -25.57, -25.57, -268.67, -771.24, -1255.41, -1755.41, -2249.86, -2249.86, -2249.86, -2249.86, -2249.86, -1749.86, -2278.49, -2278.49, -2278.49, -1661.46, -1790.88, -1089.12, -1755.91, -1179.46, -658.53, -658.53, -658.53, 22.3], "profit_aud": 22.3}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -364.77, -719.03, -719.03, -719.03, -719.03, -719.03, -322.21, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, 192.7, -354.82, -857.39, -1341.56, -1563.56, -2058.01, -2058.01, -2058.01, -2058.01, -2058.01, -1558.01, -1029.37, -341.87, 242.37, 242.37, 242.37, 242.37, 242.37, 242.37, 242.37, -253.47, -311.81, 369.02], "profit_aud": 369.02}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -326.4, -682.91, -1047.68, -1401.94, -1401.94, -1564.78, -1564.78, -1564.78, -1068.76, -553.84, 54.87, 503.94, 503.94, 503.94, 503.94, 503.94, 503.94, 503.94, 503.94, 503.94, -83.03, -630.55, -1133.12, -1617.29, -1839.29, -1839.29, -1839.29, -1839.29, -1839.29, -1839.29, -1339.29, -810.66, -123.15, 461.08, 461.08, 461.08, 461.08, 461.08, 461.08, 461.08, 461.08, 461.08, 461.08], "profit_aud": 461.08}}} \ No newline at end of file diff --git a/results/daily/2026-07-31.json b/results/daily/2026-07-31.json new file mode 100644 index 0000000..936841a --- /dev/null +++ b/results/daily/2026-07-31.json @@ -0,0 +1 @@ +{"date": "2026-07-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [448.72, 591.89, 591.89, 511.85, 664.07, 1947.41, 723.39, 648.24, 535.78, 500.44, 448.59, 433.48, 564.74, 391.69, 417.06, 406.76, 290.37, 151.81, 128.14, 113.06, 115.04, 117.95, 114.38, 89.37, 89.72, 111.32, 115.98, 133.72, 143.08, 151.77, 129.76, 138.36, 142.99, 178.47, 184.57, 209.27, 203.73, 182.48, 158.78, 137.55, 124.43, 159.5, 161.33, 145.44, 147.23, 125.66, 115.36, 118.11], "forecast_price": {"naive": [286.09, 265.39, 243.33, 256.67, 289.96, 261.12, 285.21, 291.82, 283.41, 310.5, 293.41, 346.0, 358.49, 396.82, 411.93, 486.97, 359.26, 327.16, 317.12, 380.0, 324.01, 300.22, 306.63, 343.74, 500.44, 469.58, 438.02, 402.06, 387.34, 400.0, 395.56, 400.0, 420.85, 494.97, 488.8, 400.0, 422.91, 550.0, 467.39, 493.63, 462.2, 561.41, 533.43, 461.16, 416.74, 396.66, 416.74, 544.67], "lightgbm": [255.93, 245.67, 242.62, 242.9, 244.57, 233.73, 229.36, 239.35, 229.36, 227.27, 227.61, 250.97, 288.59, 298.46, 301.55, 305.38, 306.03, 292.26, 300.08, 258.59, 242.56, 241.26, 221.02, 218.75, 218.3, 218.85, 192.76, 193.12, 202.13, 202.63, 228.08, 237.56, 265.23, 297.27, 292.05, 293.86, 288.64, 315.04, 297.13, 297.34, 294.9, 310.47, 294.13, 277.45, 266.12, 264.02, 266.21, 287.96], "lstm": [279.22, 292.54, 284.2, 262.47, 252.26, 247.65, 239.68, 248.65, 230.66, 257.07, 242.75, 247.41, 285.05, 362.66, 360.82, 438.62, 411.46, 311.8, 290.54, 256.2, 218.23, 189.02, 198.59, 148.36, 156.59, 152.2, 134.35, 119.18, 133.63, 136.06, 142.71, 188.67, 237.25, 271.68, 315.26, 366.56, 337.7, 345.43, 319.97, 309.79, 287.9, 282.48, 241.83, 217.9, 244.95, 208.02, 186.68, 206.62]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-560.9, -806.54, -1546.4, -2186.21, -1356.12, 1078.14, 1982.37, 1982.37, 1982.37, 1982.37, 1919.57, 1377.72, 2083.64, 2083.64, 2083.64, 2083.64, 2083.64, 2083.64, 2083.64, 1942.33, 1942.33, 1942.33, 1878.85, 1767.14, 1654.98, 1515.83, 1515.83, 1515.83, 1515.83, 1686.58, 1524.38, 1524.38, 1524.38, 1524.38, 1755.1, 2016.69, 2271.35, 2499.46, 2499.46, 2327.52, 2171.98, 2331.47, 2533.13, 2533.13, 2533.13, 2533.13, 2533.13, 2533.13], "profit_aud": 2533.13}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 2.25, 3.38, 3.38, 4.5, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 3.62, 3.62, 4.75, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, -739.86, -1479.72, -2119.54, -2119.54, -4553.8, -4553.8, -4553.8, -4851.15, -4851.15, -4851.15, -4851.15, -4851.15, -4361.54, -3840.21, -3331.75, -3331.75, -3416.01, -3576.19, -3434.87, -3578.68, -3726.12, -3869.09, -3869.09, -3756.93, -3617.78, -3617.78, -3617.78, -3796.63, -3796.63, -3958.82, -3997.57, -3997.57, -3774.48, -3589.9, -3851.49, -4106.16, -3878.05, -3878.05, -3706.11, -3706.11, -3506.74, -3305.09, -3305.09, -3305.09, -3462.16, -3478.31, -3330.67], "profit_aud": -3330.67}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -1080.81, -1985.04, -1985.04, -2654.77, -3280.32, -3841.06, -3841.06, -3841.06, -3841.06, -3319.73, -2811.27, -2448.3, -2448.3, -2288.13, -2288.13, -2288.13, -2288.13, -2288.13, -2288.13, -2337.92, -2337.92, -2482.9, -2650.06, -2828.9, -3018.61, -3018.61, -3018.61, -3018.61, -2795.53, -2795.53, -2795.53, -2795.53, -2567.42, -2567.42, -2395.48, -2395.48, -2196.11, -2196.11, -2196.11, -2196.11, -2196.11, -2196.11, -2196.11], "profit_aud": -2196.11}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -1080.81, -1985.04, -1985.04, -2654.77, -2654.77, -3215.51, -3757.36, -3757.36, -3267.74, -2746.41, -2237.96, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -1874.99, -2019.97, -2187.12, -2365.97, -2555.68, -2627.7, -2627.7, -2627.7, -2627.7, -2627.7, -2366.11, -2111.44, -1883.34, -1684.86, -1684.86, -1684.86, -1684.86, -1684.86, -1866.66, -1701.03, -1701.03, -1701.03, -1701.03], "profit_aud": -1701.03}}} \ No newline at end of file diff --git a/results/daily/2026-08-01.json b/results/daily/2026-08-01.json new file mode 100644 index 0000000..143747e --- /dev/null +++ b/results/daily/2026-08-01.json @@ -0,0 +1 @@ +{"date": "2026-08-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [100.9, 88.73, 85.59, 81.72, 83.38, 83.32, 87.58, 81.68, 80.83, 87.71, 92.94, 92.95, 97.38, 92.23, 92.76, 101.05, 88.38, 32.54, 6.4, 29.94, 10.54, 3.95, -0.62, -1.34, 0.11, -0.92, -2.47, -4.89, -5.9, -4.52, -4.4, -3.76, 26.79, 90.21, 97.82, 105.08, 120.25, 126.86, 122.0, 127.46, 127.36, 114.22, 87.56, 83.82, 99.7, 90.63, 50.69, 41.37], "forecast_price": {"naive": [448.72, 591.89, 591.89, 511.85, 664.07, 1947.41, 723.39, 648.24, 535.78, 500.44, 448.59, 433.48, 564.74, 391.69, 417.06, 406.76, 290.37, 151.81, 128.14, 113.06, 115.04, 117.95, 114.38, 89.37, 89.72, 111.32, 115.98, 133.72, 143.08, 151.77, 129.76, 138.36, 142.99, 178.47, 184.57, 209.27, 203.73, 182.48, 158.78, 137.55, 124.43, 159.5, 161.33, 145.44, 147.23, 125.66, 115.36, 118.11], "lightgbm": [151.85, 152.57, 153.7, 145.47, 135.35, 123.87, 128.98, 123.28, 123.28, 114.86, 112.74, 119.49, 130.75, 119.07, 118.43, 107.25, 110.47, 116.36, 72.39, 46.23, 48.71, 47.88, 36.92, 24.69, 16.15, 22.04, 22.19, 20.62, 16.33, 21.87, 37.69, 54.09, 83.38, 119.64, 127.3, 139.5, 133.89, 131.57, 122.73, 121.29, 110.22, 120.05, 115.88, 109.29, 109.29, 99.78, 94.9, 94.9], "lstm": [87.47, 79.39, 82.78, 69.56, 64.41, 58.06, 56.66, 48.65, 54.1, 46.5, 50.07, 48.21, 53.61, 52.73, 57.67, 58.78, 53.72, 41.53, 33.75, 21.76, 14.33, 5.8, 9.71, 2.31, -0.97, -1.94, -3.02, -0.31, 1.23, 7.73, 21.9, 28.95, 44.68, 68.03, 94.69, 107.9, 128.05, 115.01, 105.49, 101.13, 109.77, 98.64, 100.41, 86.45, 83.36, 74.95, 75.19, 86.56]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -102.15, -148.43, -252.59, -252.59, -354.68, -455.72, -455.72, -339.54, -223.35, -101.62, -101.62, -101.62, 24.69, 24.69, 24.69, 16.68, 50.36, 50.36, 50.36, 50.52, 52.19, 52.34, 52.45, 52.76, 58.88, 66.25, 71.9, 77.41, 79.76, 79.76, 79.76, 79.76, 79.76, 79.76, 238.33, 390.83, 550.15, 709.36, 709.36, 697.1, 592.32, 716.94, 716.94, 716.94, 716.94], "profit_aud": 716.94}, "naive": {"charge_mw": [2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-126.12, -162.95, -269.93, -372.09, -267.86, -163.71, -54.23, -54.23, -54.23, -54.23, -67.24, -183.43, -61.71, -61.71, -61.71, -61.71, -61.71, -61.71, -61.71, -99.13, -99.13, -99.13, -98.79, -97.11, -97.25, -96.09, -96.09, -96.09, -96.09, -101.18, -95.67, -95.67, -95.67, -95.67, 26.6, 157.95, 308.26, 466.82, 466.82, 307.5, 148.3, 262.52, 371.97, 371.97, 371.97, 371.97, 371.97, 371.97], "profit_aud": 371.97}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -12.28, -128.45, -128.45, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.73, -6.87, -6.35, -6.35, -0.24, 7.14, 12.79, 12.79, 12.79, 12.79, 12.79, 135.06, 266.41, 416.72, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29, 575.29], "profit_aud": 575.29}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.25, 1.38, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -102.1, -31.37, -141.01, -141.01, -257.2, -257.2, -257.2, -141.26, -14.94, -14.94, -14.94, -14.94, -14.94, -14.94, -19.88, -20.58, -20.58, -20.72, -19.56, -16.48, -10.36, -7.09, -7.09, -7.09, -7.09, -7.09, -7.09, -7.09, 124.26, 274.57, 433.14, 433.14, 433.14, 592.35, 592.35, 592.35, 592.35, 592.35, 479.06, 471.96, 523.67], "profit_aud": 523.67}}} \ No newline at end of file diff --git a/results/daily/2026-08-02.json b/results/daily/2026-08-02.json new file mode 100644 index 0000000..d3bc010 --- /dev/null +++ b/results/daily/2026-08-02.json @@ -0,0 +1 @@ +{"date": "2026-08-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [33.73, 21.86, 17.0, 6.72, 6.1, 7.4, 3.58, 5.19, 1.16, -0.74, -1.08, -3.68, -4.5, -2.23, -2.22, -0.91, -0.33, -6.47, -10.38, -6.92, -7.13, -7.48, -13.24, -25.99, -16.17, -23.44, -34.0, -52.53, -46.92, -22.41, -10.15, -6.92, -9.24, 7.59, 50.04, 75.26, 101.02, 60.62, 72.07, 51.63, 41.7, 86.36, 97.24, 93.05, 78.58, 21.41, 28.81, 25.18], "forecast_price": {"naive": [100.9, 88.73, 85.59, 81.72, 83.38, 83.32, 87.58, 81.68, 80.83, 87.71, 92.94, 92.95, 97.38, 92.23, 92.76, 101.05, 88.38, 32.54, 6.4, 29.94, 10.54, 3.95, -0.62, -1.34, 0.11, -0.92, -2.47, -4.89, -5.9, -4.52, -4.4, -3.76, 26.79, 90.21, 97.82, 105.08, 120.25, 126.86, 122.0, 127.46, 127.36, 114.22, 87.56, 83.82, 99.7, 90.63, 50.69, 41.37], "lightgbm": [70.39, 68.75, 62.86, 58.0, 54.5, 54.01, 53.69, 52.79, 52.79, 54.22, 60.04, 60.93, 65.31, 70.35, 69.93, 71.0, 71.16, 46.76, 34.47, 37.05, 30.11, 22.35, 20.18, 20.92, 20.81, 18.98, 18.98, 19.31, 19.61, 25.4, 29.53, 35.42, 40.44, 77.41, 95.58, 105.53, 113.15, 115.41, 112.25, 114.02, 113.36, 104.05, 87.26, 82.17, 89.25, 83.59, 64.41, 57.68], "lstm": [56.91, 52.46, 52.29, 42.42, 39.96, 37.86, 37.2, 28.58, 30.83, 29.52, 33.01, 28.48, 30.11, 35.08, 33.29, 29.92, 23.12, 10.08, 10.1, -7.48, -13.34, -24.33, -22.37, -28.58, -30.94, -35.49, -38.23, -32.87, -20.41, -14.99, -2.3, 16.17, 28.01, 64.69, 95.78, 128.79, 155.18, 145.35, 126.03, 118.08, 115.03, 108.41, 103.19, 92.11, 83.17, 68.44, 70.25, 80.08]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 2.5, 1.25, 0.0, 0.0, 1.12, 0.25, 0.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -7.63, 0.7, -3.78, 2.06, 2.06, 2.16, 2.29, 6.89, 12.51, 13.63, 13.63, 12.49, 12.08, 12.89, 25.87, 20.09, 20.09, 20.09, 21.74, 54.23, 36.29, 65.59, 108.08, 173.74, 232.4, 246.4, 247.67, 239.99, 251.54, 251.54, 251.54, 345.62, 471.9, 396.12, 459.18, 394.65, 342.52, 450.47, 572.02, 688.33, 786.56, 759.8, 792.21, 792.21], "profit_aud": 792.21}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 1.12, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -8.4, -11.79, -21.04, -21.04, -27.54, -28.99, -28.99, -30.34, -34.94, -40.56, -40.56, -40.56, -41.7, -41.7, -41.7, -28.72, -36.51, -36.51, -36.51, -33.2, -0.71, -20.92, -17.99, -13.74, 51.92, 110.57, 138.58, 151.27, 155.59, 155.59, 155.59, 155.59, 155.59, 155.59, 231.37, 321.45, 385.98, 438.11, 438.11, 424.5, 308.19, 406.42, 406.42, 406.42, 406.42], "profit_aud": 406.42}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -9.26, -13.74, -20.23, -21.68, -21.27, -21.27, -21.27, -21.27, -24.06, -26.84, -27.98, -28.39, -28.39, -28.39, -28.39, -28.39, -28.39, -21.04, -21.04, -21.04, 8.26, 50.76, 116.41, 175.07, 175.07, 175.07, 175.07, 175.07, 175.07, 175.07, 175.07, 301.34, 377.12, 377.12, 441.65, 493.78, 493.78, 493.78, 493.78, 493.78, 493.78, 493.78, 493.78], "profit_aud": 493.78}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -6.49, -6.49, -5.57, -6.52, -1.92, -1.92, -4.71, -7.49, -7.49, -7.49, -7.49, -7.49, -6.63, -5.74, -3.87, -3.87, 12.38, 32.59, 61.89, 104.39, 170.05, 175.91, 178.71, 179.98, 179.98, 179.98, 179.98, 179.98, 274.06, 400.34, 476.11, 566.19, 566.19, 566.19, 566.19, 566.19, 566.19, 566.19, 539.43, 535.4, 566.87], "profit_aud": 566.87}}} \ No newline at end of file diff --git a/results/daily/2026-08-03.json b/results/daily/2026-08-03.json new file mode 100644 index 0000000..a8ca5b1 --- /dev/null +++ b/results/daily/2026-08-03.json @@ -0,0 +1 @@ +{"date": "2026-08-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [18.84, 20.98, 20.02, 21.06, 19.7, 23.44, 33.1, 20.72, 22.8, 15.54, 20.78, 99.82, 68.75, 67.55, 55.65, 55.9, 60.04, 44.85, 48.96, 43.58, 13.35, 10.22, 1.57, 1.54, 1.08, -0.31, -0.3, -1.53, -0.57, -3.27, -4.11, -2.68, 57.4, 85.44, 99.74, 102.24, 106.68, 103.16, 104.27, 102.07, 99.44, 99.06, 97.02, 95.98, 97.45, 94.2, 84.98, 77.33], "forecast_price": {"naive": [33.73, 21.86, 17.0, 6.72, 6.1, 7.4, 3.58, 5.19, 1.16, -0.74, -1.08, -3.68, -4.5, -2.23, -2.22, -0.91, -0.33, -6.47, -10.38, -6.92, -7.13, -7.48, -13.24, -25.99, -16.17, -23.44, -34.0, -52.53, -46.92, -22.41, -10.15, -6.92, -9.24, 7.59, 50.04, 75.26, 101.02, 60.62, 72.07, 51.63, 41.7, 86.36, 97.24, 93.05, 78.58, 21.41, 28.81, 25.18], "lightgbm": [33.28, 33.95, 31.46, 29.88, 28.98, 30.42, 30.16, 27.78, 27.78, 32.13, 42.4, 46.0, 50.65, 53.46, 53.46, 48.43, 47.06, 33.0, 20.33, 25.58, 13.64, 11.47, 7.14, 6.37, 7.14, 6.72, 3.09, -5.6, -5.02, 5.78, 10.79, 28.87, 18.94, 41.79, 49.02, 93.72, 108.23, 72.62, 81.19, 66.64, 58.26, 91.61, 99.04, 86.94, 80.63, 51.94, 50.88, 50.76], "lstm": [34.08, 34.28, 28.81, 21.41, 21.94, 19.2, 18.82, 19.07, 20.36, 27.95, 34.84, 43.95, 60.43, 86.78, 88.0, 80.9, 69.85, 48.02, 42.25, 24.45, 16.67, 2.32, 3.42, -1.74, -6.18, -5.26, -7.51, -10.16, -6.39, -2.23, 7.44, 21.84, 27.87, 68.42, 93.31, 136.65, 160.7, 148.54, 120.59, 117.07, 114.68, 103.14, 97.91, 87.8, 74.91, 67.7, 71.59, 76.79]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 1.67, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.88, 3.0, 3.0, 4.12, 2.88, 1.62, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-23.55, -41.07, -66.09, -66.09, -90.71, -61.41, -20.03, -45.93, -45.93, -65.36, -91.34, 33.43, 119.37, 203.81, 203.81, 203.81, 278.86, 278.86, 278.86, 278.86, 278.86, 278.86, 278.86, 278.86, 278.86, 278.94, 278.94, 280.85, 281.2, 285.29, 290.43, 293.78, 293.78, 293.78, 293.78, 421.58, 554.94, 683.89, 814.22, 814.22, 814.22, 814.22, 814.22, 814.22, 814.22, 814.22, 814.22, 814.22], "profit_aud": 814.22}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.62, 2.5, 1.25, 0.0, 0.0, 1.12, 0.25, 0.12, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -24.62, 1.75, -39.63, -16.32, -16.32, -18.26, -20.86, -145.63, -231.57, -265.34, -265.34, -195.47, -120.42, -126.03, -187.22, -150.83, -150.83, -150.83, -151.02, -152.95, -151.75, -151.36, -150.99, -149.07, -148.36, -146.32, -145.8, -148.78, -220.54, -220.54, -220.54, -92.74, 40.62, -88.34, 2.9, -124.69, -248.99, -125.16, -3.88, 116.09, 237.9, 120.15, 215.76, 215.76], "profit_aud": 215.76}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.75, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -26.33, -50.95, -50.95, -69.32, -95.22, -123.71, -123.71, -123.71, -123.71, -37.77, 46.67, 116.23, 186.1, 186.1, 186.1, 124.91, 173.94, 173.94, 173.94, 173.94, 172.02, 172.69, 172.69, 173.07, 174.98, 175.69, 179.78, 179.78, 176.76, 105.01, 105.01, 105.01, 232.81, 366.16, 337.28, 467.61, 340.02, 215.72, 339.55, 460.83, 580.8, 580.8, 580.8, 580.8, 580.8], "profit_aud": 580.8}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -11.69, -11.69, -40.99, -82.37, -108.27, -136.76, -136.76, -136.76, -136.76, -136.76, -52.32, 17.24, 87.12, 162.17, 162.17, 162.17, 162.17, 162.17, 149.4, 151.16, 150.97, 149.62, 149.81, 150.18, 152.09, 152.8, 153.21, 153.21, 153.21, 153.21, 153.21, 153.21, 281.01, 414.37, 543.32, 673.65, 673.65, 673.65, 673.65, 673.65, 673.65, 673.65, 555.9, 555.9, 642.9], "profit_aud": 642.9}}} \ No newline at end of file diff --git a/results/daily/2026-08-04.json b/results/daily/2026-08-04.json new file mode 100644 index 0000000..75566a3 --- /dev/null +++ b/results/daily/2026-08-04.json @@ -0,0 +1 @@ +{"date": "2026-08-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [96.58, 101.32, 96.81, 92.65, 99.63, 91.46, 93.46, 93.44, 88.66, 88.43, 80.76, 88.69, 91.73, 95.85, 95.96, 83.8, 79.08, 78.96, 84.8, 76.95, 84.68, 82.2, 86.1, 90.02, 88.62, 101.91, 101.18, 109.04, 107.79, 102.97, 112.49, 134.46, 135.07, 139.64, 129.41, 140.98, 132.46, 132.3, 132.25, 133.45, 139.88, 138.84, 139.84, 133.58, 133.59, 113.31, 106.77, 107.45], "forecast_price": {"naive": [18.84, 20.98, 20.02, 21.06, 19.7, 23.44, 33.1, 20.72, 22.8, 15.54, 20.78, 99.82, 68.75, 67.55, 55.65, 55.9, 60.04, 44.85, 48.96, 43.58, 13.35, 10.22, 1.57, 1.54, 1.08, -0.31, -0.3, -1.53, -0.57, -3.27, -4.11, -2.68, 57.4, 85.44, 99.74, 102.24, 106.68, 103.16, 104.27, 102.07, 99.44, 99.06, 97.02, 95.98, 97.45, 94.2, 84.98, 77.33], "lightgbm": [32.01, 31.3, 29.29, 27.34, 27.1, 27.39, 28.47, 26.18, 27.08, 26.22, 31.02, 51.56, 49.92, 41.26, 36.67, 36.67, 40.73, 31.28, 31.94, 29.84, 21.83, 20.04, 6.96, 6.42, 6.38, 5.27, 5.27, 6.14, 5.27, 12.97, 10.74, 15.91, 42.81, 63.7, 80.42, 101.64, 100.42, 101.53, 103.01, 97.88, 96.61, 95.28, 91.69, 86.73, 86.93, 82.01, 77.26, 71.51], "lstm": [96.02, 95.33, 90.81, 80.66, 71.58, 65.86, 63.51, 61.04, 62.19, 69.89, 70.65, 84.72, 108.76, 137.24, 137.31, 116.0, 93.47, 66.97, 53.14, 36.02, 32.93, 15.01, 12.84, 7.52, 0.43, -3.2, -4.66, -1.88, 2.2, 7.13, 14.45, 31.31, 43.1, 89.92, 133.4, 182.08, 207.04, 183.5, 157.2, 146.03, 136.74, 121.25, 116.62, 101.15, 93.78, 81.77, 83.43, 86.42]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.95, -100.95, -100.95, -100.95, 7.0, -39.51, -138.35, -237.05, -237.05, -333.23, -333.23, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -435.98, -261.43, -261.43, -85.21, -85.21, -85.21, -85.21, -85.21, 89.65, 89.65, 264.46, 264.46, 264.46, 264.46, 264.46, 264.46], "profit_aud": 264.46}, "naive": {"charge_mw": [2.5, 1.67, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.88, 3.0, 3.0, 4.12, 2.88, 1.62, 2.75, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-120.72, -205.33, -326.34, -326.34, -450.87, -336.54, -219.71, -336.51, -336.51, -447.05, -548.01, -437.14, -322.48, -202.67, -202.67, -202.67, -103.83, -103.83, -103.83, -103.83, -103.83, -103.83, -103.83, -103.83, -103.83, -129.31, -129.31, -265.61, -332.97, -461.69, -602.3, -770.38, -770.38, -770.38, -770.38, -594.15, -428.58, -263.2, -97.89, -97.89, -97.89, -97.89, -97.89, -97.89, -97.89, -97.89, -97.89, -97.89], "profit_aud": -97.89}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -51.42, -175.96, -175.96, -175.96, -292.76, -403.58, -514.12, -514.12, -403.25, -288.6, -168.79, -168.79, -168.79, -69.94, -69.94, -69.94, -69.94, -69.94, -69.94, -69.94, -69.94, -119.13, -246.52, -372.99, -509.29, -644.03, -528.19, -668.81, -668.81, -668.81, -668.81, -668.81, -492.58, -327.01, -161.63, 3.68, 3.68, 3.68, 3.68, 3.68, 3.68, 3.68, 3.68, 3.68, 3.68], "profit_aud": 3.68}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -114.33, -231.16, -347.96, -458.78, -507.86, -507.86, -507.86, -393.21, -273.4, -153.45, -48.7, -48.7, -48.7, -48.7, -48.7, -48.7, -48.7, -48.7, -48.7, -159.48, -286.87, -413.35, -549.65, -609.47, -609.47, -609.47, -609.47, -609.47, -609.47, -609.47, -433.25, -267.67, -102.3, 63.01, 63.01, 63.01, 63.01, 63.01, 63.01, 63.01, 63.01, 63.01, 63.01], "profit_aud": 63.01}}} \ No newline at end of file diff --git a/results/daily/2026-08-05.json b/results/daily/2026-08-05.json new file mode 100644 index 0000000..cb6a963 --- /dev/null +++ b/results/daily/2026-08-05.json @@ -0,0 +1 @@ +{"date": "2026-08-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [111.6, 119.84, 146.83, 136.83, 133.33, 139.9, 147.48, 162.9, 143.26, 137.66, 129.73, 159.99, 148.08, 153.61, 188.0, 157.33, 169.66, 145.48, 149.15, 151.02, 124.98, 130.22, 138.01, 120.42, 138.0, 193.18, 218.85, 255.18, 240.02, 273.5, 271.13, 254.41, 247.73, 230.91, 228.71, 230.36, 228.57, 222.34, 187.32, 175.49, 175.96, 170.7, 167.21, 150.22, 137.48, 132.87, 118.58, 113.65], "forecast_price": {"naive": [96.58, 101.32, 96.81, 92.65, 99.63, 91.46, 93.46, 93.44, 88.66, 88.43, 80.76, 88.69, 91.73, 95.85, 95.96, 83.8, 79.08, 78.96, 84.8, 76.95, 84.68, 82.2, 86.1, 90.02, 88.62, 101.91, 101.18, 109.04, 107.79, 102.97, 112.49, 134.46, 135.07, 139.64, 129.41, 140.98, 132.46, 132.3, 132.25, 133.45, 139.88, 138.84, 139.84, 133.58, 133.59, 113.31, 106.77, 107.45], "lightgbm": [88.15, 88.72, 85.42, 74.11, 78.91, 74.53, 77.04, 71.7, 67.83, 67.96, 73.45, 78.68, 86.63, 91.32, 89.69, 87.47, 85.68, 80.71, 80.27, 70.26, 72.77, 67.8, 66.41, 66.0, 65.92, 63.15, 61.86, 53.16, 54.47, 58.72, 54.89, 71.9, 91.23, 120.53, 117.72, 143.63, 127.52, 127.52, 127.9, 135.12, 135.37, 130.09, 122.62, 116.21, 115.99, 100.23, 94.03, 96.3], "lstm": [111.98, 116.83, 117.08, 106.09, 104.71, 89.53, 88.14, 85.75, 86.82, 83.3, 87.28, 100.1, 102.07, 129.35, 126.88, 122.6, 109.73, 86.64, 72.33, 54.42, 50.28, 40.79, 41.23, 36.55, 28.91, 30.59, 28.46, 26.56, 25.03, 32.07, 34.64, 45.56, 63.57, 95.75, 126.81, 169.61, 180.42, 167.97, 133.48, 126.49, 115.18, 101.43, 95.56, 84.44, 86.2, 64.93, 71.85, 83.58]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 3.25, 3.88, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-139.49, -289.29, -289.29, -460.33, -626.99, -626.99, -626.99, -423.36, -423.36, -519.03, -681.19, -481.2, -481.2, -481.2, -246.2, -49.55, 162.52, 162.52, 162.52, 162.52, 6.3, -156.47, -233.07, -383.59, -556.09, -556.09, -556.09, -237.12, -237.12, 104.75, 443.66, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67, 761.67], "profit_aud": 761.67}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.5, 1.62, 2.75, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -162.16, -162.16, -162.16, -162.16, 49.33, -37.98, -250.05, -431.9, -431.9, -620.67, -620.67, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -783.44, -494.81, -494.81, -206.86, -206.86, -206.86, -206.86, -206.86, 13.09, 13.09, 222.11, 222.11, 222.11, 222.11, 222.11, 222.11], "profit_aud": 222.11}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -75.94, -75.94, -75.94, -75.94, -279.57, -458.65, -630.72, -792.88, -792.88, -607.78, -415.77, -180.77, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, 15.88, -105.58, -424.55, -724.57, -1066.44, -1405.36, -1405.36, -1405.36, -1405.36, -1405.36, -1117.41, -1117.41, -1117.41, -1117.41, -898.05, -678.1, -464.72, -464.72, -464.72, -464.72, -464.72, -464.72, -464.72], "profit_aud": -464.72}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -81.85, -285.48, -464.56, -636.64, -798.8, -798.8, -798.8, -606.78, -371.79, -175.13, 36.94, 36.94, 36.94, 36.94, 36.94, 36.94, 36.94, 36.94, -135.56, -242.78, -516.34, -835.31, -1135.34, -1135.34, -1135.34, -1135.34, -1135.34, -1135.34, -1135.34, -847.39, -561.68, -283.76, -49.61, -49.61, -49.61, -49.61, -49.61, -49.61, -49.61, -215.69, -232.29, -90.23], "profit_aud": -90.23}}} \ No newline at end of file diff --git a/results/daily/2026-08-06.json b/results/daily/2026-08-06.json new file mode 100644 index 0000000..7faee67 --- /dev/null +++ b/results/daily/2026-08-06.json @@ -0,0 +1 @@ +{"date": "2026-08-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [116.63, 109.19, 107.91, 114.13, 111.77, 104.8, 110.82, 111.91, 106.3, 108.17, 126.95, 138.38, 150.13, 168.86, 230.04, 226.13, 120.75, 101.62, 100.87, 83.69, 78.57, 64.56, 76.07, 64.08, 50.94, 53.1, 50.44, 72.18, 88.88, 118.52, 106.28, 101.59, 102.19, 107.16, 117.34, 129.82, 131.38, 130.71, 119.54, 123.06, 127.12, 125.55, 126.44, 125.22, 125.04, 118.96, 105.74, 111.31], "forecast_price": {"naive": [111.6, 119.84, 146.83, 136.83, 133.33, 139.9, 147.48, 162.9, 143.26, 137.66, 129.73, 159.99, 148.08, 153.61, 188.0, 157.33, 169.66, 145.48, 149.15, 151.02, 124.98, 130.22, 138.01, 120.42, 138.0, 193.18, 218.85, 255.18, 240.02, 273.5, 271.13, 254.41, 247.73, 230.91, 228.71, 230.36, 228.57, 222.34, 187.32, 175.49, 175.96, 170.7, 167.21, 150.22, 137.48, 132.87, 118.58, 113.65], "lightgbm": [124.14, 127.2, 136.84, 128.28, 118.55, 122.6, 117.78, 117.78, 117.78, 117.5, 120.11, 139.29, 152.15, 152.68, 168.27, 152.68, 155.07, 145.08, 127.66, 111.87, 89.52, 81.35, 83.87, 73.34, 82.64, 93.93, 98.64, 114.25, 115.87, 120.42, 132.34, 168.27, 202.57, 197.88, 200.3, 205.59, 205.59, 205.59, 181.01, 168.78, 180.31, 161.51, 150.43, 141.27, 139.03, 127.51, 118.69, 117.08], "lstm": [118.81, 120.71, 126.39, 107.2, 108.76, 98.91, 99.93, 92.41, 100.04, 93.68, 93.76, 103.96, 106.32, 140.42, 133.53, 139.07, 126.87, 97.33, 86.91, 62.72, 61.46, 50.18, 52.56, 47.75, 41.99, 44.62, 42.41, 42.57, 34.57, 41.88, 47.62, 59.98, 75.96, 105.28, 135.47, 177.64, 180.13, 186.02, 156.33, 141.7, 122.79, 114.77, 103.52, 96.24, 87.5, 71.52, 77.48, 84.43]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 1.11, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 1.62, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -60.6, -195.49, -195.49, -195.49, -326.48, -326.48, -326.48, -459.36, -594.57, -594.57, -594.57, -406.91, -195.83, 91.71, 374.38, 374.38, 374.38, 374.38, 374.38, 374.38, 293.68, 341.22, 261.12, 197.44, 131.07, 68.02, 68.02, 68.02, 216.17, 216.17, 89.19, 74.88, 74.88, 74.88, 237.16, 401.38, 564.77, 564.77, 564.77, 723.67, 723.67, 723.67, 723.67, 723.67, 723.67, 723.67, 723.67], "profit_aud": 723.67}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 4.5, 4.5, 4.5, 3.25, 3.25, 3.88, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-145.79, -282.28, -282.28, -424.94, -564.66, -564.66, -564.66, -424.77, -424.77, -499.95, -658.64, -485.67, -485.67, -485.67, -198.12, 84.54, 235.48, 235.48, 235.48, 235.48, 137.27, 56.57, 14.34, -65.76, -129.43, -129.43, -129.43, -39.21, -39.21, 108.95, 241.79, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78, 368.78], "profit_aud": 368.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -62.03, -62.03, -200.56, -340.45, -473.33, -608.54, -608.54, -608.54, -608.54, -397.46, -109.91, 172.75, 323.69, 323.69, 323.69, 323.69, 280.08, 199.38, 104.29, 24.19, -39.49, -39.49, -39.49, -39.49, -39.49, -39.49, -39.49, -39.49, 88.25, 88.25, 88.25, 250.53, 414.75, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14, 578.14], "profit_aud": 578.14}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -130.99, -192.5, -332.38, -332.38, -467.6, -626.28, -626.28, -626.28, -415.2, -127.66, 155.01, 305.95, 305.95, 305.95, 305.95, 305.95, 305.95, 305.95, 305.95, 242.27, 242.27, 179.22, 139.16, 28.06, -120.09, -120.09, -120.09, -120.09, -120.09, -120.09, 42.19, 206.41, 369.8, 519.22, 519.22, 519.22, 519.22, 519.22, 519.22, 519.22, 370.52, 370.52, 495.75], "profit_aud": 495.75}}} \ No newline at end of file diff --git a/results/daily/2026-08-07.json b/results/daily/2026-08-07.json new file mode 100644 index 0000000..bae6751 --- /dev/null +++ b/results/daily/2026-08-07.json @@ -0,0 +1 @@ +{"date": "2026-08-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [110.04, 110.64, 114.97, 111.1, 111.48, 109.96, 113.64, 113.68, 132.87, 119.72, 108.45, 110.91, 112.32, 116.66, 116.44, 140.19, 137.73, 108.28, 114.98, 59.78, 61.64, 64.5, 56.03, 40.24, 18.33, -0.75, -2.34, -5.1, -6.71, -6.38, -3.7, 23.74, 79.68, 102.53, 104.04, 116.37, 112.89, 100.24, 100.26, 97.9, 95.93, 94.7, 94.5, 88.9, 94.48, 86.28, 76.54, 66.47], "forecast_price": {"naive": [116.63, 109.19, 107.91, 114.13, 111.77, 104.8, 110.82, 111.91, 106.3, 108.17, 126.95, 138.38, 150.13, 168.86, 230.04, 226.13, 120.75, 101.62, 100.87, 83.69, 78.57, 64.56, 76.07, 64.08, 50.94, 53.1, 50.44, 72.18, 88.88, 118.52, 106.28, 101.59, 102.19, 107.16, 117.34, 129.82, 131.38, 130.71, 119.54, 123.06, 127.12, 125.55, 126.44, 125.22, 125.04, 118.96, 105.74, 111.31], "lightgbm": [85.39, 81.31, 77.79, 66.63, 63.41, 59.06, 59.75, 62.07, 59.06, 58.86, 71.78, 81.63, 95.05, 97.2, 115.14, 108.14, 94.32, 90.26, 82.0, 71.55, 64.75, 52.66, 51.23, 48.06, 45.08, 45.28, 45.28, 44.92, 54.24, 61.68, 66.75, 81.36, 86.22, 96.74, 115.95, 129.51, 131.87, 130.6, 120.18, 122.8, 122.1, 116.21, 111.74, 103.5, 102.97, 99.32, 90.48, 96.39], "lstm": [109.08, 110.56, 115.52, 97.06, 97.74, 88.6, 89.13, 84.64, 89.71, 83.67, 88.16, 88.2, 99.71, 119.72, 111.96, 115.42, 101.37, 77.44, 69.99, 48.26, 41.72, 33.94, 34.84, 26.98, 24.07, 23.41, 21.56, 16.68, 18.1, 21.07, 27.15, 37.74, 51.44, 82.5, 103.7, 148.14, 149.81, 158.54, 136.0, 128.12, 121.92, 126.14, 111.06, 104.95, 104.56, 90.33, 89.89, 99.34]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.83, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.5, 1.5, 1.5, 1.5, 2.62, 2.62, 2.62, 1.38, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-137.55, -183.47, -183.47, -183.47, -183.47, -320.91, -320.91, -320.91, -154.83, -154.83, -290.4, -290.4, -290.4, -290.4, -290.4, -115.16, 57.0, 57.0, 57.0, 57.0, 57.0, 57.0, 57.0, 57.0, 57.0, 57.09, 58.55, 64.93, 73.31, 81.29, 85.91, 85.91, 85.91, 214.08, 344.13, 489.59, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7, 630.7], "profit_aud": 630.7}, "naive": {"charge_mw": [0.0, 1.11, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.5, 1.62, 1.62, 1.62, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -61.4, -205.12, -205.12, -205.12, -342.56, -342.56, -342.56, -508.65, -658.29, -658.29, -658.29, -517.9, -372.07, -226.53, -51.29, -51.29, -51.29, -51.29, -51.29, -51.29, -131.91, -96.89, -147.2, -170.12, -169.18, -166.26, -166.26, -166.26, -174.23, -174.23, -203.9, -215.05, -215.05, -215.05, -69.59, 71.52, 196.83, 196.83, 196.83, 316.74, 316.74, 316.74, 316.74, 316.74, 316.74, 316.74, 316.74], "profit_aud": 316.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -137.44, -279.5, -342.6, -508.68, -658.32, -658.32, -658.32, -517.93, -372.1, -226.56, -51.32, -51.32, -51.32, -51.32, -51.32, -51.32, -51.32, -51.32, -73.66, -96.57, -95.64, -92.71, -86.34, -86.34, -86.34, -86.34, -86.34, -86.34, -86.34, -86.34, 59.12, 200.23, 325.54, 325.54, 447.91, 447.91, 447.91, 447.91, 447.91, 447.91, 447.91, 447.91, 447.91], "profit_aud": 447.91}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -61.03, -61.03, -203.13, -203.13, -352.78, -488.34, -626.98, -626.98, -481.15, -335.6, -160.37, 11.79, 11.79, 11.79, 11.79, 11.79, 11.79, 11.79, 11.79, 11.79, 12.21, 15.13, 21.5, 29.89, 37.86, 37.86, 37.86, 37.86, 37.86, 37.86, 183.32, 324.44, 449.74, 575.07, 575.07, 575.07, 575.07, 575.07, 575.07, 575.07, 575.07, 575.07, 575.07], "profit_aud": 575.07}}} \ No newline at end of file diff --git a/results/daily/2026-08-08.json b/results/daily/2026-08-08.json new file mode 100644 index 0000000..b54e8c7 --- /dev/null +++ b/results/daily/2026-08-08.json @@ -0,0 +1 @@ +{"date": "2026-08-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [49.15, 14.1, 7.1, 7.07, 9.2, 4.73, 3.28, -0.01, -0.0, 0.02, -0.03, -0.04, -0.0, 6.3, 13.65, 23.92, 15.96, 2.99, -0.08, -0.25, -2.11, -3.75, -5.54, -6.84, -7.36, -8.12, -6.98, -6.98, -6.96, -6.4, -2.4, -0.34, 4.18, 28.84, 16.92, 25.65, 27.82, 26.96, 21.78, 17.29, 8.76, 5.53, 9.64, 7.32, 8.64, 6.4, 9.49, 7.19], "forecast_price": {"naive": [110.04, 110.64, 114.97, 111.1, 111.48, 109.96, 113.64, 113.68, 132.87, 119.72, 108.45, 110.91, 112.32, 116.66, 116.44, 140.19, 137.73, 108.28, 114.98, 59.78, 61.64, 64.5, 56.03, 40.24, 18.33, -0.75, -2.34, -5.1, -6.71, -6.38, -3.7, 23.74, 79.68, 102.53, 104.04, 116.37, 112.89, 100.24, 100.26, 97.9, 95.93, 94.7, 94.5, 88.9, 94.48, 86.28, 76.54, 66.47], "lightgbm": [92.93, 93.58, 91.99, 85.08, 77.51, 74.46, 78.07, 77.45, 77.88, 77.62, 82.27, 80.01, 84.92, 82.66, 84.39, 87.17, 83.22, 59.84, 48.5, 44.2, 36.3, 31.8, 29.37, 26.62, 14.67, 11.58, 11.36, 12.84, 12.84, 15.53, 21.04, 32.41, 63.31, 81.61, 103.18, 120.7, 119.52, 111.71, 111.71, 111.28, 109.58, 104.77, 99.68, 88.99, 93.89, 86.9, 78.36, 70.2], "lstm": [81.04, 72.44, 68.16, 59.41, 53.89, 52.02, 44.98, 46.73, 48.78, 45.99, 52.24, 47.92, 49.89, 56.67, 54.57, 44.05, 40.61, 28.51, 20.09, 9.56, 3.27, -5.49, -5.7, -9.01, -14.55, -13.78, -19.33, -14.52, -12.65, -6.65, 5.67, 17.6, 30.51, 57.06, 73.81, 94.17, 107.13, 107.19, 91.62, 89.21, 93.46, 92.14, 87.91, 80.62, 74.74, 65.6, 70.64, 77.13]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -0.99, -9.84, 1.66, 1.66, 1.66, 1.67, 1.68, 1.69, 1.73, 1.78, 1.78, 9.65, 26.72, 56.61, 76.55, 76.55, 76.56, 76.6, 76.86, 77.33, 78.02, 78.87, 88.07, 98.22, 106.94, 115.66, 120.01, 120.81, 121.11, 121.15, 121.15, 157.2, 136.06, 168.12, 202.9, 236.6, 261.1, 261.1, 261.1, 254.19, 265.04, 255.89, 264.53, 256.53, 268.39, 268.39], "profit_aud": 268.39}, "naive": {"charge_mw": [2.5, 0.83, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.5, 1.5, 1.5, 1.5, 2.62, 2.62, 2.62, 1.38, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-61.44, -67.29, -67.29, -67.29, -67.29, -73.2, -73.2, -73.2, -73.21, -73.21, -73.17, -73.17, -73.17, -73.17, -73.17, -43.27, -23.33, -23.33, -23.33, -23.33, -23.33, -23.33, -23.33, -23.33, -23.33, -22.31, -17.95, -9.23, -0.53, 7.47, 10.47, 10.47, 10.47, 46.52, 67.67, 99.73, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51, 134.51], "profit_aud": 134.51}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -5.91, -5.91, -5.91, -5.91, -5.91, -5.91, -5.91, -5.91, -5.91, -5.91, 23.98, 23.98, 23.98, 23.98, 23.98, 23.98, 23.98, 23.98, 23.98, 28.07, 38.21, 46.93, 55.66, 64.35, 64.35, 64.35, 64.35, 64.35, 64.35, 64.35, 96.42, 131.2, 164.89, 192.12, 192.12, 192.12, 192.12, 192.12, 192.12, 192.12, 192.12, 192.12, 192.12], "profit_aud": 192.12}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.1, -4.08, -4.08, -4.1, -4.13, -4.13, -4.13, 3.74, 20.8, 20.8, 20.8, 20.8, 20.8, 20.8, 20.8, 21.27, 21.96, 22.82, 32.02, 42.16, 50.88, 59.61, 63.95, 64.75, 64.75, 64.75, 64.75, 64.75, 64.75, 96.82, 131.6, 165.3, 165.3, 165.3, 176.25, 176.25, 176.25, 176.25, 176.25, 168.25, 168.25, 176.34], "profit_aud": 176.34}}} \ No newline at end of file diff --git a/results/daily/2026-08-09.json b/results/daily/2026-08-09.json new file mode 100644 index 0000000..24dd731 --- /dev/null +++ b/results/daily/2026-08-09.json @@ -0,0 +1 @@ +{"date": "2026-08-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [0.72, -0.03, -2.84, -1.35, -3.3, -3.04, -4.51, -3.95, -4.92, -5.64, -6.04, -6.17, -6.17, -6.6, -6.38, -3.58, -6.17, -1.22, 6.82, 8.24, 4.09, 15.02, 40.47, 32.47, 24.93, 38.72, 44.6, 44.93, 49.16, 41.87, 43.68, 59.97, 65.88, 74.44, 82.02, 87.27, 88.07, 87.42, 85.22, 87.76, 89.99, 92.42, 92.62, 100.35, 81.71, 73.48, 74.21, 76.08], "forecast_price": {"naive": [49.15, 14.1, 7.1, 7.07, 9.2, 4.73, 3.28, -0.01, -0.0, 0.02, -0.03, -0.04, -0.0, 6.3, 13.65, 23.92, 15.96, 2.99, -0.08, -0.25, -2.11, -3.75, -5.54, -6.84, -7.36, -8.12, -6.98, -6.98, -6.96, -6.4, -2.4, -0.34, 4.18, 28.84, 16.92, 25.65, 27.82, 26.96, 21.78, 17.29, 8.76, 5.53, 9.64, 7.32, 8.64, 6.4, 9.49, 7.19], "lightgbm": [27.59, 17.22, 11.48, 10.83, 12.09, 8.96, 8.61, 8.64, 8.35, 8.28, 9.51, 10.69, 12.15, 12.25, 12.04, 12.92, 12.14, 4.83, 2.2, 5.7, 2.48, 1.26, -0.46, -2.51, -3.76, -9.59, -5.86, -5.86, -5.86, 2.6, 5.96, 12.03, 8.96, 28.28, 35.97, 46.99, 50.53, 46.73, 49.06, 46.35, 42.12, 44.17, 45.67, 42.54, 43.32, 36.49, 39.41, 38.27], "lstm": [7.74, 2.54, -2.04, -2.83, -2.32, -5.9, -5.9, -6.01, -2.44, -6.45, -1.41, -0.78, -1.7, 10.83, 12.36, 15.05, 12.1, 9.73, 7.82, -1.03, -4.99, -8.96, -7.3, -8.59, -10.44, -13.49, -19.41, -15.89, -11.44, -8.18, -2.44, 8.44, 16.39, 34.63, 43.07, 58.33, 62.83, 71.17, 62.14, 64.05, 60.03, 63.35, 54.94, 46.65, 42.34, 37.89, 41.88, 47.63]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.5, 2.0, 2.5, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 3.56, 2.06, 2.89, 2.89, 8.53, 4.14, 4.76, 5.47, 9.24, 16.95, 24.66, 32.91, 40.88, 36.91, 44.62, 44.77, 44.77, 54.04, 48.92, 48.92, 99.51, 94.96, 63.8, 63.8, 63.8, 63.8, 125.25, 72.91, 66.8, 66.8, 66.8, 66.8, 66.8, 66.8, 66.8, 66.8, 66.8, 66.8, 179.28, 294.81, 410.59, 536.02, 536.02, 536.02, 536.02, 536.02], "profit_aud": 536.02}, "naive": {"charge_mw": [0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 3.62, 2.38, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.4, 2.08, -2.05, -2.05, -2.05, 2.89, 9.04, 5.52, 13.07, 20.78, 28.48, 20.23, 12.26, 7.78, 0.07, 0.07, -0.78, -1.81, -2.32, -4.2, -9.26, -13.32, -44.47, -92.87, -148.62, -204.79, -235.51, -240.75, -246.21, -253.7, -253.7, -160.66, -263.18, -154.09, -44.0, 65.27, 161.14, 161.14, 161.14, 45.61, 149.81, 24.38, 106.08, 14.24, 107.01, 107.01], "profit_aud": 107.01}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 1.69, -2.03, -0.35, 5.29, 10.23, 16.39, 23.44, 23.44, 23.44, 15.73, 7.48, 7.48, 3.0, -4.71, -4.54, -13.05, -2.75, -2.75, -2.75, -7.81, -11.87, -27.45, -75.84, -131.6, -187.77, -249.21, -249.21, -249.21, -181.75, -264.1, -264.1, -264.1, -155.01, -44.92, 64.35, 170.87, 170.87, 170.87, 170.87, 170.87, 170.87, 170.87, 170.87, 170.87, 170.87], "profit_aud": 170.87}, "lstm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 1.67, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.36, 2.04, 0.67, 4.46, 10.1, 15.04, 15.04, 22.1, 22.85, 16.01, 23.72, 15.46, 7.49, 3.01, -4.7, -4.7, -4.7, -5.73, -6.24, -25.01, 19.91, 15.85, 0.27, -48.12, -103.88, -160.04, -221.49, -226.72, -232.18, -232.18, -232.18, -232.18, -232.18, -232.18, -122.09, -12.82, -12.82, 96.87, 96.87, 212.4, 212.4, 212.4, 212.4, 120.55, 110.17, 205.27], "profit_aud": 205.27}}} \ No newline at end of file diff --git a/results/daily/2026-08-10.json b/results/daily/2026-08-10.json new file mode 100644 index 0000000..98e3a3f --- /dev/null +++ b/results/daily/2026-08-10.json @@ -0,0 +1 @@ +{"date": "2026-08-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [78.51, 69.03, 61.21, 32.08, 23.49, 15.87, 9.3, 5.28, 10.62, 14.12, 11.12, 14.82, 25.47, 35.42, 35.92, 65.27, 47.49, 19.84, 18.24, 22.77, -7.47, -0.99, -5.15, -6.29, -6.36, -6.79, -43.84, -7.02, -8.5, -6.9, -6.92, -6.73, 2.05, 25.37, 80.87, 92.82, 98.7, 95.32, 91.6, 89.19, 89.67, 86.2, 90.94, 93.59, 89.47, 80.12, 84.4, 75.58], "forecast_price": {"naive": [0.72, -0.03, -2.84, -1.35, -3.3, -3.04, -4.51, -3.95, -4.92, -5.64, -6.04, -6.17, -6.17, -6.6, -6.38, -3.58, -6.17, -1.22, 6.82, 8.24, 4.09, 15.02, 40.47, 32.47, 24.93, 38.72, 44.6, 44.93, 49.16, 41.87, 43.68, 59.97, 65.88, 74.44, 82.02, 87.27, 88.07, 87.42, 85.22, 87.76, 89.99, 92.42, 92.62, 100.35, 81.71, 73.48, 74.21, 76.08], "lightgbm": [31.82, 30.97, 29.54, 28.95, 28.95, 29.21, 31.92, 28.61, 28.95, 29.58, 34.39, 46.5, 47.49, 47.49, 43.61, 43.92, 42.74, 36.03, 36.5, 33.47, 29.27, 30.75, 31.65, 32.17, 30.38, 32.17, 32.58, 32.58, 32.59, 32.69, 35.47, 42.23, 55.84, 77.53, 91.17, 100.4, 102.76, 100.4, 100.4, 102.36, 101.95, 98.5, 94.03, 93.37, 87.91, 78.02, 80.1, 76.39], "lstm": [95.02, 86.47, 80.51, 79.36, 78.56, 68.04, 70.24, 70.29, 76.12, 78.59, 83.42, 90.19, 96.67, 131.46, 144.78, 148.28, 141.9, 114.53, 105.92, 87.36, 81.23, 75.65, 72.17, 76.23, 69.38, 63.21, 57.95, 59.77, 57.18, 66.32, 69.63, 83.84, 88.15, 115.81, 125.75, 147.99, 145.52, 153.54, 134.33, 127.13, 126.69, 121.18, 109.04, 87.66, 98.4, 79.43, 80.73, 86.85]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -11.62, -18.23, -31.5, -39.33, -53.24, -53.24, -53.24, -8.97, 35.93, 117.52, 176.89, 174.11, 151.31, 179.78, 189.11, 188.01, 188.66, 189.44, 190.24, 191.09, 245.89, 254.67, 265.29, 269.6, 278.25, 279.09, 279.09, 279.09, 279.09, 395.12, 518.5, 637.65, 637.65, 637.65, 637.65, 637.65, 637.65, 754.63, 754.63, 754.63, 754.63, 754.63], "profit_aud": 754.63}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 2.5, 2.0, 2.5, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -8.63, -85.14, -49.53, -55.4, -55.4, -67.03, -61.16, -62.49, -64.26, -71.21, -89.73, -121.57, -165.84, -210.74, -138.29, -197.66, -200.14, -200.14, -174.52, -165.18, -165.18, -171.62, -170.74, -162.8, -162.8, -162.8, -162.8, -173.42, -164.8, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -163.84, -51.75, 56.0, 169.67, 286.66, 286.66, 286.66, 286.66, 286.66], "profit_aud": 286.66}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -40.1, -69.46, -78.26, -78.26, -84.87, -98.14, -98.14, -98.14, -79.61, -47.78, -3.51, -3.51, 78.08, 78.08, 78.08, 78.08, 78.08, 87.42, 88.66, 95.1, 98.59, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 106.53, 222.56, 345.94, 345.94, 345.94, 457.42, 569.51, 569.51, 569.51, 569.51, 569.51, 569.51, 569.51, 569.51], "profit_aud": 569.51}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -13.04, -32.87, -44.5, -51.1, -64.37, -64.37, -64.37, -64.37, -64.37, -20.1, 24.81, 106.4, 165.76, 165.76, 165.76, 165.76, 165.76, 165.76, 165.76, 165.76, 165.76, 174.25, 229.05, 237.83, 248.46, 252.29, 252.29, 252.29, 252.29, 252.29, 252.29, 368.31, 491.7, 610.84, 725.34, 725.34, 725.34, 725.34, 725.34, 608.35, 709.01, 709.01, 709.01, 709.01], "profit_aud": 709.01}}} \ No newline at end of file diff --git a/results/daily/2026-08-11.json b/results/daily/2026-08-11.json new file mode 100644 index 0000000..5310749 --- /dev/null +++ b/results/daily/2026-08-11.json @@ -0,0 +1 @@ +{"date": "2026-08-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [75.69, 78.59, 73.7, 71.43, 63.82, 56.47, 59.36, 62.72, 71.86, 66.54, 77.72, 74.76, 81.32, 78.9, 83.55, 82.99, 81.82, 70.16, 52.7, 32.2, 8.95, -2.41, 1.05, -3.6, -4.93, 0.04, -2.71, -5.66, -4.34, -3.78, -6.04, -2.95, -5.17, -6.0, 43.86, 68.35, 75.5, 74.24, 65.82, 55.4, 44.5, 52.64, 36.79, 16.34, 0.15, 5.19, 0.0, 0.15], "forecast_price": {"naive": [78.51, 69.03, 61.21, 32.08, 23.49, 15.87, 9.3, 5.28, 10.62, 14.12, 11.12, 14.82, 25.47, 35.42, 35.92, 65.27, 47.49, 19.84, 18.24, 22.77, -7.47, -0.99, -5.15, -6.29, -6.36, -6.79, -43.84, -7.02, -8.5, -6.9, -6.92, -6.73, 2.05, 25.37, 80.87, 92.82, 98.7, 95.32, 91.6, 89.19, 89.67, 86.2, 90.94, 93.59, 89.47, 80.12, 84.4, 75.58], "lightgbm": [48.51, 49.48, 45.49, 32.38, 30.52, 31.15, 29.3, 27.41, 29.3, 32.16, 38.03, 42.48, 44.6, 46.19, 46.19, 60.49, 47.2, 34.6, 29.42, 27.89, 15.72, 17.68, 14.76, 14.12, 13.96, 13.96, -2.03, 8.83, 6.71, 16.37, 17.85, 26.32, 31.35, 43.02, 86.81, 100.68, 105.59, 104.82, 100.68, 99.1, 98.7, 93.39, 92.28, 90.63, 87.15, 82.74, 83.69, 77.0], "lstm": [86.04, 85.5, 77.19, 69.37, 62.01, 54.39, 52.57, 52.39, 51.92, 56.28, 65.13, 67.18, 83.98, 110.74, 128.75, 121.29, 115.94, 95.66, 79.78, 64.9, 61.31, 45.84, 37.34, 37.44, 27.72, 27.55, 23.43, 25.4, 23.91, 27.92, 35.61, 44.33, 56.92, 90.6, 110.69, 138.72, 149.26, 151.67, 136.02, 127.59, 124.12, 117.72, 110.36, 93.14, 91.14, 79.76, 81.0, 86.41]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -79.78, -150.36, -224.56, -302.96, -302.96, -339.89, -339.89, -339.89, -238.24, -238.24, -133.8, -30.07, 72.22, 72.22, 72.22, 72.22, 72.22, 75.22, 76.41, 80.91, 87.07, 87.12, 84.49, 91.56, 96.99, 99.82, 107.37, 103.69, 110.16, 117.66, 117.66, 203.1, 297.47, 390.27, 472.55, 472.55, 416.92, 476.14, 476.14, 476.14, 475.96, 481.8, 481.8, 481.96], "profit_aud": 481.96}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -74.19, -152.59, -242.42, -279.35, -376.49, -376.49, -376.49, -277.87, -173.43, -69.69, 32.59, 22.77, -43.11, -2.86, -14.04, -16.71, -16.84, -16.39, -15.78, -15.78, -12.4, -5.33, 0.1, 2.46, 10.01, 10.38, 10.38, 10.38, 10.38, 95.82, 190.19, 283.0, 283.0, 283.0, 283.0, 283.0, 283.0, 303.42, 303.42, 303.42, 303.42, 303.42], "profit_aud": 303.42}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -79.78, -111.12, -185.31, -263.71, -353.54, -353.54, -353.54, -353.54, -353.54, -254.91, -150.47, -46.73, 55.55, 55.55, 55.55, 55.55, 44.37, 41.66, 41.66, 41.66, 44.4, 44.35, 47.73, 54.81, 60.23, 60.23, 60.23, 60.23, 60.23, 60.23, 60.23, 145.67, 240.04, 332.85, 415.13, 415.13, 415.13, 415.13, 415.13, 415.13, 415.13, 415.13, 415.13, 415.13], "profit_aud": 415.13}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -70.59, -144.78, -223.18, -313.01, -349.94, -349.94, -349.94, -349.94, -251.31, -146.87, -43.13, 59.15, 59.15, 59.15, 59.15, 59.15, 59.15, 59.15, 59.15, 61.88, 61.84, 65.22, 72.29, 77.72, 77.72, 77.72, 77.72, 77.72, 77.72, 77.72, 163.16, 257.53, 350.34, 432.62, 432.62, 432.62, 432.62, 432.62, 432.62, 432.62, 432.62, 432.62, 432.62], "profit_aud": 432.62}}} \ No newline at end of file diff --git a/results/daily/2026-08-12.json b/results/daily/2026-08-12.json new file mode 100644 index 0000000..a0de965 --- /dev/null +++ b/results/daily/2026-08-12.json @@ -0,0 +1 @@ +{"date": "2026-08-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [9.41, 6.42, 1.19, 0.07, -0.01, -0.04, -0.03, 0.3, -0.86, -0.21, -0.21, 0.0, 9.12, 39.8, 63.4, 65.42, 84.69, 77.13, 45.33, 20.59, 11.14, 0.0, 1.68, -2.54, -1.34, -0.07, -0.06, 0.8, -1.04, -0.31, 16.28, 26.48, 52.82, 75.73, 88.42, 86.28, 97.32, 103.12, 101.27, 91.22, 90.88, 90.37, 85.98, 88.14, 78.55, 73.5, 66.27, 63.11], "forecast_price": {"naive": [75.69, 78.59, 73.7, 71.43, 63.82, 56.47, 59.36, 62.72, 71.86, 66.54, 77.72, 74.76, 81.32, 78.9, 83.55, 82.99, 81.82, 70.16, 52.7, 32.2, 8.95, -2.41, 1.05, -3.6, -4.93, 0.04, -2.71, -5.66, -4.34, -3.78, -6.04, -2.95, -5.17, -6.0, 43.86, 68.35, 75.5, 74.24, 65.82, 55.4, 44.5, 52.64, 36.79, 16.34, 0.15, 5.19, 0.0, 0.15], "lightgbm": [51.35, 52.18, 48.77, 47.89, 48.5, 46.39, 47.9, 47.97, 46.96, 49.96, 57.57, 61.77, 60.99, 60.99, 62.0, 62.98, 60.8, 61.45, 54.76, 41.37, 31.6, 26.9, 25.65, 25.52, 24.51, 25.71, 19.95, 24.13, 24.98, 27.62, 28.37, 33.22, 34.95, 41.47, 57.37, 81.99, 89.2, 88.42, 77.56, 72.61, 64.26, 69.43, 59.22, 55.92, 53.04, 53.17, 53.04, 53.04], "lstm": [-14.67, -7.4, -15.82, -23.87, -25.53, -29.24, -29.14, -24.74, -26.34, -24.58, -14.42, -14.49, -2.93, 10.45, 15.04, 19.22, 13.09, -0.47, -2.41, -9.86, -15.0, -17.93, -27.02, -30.1, -38.44, -32.87, -38.19, -39.81, -34.74, -27.42, -19.53, -13.35, -4.64, 16.53, 28.98, 45.43, 63.3, 64.61, 60.43, 57.09, 61.58, 59.98, 48.1, 41.09, 34.4, 26.9, 29.94, 39.38]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.01, 0.06, 0.1, 0.48, 1.55, 1.81, 2.08, 2.08, 2.08, 2.08, 81.32, 163.1, 268.96, 365.37, 365.37, 365.37, 365.37, 365.37, 367.27, 370.44, 372.11, 372.2, 372.24, 373.23, 374.54, 374.93, 374.93, 374.93, 374.93, 374.93, 374.93, 374.93, 496.58, 625.47, 752.07, 866.1, 866.1, 866.1, 866.1, 866.1, 866.1, 866.1, 866.1, 866.1], "profit_aud": 866.1}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.01, 0.06, 0.1, -0.28, -0.28, -0.16, -0.16, -0.16, 11.24, 11.24, 90.49, 172.27, 278.13, 278.13, 278.13, 278.13, 278.13, 278.12, 280.02, 283.19, 284.86, 284.77, 284.72, 283.72, 285.02, 285.26, 264.9, 298.0, 231.98, 137.32, 137.32, 245.17, 366.82, 495.71, 622.31, 622.31, 508.7, 610.37, 610.37, 610.37, 512.18, 594.87, 512.03, 583.03], "profit_aud": 583.03}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -0.09, -0.09, -0.04, -0.0, -0.17, 0.9, 0.9, 0.9, 0.91, 0.91, 0.91, 80.15, 161.93, 161.93, 258.35, 258.35, 258.35, 258.35, 258.35, 258.35, 259.76, 261.42, 261.42, 261.5, 260.51, 261.81, 261.81, 261.81, 261.81, 261.81, 261.81, 261.81, 369.66, 491.31, 620.2, 746.79, 746.79, 746.79, 746.79, 746.79, 746.79, 746.79, 746.79, 746.79, 746.79], "profit_aud": 746.79}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.5, 2.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-11.76, -4.64, -4.79, -4.8, -4.79, -4.74, -4.69, -4.88, -3.81, -3.78, -3.78, -3.78, -4.93, 44.82, 124.07, 205.84, 311.7, 302.06, 296.4, 293.82, 292.43, 292.43, 292.22, 292.54, 294.2, 294.25, 294.32, 293.33, 294.63, 294.67, 292.64, 289.33, 282.72, 282.72, 282.72, 282.72, 404.37, 533.27, 659.86, 659.86, 773.46, 773.46, 773.46, 773.46, 773.46, 681.59, 672.31, 751.2], "profit_aud": 751.2}}} \ No newline at end of file diff --git a/results/daily/2026-08-13.json b/results/daily/2026-08-13.json new file mode 100644 index 0000000..2388db9 --- /dev/null +++ b/results/daily/2026-08-13.json @@ -0,0 +1 @@ +{"date": "2026-08-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [59.6, 52.56, 64.81, 63.08, 53.84, 48.25, 31.17, 31.56, 23.94, 8.6, 25.81, 51.31, 66.46, 72.12, 91.42, 95.22, 103.65, 101.17, 97.66, 101.02, 84.02, 95.5, 107.48, 94.72, 89.76, 91.15, 91.23, 85.67, 84.71, 83.55, 89.41, 120.39, 107.64, 111.96, 117.49, 131.8, 132.79, 119.39, 115.73, 120.14, 122.02, 124.63, 117.4, 117.53, 118.74, 106.14, 105.89, 107.71], "forecast_price": {"naive": [9.41, 6.42, 1.19, 0.07, -0.01, -0.04, -0.03, 0.3, -0.86, -0.21, -0.21, 0.0, 9.12, 39.8, 63.4, 65.42, 84.69, 77.13, 45.33, 20.59, 11.14, 0.0, 1.68, -2.54, -1.34, -0.07, -0.06, 0.8, -1.04, -0.31, 16.28, 26.48, 52.82, 75.73, 88.42, 86.28, 97.32, 103.12, 101.27, 91.22, 90.88, 90.37, 85.98, 88.14, 78.55, 73.5, 66.27, 63.11], "lightgbm": [37.19, 36.5, 32.42, 33.41, 34.03, 33.97, 34.12, 32.96, 32.94, 34.88, 37.79, 39.0, 42.74, 45.45, 58.3, 58.99, 56.48, 55.14, 42.76, 35.53, 32.26, 26.84, 25.59, 25.47, 23.37, 23.25, 23.37, 25.3, 24.45, 25.56, 31.17, 35.27, 50.68, 71.43, 86.87, 93.04, 98.13, 98.78, 101.85, 96.45, 95.47, 92.39, 86.85, 86.13, 82.69, 75.09, 71.49, 71.49], "lstm": [80.71, 79.79, 68.21, 60.83, 54.71, 48.47, 43.13, 41.09, 45.75, 49.8, 55.36, 60.16, 85.89, 117.8, 121.18, 111.37, 102.5, 77.55, 65.56, 49.37, 48.17, 32.86, 29.85, 25.6, 20.23, 16.8, 16.42, 18.1, 16.88, 26.32, 36.44, 43.2, 57.68, 87.0, 107.8, 148.92, 152.2, 142.23, 124.98, 111.27, 107.77, 96.74, 86.25, 72.79, 75.75, 62.33, 61.29, 66.29]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 2.38, 2.38, 1.12, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -65.69, 7.22, 7.22, 7.22, 7.22, -31.74, -49.26, -79.18, -89.93, -122.2, -122.2, -122.2, -122.2, -122.2, -122.2, 7.36, 133.82, 133.82, 260.1, 155.08, 155.08, 289.42, 289.42, 289.42, 289.42, 289.42, 182.33, 76.44, -27.99, -77.61, 57.82, -76.73, -76.73, -76.73, 88.02, 254.01, 254.01, 254.01, 254.01, 406.53, 562.32, 562.32, 562.32, 562.32, 562.32, 562.32, 562.32], "profit_aud": 562.32}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -40.38, -100.69, -139.65, -100.19, -130.11, -140.87, -173.13, -173.13, -173.13, -173.13, -58.85, 60.18, 189.74, 316.2, 316.2, 316.2, 316.2, 196.82, 317.73, 199.33, 87.12, -26.81, -95.23, 11.86, -94.03, -198.47, -198.47, -198.47, -198.47, -198.47, -198.47, -198.47, -32.48, 116.76, 261.42, 411.6, 411.6, 411.6, 411.6, 411.6, 411.6, 411.6, 411.6, 411.6], "profit_aud": 411.6}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -81.01, -159.87, -159.87, -186.64, -186.64, -226.1, -256.02, -256.02, -256.02, -256.02, -256.02, -256.02, -141.74, -22.71, 106.85, 233.31, 233.31, 233.31, 233.31, 233.31, 233.31, 233.31, 121.11, 7.18, -106.86, -154.41, -260.29, -260.29, -260.29, -260.29, -260.29, -260.29, -260.29, -260.29, -94.3, 54.93, 199.59, 349.77, 349.77, 349.77, 349.77, 349.77, 349.77, 349.77, 349.77, 349.77], "profit_aud": 349.77}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -60.31, -99.27, -138.72, -168.64, -173.42, -173.42, -173.42, -173.42, -83.27, 31.01, 150.04, 279.6, 279.6, 279.6, 279.6, 279.6, 279.6, 279.6, 279.6, 229.78, 115.84, 1.81, -105.28, -211.17, -211.17, -211.17, -211.17, -211.17, -211.17, -211.17, -46.42, 119.57, 268.81, 413.47, 413.47, 413.47, 413.47, 413.47, 413.47, 413.47, 413.47, 413.47, 413.47], "profit_aud": 413.47}}} \ No newline at end of file diff --git a/results/daily/2026-08-14.json b/results/daily/2026-08-14.json new file mode 100644 index 0000000..cd25be8 --- /dev/null +++ b/results/daily/2026-08-14.json @@ -0,0 +1 @@ +{"date": "2026-08-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [117.15, 123.08, 120.87, 117.57, 127.65, 119.02, 125.57, 122.54, 103.98, 101.46, 126.7, 184.92, 233.0, 165.7, 183.31, 182.5, 190.65, 167.54, 155.53, 167.64, 147.83, 141.46, 141.45, 145.46, 141.46, 141.46, 155.95, 189.65, 197.9, 224.27, 252.66, 269.9, 203.91, 249.54, 234.49, 179.98, 170.05, 142.61, 131.98, 122.4, 114.54, 118.81, 112.94, 114.6, 118.86, 114.64, 107.11, 107.02], "forecast_price": {"naive": [59.6, 52.56, 64.81, 63.08, 53.84, 48.25, 31.17, 31.56, 23.94, 8.6, 25.81, 51.31, 66.46, 72.12, 91.42, 95.22, 103.65, 101.17, 97.66, 101.02, 84.02, 95.5, 107.48, 94.72, 89.76, 91.15, 91.23, 85.67, 84.71, 83.55, 89.41, 120.39, 107.64, 111.96, 117.49, 131.8, 132.79, 119.39, 115.73, 120.14, 122.02, 124.63, 117.4, 117.53, 118.74, 106.14, 105.89, 107.71], "lightgbm": [77.75, 77.38, 75.92, 69.17, 65.36, 61.21, 59.95, 59.95, 60.35, 59.87, 63.74, 71.11, 74.65, 76.59, 83.78, 87.43, 87.95, 80.17, 58.73, 42.39, 45.3, 38.83, 37.12, 34.49, 32.54, 30.26, 30.26, 31.18, 31.18, 33.25, 37.52, 45.75, 62.04, 81.5, 107.75, 121.52, 122.87, 117.2, 117.2, 117.75, 117.29, 113.09, 104.41, 98.45, 98.17, 90.44, 89.32, 86.75], "lstm": [117.18, 117.37, 109.64, 102.77, 98.13, 88.63, 85.95, 86.41, 85.93, 86.62, 95.73, 95.57, 118.89, 159.16, 163.11, 171.67, 169.65, 140.97, 132.97, 101.04, 98.95, 93.82, 85.13, 71.99, 66.93, 65.83, 53.24, 54.51, 53.34, 58.88, 62.84, 74.71, 101.92, 116.43, 145.3, 176.24, 157.58, 170.41, 147.98, 130.98, 128.21, 127.97, 112.44, 101.93, 119.01, 89.77, 87.99, 97.03]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 2.25, 2.25, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-146.44, -146.44, -146.44, -293.4, -293.4, -359.45, -359.45, -359.45, -489.42, -616.25, -616.25, -385.1, -93.85, -93.85, 135.29, 135.29, 373.59, 373.59, 373.59, 373.59, 373.59, 196.77, 19.96, -60.78, -237.6, -414.43, -414.43, -414.43, -414.43, -414.43, -98.61, 238.77, 238.77, 550.69, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8, 843.8], "profit_aud": 843.8}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 2.38, 2.38, 1.12, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -153.85, -17.87, -17.87, -17.87, -17.87, -174.84, -242.84, -372.82, -499.64, -658.02, -658.02, -658.02, -658.02, -658.02, -658.02, -419.71, -210.29, -210.29, -0.74, -185.52, -185.52, -8.71, -8.71, -8.71, -8.71, -8.71, -245.78, -493.15, -773.49, -913.72, -610.08, -864.97, -864.97, -864.97, -640.0, -427.43, -427.43, -427.43, -427.43, -284.26, -135.74, -135.74, -135.74, -135.74, -135.74, -135.74, -135.74], "profit_aud": -135.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -66.05, -223.02, -376.19, -506.16, -632.99, -632.99, -632.99, -632.99, -632.99, -403.85, -175.72, 62.59, 272.01, 272.01, 272.01, 272.01, 272.01, 272.01, 272.01, 193.5, 16.67, -178.27, -415.34, -662.71, -662.71, -662.71, -662.71, -662.71, -662.71, -662.71, -437.74, -225.17, -225.17, -225.17, -72.17, 71.0, 71.0, 71.0, 71.0, 71.0, 71.0, 71.0, 71.0], "profit_aud": 71.0}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -66.05, -223.02, -376.19, -506.16, -632.99, -632.99, -632.99, -632.99, -425.86, -196.73, 31.4, 269.71, 269.71, 269.71, 269.71, 269.71, 269.71, 269.71, 269.71, 269.71, 269.71, 74.77, -162.29, -409.67, -690.01, -830.23, -830.23, -830.23, -830.23, -830.23, -605.26, -392.69, -214.42, -49.45, -49.45, -49.45, -49.45, -49.45, -192.7, -58.98, -58.98, -58.98, -58.98], "profit_aud": -58.98}}} \ No newline at end of file diff --git a/results/daily/2026-08-15.json b/results/daily/2026-08-15.json new file mode 100644 index 0000000..e61151b --- /dev/null +++ b/results/daily/2026-08-15.json @@ -0,0 +1 @@ +{"date": "2026-08-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [132.54, 135.97, 116.04, 104.8, 105.34, 102.64, 101.09, 95.93, 94.2, 103.42, 125.19, 130.54, 152.98, 157.03, 162.34, 172.2, 141.33, 170.18, 84.51, 64.85, 49.84, 45.46, 59.61, 61.1, 63.37, 73.02, 73.09, 70.35, 77.5, 83.08, 106.88, 125.44, 140.98, 117.94, 121.08, 106.98, 102.18, 100.33, 97.79, 96.78, 91.72, 91.39, 91.97, 94.15, 90.13, 83.02, 84.27, 74.86], "forecast_price": {"naive": [117.15, 123.08, 120.87, 117.57, 127.65, 119.02, 125.57, 122.54, 103.98, 101.46, 126.7, 184.92, 233.0, 165.7, 183.31, 182.5, 190.65, 167.54, 155.53, 167.64, 147.83, 141.46, 141.45, 145.46, 141.46, 141.46, 155.95, 189.65, 197.9, 224.27, 252.66, 269.9, 203.91, 249.54, 234.49, 179.98, 170.05, 142.61, 131.98, 122.4, 114.54, 118.81, 112.94, 114.6, 118.86, 114.64, 107.11, 107.02], "lightgbm": [101.23, 97.94, 96.21, 90.57, 85.88, 85.03, 85.18, 84.61, 82.96, 81.83, 83.7, 88.68, 92.64, 84.47, 91.93, 92.4, 91.43, 77.54, 69.22, 51.29, 45.47, 41.7, 38.5, 37.66, 37.47, 37.47, 37.47, 42.28, 42.28, 54.3, 64.69, 85.79, 94.56, 129.09, 127.15, 127.65, 121.04, 122.02, 115.29, 109.79, 108.42, 104.19, 97.97, 94.92, 94.92, 94.92, 85.65, 85.65], "lstm": [118.28, 113.2, 110.87, 104.79, 95.3, 89.02, 88.98, 88.73, 89.78, 87.28, 86.45, 90.13, 87.16, 120.49, 113.52, 117.86, 110.82, 99.23, 92.28, 66.1, 69.52, 58.3, 60.17, 54.63, 46.94, 51.21, 39.82, 43.74, 43.48, 51.01, 56.81, 70.71, 91.74, 111.8, 135.08, 149.9, 152.63, 153.56, 129.56, 114.06, 116.3, 113.64, 104.67, 94.81, 95.18, 76.05, 79.37, 92.78]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -128.3, -254.67, -374.58, -492.32, -549.72, -549.72, -549.72, -549.72, -353.43, -150.5, 64.75, 64.75, 277.48, 277.48, 277.48, 215.18, 158.36, 83.85, 7.46, -27.7, -27.7, -27.7, -27.7, -27.7, -27.7, -27.7, 129.1, 305.32, 452.74, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08, 604.08], "profit_aud": 604.08}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 2.5, 0.0, 1.11, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 2.25, 2.25, 2.75, 2.75, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-165.67, -165.67, -165.67, -296.67, -296.67, -353.64, -353.64, -353.64, -471.38, -600.66, -600.66, -437.47, -246.25, -246.25, -43.31, -43.31, 133.35, 133.35, 133.35, 133.35, 133.35, 76.53, 2.02, -31.89, -111.1, -202.38, -202.38, -202.38, -202.38, -202.38, -68.78, 88.02, 88.02, 235.44, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79, 386.79], "profit_aud": 386.79}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -117.74, -247.01, -247.01, -247.01, -55.79, -55.79, -55.79, 116.42, 116.42, 116.42, 116.42, 116.42, 116.42, 116.42, 83.33, 6.95, -72.26, -163.53, -254.89, -254.89, -254.89, -254.89, -254.89, -254.89, -254.89, -107.47, 43.87, 177.6, 177.6, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01, 303.01], "profit_aud": 303.01}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -56.11, -176.02, -176.02, -305.29, -461.78, -461.78, -653.0, -456.72, -253.79, -38.53, 138.13, 138.13, 138.13, 138.13, 138.13, 138.13, 138.13, 138.13, 58.92, 58.92, -32.44, -120.38, -217.26, -263.37, -263.37, -263.37, -263.37, -263.37, -112.02, 21.71, 149.43, 274.85, 274.85, 274.85, 274.85, 274.85, 274.85, 274.85, 274.85, 171.08, 159.28, 252.85], "profit_aud": 252.85}}} \ No newline at end of file diff --git a/results/daily/2026-08-16.json b/results/daily/2026-08-16.json new file mode 100644 index 0000000..51dbabf --- /dev/null +++ b/results/daily/2026-08-16.json @@ -0,0 +1 @@ +{"date": "2026-08-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [65.51, 73.53, 73.7, 69.73, 66.11, 66.86, 66.11, 64.0, 63.54, 62.2, 59.76, 60.65, 68.01, 69.15, 50.32, 49.14, 44.95, 43.85, 41.22, 23.95, 12.96, 9.31, 3.14, 1.73, -1.21, -4.86, -3.63, -6.83, -9.32, -12.03, -6.94, 3.86, 43.1, 75.44, 83.14, 83.62, 86.93, 86.75, 84.12, 77.2, 72.42, 73.61, 67.19, 69.89, 68.68, 55.61, 57.19, 54.38], "forecast_price": {"naive": [132.54, 135.97, 116.04, 104.8, 105.34, 102.64, 101.09, 95.93, 94.2, 103.42, 125.19, 130.54, 152.98, 157.03, 162.34, 172.2, 141.33, 170.18, 84.51, 64.85, 49.84, 45.46, 59.61, 61.1, 63.37, 73.02, 73.09, 70.35, 77.5, 83.08, 106.88, 125.44, 140.98, 117.94, 121.08, 106.98, 102.18, 100.33, 97.79, 96.78, 91.72, 91.39, 91.97, 94.15, 90.13, 83.02, 84.27, 74.86], "lightgbm": [96.02, 97.69, 93.29, 84.13, 79.35, 76.22, 76.22, 73.99, 72.93, 74.66, 77.91, 81.01, 82.55, 81.55, 82.13, 84.34, 83.7, 76.88, 65.57, 47.39, 39.94, 31.16, 41.18, 40.15, 41.12, 42.64, 42.64, 42.74, 48.61, 57.72, 63.62, 70.82, 93.63, 99.59, 113.69, 105.0, 104.04, 103.54, 103.54, 102.47, 96.85, 91.91, 87.77, 86.84, 81.06, 78.4, 78.4, 72.27], "lstm": [92.42, 88.7, 80.13, 80.93, 74.29, 72.16, 68.91, 65.26, 68.7, 65.03, 63.82, 63.63, 66.48, 85.2, 78.19, 79.57, 71.29, 67.62, 61.96, 45.39, 51.09, 36.88, 40.05, 34.46, 32.41, 33.23, 23.56, 32.44, 35.79, 42.26, 51.93, 63.1, 82.89, 107.88, 122.35, 137.29, 157.46, 139.45, 122.43, 110.23, 107.64, 99.12, 92.42, 85.56, 83.09, 65.97, 73.05, 85.55]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-81.89, -81.89, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, -73.69, -149.5, -81.49, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 4.95, 5.1, 11.17, 9.16, 17.7, 29.35, 44.39, 53.06, 53.06, 53.06, 53.06, 53.06, 157.59, 266.25, 374.69, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84, 479.84], "profit_aud": 479.84}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -83.57, -166.2, -246.21, -325.64, -360.16, -360.16, -360.16, -360.16, -273.72, -210.82, -149.4, -149.4, -94.58, -94.58, -94.58, -110.78, -122.42, -126.35, -128.51, -127.84, -127.84, -127.84, -127.84, -127.84, -127.84, -127.84, -123.02, -69.15, 25.15, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07, 129.07], "profit_aud": 129.07}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -80.0, -159.43, -176.85, -176.85, -176.85, -176.85, -176.85, -176.85, -115.43, -59.25, -59.25, -59.25, -59.25, -75.45, -87.09, -88.83, -91.0, -89.48, -89.48, -89.48, -89.48, -89.48, -89.48, -89.48, -89.48, -89.48, -89.48, 14.44, 118.97, 227.63, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07, 336.07], "profit_aud": 336.07}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -26.56, -26.56, -104.31, -179.01, -254.82, -254.82, -168.39, -105.48, -44.06, -44.06, -44.06, -44.06, -74.01, -59.43, -59.43, -59.43, -60.39, -58.87, -52.8, -48.27, -39.72, -39.72, -39.72, -39.72, -39.72, -39.72, -39.72, -39.72, 64.8, 173.47, 281.91, 387.06, 387.06, 387.06, 387.06, 387.06, 387.06, 387.06, 317.55, 309.54, 377.52], "profit_aud": 377.52}}} \ No newline at end of file diff --git a/results/daily/2026-08-17.json b/results/daily/2026-08-17.json new file mode 100644 index 0000000..6c454d7 --- /dev/null +++ b/results/daily/2026-08-17.json @@ -0,0 +1 @@ +{"date": "2026-08-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [57.06, 53.88, 52.12, 50.98, 51.18, 48.27, 53.64, 46.82, 44.92, 40.87, 42.46, 44.3, 51.93, 54.73, 58.18, 58.21, 53.91, 54.0, 53.27, 47.78, 48.16, 28.65, 17.06, 22.19, 23.93, 22.4, 34.45, 21.75, 19.36, 16.96, 13.42, 14.0, 64.5, 79.56, 79.34, 84.53, 81.98, 80.52, 79.23, 77.99, 84.82, 83.58, 81.18, 67.86, 59.6, 52.63, 52.45, 52.88], "forecast_price": {"naive": [65.51, 73.53, 73.7, 69.73, 66.11, 66.86, 66.11, 64.0, 63.54, 62.2, 59.76, 60.65, 68.01, 69.15, 50.32, 49.14, 44.95, 43.85, 41.22, 23.95, 12.96, 9.31, 3.14, 1.73, -1.21, -4.86, -3.63, -6.83, -9.32, -12.03, -6.94, 3.86, 43.1, 75.44, 83.14, 83.62, 86.93, 86.75, 84.12, 77.2, 72.42, 73.61, 67.19, 69.89, 68.68, 55.61, 57.19, 54.38], "lightgbm": [54.32, 55.49, 53.77, 45.03, 44.28, 43.85, 42.77, 42.77, 42.77, 41.91, 51.44, 52.34, 57.35, 58.34, 52.62, 62.04, 53.06, 38.52, 38.22, 35.87, 35.03, 27.66, 24.57, 24.04, 24.04, 20.47, 26.18, 22.81, 13.48, 12.55, 22.96, 29.73, 37.82, 68.17, 89.05, 102.94, 103.33, 103.33, 102.27, 94.14, 86.78, 89.93, 79.63, 79.31, 79.31, 70.54, 75.55, 68.14], "lstm": [62.28, 56.4, 51.87, 41.14, 39.64, 38.01, 35.04, 37.21, 42.0, 45.28, 54.82, 61.25, 84.97, 123.02, 125.65, 143.05, 122.23, 99.02, 92.9, 71.15, 66.17, 49.36, 48.49, 43.09, 37.36, 37.19, 28.62, 32.69, 31.71, 38.72, 51.25, 62.85, 78.97, 113.57, 128.04, 152.77, 163.42, 150.0, 123.24, 110.78, 115.44, 110.6, 100.79, 89.67, 87.95, 74.6, 77.84, 85.26]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -60.34, 0.0, -25.99, -82.13, -133.22, -186.3, -241.67, -241.67, -173.26, -100.54, -27.78, -27.78, 39.72, 39.72, 39.72, 39.72, 39.72, 18.4, 15.29, 15.29, 15.29, 58.35, 46.28, 22.08, 0.88, -15.89, -33.4, -33.4, -33.4, -33.4, 72.27, 174.74, 174.74, 174.74, 174.74, 280.76, 385.23, 385.23, 385.23, 385.23, 385.23, 385.23, 385.23], "profit_aud": 385.23}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-71.33, -71.33, -12.7, -12.7, -12.7, -12.7, -12.7, -12.7, -12.7, -12.7, -65.77, -121.15, -69.21, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -0.8, -3.79, -31.8, -12.68, -39.87, -64.07, -85.27, -102.04, -102.04, -102.04, -102.04, -102.04, 3.62, 106.09, 206.75, 305.78, 305.78, 305.78, 305.78, 305.78, 305.78, 305.78, 305.78, 305.78, 305.78], "profit_aud": 305.78}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -26.79, -93.83, -152.36, -208.51, -259.6, -259.6, -259.6, -194.69, -126.27, -126.27, -53.51, 13.88, 13.88, 13.88, 13.88, 13.88, 13.88, 13.88, 13.88, 13.88, -14.13, 7.4, -19.79, -43.99, -65.19, -81.96, -81.96, -81.96, -81.96, -81.96, 23.7, 126.17, 226.83, 325.86, 325.86, 325.86, 325.86, 325.86, 325.86, 325.86, 325.86, 325.86, 325.86], "profit_aud": 325.86}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -28.29, -92.27, -152.61, -219.65, -278.18, -278.18, -278.18, -278.18, -278.18, -278.18, -209.77, -137.05, -64.29, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, -10.18, -38.19, -81.25, -108.44, -132.63, -132.63, -132.63, -132.63, -132.63, -132.63, -33.45, 72.21, 174.68, 275.34, 275.34, 275.34, 275.34, 275.34, 275.34, 275.34, 275.34, 209.55, 209.55, 269.04], "profit_aud": 269.04}}} \ No newline at end of file diff --git a/results/daily/2026-08-18.json b/results/daily/2026-08-18.json new file mode 100644 index 0000000..b2c9b76 --- /dev/null +++ b/results/daily/2026-08-18.json @@ -0,0 +1 @@ +{"date": "2026-08-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [50.94, 45.74, 36.7, 41.92, 27.3, 33.9, 31.42, 27.01, 26.16, 31.31, 29.47, 28.22, 33.83, 36.2, 51.37, 41.11, 23.57, 11.25, 8.42, 5.19, -0.11, -4.57, -5.5, -6.53, -6.29, -5.89, -2.29, -3.83, -2.63, -3.93, -1.33, 5.92, 13.69, 30.6, 41.3, 41.25, 33.02, 32.46, 29.86, 12.18, 8.71, 8.59, 8.51, 8.5, 8.8, 5.38, -0.04, -0.23], "forecast_price": {"naive": [57.06, 53.88, 52.12, 50.98, 51.18, 48.27, 53.64, 46.82, 44.92, 40.87, 42.46, 44.3, 51.93, 54.73, 58.18, 58.21, 53.91, 54.0, 53.27, 47.78, 48.16, 28.65, 17.06, 22.19, 23.93, 22.4, 34.45, 21.75, 19.36, 16.96, 13.42, 14.0, 64.5, 79.56, 79.34, 84.53, 81.98, 80.52, 79.23, 77.99, 84.82, 83.58, 81.18, 67.86, 59.6, 52.63, 52.45, 52.88], "lightgbm": [53.25, 55.11, 49.91, 46.53, 44.71, 40.95, 43.73, 40.93, 39.91, 41.05, 48.43, 50.42, 59.02, 59.91, 60.8, 61.5, 57.24, 56.59, 52.59, 44.69, 39.59, 30.48, 24.41, 25.12, 26.32, 26.32, 31.81, 24.95, 24.12, 26.04, 25.69, 29.67, 52.07, 69.13, 78.85, 92.38, 91.92, 91.92, 91.69, 84.42, 91.17, 88.17, 82.67, 66.39, 58.96, 54.91, 54.91, 54.91], "lstm": [56.91, 52.91, 49.71, 43.88, 37.58, 32.82, 30.2, 29.93, 34.47, 36.87, 41.15, 47.58, 61.23, 92.06, 104.46, 110.72, 104.08, 88.42, 79.06, 64.15, 61.57, 47.1, 43.62, 41.05, 35.21, 37.57, 28.34, 33.9, 35.54, 41.42, 51.64, 61.96, 74.3, 105.47, 119.73, 145.26, 141.81, 127.45, 104.9, 104.4, 101.11, 92.17, 83.65, 75.21, 74.55, 59.83, 63.03, 69.38]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [0.0, 0.0, -45.87, 1.29, -32.84, 5.3, 5.3, -28.47, -61.17, -61.17, -98.01, -133.28, -107.91, -62.66, 1.54, 52.93, 52.93, 52.93, 52.93, 52.93, 52.95, 55.8, 62.69, 70.85, 78.71, 86.08, 83.22, 88.01, 85.46, 90.37, 90.53, 90.53, 90.53, 90.53, 142.16, 193.73, 235.01, 275.58, 275.58, 275.58, 275.58, 275.58, 275.58, 275.58, 275.58, 275.58, 275.63, 275.91], "profit_aud": 275.91}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -42.38, -7.03, -22.02, -54.72, -93.86, -130.7, -165.97, -165.97, -120.72, -56.52, -5.13, -5.13, 8.93, 8.93, 8.93, 8.93, 8.93, 15.81, 16.73, 16.73, 16.73, 13.87, 16.0, 19.28, 24.2, 25.86, 18.46, 18.46, 18.46, 18.46, 70.03, 111.31, 111.31, 111.31, 111.31, 122.2, 132.93, 132.93, 132.93, 132.93, 132.93, 132.93, 132.93], "profit_aud": 132.93}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -42.38, -59.82, -93.58, -126.29, -165.42, -165.42, -165.42, -123.14, -77.89, -13.68, 37.71, 37.71, 37.71, 37.71, 37.71, 37.71, 37.71, 44.59, 52.75, 52.75, 52.75, 49.89, 54.68, 57.97, 60.7, 62.36, 62.36, 62.36, 62.36, 62.36, 113.93, 155.21, 195.77, 233.1, 233.1, 233.1, 233.1, 233.1, 233.1, 233.1, 233.1, 233.1, 233.1], "profit_aud": 233.1}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -42.38, -81.66, -115.42, -148.13, -165.51, -165.51, -165.51, -165.51, -120.26, -56.05, -4.66, 24.8, 24.8, 24.8, 24.8, 24.8, 24.8, 24.8, 24.8, 32.67, 35.94, 38.79, 43.58, 46.87, 46.87, 46.87, 46.87, 46.87, 46.87, 98.5, 150.07, 191.35, 231.92, 231.92, 231.92, 231.92, 231.92, 231.92, 231.92, 231.92, 225.19, 225.19, 224.93], "profit_aud": 224.93}}} \ No newline at end of file diff --git a/results/daily/2026-08-19.json b/results/daily/2026-08-19.json new file mode 100644 index 0000000..f26bfa7 --- /dev/null +++ b/results/daily/2026-08-19.json @@ -0,0 +1 @@ +{"date": "2026-08-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.4, -2.2, -2.51, -3.9, -5.26, -5.75, -6.04, -6.29, -6.17, -4.56, -1.46, -5.21, -4.48, 15.92, 18.1, 43.59, 25.26, 6.14, -2.86, -7.49, -7.92, -12.39, -16.66, -30.65, -44.33, -97.82, -138.63, -99.67, -51.92, -33.37, -13.81, -66.83, -32.75, 14.7, 64.18, 93.22, 75.49, 80.45, 78.42, 83.6, 74.47, 84.33, 89.23, 91.33, 79.53, 64.06, 76.93, 69.54], "forecast_price": {"naive": [50.94, 45.74, 36.7, 41.92, 27.3, 33.9, 31.42, 27.01, 26.16, 31.31, 29.47, 28.22, 33.83, 36.2, 51.37, 41.11, 23.57, 11.25, 8.42, 5.19, -0.11, -4.57, -5.5, -6.53, -6.29, -5.89, -2.29, -3.83, -2.63, -3.93, -1.33, 5.92, 13.69, 30.6, 41.3, 41.25, 33.02, 32.46, 29.86, 12.18, 8.71, 8.59, 8.51, 8.5, 8.8, 5.38, -0.04, -0.23], "lightgbm": [30.95, 27.67, 24.51, 24.41, 20.97, 21.9, 21.15, 20.46, 20.46, 21.85, 25.29, 27.87, 31.24, 33.08, 40.5, 36.32, 36.28, 30.09, 26.25, 18.22, 16.97, 15.3, 12.68, 12.56, 12.41, 12.41, 13.88, 13.88, 13.88, 15.28, 17.19, 20.02, 26.64, 36.15, 46.77, 54.16, 55.21, 55.04, 54.46, 50.46, 50.21, 49.02, 46.86, 45.65, 45.17, 44.67, 44.54, 44.54], "lstm": [-5.37, -0.67, -8.08, -14.1, -15.64, -17.94, -18.33, -16.96, -16.97, -15.17, -6.38, -4.97, 5.48, 20.65, 29.23, 37.85, 31.72, 23.48, 22.72, 15.28, 10.09, 8.18, 3.47, -1.66, -5.9, -2.51, -7.38, -10.72, -3.59, 1.32, 3.63, 11.33, 20.69, 37.77, 45.73, 64.12, 67.66, 73.35, 69.38, 63.82, 66.33, 63.45, 52.65, 48.93, 43.8, 36.32, 40.44, 47.66]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.05, 0.33, 0.64, 1.13, 4.41, 11.59, 19.14, 27.01, 34.72, 35.29, 33.47, 39.98, 41.1, 61.01, 83.64, 138.12, 169.69, 169.69, 170.05, 170.99, 171.98, 173.53, 175.61, 179.44, 207.15, 329.42, 502.71, 627.29, 692.19, 696.36, 679.1, 762.64, 770.83, 770.83, 770.83, 887.35, 887.35, 887.35, 887.35, 981.39, 888.31, 993.72, 1105.26, 1219.42, 1219.42, 1139.35, 1225.9, 1225.9], "profit_aud": 1225.9}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25], "cumulative_profit_aud": [-0.0, 0.0, 3.14, -1.25, 5.32, -1.15, -1.15, 6.72, 14.43, 14.43, 16.25, 22.76, 19.4, 39.3, 61.94, 116.42, 116.42, 116.42, 116.42, 116.42, 117.41, 125.16, 145.98, 184.29, 239.7, 361.98, 188.69, 313.27, 262.91, 304.63, 306.35, 306.35, 306.35, 306.35, 386.58, 503.1, 597.47, 698.03, 698.03, 698.03, 698.03, 698.03, 698.03, 698.03, 698.03, 698.03, 601.87, 514.94], "profit_aud": 514.94}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 0.0, 0.0, 0.0, 6.57, 6.57, 14.12, 21.99, 29.7, 32.22, 32.22, 32.22, 32.22, 52.13, 74.76, 129.25, 160.82, 160.82, 160.82, 160.82, 160.82, 160.82, 181.64, 219.95, 275.36, 397.64, 474.58, 474.58, 474.58, 474.58, 474.58, 474.58, 474.58, 474.58, 474.58, 591.1, 685.46, 786.02, 884.05, 884.05, 884.05, 884.05, 884.05, 884.05, 884.05, 884.05, 884.05, 884.05], "profit_aud": 884.05}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.5, -1.94, -1.63, -1.14, 2.14, 9.33, 16.88, 24.74, 32.45, 33.02, 33.2, 33.86, 33.86, 33.86, 56.49, 110.97, 142.54, 150.22, 150.22, 150.22, 150.22, 150.22, 150.22, 154.05, 209.47, 270.6, 443.89, 568.47, 633.37, 633.37, 633.37, 633.37, 633.37, 633.37, 633.37, 633.37, 727.74, 828.3, 926.33, 926.33, 1019.41, 1019.41, 1019.41, 1019.41, 1019.41, 939.34, 928.57, 1015.5], "profit_aud": 1015.5}}} \ No newline at end of file diff --git a/results/daily/2026-08-20.json b/results/daily/2026-08-20.json new file mode 100644 index 0000000..dc78517 --- /dev/null +++ b/results/daily/2026-08-20.json @@ -0,0 +1 @@ +{"date": "2026-08-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [67.98, 67.35, 61.08, 66.26, 79.32, 68.13, 64.1, 63.48, 61.69, 56.58, 61.06, 75.17, 79.75, 87.79, 99.08, 112.5, 133.03, 128.22, 301.01, 199.82, 57.77, 39.54, 32.32, 19.34, 14.82, 11.32, 6.13, 9.29, 22.74, 33.86, 40.24, 64.49, 90.52, 95.48, 101.96, 98.5, 90.5, 89.43, 89.12, 97.51, 97.36, 93.61, 97.38, 89.75, 87.5, 67.4, 66.22, 61.2], "forecast_price": {"naive": [-0.4, -2.2, -2.51, -3.9, -5.26, -5.75, -6.04, -6.29, -6.17, -4.56, -1.46, -5.21, -4.48, 15.92, 18.1, 43.59, 25.26, 6.14, -2.86, -7.49, -7.92, -12.39, -16.66, -30.65, -44.33, -97.82, -138.63, -99.67, -51.92, -33.37, -13.81, -66.83, -32.75, 14.7, 64.18, 93.22, 75.49, 80.45, 78.42, 83.6, 74.47, 84.33, 89.23, 91.33, 79.53, 64.06, 76.93, 69.54], "lightgbm": [25.9, 26.49, 23.4, 22.26, 18.23, 17.14, 15.9, 15.9, 14.61, 15.81, 22.03, 27.07, 33.69, 39.76, 40.6, 43.65, 44.18, 32.73, 28.86, 19.82, 16.16, 5.41, 2.01, -3.79, -4.77, -5.53, -5.53, -5.02, -4.64, -0.09, 7.82, 5.39, 14.65, 39.55, 64.96, 99.29, 85.09, 90.68, 89.62, 93.37, 85.79, 90.2, 88.19, 84.28, 80.89, 70.38, 75.13, 72.4], "lstm": [110.51, 112.3, 93.22, 87.95, 78.17, 70.6, 63.25, 65.86, 70.42, 75.54, 87.9, 83.68, 123.37, 158.11, 179.16, 160.72, 144.4, 117.02, 93.26, 77.65, 81.04, 58.22, 52.57, 43.88, 31.42, 29.18, 27.46, 29.09, 26.53, 37.49, 44.16, 53.49, 74.03, 104.31, 120.81, 155.55, 156.18, 156.76, 144.7, 134.55, 140.29, 127.29, 109.33, 103.27, 104.61, 89.51, 91.07, 93.25]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -76.36, -85.63, 13.51, 13.51, -22.06, -101.41, -178.53, -249.25, -325.58, -325.58, -325.58, -325.58, -325.58, -325.58, -159.3, 0.97, 377.23, 627.01, 627.01, 627.01, 627.01, 616.28, 597.75, 583.6, 575.95, 564.34, 564.34, 564.34, 564.34, 564.34, 564.34, 564.34, 691.79, 814.91, 814.91, 814.91, 814.91, 936.8, 936.8, 936.8, 1058.52, 1058.52, 1058.52, 1058.52, 1058.52, 1058.52], "profit_aud": 1058.52}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [-8.5, -16.92, -24.55, -32.83, -82.41, -167.57, -247.69, -327.04, -404.16, -411.23, -334.9, -428.86, -448.8, -339.05, -215.21, -74.58, 91.7, 91.7, 54.08, 29.1, 21.88, 16.93, 12.89, 10.48, 1.21, -12.93, -20.59, -32.2, -60.63, -64.87, -14.56, -95.18, -117.81, -117.81, -117.81, 5.32, 5.32, 5.32, 5.32, 115.01, -6.68, 110.34, 232.06, 344.25, 344.25, 259.99, 334.49, 334.49], "profit_aud": 334.5}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -37.81, -117.94, -197.28, -274.4, -345.13, -345.13, -345.13, -345.13, -235.39, -111.54, 29.08, 195.37, 195.37, 195.37, 195.37, 195.37, 195.37, 195.37, 192.95, 174.43, 160.28, 152.62, 141.01, 126.79, 122.56, 167.83, 87.22, 87.22, 87.22, 87.22, 210.35, 210.35, 322.14, 322.14, 444.02, 444.02, 561.04, 561.04, 561.04, 561.04, 561.04, 561.04, 561.04], "profit_aud": 561.04}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -85.16, -165.29, -244.64, -321.75, -353.16, -353.16, -353.16, -353.16, -243.41, -119.57, 21.06, 187.34, 187.34, 187.34, 187.34, 187.34, 187.34, 187.34, 187.34, 179.12, 164.97, 157.31, 145.7, 117.27, 117.27, 117.27, 117.27, 117.27, 117.27, 117.27, 240.4, 353.52, 465.31, 576.71, 576.71, 576.71, 576.71, 576.71, 576.71, 576.71, 576.71, 576.71, 576.71], "profit_aud": 576.71}}} \ No newline at end of file diff --git a/results/daily/2026-08-21.json b/results/daily/2026-08-21.json new file mode 100644 index 0000000..d32885c --- /dev/null +++ b/results/daily/2026-08-21.json @@ -0,0 +1 @@ +{"date": "2026-08-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [69.92, 76.49, 73.39, 74.06, 73.56, 55.23, 67.1, 60.93, 42.58, 60.91, 66.82, 99.38, 101.02, 101.03, 129.72, 137.62, 133.47, 157.28, 144.8, 163.14, 121.3, 117.33, 96.29, 91.2, 75.3, 71.69, 51.53, 32.81, 41.64, 35.73, 41.43, 65.96, 96.74, 129.05, 135.25, 130.21, 151.66, 239.54, 126.16, 102.38, 101.03, 102.83, 98.76, 98.76, 99.89, 101.04, 91.72, 81.4], "forecast_price": {"naive": [67.98, 67.35, 61.08, 66.26, 79.32, 68.13, 64.1, 63.48, 61.69, 56.58, 61.06, 75.17, 79.75, 87.79, 99.08, 112.5, 133.03, 128.22, 301.01, 199.82, 57.77, 39.54, 32.32, 19.34, 14.82, 11.32, 6.13, 9.29, 22.74, 33.86, 40.24, 64.49, 90.52, 95.48, 101.96, 98.5, 90.5, 89.43, 89.12, 97.51, 97.36, 93.61, 97.38, 89.75, 87.5, 67.4, 66.22, 61.2], "lightgbm": [63.8, 62.23, 57.41, 53.18, 55.05, 50.34, 51.2, 51.2, 49.6, 49.26, 53.17, 54.97, 65.66, 68.76, 69.35, 67.38, 66.49, 56.68, 48.36, 41.55, 39.47, 21.53, 15.88, 9.15, 8.54, 7.61, 4.58, 7.61, 9.38, 18.3, 22.86, 42.42, 52.95, 63.0, 83.59, 89.4, 84.13, 83.09, 83.09, 88.7, 88.7, 82.81, 79.87, 70.86, 69.07, 57.52, 58.94, 57.71], "lstm": [61.61, 61.83, 50.77, 49.12, 40.96, 33.4, 31.59, 33.29, 34.93, 34.44, 40.71, 42.74, 60.99, 87.04, 92.0, 100.67, 92.93, 72.15, 69.97, 50.49, 52.04, 45.26, 36.1, 27.33, 24.06, 20.01, 15.29, 19.14, 17.78, 24.69, 30.07, 42.17, 54.13, 77.64, 89.29, 123.13, 111.5, 113.56, 99.47, 93.54, 98.34, 95.64, 80.5, 78.93, 81.68, 63.69, 64.61, 69.07]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -69.04, -69.04, -145.2, -198.43, -274.57, -311.65, -311.65, -311.65, -311.65, -311.65, -139.63, -139.63, 56.97, 237.97, 441.89, 441.89, 441.89, 441.89, 441.89, 441.89, 441.89, 413.29, 372.28, 320.23, 275.57, 223.78, 223.78, 223.78, 223.78, 392.85, 555.61, 745.18, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61, 1044.61], "profit_aud": 1044.61}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -91.74, -102.11, -10.16, -10.16, -47.4, -123.57, -176.79, -252.93, -336.46, -336.46, -336.46, -336.46, -336.46, -336.46, -169.62, 26.98, 207.98, 411.9, 411.9, 411.9, 411.9, 361.29, 267.17, 177.56, 113.14, 72.13, 72.13, 72.13, 72.13, 72.13, 72.13, 72.13, 241.19, 403.96, 403.96, 403.96, 403.96, 531.93, 531.93, 531.93, 655.38, 655.38, 655.38, 655.38, 655.38, 655.38], "profit_aud": 655.38}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -69.04, -152.91, -186.73, -239.95, -316.09, -316.09, -316.09, -316.09, -189.81, -27.66, 144.37, 311.21, 311.21, 311.21, 311.21, 311.21, 311.21, 311.21, 260.59, 166.47, 76.86, 12.45, -28.56, -28.56, -28.56, -28.56, -28.56, -28.56, -28.56, -28.56, 134.2, 323.77, 323.77, 323.77, 451.75, 578.03, 578.03, 578.03, 578.03, 578.03, 578.03, 578.03, 578.03], "profit_aud": 578.03}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -69.04, -152.91, -229.08, -252.71, -328.85, -328.85, -328.85, -328.85, -202.56, -40.41, 131.61, 298.46, 298.46, 298.46, 298.46, 298.46, 298.46, 298.46, 298.46, 256.67, 167.06, 102.64, 61.63, 9.58, 9.58, 9.58, 9.58, 9.58, 9.58, 9.58, 172.34, 361.91, 661.34, 819.04, 819.04, 819.04, 819.04, 819.04, 819.04, 819.04, 819.04, 819.04, 819.04], "profit_aud": 819.04}}} \ No newline at end of file diff --git a/results/daily/2026-08-22.json b/results/daily/2026-08-22.json new file mode 100644 index 0000000..8d4f601 --- /dev/null +++ b/results/daily/2026-08-22.json @@ -0,0 +1 @@ +{"date": "2026-08-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [81.24, 83.72, 82.48, 70.65, 69.53, 69.53, 71.14, 69.9, 73.58, 70.57, 78.92, 80.8, 42.25, 51.25, 45.42, 45.06, 62.31, 63.36, 40.79, 30.68, 41.12, 52.02, 52.41, 75.21, 88.01, 87.56, 93.35, 95.71, 103.56, 99.47, 96.67, 49.05, 64.22, 90.64, 110.06, 120.59, 169.9, 178.46, 161.21, 170.44, 162.7, 183.81, 223.0, 220.43, 191.26, 188.75, 211.85, 184.4], "forecast_price": {"naive": [69.92, 76.49, 73.39, 74.06, 73.56, 55.23, 67.1, 60.93, 42.58, 60.91, 66.82, 99.38, 101.02, 101.03, 129.72, 137.62, 133.47, 157.28, 144.8, 163.14, 121.3, 117.33, 96.29, 91.2, 75.3, 71.69, 51.53, 32.81, 41.64, 35.73, 41.43, 65.96, 96.74, 129.05, 135.25, 130.21, 151.66, 239.54, 126.16, 102.38, 101.03, 102.83, 98.76, 98.76, 99.89, 101.04, 91.72, 81.4], "lightgbm": [77.1, 79.05, 77.29, 73.64, 71.03, 65.38, 67.43, 65.46, 57.89, 65.73, 65.98, 73.44, 72.93, 74.75, 76.71, 80.29, 78.19, 72.73, 57.63, 57.25, 51.1, 52.03, 49.95, 49.28, 41.31, 39.47, 37.23, 30.8, 30.88, 35.34, 37.16, 55.87, 75.54, 99.0, 120.7, 117.25, 129.2, 145.57, 117.25, 102.78, 102.37, 97.2, 92.58, 86.74, 86.74, 86.42, 82.25, 78.16], "lstm": [86.69, 83.51, 74.82, 75.3, 62.97, 56.75, 56.43, 55.82, 56.65, 54.28, 57.75, 57.22, 61.12, 76.65, 77.58, 68.19, 71.83, 59.05, 51.69, 36.99, 34.38, 29.52, 27.29, 21.35, 18.28, 21.46, 14.83, 17.46, 21.15, 30.16, 38.27, 53.01, 68.48, 87.53, 106.87, 137.94, 138.81, 127.36, 106.01, 93.5, 102.45, 97.62, 83.99, 79.52, 79.94, 61.34, 65.56, 79.26]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 2.5, 1.67, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.88, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.92, -173.83, -173.83, -193.41, -193.41, -193.41, -94.75, 6.24, -46.57, -89.36, -146.13, -202.46, -124.57, -45.37, -96.36, -134.71, -186.11, -186.11, -186.11, -186.11, -186.11, -186.11, -186.11, -186.11, -56.66, 42.81, 42.81, -18.5, -98.78, -98.78, -98.78, -98.78, -98.78, -98.78, -98.78, -98.78, -98.78, -98.78, 179.97, 455.52, 694.58, 694.58, 959.4, 959.4], "profit_aud": 959.4}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -86.92, -86.92, -174.29, -266.27, -354.48, -398.29, -398.29, -398.29, -398.29, -398.29, -341.96, -341.96, -262.75, -211.76, -173.41, -173.41, -173.41, -173.41, -173.41, -173.41, -173.41, -225.22, -344.86, -474.31, -598.65, -719.49, -719.49, -719.49, -719.49, -581.91, -431.18, -218.8, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26, 4.26], "profit_aud": 4.26}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -86.92, -86.92, -174.29, -266.27, -354.48, -398.29, -398.29, -398.29, -334.22, -277.45, -221.13, -143.23, -143.23, -143.23, -143.23, -143.23, -143.23, -143.23, -143.23, -143.23, -143.23, -195.04, -314.68, -444.13, -568.47, -689.31, -689.31, -689.31, -689.31, -551.74, -401.0, -188.63, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44, 34.44], "profit_aud": 34.44}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -38.59, -127.52, -214.9, -306.87, -395.09, -395.09, -395.09, -395.09, -331.02, -274.25, -217.93, -140.03, -140.03, -140.03, -140.03, -140.03, -140.03, -140.03, -181.78, -291.79, -291.79, -408.48, -528.12, -657.57, -657.57, -657.57, -657.57, -657.57, -657.57, -520.0, -369.26, -156.89, 66.18, 66.18, 66.18, 66.18, 66.18, 66.18, 66.18, 66.18, -169.75, -199.41, 31.08], "profit_aud": 31.08}}} \ No newline at end of file diff --git a/results/daily/2026-08-23.json b/results/daily/2026-08-23.json new file mode 100644 index 0000000..6c4fbec --- /dev/null +++ b/results/daily/2026-08-23.json @@ -0,0 +1 @@ +{"date": "2026-08-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [130.04, 123.26, 134.17, 125.87, 112.76, 108.76, 110.33, 101.83, 98.25, 103.73, 106.71, 113.05, 103.81, 103.73, 82.74, 38.2, 18.85, 8.82, 6.01, 3.58, -0.36, -6.2, -6.54, -6.12, -4.17, -2.71, -1.7, -2.92, -1.01, 3.65, -2.65, -1.37, 19.54, 65.67, 78.39, 85.77, 92.5, 90.32, 84.99, 85.67, 85.56, 80.86, 71.67, 64.89, 61.65, 47.77, 44.93, 34.14], "forecast_price": {"naive": [81.24, 83.72, 82.48, 70.65, 69.53, 69.53, 71.14, 69.9, 73.58, 70.57, 78.92, 80.8, 42.25, 51.25, 45.42, 45.06, 62.31, 63.36, 40.79, 30.68, 41.12, 52.02, 52.41, 75.21, 88.01, 87.56, 93.35, 95.71, 103.56, 99.47, 96.67, 49.05, 64.22, 90.64, 110.06, 120.59, 169.9, 178.46, 161.21, 170.44, 162.7, 183.81, 223.0, 220.43, 191.26, 188.75, 211.85, 184.4], "lightgbm": [85.71, 90.62, 89.39, 74.02, 70.24, 66.31, 65.35, 64.2, 65.98, 63.72, 66.62, 66.98, 56.63, 55.6, 51.22, 52.16, 50.67, 45.77, 30.0, 18.25, 20.05, 21.1, 20.43, 24.14, 32.16, 30.03, 37.31, 39.43, 34.53, 41.54, 52.14, 35.71, 45.39, 80.96, 101.12, 120.5, 135.52, 147.16, 134.56, 133.89, 122.17, 128.94, 116.7, 110.44, 110.15, 109.25, 107.08, 105.34], "lstm": [184.24, 192.62, 184.33, 180.45, 169.57, 164.3, 155.97, 154.02, 143.15, 139.02, 132.44, 126.85, 110.39, 131.06, 120.49, 113.56, 107.16, 86.0, 81.53, 66.64, 64.64, 49.33, 54.86, 45.13, 43.32, 42.03, 34.13, 33.2, 45.65, 49.73, 57.39, 77.23, 101.16, 134.12, 176.48, 200.29, 225.68, 193.37, 185.26, 164.9, 159.87, 142.82, 125.36, 113.82, 114.7, 89.44, 90.61, 113.42]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -122.82, -122.82, -122.82, 4.37, 4.37, 4.37, 4.37, 4.37, 4.37, 4.37, 4.37, 4.37, 4.41, 12.16, 20.33, 27.99, 33.2, 34.89, 33.0, 36.65, 35.67, 40.23, 43.54, 45.25, 45.25, 45.25, 45.25, 152.47, 268.09, 380.98, 380.98, 488.07, 488.07, 488.07, 488.07, 488.07, 488.07, 488.07, 488.07, 488.07], "profit_aud": 488.07}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 2.5, 1.67, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.88, 3.0, 4.12, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -140.95, -276.89, -276.89, -305.41, -305.41, -305.41, -172.02, -30.7, -160.46, -247.08, -350.51, -398.26, -374.7, -363.67, -371.19, -375.67, -375.22, -375.22, -375.22, -375.22, -375.22, -375.22, -375.22, -375.22, -376.49, -372.84, -372.84, -371.12, -395.55, -395.55, -395.55, -395.55, -395.55, -395.55, -395.55, -395.55, -395.55, -395.55, -305.97, -224.85, -147.79, -147.79, -91.63, -91.63], "profit_aud": -91.63}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.48, -4.03, 3.72, 11.89, 15.29, 15.29, 15.29, 15.29, 12.01, 13.28, 13.28, 9.97, 11.68, 8.95, 8.95, 8.95, 8.95, 124.57, 237.47, 343.7, 450.79, 450.79, 450.79, 450.79, 450.79, 450.79, 450.79, 450.79, 450.79], "profit_aud": 450.79}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -129.76, -13.06, -13.06, -13.06, -13.06, -13.06, -13.06, -13.06, -13.06, -5.32, -12.67, -9.27, -4.07, -0.68, 1.44, 5.09, 5.09, 5.09, 5.09, 5.09, 5.09, 5.09, 5.09, 112.31, 227.93, 340.82, 447.06, 447.06, 447.06, 447.06, 447.06, 447.06, 447.06, 387.35, 381.06, 423.73], "profit_aud": 423.73}}} \ No newline at end of file diff --git a/results/daily/2026-08-24.json b/results/daily/2026-08-24.json new file mode 100644 index 0000000..9efa1d3 --- /dev/null +++ b/results/daily/2026-08-24.json @@ -0,0 +1 @@ +{"date": "2026-08-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [37.53, 39.18, 30.25, 31.03, 27.11, 24.7, 31.92, 39.83, 36.67, 46.7, 36.36, 30.68, 45.2, 63.4, 62.32, 45.78, 105.92, 98.3, 39.71, 39.07, 22.13, 25.22, 31.55, 36.82, 46.12, 49.63, 47.85, 39.93, 41.62, 54.38, 107.83, 96.07, 98.5, 109.76, 109.24, 124.4, 119.26, 117.31, 113.82, 97.15, 92.32, 106.9, 109.9, 43.72, 62.57, 53.85, 55.69, 56.54], "forecast_price": {"naive": [130.04, 123.26, 134.17, 125.87, 112.76, 108.76, 110.33, 101.83, 98.25, 103.73, 106.71, 113.05, 103.81, 103.73, 82.74, 38.2, 18.85, 8.82, 6.01, 3.58, -0.36, -6.2, -6.54, -6.12, -4.17, -2.71, -1.7, -2.92, -1.01, 3.65, -2.65, -1.37, 19.54, 65.67, 78.39, 85.77, 92.5, 90.32, 84.99, 85.67, 85.56, 80.86, 71.67, 64.89, 61.65, 47.77, 44.93, 34.14], "lightgbm": [66.84, 66.84, 57.45, 56.48, 52.91, 54.79, 52.2, 57.53, 57.53, 58.93, 74.45, 73.79, 74.24, 75.22, 74.07, 58.13, 61.14, 50.52, 44.54, 36.52, 35.36, 30.17, 26.81, 29.42, 30.01, 30.01, 33.45, 29.89, 29.89, 30.32, 31.72, 31.51, 48.11, 73.99, 85.86, 103.26, 104.81, 103.92, 99.47, 99.08, 101.78, 95.64, 83.82, 75.91, 70.08, 62.45, 60.41, 58.32], "lstm": [24.25, 22.04, 17.98, 12.71, 11.6, 9.24, 7.91, 8.45, 12.76, 13.78, 21.18, 25.46, 36.79, 55.88, 57.09, 58.68, 49.15, 29.8, 26.73, 14.94, 11.59, 1.01, 1.22, -3.86, -4.56, -6.83, -13.74, -10.59, -8.11, -3.49, 9.31, 18.68, 24.41, 53.67, 70.2, 97.2, 109.38, 101.77, 81.03, 79.89, 80.9, 77.51, 73.13, 63.14, 59.02, 47.77, 48.75, 56.11]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -37.82, -76.61, -110.49, -141.36, -159.08, -159.08, -159.08, -100.71, -105.8, -144.14, -144.14, -64.9, 13.0, 13.0, 145.4, 268.27, 268.27, 246.59, 218.92, 187.4, 147.96, 101.93, 101.93, 163.96, 211.81, 161.91, 109.88, 109.88, 231.19, 111.1, 111.1, 111.1, 111.1, 266.6, 415.67, 562.3, 704.58, 690.98, 575.58, 575.58, 712.96, 658.32, 728.71, 728.71, 728.71, 728.71], "profit_aud": 728.71}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -45.83, -45.83, -45.83, -11.32, -11.32, -11.32, -11.32, -11.32, -11.32, -11.32, -11.32, -11.32, -14.09, -45.61, -85.06, -131.08, -188.74, -219.76, -166.64, -216.55, -176.17, -108.21, -242.99, -363.08, -363.08, -363.08, -363.08, -207.58, -58.51, 88.12, 88.12, 209.56, 209.56, 209.56, 209.56, 209.56, 209.56, 209.56, 209.56, 209.56], "profit_aud": 209.56}, "lightgbm": {"charge_mw": [0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -16.79, -55.58, -89.46, -120.34, -160.24, -160.24, -160.24, -160.24, -114.79, -114.79, -58.29, 20.95, 98.86, 98.86, 98.86, 98.86, 98.86, 98.86, 98.86, 98.86, 59.41, 13.38, -44.27, -78.76, -18.95, -68.85, -120.88, -120.88, -120.88, -120.88, -120.88, -120.88, -120.88, 34.62, 183.69, 330.32, 330.32, 330.32, 445.72, 445.72, 445.72, 445.72, 445.72, 445.72, 445.72, 445.72], "profit_aud": 445.72}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -17.22, -51.11, -81.98, -121.89, -171.67, -171.67, -171.67, -171.67, -171.67, -171.67, -92.43, -14.52, 42.7, 175.09, 175.09, 175.09, 175.09, 175.09, 143.57, 179.07, 174.46, 145.64, 83.6, 23.79, -26.12, -78.15, -84.94, -84.94, -84.94, -84.94, -84.94, -84.94, 70.56, 219.63, 366.26, 508.54, 508.54, 508.54, 508.54, 508.54, 508.54, 508.54, 441.23, 433.44, 504.12], "profit_aud": 504.12}}} \ No newline at end of file diff --git a/results/daily/2026-08-25.json b/results/daily/2026-08-25.json new file mode 100644 index 0000000..f482947 --- /dev/null +++ b/results/daily/2026-08-25.json @@ -0,0 +1 @@ +{"date": "2026-08-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [82.68, 97.79, 84.91, 66.74, 64.21, 56.31, 50.31, 48.34, 18.35, 2.17, -6.49, -7.74, -4.72, 4.29, 5.02, 37.31, 85.6, 83.92, 85.97, 84.08, 75.83, 72.55, 78.4, 76.43, 78.27, 76.43, 86.01, 98.18, 85.4, 86.55, 94.37, 96.06, 102.77, 96.16, 118.07, 120.53, 92.76, 99.26, 102.03, 98.79, 99.08, 101.86, 94.5, 82.99, 77.51, 84.99, 88.96, 92.6], "forecast_price": {"naive": [37.53, 39.18, 30.25, 31.03, 27.11, 24.7, 31.92, 39.83, 36.67, 46.7, 36.36, 30.68, 45.2, 63.4, 62.32, 45.78, 105.92, 98.3, 39.71, 39.07, 22.13, 25.22, 31.55, 36.82, 46.12, 49.63, 47.85, 39.93, 41.62, 54.38, 107.83, 96.07, 98.5, 109.76, 109.24, 124.4, 119.26, 117.31, 113.82, 97.15, 92.32, 106.9, 109.9, 43.72, 62.57, 53.85, 55.69, 56.54], "lightgbm": [52.27, 51.96, 48.14, 41.7, 41.59, 40.87, 39.94, 42.26, 41.15, 46.34, 49.1, 50.38, 54.81, 66.2, 65.86, 52.59, 74.83, 68.69, 39.4, 37.79, 29.73, 30.63, 33.18, 33.61, 35.84, 40.89, 37.36, 33.68, 34.53, 46.56, 61.37, 66.96, 69.25, 77.58, 94.04, 114.96, 112.88, 112.88, 108.97, 102.3, 96.18, 99.03, 94.6, 50.2, 61.12, 57.73, 57.73, 57.48], "lstm": [54.61, 55.78, 50.45, 44.02, 39.06, 34.78, 33.04, 32.98, 36.68, 40.02, 42.79, 49.58, 64.32, 94.78, 105.97, 103.35, 94.92, 72.06, 62.21, 47.02, 45.2, 33.13, 30.52, 29.41, 25.9, 27.05, 21.37, 26.1, 27.12, 35.76, 43.24, 58.39, 70.06, 101.52, 127.89, 157.34, 154.52, 141.81, 119.96, 114.84, 105.56, 96.46, 88.03, 79.08, 76.44, 57.92, 60.97, 67.43]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 3.62, 4.75, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-103.35, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 6.66, 3.96, 12.06, 21.74, 27.64, 25.26, 25.26, 25.26, 132.26, 132.26, 239.73, 239.73, 144.94, 54.25, 54.25, 32.85, 32.85, 32.85, 32.85, 155.57, 48.83, 36.71, 36.71, 36.71, 165.17, 165.17, 312.76, 463.42, 463.42, 463.42, 590.96, 590.96, 590.96, 590.96, 590.96, 579.34, 482.45, 482.45, 482.45, 598.21], "profit_aud": 598.21}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.12, 1.25, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -106.14, -189.55, -269.82, -340.21, -368.13, -368.13, -368.13, -365.43, -364.52, -354.84, -354.84, -349.48, -343.2, -343.2, -236.2, -131.29, -131.29, -177.96, -272.74, -363.44, -461.44, -556.98, -556.98, -461.44, -375.43, -498.15, -604.9, -604.9, -498.73, -618.8, -618.8, -618.8, -618.8, -468.14, -352.19, -228.12, -100.59, -114.42, -238.26, -238.26, -120.14, -223.88, -136.68, -136.68, -136.68, -136.68], "profit_aud": -136.68}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 1.39, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -37.04, -117.3, -187.69, -250.59, -250.59, -273.52, -273.52, -273.52, -273.52, -273.52, -268.16, -261.88, -261.88, -154.88, -49.97, -49.97, -49.97, -144.76, -235.45, -333.45, -428.99, -428.99, -333.45, -333.45, -456.17, -515.52, -515.52, -515.52, -515.52, -515.52, -515.52, -515.52, -364.86, -248.91, -124.84, 2.69, 2.69, 2.69, 2.69, 2.69, -101.04, -13.84, -13.84, -13.84, -13.84], "profit_aud": -13.84}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -35.64, -106.03, -168.92, -229.35, -252.28, -252.28, -252.28, -252.28, -252.28, -246.92, -240.65, -194.01, -87.0, -87.0, -87.0, -87.0, -87.0, -87.0, -87.0, -87.0, -184.84, -280.38, -387.89, -510.62, -558.01, -558.01, -558.01, -558.01, -558.01, -558.01, -410.43, -259.76, -143.81, -19.75, -19.75, -19.75, -19.75, -19.75, -19.75, -19.75, -19.75, -125.99, -125.99, -21.81], "profit_aud": -21.81}}} \ No newline at end of file diff --git a/results/daily/2026-08-26.json b/results/daily/2026-08-26.json new file mode 100644 index 0000000..9837411 --- /dev/null +++ b/results/daily/2026-08-26.json @@ -0,0 +1 @@ +{"date": "2026-08-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [103.73, 117.76, 105.08, 126.15, 135.33, 137.04, 150.52, 174.98, 112.1, 104.29, 104.94, 106.6, 119.48, 123.55, 131.16, 126.31, 117.4, 110.47, 111.8, 93.18, 67.82, 113.1, 140.1, 156.95, 168.01, 220.4, 210.67, 226.24, 221.2, 227.35, 233.55, 192.78, 128.78, 109.22, 133.3, 135.59, 161.96, 156.3, 157.82, 141.25, 141.93, 136.45, 133.66, 139.05, 141.18, 136.43, 134.33, 126.08], "forecast_price": {"naive": [82.68, 97.79, 84.91, 66.74, 64.21, 56.31, 50.31, 48.34, 18.35, 2.17, -6.49, -7.74, -4.72, 4.29, 5.02, 37.31, 85.6, 83.92, 85.97, 84.08, 75.83, 72.55, 78.4, 76.43, 78.27, 76.43, 86.01, 98.18, 85.4, 86.55, 94.37, 96.06, 102.77, 96.16, 118.07, 120.53, 92.76, 99.26, 102.03, 98.79, 99.08, 101.86, 94.5, 82.99, 77.51, 84.99, 88.96, 92.6], "lightgbm": [75.18, 79.1, 71.25, 58.19, 56.11, 51.63, 50.16, 46.93, 50.68, 50.41, 52.39, 54.92, 53.58, 50.01, 42.37, 55.32, 77.69, 62.8, 49.92, 35.49, 33.86, 32.81, 29.89, 24.85, 24.55, 25.59, 29.03, 29.09, 27.08, 31.82, 38.34, 48.0, 56.4, 68.31, 102.78, 118.17, 101.55, 107.63, 107.63, 107.69, 106.7, 101.3, 95.73, 83.29, 76.53, 82.55, 85.17, 84.2], "lstm": [80.74, 80.98, 79.17, 73.38, 66.72, 64.38, 61.95, 58.56, 59.9, 60.93, 68.13, 70.06, 76.92, 93.8, 111.59, 114.63, 114.85, 101.41, 89.13, 74.81, 73.7, 66.23, 63.87, 62.56, 55.27, 54.69, 51.31, 51.45, 49.68, 58.12, 60.21, 69.07, 87.64, 99.5, 116.27, 145.76, 134.11, 133.16, 114.43, 111.21, 109.72, 102.52, 92.52, 82.31, 82.67, 61.76, 64.92, 74.56]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.67, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.12, 0.88, 0.88, 2.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-129.66, -276.86, -408.21, -408.21, -408.21, -288.29, -100.14, 118.59, 118.59, -11.78, -142.95, -276.2, -276.2, -276.2, -112.25, 45.63, 45.63, -92.45, -185.8, -302.27, -387.05, -387.05, -387.05, -387.05, -387.05, -387.05, -387.05, -104.26, 172.24, 456.43, 748.37, 748.37, 587.39, 450.86, 284.23, 227.96, 430.41, 625.78, 823.05, 823.05, 823.05, 823.05, 823.05, 823.05, 823.05, 823.05, 823.05, 823.05], "profit_aud": 823.05}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 3.62, 4.75, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-129.66, 2.82, 2.82, 2.82, 2.82, 2.82, 2.82, 2.82, 2.82, -127.54, -258.72, -391.96, -541.31, -609.87, -609.87, -609.87, -463.12, -463.12, -323.37, -323.37, -408.15, -549.53, -549.53, -593.47, -593.47, -593.47, -593.47, -310.68, -587.18, -619.01, -619.01, -619.01, -458.04, -458.04, -291.4, -121.92, -121.92, -121.92, 75.35, 75.35, 75.35, 75.35, 75.35, 55.89, -120.59, -120.59, -120.59, 37.0], "profit_aud": 37.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -218.73, -218.73, -218.73, -218.73, -218.73, -218.73, -253.32, -417.27, -417.27, -270.51, -132.43, -132.43, -132.43, -132.43, -132.43, -132.43, -328.62, -538.63, -814.12, -931.05, -931.05, -1207.55, -1207.55, -1207.55, -1207.55, -1207.55, -1207.55, -1207.55, -1038.06, -1038.06, -842.69, -645.42, -468.86, -468.86, -468.86, -468.86, -468.86, -645.34, -645.34, -494.22, -494.22], "profit_aud": -494.22}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -76.06, -264.21, -482.94, -623.07, -753.43, -753.43, -753.43, -753.43, -753.43, -589.48, -431.6, -284.85, -146.76, -146.76, -146.76, -146.76, -146.76, -146.76, -146.76, -240.01, -515.5, -778.84, -1061.63, -1338.14, -1338.14, -1338.14, -1338.14, -1338.14, -1338.14, -1171.51, -1002.02, -799.57, -604.2, -604.2, -604.2, -604.2, -604.2, -604.2, -604.2, -604.2, -774.74, -793.55, -635.95], "profit_aud": -635.95}}} \ No newline at end of file diff --git a/results/daily/2026-08-27.json b/results/daily/2026-08-27.json new file mode 100644 index 0000000..3f11630 --- /dev/null +++ b/results/daily/2026-08-27.json @@ -0,0 +1 @@ +{"date": "2026-08-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [126.36, 133.94, 143.49, 139.33, 144.76, 143.24, 152.07, 141.68, 145.62, 153.06, 180.64, 209.24, 220.29, 165.37, 188.42, 124.85, 80.44, 53.58, 62.07, 69.63, 41.64, 31.45, 24.3, 27.46, 25.06, 23.82, 24.22, 20.33, 15.35, 11.43, 3.53, 20.55, 51.75, 118.38, 143.21, 132.79, 139.27, 134.57, 127.57, 124.75, 119.89, 119.06, 124.52, 150.08, 186.88, 154.82, 147.95, 144.47], "forecast_price": {"naive": [103.73, 117.76, 105.08, 126.15, 135.33, 137.04, 150.52, 174.98, 112.1, 104.29, 104.94, 106.6, 119.48, 123.55, 131.16, 126.31, 117.4, 110.47, 111.8, 93.18, 67.82, 113.1, 140.1, 156.95, 168.01, 220.4, 210.67, 226.24, 221.2, 227.35, 233.55, 192.78, 128.78, 109.22, 133.3, 135.59, 161.96, 156.3, 157.82, 141.25, 141.93, 136.45, 133.66, 139.05, 141.18, 136.43, 134.33, 126.08], "lightgbm": [102.8, 109.74, 100.44, 94.66, 105.0, 96.13, 96.81, 97.8, 89.14, 89.48, 91.52, 95.45, 106.77, 107.5, 112.28, 109.33, 112.89, 103.78, 97.09, 79.49, 61.91, 70.26, 62.33, 57.07, 56.85, 71.68, 71.65, 72.34, 74.83, 79.58, 88.49, 92.73, 94.39, 96.83, 119.0, 134.4, 136.69, 136.23, 136.23, 135.38, 134.86, 127.69, 123.54, 117.75, 117.75, 112.52, 114.21, 105.31], "lstm": [130.37, 123.36, 125.18, 117.73, 109.24, 109.66, 110.73, 103.49, 115.37, 109.97, 116.16, 119.64, 123.63, 152.76, 155.28, 160.97, 160.81, 134.29, 120.47, 110.68, 108.23, 98.31, 102.13, 95.02, 94.02, 85.26, 84.25, 90.52, 80.76, 87.63, 91.65, 99.34, 114.13, 123.87, 136.28, 153.53, 146.53, 155.9, 135.5, 133.89, 129.5, 117.76, 104.72, 93.78, 90.42, 78.38, 82.59, 89.38]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 3.62, 4.75, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-157.95, -325.37, -325.37, -499.53, -499.53, -579.03, -579.03, -756.14, -756.14, -756.14, -530.33, -268.78, 6.59, 6.59, 242.12, 242.12, 242.12, 175.15, 166.46, 253.5, 253.5, 253.5, 223.12, 254.02, 254.02, 254.02, 254.02, 228.6, 209.41, 195.12, 190.71, 179.3, 179.3, 179.3, 358.32, 358.32, 532.41, 532.41, 532.41, 532.41, 382.54, 233.73, 198.86, 386.46, 620.06, 813.59, 998.53, 998.53], "profit_aud": 998.53}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.67, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.12, 0.88, 0.88, 2.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-157.95, -325.37, -504.73, -504.73, -504.73, -379.4, -189.31, -12.21, -12.21, -203.53, -429.33, -690.89, -690.89, -690.89, -455.36, -299.3, -299.3, -366.27, -418.09, -505.13, -557.17, -557.17, -557.17, -557.17, -557.17, -557.17, -557.17, -531.75, -512.57, -498.28, -493.87, -493.87, -558.56, -706.53, -885.55, -940.65, -766.56, -598.35, -438.89, -438.89, -438.89, -438.89, -438.89, -438.89, -438.89, -438.89, -438.89, -438.89], "profit_aud": -438.89}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -174.16, -174.16, -174.16, -174.16, -174.16, -356.19, -547.51, -773.32, -889.45, -889.45, -682.73, -447.2, -291.14, -190.6, -190.6, -190.6, -190.6, -242.64, -260.1, -290.47, -324.79, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -356.12, -182.03, -13.82, 145.64, 301.58, 301.58, 301.58, 301.58, 301.58, 301.58, 301.58, 301.58, 301.58], "profit_aud": 301.58}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -180.95, -360.0, -444.39, -621.5, -621.5, -812.82, -812.82, -812.82, -812.82, -606.1, -370.57, -214.52, -113.97, -113.97, -113.97, -113.97, -113.97, -113.97, -113.97, -113.97, -113.97, -143.75, -174.02, -185.3, -204.49, -218.77, -218.77, -218.77, -218.77, -218.77, -39.76, 126.22, 300.31, 468.53, 468.53, 468.53, 468.53, 468.53, 468.53, 468.53, 468.53, 275.0, 275.0, 437.53], "profit_aud": 437.53}}} \ No newline at end of file diff --git a/results/daily/2026-08-28.json b/results/daily/2026-08-28.json new file mode 100644 index 0000000..5894a70 --- /dev/null +++ b/results/daily/2026-08-28.json @@ -0,0 +1 @@ +{"date": "2026-08-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [141.77, 132.33, 132.57, 128.02, 136.47, 119.37, 110.57, 153.17, 148.6, 156.42, 138.87, 140.79, 119.38, 117.39, 111.1, 134.1, 100.35, 50.1, 32.01, 23.63, 21.41, 20.68, 27.32, 29.32, 37.93, 37.5, 37.17, 44.4, 48.65, 52.73, 22.51, 48.1, 100.85, 128.32, 124.26, 124.49, 125.66, 120.81, 117.97, 108.38, 102.28, 102.03, 101.04, 101.52, 102.95, 101.03, 101.04, 101.02], "forecast_price": {"naive": [126.36, 133.94, 143.49, 139.33, 144.76, 143.24, 152.07, 141.68, 145.62, 153.06, 180.64, 209.24, 220.29, 165.37, 188.42, 124.85, 80.44, 53.58, 62.07, 69.63, 41.64, 31.45, 24.3, 27.46, 25.06, 23.82, 24.22, 20.33, 15.35, 11.43, 3.53, 20.55, 51.75, 118.38, 143.21, 132.79, 139.27, 134.57, 127.57, 124.75, 119.89, 119.06, 124.52, 150.08, 186.88, 154.82, 147.95, 144.47], "lightgbm": [86.76, 87.8, 83.9, 77.76, 75.44, 78.29, 78.29, 78.48, 77.18, 78.75, 86.96, 88.4, 95.9, 93.11, 97.5, 91.34, 80.4, 71.19, 66.6, 54.81, 37.03, 24.24, 18.53, 16.99, 18.94, 22.27, 21.17, 19.33, 19.75, 24.7, 26.14, 34.9, 48.05, 80.55, 118.65, 114.91, 124.13, 129.45, 112.06, 113.35, 110.38, 104.89, 101.62, 105.4, 112.76, 104.64, 104.76, 104.08], "lstm": [144.63, 131.96, 129.32, 114.9, 104.76, 101.82, 97.3, 98.69, 98.5, 93.79, 105.14, 95.18, 105.03, 107.67, 104.54, 98.39, 85.33, 77.06, 67.85, 57.07, 44.19, 41.48, 37.72, 27.81, 29.83, 21.96, 18.2, 18.39, 20.09, 20.69, 29.67, 38.95, 49.79, 73.95, 85.53, 107.26, 106.37, 126.09, 109.31, 112.35, 118.26, 112.42, 103.48, 93.5, 95.66, 89.69, 83.98, 94.01]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.38, 0.38, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -54.92, -54.92, -214.94, -214.94, -364.15, -502.37, -310.9, -125.15, 70.37, 70.37, 70.37, 70.37, 53.94, -84.94, 82.68, 82.68, 82.68, 82.68, 53.14, 26.38, 0.54, -33.62, -49.89, -49.89, -49.89, -49.89, -49.89, -49.89, 9.43, -18.7, -18.7, -18.7, 141.7, 297.02, 452.63, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71, 609.71], "profit_aud": 609.71}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0], "soc_mwh": [1.12, 2.25, 2.25, 3.38, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 2.5, 2.5, 2.5, 3.62, 4.75, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-177.21, -342.62, -342.62, -502.64, -502.64, -568.89, -568.89, -760.35, -760.35, -760.35, -586.77, -410.78, -261.55, -261.55, -122.67, -122.67, -122.67, -185.31, -189.79, -160.25, -160.25, -160.25, -194.4, -161.42, -161.42, -161.42, -161.42, -216.92, -277.73, -343.64, -371.78, -398.48, -398.48, -398.48, -243.15, -243.15, -86.08, -86.08, -86.08, -86.08, -213.93, -341.46, -369.75, -242.85, -114.16, 12.13, 138.42, 138.42], "profit_aud": 138.42}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -160.02, -330.61, -479.82, -541.19, -541.19, -726.94, -726.94, -726.94, -726.94, -577.72, -430.98, -292.1, -124.48, -124.48, -124.48, -124.48, -124.48, -124.48, -124.48, -158.63, -195.28, -242.69, -219.25, -219.25, -274.75, -335.56, -335.56, -335.56, -335.56, -335.56, -335.56, -180.23, -24.62, 132.45, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47, 283.47], "profit_aud": 283.47}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -195.52, -195.52, -215.23, -215.23, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -68.5, -89.31, -135.77, -191.26, -252.07, -317.99, -317.99, -317.99, -317.99, -317.99, -317.99, -317.99, -317.99, -166.97, -166.97, -31.5, 96.35, 223.88, 223.88, 223.88, 223.88, 223.88, 97.59, 211.23], "profit_aud": 211.23}}} \ No newline at end of file diff --git a/results/daily/2026-08-29.json b/results/daily/2026-08-29.json new file mode 100644 index 0000000..86e5c27 --- /dev/null +++ b/results/daily/2026-08-29.json @@ -0,0 +1 @@ +{"date": "2026-08-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [101.55, 101.95, 111.59, 107.83, 109.54, 102.73, 106.58, 98.27, 96.77, 105.32, 99.72, 111.34, 108.02, 103.24, 97.39, 53.51, 64.6, 9.15, 5.5, 2.14, 6.06, 8.43, 10.76, -0.32, 0.65, -3.34, -6.43, -9.04, -12.01, -13.94, -12.97, -6.13, 3.22, 50.46, 87.99, 98.1, 97.0, 99.17, 98.08, 93.2, 87.14, 90.8, 101.93, 101.51, 98.23, 92.01, 89.41, 84.99], "forecast_price": {"naive": [141.77, 132.33, 132.57, 128.02, 136.47, 119.37, 110.57, 153.17, 148.6, 156.42, 138.87, 140.79, 119.38, 117.39, 111.1, 134.1, 100.35, 50.1, 32.01, 23.63, 21.41, 20.68, 27.32, 29.32, 37.93, 37.5, 37.17, 44.4, 48.65, 52.73, 22.51, 48.1, 100.85, 128.32, 124.26, 124.49, 125.66, 120.81, 117.97, 108.38, 102.28, 102.03, 101.04, 101.52, 102.95, 101.03, 101.04, 101.02], "lightgbm": [98.73, 96.68, 95.17, 85.33, 82.55, 75.77, 72.37, 78.73, 80.15, 79.09, 81.24, 82.1, 78.98, 77.01, 73.04, 80.24, 69.74, 45.04, 32.78, 25.58, 25.11, 23.7, 22.97, 27.77, 31.34, 31.34, 30.75, 32.08, 35.89, 41.84, 33.12, 42.03, 67.45, 91.15, 109.78, 117.17, 118.14, 116.51, 115.52, 105.42, 103.16, 99.71, 96.66, 91.0, 89.79, 89.03, 91.0, 89.03], "lstm": [96.63, 81.09, 81.98, 76.4, 69.57, 66.73, 57.23, 58.32, 55.41, 53.78, 56.86, 50.9, 44.61, 45.24, 41.65, 38.6, 31.53, 25.58, 20.62, 14.11, 6.2, -0.62, 0.91, 0.43, -0.61, -1.7, -2.62, 0.66, 2.02, 8.22, 18.52, 29.92, 40.5, 61.69, 74.6, 93.97, 100.89, 99.02, 86.27, 83.12, 81.59, 80.65, 81.18, 72.94, 67.79, 61.38, 64.03, 72.52]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 2.62, 2.62, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -13.76, -134.72, -134.72, -134.72, 4.45, 4.45, 4.45, 4.45, -62.44, 10.23, 10.23, 3.35, 0.68, -1.01, 9.52, 22.98, 23.38, 24.1, 24.52, 28.54, 39.84, 54.86, 72.28, 88.49, 89.25, 89.25, 89.25, 89.25, 199.61, 199.61, 323.58, 323.58, 323.58, 214.65, 214.65, 342.06, 468.94, 591.73, 591.73, 591.73, 591.73], "profit_aud": 591.73}, "naive": {"charge_mw": [0.0, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.38, 0.38, 1.5, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -42.31, -42.31, -177.1, -177.1, -305.51, -438.73, -315.9, -194.93, -63.28, -63.28, -63.28, -63.28, -77.74, -199.47, -132.59, -132.59, -132.59, -132.59, -135.26, -142.83, -153.37, -166.82, -166.64, -166.64, -166.64, -166.64, -166.64, -166.64, -182.32, -166.11, -166.11, -166.11, -103.04, 6.94, 129.56, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81, 250.81], "profit_aud": 250.81}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -133.22, -133.22, -133.22, -133.22, -133.22, -7.97, -7.97, -7.97, -7.97, -7.97, -7.97, -7.97, -7.97, -10.64, -18.21, -28.75, -42.2, -42.02, -42.02, -42.02, -42.02, -42.02, -42.02, -57.7, -41.49, -41.49, -41.49, -41.49, -41.49, 81.13, 202.38, 326.34, 448.94, 448.94, 448.94, 448.94, 448.94, 448.94, 448.94, 448.94, 448.94, 448.94], "profit_aud": 448.94}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -10.54, 1.57, 1.97, 1.16, 5.33, 13.37, 18.39, 18.39, 18.39, 18.39, 18.39, 18.39, 18.39, 18.39, 141.01, 262.25, 386.22, 508.82, 508.82, 508.82, 508.82, 508.82, 508.82, 508.82, 393.81, 381.29, 487.54], "profit_aud": 487.54}}} \ No newline at end of file diff --git a/results/daily/2026-08-30.json b/results/daily/2026-08-30.json new file mode 100644 index 0000000..4b9dae7 --- /dev/null +++ b/results/daily/2026-08-30.json @@ -0,0 +1 @@ +{"date": "2026-08-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [84.32, 84.19, 79.25, 85.84, 86.54, 80.56, 73.45, 80.11, 83.7, 83.37, 84.94, 77.77, 82.96, 73.73, 48.77, 24.37, 19.77, 10.54, 4.29, 4.45, 11.23, 1.23, 2.37, -2.88, -5.64, -7.57, -7.78, -10.96, -11.12, -11.07, -6.98, -3.46, 28.0, 54.22, 112.9, 107.55, 108.61, 110.92, 106.57, 108.04, 106.32, 107.1, 106.38, 103.48, 97.35, 93.46, 89.98, 93.81], "forecast_price": {"naive": [101.55, 101.95, 111.59, 107.83, 109.54, 102.73, 106.58, 98.27, 96.77, 105.32, 99.72, 111.34, 108.02, 103.24, 97.39, 53.51, 64.6, 9.15, 5.5, 2.14, 6.06, 8.43, 10.76, -0.32, 0.65, -3.34, -6.43, -9.04, -12.01, -13.94, -12.97, -6.13, 3.22, 50.46, 87.99, 98.1, 97.0, 99.17, 98.08, 93.2, 87.14, 90.8, 101.93, 101.51, 98.23, 92.01, 89.41, 84.99], "lightgbm": [68.57, 68.57, 66.52, 60.95, 57.56, 58.83, 58.77, 58.43, 58.23, 58.36, 66.77, 64.71, 66.96, 66.3, 64.04, 42.06, 41.54, 14.91, 10.52, 5.5, 3.75, 1.35, 0.97, -2.33, -1.51, -1.51, -2.08, -9.24, -9.59, -3.34, -3.68, 9.31, 18.02, 52.19, 81.54, 103.84, 103.17, 103.84, 103.84, 100.82, 93.75, 91.16, 91.05, 84.8, 84.8, 80.26, 79.65, 77.92], "lstm": [96.31, 81.27, 83.35, 73.79, 74.16, 65.11, 58.55, 58.69, 54.92, 53.09, 55.52, 44.72, 37.51, 34.36, 26.98, 17.73, 8.85, 1.08, 1.83, -10.9, -13.57, -23.3, -20.84, -24.19, -24.55, -30.3, -37.38, -30.2, -25.13, -20.44, -9.95, 7.56, 16.05, 41.81, 56.64, 77.09, 96.47, 102.43, 91.54, 89.55, 88.77, 83.63, 79.69, 75.22, 66.79, 56.93, 60.55, 70.83]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -91.81, -91.81, -91.81, -91.81, 3.74, 3.74, 3.74, 3.74, 3.74, 3.74, 3.74, 3.74, -1.62, -2.25, 11.79, 10.26, 12.92, 13.28, 13.99, 18.72, 28.45, 42.15, 56.05, 69.89, 70.76, 71.2, 71.2, 71.2, 212.32, 212.32, 348.08, 486.73, 486.73, 621.77, 621.77, 621.77, 621.77, 621.77, 621.77, 621.77, 621.77, 621.77], "profit_aud": 621.77}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 2.62, 2.62, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -11.22, -115.83, -115.83, -115.83, -18.62, -18.62, -18.62, -18.62, -49.08, -26.84, -26.84, -32.21, -37.77, -40.91, -39.38, -36.42, -32.81, -39.17, -38.22, -33.35, -19.65, -5.75, 8.09, 16.81, 17.24, 17.24, 17.24, 17.24, 138.24, 138.24, 276.89, 276.89, 276.89, 143.99, 143.99, 276.96, 406.32, 528.0, 528.0, 528.0, 528.0], "profit_aud": 528.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -108.18, -108.18, -108.18, -141.42, -246.04, -350.26, -244.09, -244.09, -140.38, -48.22, -48.22, -48.22, -48.22, -48.22, -48.22, -48.22, -48.22, -48.22, -48.22, -44.62, -44.62, -51.96, -47.1, -33.39, -19.49, -5.65, 3.07, 3.07, 3.07, 3.07, 3.07, 137.51, 273.27, 411.92, 545.13, 545.13, 545.13, 545.13, 545.13, 545.13, 545.13, 545.13, 545.13, 545.13], "profit_aud": 545.13}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -13.18, -8.35, -8.91, -10.31, -11.84, -9.22, -8.86, -5.33, 4.14, 13.87, 27.57, 41.47, 42.85, 43.72, 43.72, 43.72, 43.72, 43.72, 43.72, 179.49, 318.14, 451.35, 586.39, 586.39, 586.39, 586.39, 586.39, 586.39, 469.57, 456.97, 574.24], "profit_aud": 574.24}}} \ No newline at end of file diff --git a/results/daily/2026-08-31.json b/results/daily/2026-08-31.json new file mode 100644 index 0000000..b19f91e --- /dev/null +++ b/results/daily/2026-08-31.json @@ -0,0 +1 @@ +{"date": "2026-08-31", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [97.57, 100.27, 95.88, 81.9, 69.24, 70.08, 72.57, 73.0, 73.86, 80.52, 70.45, 57.8, 75.37, 75.49, 68.4, 49.93, 45.62, 46.58, 22.54, 14.16, 11.37, 5.28, 4.45, 8.06, 3.57, 0.13, -0.57, 1.1, 3.59, 8.4, 11.68, 13.67, 47.67, 84.8, 106.13, 117.0, 118.57, 114.93, 111.98, 108.5, 106.52, 102.42, 99.36, 89.08, 81.88, 24.15, 52.7, 39.33], "forecast_price": {"naive": [84.32, 84.19, 79.25, 85.84, 86.54, 80.56, 73.45, 80.11, 83.7, 83.37, 84.94, 77.77, 82.96, 73.73, 48.77, 24.37, 19.77, 10.54, 4.29, 4.45, 11.23, 1.23, 2.37, -2.88, -5.64, -7.57, -7.78, -10.96, -11.12, -11.07, -6.98, -3.46, 28.0, 54.22, 112.9, 107.55, 108.61, 110.92, 106.57, 108.04, 106.32, 107.1, 106.38, 103.48, 97.35, 93.46, 89.98, 93.81], "lightgbm": [61.64, 61.64, 57.69, 57.56, 56.47, 55.24, 53.78, 55.24, 55.9, 57.4, 69.89, 68.14, 75.18, 75.32, 68.19, 55.58, 66.11, 47.09, 35.14, 32.48, 30.18, 23.53, 23.27, 23.27, 24.0, 18.07, 18.07, 12.56, 8.74, 10.0, 17.88, 34.89, 41.98, 70.81, 104.09, 111.68, 112.1, 111.47, 110.72, 110.3, 109.86, 104.33, 100.72, 88.9, 88.39, 88.94, 85.86, 88.94], "lstm": [102.43, 87.42, 91.88, 84.74, 76.93, 72.86, 73.27, 75.54, 77.52, 79.78, 89.99, 91.27, 101.69, 119.53, 113.71, 102.79, 84.12, 63.61, 61.09, 48.65, 36.19, 28.66, 28.74, 26.23, 25.78, 21.92, 17.08, 18.56, 16.37, 22.13, 30.94, 47.08, 54.87, 91.59, 110.0, 133.39, 147.11, 143.57, 124.38, 114.63, 117.13, 111.05, 102.32, 89.45, 89.46, 80.45, 81.79, 84.54]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.55, -96.37, -96.37, -96.37, -96.37, 4.29, 4.29, -67.96, -67.96, 16.97, 16.97, 16.97, 16.97, 16.97, 16.97, 16.97, 16.97, 16.23, 10.67, 20.74, 16.28, 16.12, 16.84, 15.46, 13.47, 13.47, 13.47, 13.47, 13.47, 13.47, 13.47, 159.72, 307.93, 451.59, 591.57, 591.57, 591.57, 591.57, 591.57, 591.57, 591.57, 561.38, 620.67, 620.67], "profit_aud": 620.67}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -90.71, -90.71, -90.71, -90.71, -11.45, -11.45, -11.45, -11.45, -11.45, -11.45, -11.45, -11.45, -39.63, -41.61, -27.39, -33.99, -28.98, -29.99, -30.44, -30.52, -29.8, -31.18, -35.67, -46.17, -47.63, -49.34, -49.34, -49.34, 83.32, 83.32, 231.53, 375.19, 375.19, 510.82, 510.82, 510.82, 510.82, 510.82, 510.82, 510.82, 510.82, 510.82], "profit_aud": 510.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -38.43, -126.04, -216.75, -307.99, -400.32, -400.32, -312.26, -312.26, -218.05, -123.68, -38.18, -100.59, -49.27, -49.27, -49.27, -49.27, -49.27, -49.27, -49.27, -49.27, -49.27, -49.27, -48.95, -50.33, -54.81, -65.32, -79.92, -79.92, -79.92, -79.92, -79.92, 66.33, 214.55, 358.2, 498.19, 498.19, 498.19, 498.19, 498.19, 498.19, 498.19, 498.19, 498.19, 498.19], "profit_aud": 498.19}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -86.55, -174.16, -264.87, -356.12, -397.11, -397.11, -397.11, -397.11, -302.9, -208.53, -123.03, -60.62, -60.62, -60.62, -60.62, -60.62, -60.62, -60.62, -60.62, -60.62, -60.62, -60.78, -60.06, -61.44, -65.92, -70.59, -70.59, -70.59, -70.59, -70.59, -70.59, 75.66, 223.88, 367.54, 507.52, 507.52, 507.52, 507.52, 507.52, 507.52, 507.52, 507.52, 507.52, 507.52], "profit_aud": 507.52}}} \ No newline at end of file diff --git a/results/daily/2026-09-01.json b/results/daily/2026-09-01.json new file mode 100644 index 0000000..f8fd3ce --- /dev/null +++ b/results/daily/2026-09-01.json @@ -0,0 +1 @@ +{"date": "2026-09-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [19.12, 17.55, 3.09, -4.21, -5.78, -6.42, -6.42, -6.29, -0.33, -1.01, -0.81, -0.13, 4.88, 3.07, -6.93, -4.99, -6.38, -16.51, -54.98, -54.13, -20.0, -18.58, -19.2, -19.92, -23.03, -27.48, -16.28, -13.82, -8.9, -7.85, -7.34, -6.38, -6.87, -5.57, 31.37, 48.28, 70.9, 97.71, 105.51, 98.27, 102.18, 90.01, 87.29, 61.89, 59.31, 76.56, 63.44, 79.76], "forecast_price": {"naive": [97.57, 100.27, 95.88, 81.9, 69.24, 70.08, 72.57, 73.0, 73.86, 80.52, 70.45, 57.8, 75.37, 75.49, 68.4, 49.93, 45.62, 46.58, 22.54, 14.16, 11.37, 5.28, 4.45, 8.06, 3.57, 0.13, -0.57, 1.1, 3.59, 8.4, 11.68, 13.67, 47.67, 84.8, 106.13, 117.0, 118.57, 114.93, 111.98, 108.5, 106.52, 102.42, 99.36, 89.08, 81.88, 24.15, 52.7, 39.33], "lightgbm": [70.73, 71.52, 65.33, 59.85, 51.98, 51.02, 50.58, 51.01, 51.29, 56.45, 54.22, 51.46, 61.99, 59.4, 45.23, 43.5, 47.82, 42.9, 30.67, 26.29, 23.16, 19.75, 19.43, 21.28, 19.06, 18.14, 17.7, 16.61, 17.14, 21.4, 21.67, 26.4, 36.59, 65.21, 92.98, 112.1, 111.9, 111.9, 108.72, 105.14, 104.21, 98.64, 95.1, 85.16, 81.1, 54.24, 64.24, 56.11], "lstm": [25.95, 23.46, 21.53, 13.52, 12.87, 8.83, 8.95, 8.71, 10.42, 12.19, 19.83, 22.07, 28.53, 36.57, 33.62, 30.0, 21.87, 6.13, 1.33, -8.21, -5.89, -9.1, -16.62, -16.15, -18.37, -21.37, -22.85, -17.07, -17.41, -8.24, -3.73, 4.01, 12.32, 31.5, 43.17, 57.85, 78.77, 86.95, 80.36, 76.31, 71.63, 70.74, 60.38, 50.27, 47.44, 41.62, 45.76, 52.93]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.12, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 2.63, 9.85, 17.87, 25.89, 33.76, 33.34, 34.6, 33.7, 33.53, 39.63, 43.46, 52.13, 46.6, 47.39, 49.46, 118.17, 185.83, 205.83, 205.83, 205.83, 205.83, 234.62, 268.97, 271.01, 272.74, 273.85, 274.83, 275.75, 275.75, 277.46, 278.16, 278.16, 278.16, 278.16, 400.29, 532.18, 655.02, 782.74, 782.74, 782.74, 705.38, 631.24, 726.94, 709.17, 808.88], "profit_aud": 808.88}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 7.22, 8.12, 8.12, 8.12, 8.12, 6.86, 6.86, 7.03, 7.03, 10.48, 10.48, 10.48, 10.48, 10.48, 10.48, 10.48, 10.48, 13.08, 37.08, 12.18, 40.97, 75.32, 95.67, 112.96, 117.89, 117.89, 117.89, 117.89, 117.89, 117.89, 117.89, 178.25, 266.87, 389.0, 520.89, 520.89, 520.89, 520.89, 520.89, 520.89, 520.89, 425.19, 496.57, 496.57], "profit_aud": 496.57}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 1.8, 9.82, 17.68, 17.68, 17.68, 17.68, 17.68, 23.78, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 27.62, 40.4, 74.75, 95.1, 112.38, 123.5, 123.5, 123.5, 123.5, 123.5, 123.5, 123.5, 183.86, 272.48, 394.61, 526.5, 526.5, 526.5, 526.5, 526.5, 526.5, 526.5, 430.8, 502.18, 502.18], "profit_aud": 502.18}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 8.02, 16.04, 23.91, 24.32, 24.88, 24.88, 24.88, 30.98, 34.82, 26.15, 19.92, 19.92, 19.92, 19.92, 87.58, 65.38, 67.7, 72.5, 72.5, 101.29, 135.64, 155.99, 164.63, 175.75, 176.73, 177.65, 177.65, 177.65, 177.65, 177.65, 177.65, 266.27, 388.4, 520.29, 643.13, 643.13, 643.13, 643.13, 643.13, 643.13, 547.43, 538.55, 638.25], "profit_aud": 638.25}}} \ No newline at end of file diff --git a/results/daily/2026-09-02.json b/results/daily/2026-09-02.json new file mode 100644 index 0000000..e82f26a --- /dev/null +++ b/results/daily/2026-09-02.json @@ -0,0 +1 @@ +{"date": "2026-09-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [134.56, 121.18, 132.39, 156.97, 129.15, 136.52, 95.91, 98.55, 80.17, 74.46, 67.43, 84.08, 96.7, 89.44, 72.49, 40.29, 40.48, 30.7, 13.55, 14.28, 16.8, 23.27, 16.22, 13.14, 12.26, 15.91, 10.34, 16.42, 46.28, 36.37, 24.91, 24.15, 52.52, 81.0, 78.42, 90.98, 94.34, 85.18, 84.31, 83.07, 82.9, 95.15, 90.36, 78.02, 59.54, 58.28, 27.71, 13.67], "forecast_price": {"naive": [19.12, 17.55, 3.09, -4.21, -5.78, -6.42, -6.42, -6.29, -0.33, -1.01, -0.81, -0.13, 4.88, 3.07, -6.93, -4.99, -6.38, -16.51, -54.98, -54.13, -20.0, -18.58, -19.2, -19.92, -23.03, -27.48, -16.28, -13.82, -8.9, -7.85, -7.34, -6.38, -6.87, -5.57, 31.37, 48.28, 70.9, 97.71, 105.51, 98.27, 102.18, 90.01, 87.29, 61.89, 59.31, 76.56, 63.44, 79.76], "lightgbm": [32.05, 32.05, 27.68, 26.5, 26.12, 25.39, 25.75, 23.16, 25.1, 26.07, 30.21, 33.1, 33.32, 31.76, 29.82, 26.42, 23.57, 9.93, -0.53, -6.91, 0.19, -3.14, -4.05, -3.84, -4.21, -6.73, -3.94, -3.94, -3.12, 2.48, 6.4, 13.26, 17.05, 28.3, 41.22, 60.43, 73.25, 89.86, 89.86, 88.87, 88.5, 80.79, 77.11, 66.23, 66.23, 71.97, 69.73, 77.44], "lstm": [83.88, 79.1, 73.0, 64.09, 65.5, 61.39, 55.9, 57.73, 62.7, 67.42, 71.94, 75.98, 86.47, 88.94, 85.19, 71.04, 59.7, 44.54, 37.02, 26.01, 24.7, 19.32, 17.18, 15.81, 13.57, 8.5, 7.78, 11.53, 6.08, 13.66, 17.18, 23.76, 31.94, 54.53, 68.7, 91.09, 109.73, 123.99, 112.48, 103.87, 109.19, 95.11, 90.05, 72.16, 74.9, 64.0, 70.06, 70.27]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -151.47, -170.01, 26.2, 26.2, 26.2, 26.2, 26.2, 3.75, -89.32, -173.6, -173.6, -52.73, 59.07, 59.07, 59.07, 59.07, 59.07, 42.13, 24.28, 24.28, 53.36, 53.36, 36.95, 21.62, 10.56, -2.36, -2.36, 55.49, 91.86, 60.72, 30.54, 30.54, 30.54, 30.54, 144.27, 262.19, 262.19, 262.19, 262.19, 262.19, 381.13, 494.07, 494.07, 494.07, 494.07, 494.07, 494.07], "profit_aud": 494.07}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.56, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 2.25, 0.0, 0.0, 0.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.12, 3.0, 2.88, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -98.1, -259.54, -430.19, -550.07, -673.26, -573.05, -666.12, -591.28, -486.18, -365.3, -253.51, -344.11, -299.4, -304.46, -308.29, -325.23, -343.08, -359.89, -359.89, -359.89, -359.89, -375.21, -395.1, -396.39, -398.45, -404.23, -408.78, -411.89, -411.89, -425.02, -435.15, -435.15, -435.15, -435.15, -328.67, -223.28, -119.44, -15.81, -15.81, -15.81, -113.34, -187.76, -114.91, -122.67, -105.58], "profit_aud": -105.58}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -170.64, -290.53, -413.72, -513.92, -555.25, -470.96, -365.87, -244.99, -133.19, -133.19, -133.19, -133.19, -133.19, -136.58, -154.43, -133.43, -136.34, -156.62, -156.62, -171.94, -191.84, -199.59, -220.11, -225.9, -225.9, -225.9, -225.9, -225.9, -225.9, -225.9, -225.9, -225.9, -119.42, -14.03, 89.81, 193.44, 193.44, 193.44, 182.52, 108.09, 108.09, 108.09, 125.18], "profit_aud": 125.18}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -87.12, -87.12, -257.76, -377.65, -500.83, -601.04, -601.04, -601.04, -495.94, -375.07, -263.27, -172.66, -172.66, -172.66, -172.66, -172.66, -172.66, -172.66, -172.66, -172.66, -172.66, -179.47, -199.36, -212.29, -232.81, -290.66, -290.66, -290.66, -290.66, -290.66, -290.66, -290.66, -290.66, -172.74, -66.26, 39.13, 39.13, 142.76, 142.76, 142.76, 142.76, 142.76, 142.76, 142.76, 142.76], "profit_aud": 142.76}}} \ No newline at end of file diff --git a/results/daily/2026-09-03.json b/results/daily/2026-09-03.json new file mode 100644 index 0000000..a418d3d --- /dev/null +++ b/results/daily/2026-09-03.json @@ -0,0 +1 @@ +{"date": "2026-09-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [15.03, 8.08, 2.02, 3.72, 1.15, 0.02, -0.91, -0.71, 0.01, 0.01, 0.01, 0.02, 12.09, 23.45, 14.12, 4.07, -5.54, -0.16, -3.08, -11.55, -16.24, -15.51, -7.08, -5.23, -1.86, 0.83, -8.42, -1.07, -6.26, -5.36, -0.32, 38.48, 8.52, 101.51, 102.06, 113.76, 132.84, 137.96, 152.09, 160.26, 152.92, 156.62, 162.0, 147.07, 123.59, 117.99, 109.32, 104.19], "forecast_price": {"naive": [134.56, 121.18, 132.39, 156.97, 129.15, 136.52, 95.91, 98.55, 80.17, 74.46, 67.43, 84.08, 96.7, 89.44, 72.49, 40.29, 40.48, 30.7, 13.55, 14.28, 16.8, 23.27, 16.22, 13.14, 12.26, 15.91, 10.34, 16.42, 46.28, 36.37, 24.91, 24.15, 52.52, 81.0, 78.42, 90.98, 94.34, 85.18, 84.31, 83.07, 82.9, 95.15, 90.36, 78.02, 59.54, 58.28, 27.71, 13.67], "lightgbm": [64.75, 69.45, 57.96, 53.1, 51.17, 48.25, 61.13, 61.34, 63.73, 60.05, 62.99, 71.52, 73.61, 72.05, 61.22, 53.87, 49.66, 31.52, 26.1, 24.83, 18.87, 18.8, 12.3, 12.19, 12.15, 12.15, 12.31, 11.62, 18.5, 20.66, 16.31, 20.63, 38.78, 58.99, 74.82, 88.58, 97.47, 89.9, 89.44, 89.08, 88.65, 91.79, 85.09, 77.07, 67.13, 67.98, 55.1, 55.23], "lstm": [10.62, 12.82, 7.28, 2.68, 0.57, -2.17, -2.35, -1.91, 0.43, -0.62, 7.73, 10.62, 15.54, 19.34, 12.94, 6.85, -2.42, -13.94, -17.27, -27.44, -25.97, -21.58, -31.93, -32.08, -33.5, -32.78, -38.99, -33.27, -35.29, -25.87, -22.73, -14.09, -6.2, 8.1, 19.05, 36.95, 48.38, 57.57, 49.74, 49.26, 49.39, 47.9, 37.77, 31.16, 31.49, 26.12, 29.19, 37.99]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -2.53, 1.66, 1.66, 1.66, 2.8, 3.69, 3.67, 3.66, 3.66, 3.66, 18.77, 48.09, 65.73, 70.81, 77.73, 77.55, 77.93, 92.37, 112.67, 132.06, 140.92, 144.18, 142.63, 143.67, 154.2, 152.86, 160.68, 167.38, 167.42, 210.71, 200.06, 200.06, 200.06, 200.06, 200.06, 200.06, 200.06, 400.38, 591.53, 787.31, 989.81, 989.81, 989.81, 989.81, 989.81, 989.81], "profit_aud": 989.81}, "naive": {"charge_mw": [0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.39, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 1.0, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -10.1, -10.39, -5.73, -5.73, -5.73, -5.73, -5.73, -5.73, -5.75, -5.76, -5.76, 9.36, 38.67, 38.67, 38.67, 38.67, 38.67, 42.52, 56.95, 56.95, 37.56, 37.56, 44.1, 46.42, 45.85, 56.38, 56.38, 48.55, 43.19, 43.6, -4.5, -4.5, -4.5, -4.5, 137.69, 303.74, 303.74, 303.74, 303.74, 303.74, 499.52, 702.02, 702.02, 702.02, 702.02, 702.02, 702.02], "profit_aud": 702.02}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -0.84, -5.49, -6.94, -6.95, -6.95, -6.95, -6.95, -6.95, -6.95, -6.94, 8.18, 37.49, 37.49, 37.49, 37.49, 37.49, 37.49, 37.49, 37.49, 37.49, 41.43, 47.96, 50.28, 49.25, 49.25, 50.58, 50.58, 44.55, 44.96, 44.96, 44.96, 44.96, 44.96, 44.96, 211.01, 383.45, 573.57, 573.57, 573.57, 769.35, 769.35, 769.35, 769.35, 769.35, 769.35, 769.35], "profit_aud": 769.35}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 2.0, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-18.79, -9.7, -9.7, -9.7, -9.7, -9.72, -8.58, -7.69, -7.69, -7.71, -7.71, -7.69, 7.43, 36.74, 54.39, 54.39, 55.08, 55.1, 55.49, 69.92, 73.98, 54.59, 55.48, 56.13, 58.46, 57.94, 68.47, 69.81, 77.63, 78.3, 78.34, 73.53, 72.46, 72.46, 72.46, 72.46, 72.46, 244.91, 435.03, 635.35, 826.5, 826.5, 826.5, 826.5, 826.5, 679.01, 663.71, 793.94], "profit_aud": 793.94}}} \ No newline at end of file diff --git a/results/daily/2026-09-04.json b/results/daily/2026-09-04.json new file mode 100644 index 0000000..29d27a7 --- /dev/null +++ b/results/daily/2026-09-04.json @@ -0,0 +1 @@ +{"date": "2026-09-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [126.31, 128.5, 101.46, 104.45, 105.08, 92.35, 92.84, 103.21, 105.44, 109.92, 120.29, 121.77, 84.79, 90.66, 92.7, 87.16, 95.66, 43.89, 30.48, -0.16, -0.44, 13.51, 1.32, -0.18, 0.35, 0.0, 0.05, 2.82, 0.51, 0.63, -3.48, -1.12, 2.71, 12.88, 16.08, 15.24, 2.52, -11.82, -12.62, -3.29, 16.0, 23.4, 25.18, 23.23, 3.27, -0.67, -0.38, -1.0], "forecast_price": {"naive": [15.03, 8.08, 2.02, 3.72, 1.15, 0.02, -0.91, -0.71, 0.01, 0.01, 0.01, 0.02, 12.09, 23.45, 14.12, 4.07, -5.54, -0.16, -3.08, -11.55, -16.24, -15.51, -7.08, -5.23, -1.86, 0.83, -8.42, -1.07, -6.26, -5.36, -0.32, 38.48, 8.52, 101.51, 102.06, 113.76, 132.84, 137.96, 152.09, 160.26, 152.92, 156.62, 162.0, 147.07, 123.59, 117.99, 109.32, 104.19], "lightgbm": [60.18, 59.46, 59.85, 56.47, 54.1, 53.13, 53.87, 53.87, 53.13, 54.6, 54.61, 55.65, 57.03, 54.21, 51.1, 40.37, 35.12, 18.68, 11.02, 0.14, -1.61, -3.16, -1.83, 3.6, 5.68, 5.68, -3.14, 6.13, 7.16, 9.04, 5.15, 20.83, 23.44, 58.61, 76.89, 95.38, 103.34, 107.18, 107.79, 107.22, 106.79, 100.93, 98.18, 94.4, 87.55, 85.64, 79.99, 79.74], "lstm": [146.84, 141.45, 136.92, 127.79, 127.56, 114.92, 111.59, 107.25, 115.18, 107.07, 110.12, 112.16, 124.13, 124.06, 117.03, 96.68, 91.45, 67.87, 66.25, 43.49, 40.88, 40.73, 38.04, 34.8, 33.26, 26.89, 21.93, 26.43, 28.05, 30.4, 35.38, 48.06, 58.53, 86.16, 116.81, 153.6, 149.92, 175.39, 154.57, 142.73, 135.23, 121.47, 113.51, 89.67, 106.43, 91.76, 90.59, 89.12]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.67, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [0.0, 0.0, -28.41, -28.41, -28.41, -143.85, -259.9, -259.9, -259.9, -259.9, -109.54, 42.67, -63.31, -63.31, -63.31, -63.31, 44.31, 44.31, 44.31, 44.52, 45.07, 61.95, 63.27, 63.49, 63.06, 63.05, 62.99, 66.51, 66.08, 66.87, 71.22, 72.63, 72.63, 88.73, 108.83, 127.88, 126.83, 141.61, 157.39, 161.51, 181.51, 210.77, 242.25, 271.29, 271.29, 272.13, 272.6, 273.86], "profit_aud": 273.86}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -126.83, -9.33, -9.33, -9.33, -125.38, -254.4, -386.2, -523.6, -590.36, -590.36, -484.37, -371.04, -255.17, -146.21, -265.79, -217.08, -220.89, -220.68, -220.13, -237.02, -238.67, -238.56, -238.26, -238.26, -238.32, -234.8, -235.44, -236.23, -235.79, -237.05, -240.44, -240.44, -240.44, -240.44, -240.44, -240.44, -240.44, -244.55, -224.55, -195.3, -163.82, -163.82, -163.82, -163.82, -163.82, -163.82], "profit_aud": -163.82}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.75, -16.13, -17.78, -17.68, -17.29, -17.29, -17.35, -17.35, -17.35, -16.64, -12.29, -12.29, -12.29, -12.29, -12.29, -12.29, -12.29, -27.07, -42.85, -46.97, -26.97, -26.97, -26.97, -26.97, -26.97, -26.97, -26.97, -26.97], "profit_aud": -26.97}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -129.01, -129.01, -266.41, -300.09, -300.09, -194.11, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.78, -80.85, -84.37, -85.01, -85.36, -85.36, -85.36, -85.36, -85.36, -85.36, -66.32, -63.17, -77.95, -93.73, -93.73, -93.73, -93.73, -93.73, -122.77, -119.09, -119.09, -119.09, -119.09], "profit_aud": -119.09}}} \ No newline at end of file diff --git a/results/daily/2026-09-05.json b/results/daily/2026-09-05.json new file mode 100644 index 0000000..2daae3c --- /dev/null +++ b/results/daily/2026-09-05.json @@ -0,0 +1 @@ +{"date": "2026-09-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.03, -0.75, -4.09, -4.68, -4.88, -5.42, -4.93, -4.91, -5.07, -5.23, -5.39, -4.36, -5.12, -3.9, -4.86, -4.92, -4.48, -4.24, -2.26, -4.17, -5.36, -6.83, -10.06, -10.38, -7.82, -8.52, -8.51, -7.6, -6.96, -10.26, -6.57, -6.93, -7.11, -1.78, -1.81, 10.96, 17.61, 22.02, 30.5, 33.01, 29.52, 21.95, 29.15, 24.12, 18.94, 16.8, 20.43, 30.44], "forecast_price": {"naive": [126.31, 128.5, 101.46, 104.45, 105.08, 92.35, 92.84, 103.21, 105.44, 109.92, 120.29, 121.77, 84.79, 90.66, 92.7, 87.16, 95.66, 43.89, 30.48, -0.16, -0.44, 13.51, 1.32, -0.18, 0.35, 0.0, 0.05, 2.82, 0.51, 0.63, -3.48, -1.12, 2.71, 12.88, 16.08, 15.24, 2.52, -11.82, -12.62, -3.29, 16.0, 23.4, 25.18, 23.23, 3.27, -0.67, -0.38, -1.0], "lightgbm": [57.11, 57.11, 51.49, 48.14, 45.99, 45.82, 45.82, 44.23, 44.23, 42.46, 47.76, 47.79, 46.46, 44.32, 42.5, 37.23, 37.09, 11.37, 5.83, -5.99, -7.5, -6.32, -8.29, -8.9, -9.05, -9.05, -9.85, -15.29, -15.29, -13.5, -9.25, 0.95, 5.89, 27.95, 38.23, 51.6, 54.69, 51.16, 51.16, 53.78, 54.74, 53.68, 53.24, 51.97, 50.6, 49.97, 49.97, 49.34], "lstm": [-0.1, -0.29, -2.71, -5.77, -5.83, -8.96, -6.96, -7.66, -3.27, -7.09, 2.29, 1.84, 0.67, -1.19, -6.99, -12.24, -19.03, -35.09, -38.2, -46.32, -49.0, -46.27, -53.0, -53.36, -59.15, -60.19, -64.35, -63.31, -64.98, -56.92, -52.74, -37.04, -26.84, -15.77, -0.25, 10.58, 25.7, 36.09, 37.34, 41.12, 41.66, 40.2, 38.81, 31.18, 28.78, 24.98, 27.49, 37.61]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.75, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.62, 3.5, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 4.88, 3.88, 5.0, 4.88, 4.75, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [1.29, 0.45, 0.97, 1.55, 2.16, 8.94, 12.64, 12.64, 18.98, 25.51, 32.25, 26.8, 33.2, 28.32, 28.32, 30.78, 30.78, 25.49, 22.67, 17.45, 18.12, 18.98, 31.55, 44.53, 49.42, 60.07, 70.7, 70.7, 63.95, 76.78, 76.78, 76.78, 79.44, 79.44, 79.9, 79.9, 79.9, 79.9, 118.03, 159.3, 196.19, 196.19, 232.63, 232.63, 229.97, 208.97, 208.97, 247.03], "profit_aud": 247.03}, "naive": {"charge_mw": [0.0, 0.0, 0.56, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.67, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-0.0, -0.0, 1.15, 1.15, 1.15, 7.92, 14.09, 14.09, 14.09, 14.09, 7.35, 1.9, 8.3, 8.3, 8.3, 8.3, 3.27, 3.27, 3.27, 8.48, 15.17, 6.64, -3.42, 9.56, 19.34, 29.99, 40.62, 31.12, 36.93, 24.11, 32.32, 40.98, 40.98, 38.75, 36.49, 50.19, 42.89, 15.36, -22.77, -64.04, -27.14, 0.3, 36.73, 66.88, 66.88, 45.88, 20.34, -17.72], "profit_aud": -17.72}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.54, 6.54, 1.63, 1.63, 1.63, 1.63, 1.63, 1.63, 1.63, 1.63, 2.16, 8.85, 1.27, 2.53, 3.83, 4.8, 5.87, 16.5, 26.0, 34.7, 47.53, 51.63, 51.63, 51.63, 51.63, 51.63, 51.63, 73.64, 73.64, 73.64, 114.91, 151.8, 179.24, 179.24, 179.24, 179.24, 179.24, 179.24, 179.24], "profit_aud": 179.24}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.13, 0.22, 0.73, 3.66, 9.76, 16.54, 22.71, 28.85, 23.22, 29.76, 23.02, 17.57, 11.17, 6.29, 6.9, 7.51, 8.07, 8.6, 8.88, 9.4, 10.74, 10.74, 12.0, 13.3, 18.19, 28.84, 39.47, 48.97, 57.67, 58.95, 59.77, 60.64, 61.53, 61.75, 61.97, 61.97, 61.97, 61.97, 61.97, 103.24, 140.14, 167.57, 204.01, 204.01, 204.01, 183.01, 180.15, 218.2], "profit_aud": 218.2}}} \ No newline at end of file diff --git a/results/daily/2026-09-06.json b/results/daily/2026-09-06.json new file mode 100644 index 0000000..d4cae39 --- /dev/null +++ b/results/daily/2026-09-06.json @@ -0,0 +1 @@ +{"date": "2026-09-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [31.28, 33.81, 33.28, 32.91, 28.86, 29.15, 31.12, 37.16, 41.11, 52.42, 63.51, 70.02, 67.28, 70.1, 83.53, 87.5, 44.22, 70.18, 28.85, 16.99, 24.16, 22.74, 30.15, 24.67, 32.14, 31.81, 27.33, 53.49, 42.78, 33.43, 22.57, 35.56, 53.67, 82.99, 89.62, 102.86, 104.42, 101.24, 98.88, 97.57, 100.18, 103.35, 102.72, 103.61, 95.66, 93.39, 87.67, 90.46], "forecast_price": {"naive": [-1.03, -0.75, -4.09, -4.68, -4.88, -5.42, -4.93, -4.91, -5.07, -5.23, -5.39, -4.36, -5.12, -3.9, -4.86, -4.92, -4.48, -4.24, -2.26, -4.17, -5.36, -6.83, -10.06, -10.38, -7.82, -8.52, -8.51, -7.6, -6.96, -10.26, -6.57, -6.93, -7.11, -1.78, -1.81, 10.96, 17.61, 22.02, 30.5, 33.01, 29.52, 21.95, 29.15, 24.12, 18.94, 16.8, 20.43, 30.44], "lightgbm": [1.54, 1.54, -1.29, -3.62, -4.19, -5.27, -5.27, -5.36, -5.36, -5.71, -4.12, -1.33, -5.31, -3.09, -6.14, -10.93, -11.88, -9.78, -8.44, -8.57, -10.16, -11.71, -18.89, -19.01, -17.01, -25.95, -25.95, -22.59, -22.59, -26.01, -15.9, -6.49, -2.46, 14.39, 24.57, 43.88, 49.28, 50.86, 51.74, 51.64, 50.24, 48.65, 47.46, 46.17, 45.38, 45.18, 45.32, 45.73], "lstm": [37.46, 31.37, 27.72, 25.57, 22.97, 21.31, 21.19, 19.0, 22.94, 19.4, 22.94, 23.47, 21.43, 22.26, 13.42, 8.92, 1.76, 1.1, 1.03, -7.82, -2.84, -5.8, -5.82, -6.75, -5.07, -11.84, -15.54, -8.95, -12.62, -7.75, -4.81, 6.65, 6.64, 24.2, 31.97, 49.1, 61.65, 66.52, 57.66, 53.7, 56.98, 52.69, 48.72, 39.19, 41.38, 37.74, 44.57, 46.2]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 3.88, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-39.1, -39.1, -39.1, -57.37, -93.44, -129.88, -168.78, -168.78, -168.78, -168.78, -168.78, -90.01, -90.01, -2.39, 102.03, 211.4, 156.12, 243.85, 227.84, 206.6, 176.4, 147.98, 147.98, 117.14, 153.3, 153.3, 119.14, 186.0, 239.47, 197.69, 169.47, 159.51, 159.51, 159.51, 159.51, 288.09, 418.62, 418.62, 418.62, 418.62, 418.62, 547.81, 547.81, 677.32, 677.32, 677.32, 677.32, 677.32], "profit_aud": 677.32}, "naive": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 1.75, 2.5, 2.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 3.62, 3.5, 3.88, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 4.88, 3.88, 5.0, 4.88, 4.75, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-39.1, -1.57, -5.73, -9.84, -13.45, -49.89, -73.23, -73.23, -124.62, -190.15, -269.54, -182.02, -266.12, -178.5, -178.5, -222.25, -222.25, -134.52, -98.46, -77.22, -80.24, -83.09, -120.78, -151.61, -171.7, -211.45, -245.62, -245.62, -204.13, -245.91, -245.91, -245.91, -266.04, -266.04, -288.44, -288.44, -288.44, -288.44, -164.84, -42.87, 82.36, 82.36, 210.75, 210.75, 197.36, 80.63, 80.63, 193.71], "profit_aud": 193.71}, "lightgbm": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 2.25, 0.0, 0.0, 1.75, 2.5, 2.5, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 0.0, 1.25, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 2.12, 0.88, 1.25, 0.0, 0.0, 1.12, 2.25, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -4.16, -8.27, -11.88, -19.17, -19.17, -65.62, -117.01, -182.54, -103.15, -15.63, -49.27, 38.35, 27.91, -81.47, -136.75, -163.07, -127.0, -105.77, -108.79, -111.63, -115.4, -146.23, -110.55, -150.31, -184.48, -251.35, -278.08, -319.86, -322.68, -327.13, -333.84, -333.84, -333.84, -333.84, -333.84, -207.29, -83.69, 38.28, 163.51, 163.51, 163.51, 163.51, 163.51, 163.51, 163.51, 163.51], "profit_aud": 163.51}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -46.45, -5.35, -70.88, -70.88, 16.64, 16.64, 16.64, 16.64, 16.64, 16.64, 16.64, 16.64, -4.59, 22.23, 19.39, 11.85, -18.98, 21.19, -18.57, -52.73, -119.6, -173.07, -193.96, -196.78, -196.78, -196.78, -196.78, -196.78, -196.78, -66.26, 60.29, 183.89, 183.89, 309.12, 309.12, 309.12, 179.61, 179.61, 62.88, 150.55, 263.63], "profit_aud": 263.63}}} \ No newline at end of file diff --git a/results/daily/2026-09-07.json b/results/daily/2026-09-07.json new file mode 100644 index 0000000..92252b6 --- /dev/null +++ b/results/daily/2026-09-07.json @@ -0,0 +1 @@ +{"date": "2026-09-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [83.45, 73.96, 59.42, 52.33, 64.48, 48.7, 45.1, 41.06, 48.75, 49.52, 49.53, 54.71, 59.72, 57.22, 47.32, 41.5, 28.36, 3.0, 4.34, 0.02, -1.25, -0.8, -0.6, -0.58, -1.52, -1.08, -0.16, -0.77, -1.09, -2.6, 0.04, 9.39, 48.2, 76.93, 120.42, 136.43, 139.28, 138.71, 125.28, 117.4, 112.64, 115.59, 112.33, 105.06, 104.34, 100.03, 94.37, 96.79], "forecast_price": {"naive": [31.28, 33.81, 33.28, 32.91, 28.86, 29.15, 31.12, 37.16, 41.11, 52.42, 63.51, 70.02, 67.28, 70.1, 83.53, 87.5, 44.22, 70.18, 28.85, 16.99, 24.16, 22.74, 30.15, 24.67, 32.14, 31.81, 27.33, 53.49, 42.78, 33.43, 22.57, 35.56, 53.67, 82.99, 89.62, 102.86, 104.42, 101.24, 98.88, 97.57, 100.18, 103.35, 102.72, 103.61, 95.66, 93.39, 87.67, 90.46], "lightgbm": [53.47, 52.56, 52.56, 51.74, 51.4, 51.4, 51.4, 51.29, 49.9, 55.27, 53.61, 51.65, 55.78, 54.69, 58.51, 56.46, 41.72, 46.35, 30.85, 28.21, 27.21, 27.69, 28.31, 27.16, 28.84, 28.16, 27.79, 34.25, 29.34, 29.48, 28.52, 30.8, 44.36, 70.84, 78.33, 88.21, 88.21, 88.21, 87.81, 87.5, 87.5, 85.42, 84.89, 84.46, 82.83, 77.67, 77.3, 77.02], "lstm": [102.8, 99.51, 97.34, 88.82, 92.81, 81.2, 86.52, 82.72, 92.16, 87.2, 96.38, 102.1, 111.02, 132.15, 116.55, 116.92, 98.91, 77.69, 71.17, 50.55, 53.45, 43.72, 51.63, 46.79, 44.51, 41.79, 35.89, 35.54, 32.56, 39.71, 43.78, 52.07, 57.39, 85.2, 101.48, 127.17, 153.35, 153.7, 129.02, 109.55, 102.54, 100.05, 94.74, 77.37, 93.51, 71.06, 75.71, 84.15]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 1.88, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -65.42, 7.12, -53.75, -110.13, -161.45, -181.68, -181.68, -181.68, -113.29, -38.65, 32.88, 32.88, 32.88, 32.88, 29.14, 34.02, 34.02, 35.58, 36.59, 36.42, 35.69, 37.58, 38.94, 38.74, 39.7, 41.06, 44.31, 44.31, 44.31, 44.31, 44.31, 44.31, 214.85, 388.94, 562.33, 718.93, 718.93, 718.93, 718.93, 718.93, 718.93, 718.93, 718.93, 718.93, 718.93], "profit_aud": 718.93}, "naive": {"charge_mw": [2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 3.88, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-104.31, -104.31, -104.31, -133.35, -213.95, -274.82, -331.21, -331.21, -331.21, -331.21, -331.21, -269.65, -269.65, -198.12, -138.97, -87.1, -122.55, -118.8, -121.21, -121.24, -119.68, -118.67, -118.67, -117.94, -119.65, -119.65, -119.45, -120.41, -121.77, -118.53, -118.58, -121.21, -121.21, -121.21, -121.21, 49.33, 223.43, 223.43, 223.43, 223.43, 223.43, 367.92, 367.92, 499.24, 499.24, 499.24, 499.24, 499.24], "profit_aud": 499.24}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 3.38, 3.88, 5.0, 3.75, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.75, -66.69, -66.69, -66.69, -66.69, -66.69, -66.69, -7.53, -7.53, -42.99, -39.61, -39.61, -39.61, -38.05, -37.04, -37.04, -36.31, -36.31, -35.71, -35.51, -36.48, -36.32, -36.32, -36.37, -36.37, -36.37, -36.37, -36.37, 134.17, 308.26, 481.65, 638.25, 638.25, 638.25, 638.25, 638.25, 638.25, 638.25, 638.25, 638.25, 638.25], "profit_aud": 638.25}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.5, 0.5, 1.62, 2.75, 3.88, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -29.05, -29.05, -89.92, -146.3, -197.62, -197.62, -259.52, -259.52, -259.52, -184.87, -113.34, -54.19, -2.32, -2.32, -2.32, -2.32, -2.32, -2.32, -1.31, -1.99, -1.99, -1.99, -1.39, -1.19, -0.22, 1.14, 4.38, 4.38, 4.38, 4.38, 4.38, 4.38, 174.92, 349.02, 522.4, 679.0, 679.0, 679.0, 679.0, 679.0, 547.68, 665.05, 540.02, 526.81, 647.8], "profit_aud": 647.8}}} \ No newline at end of file diff --git a/results/daily/2026-09-08.json b/results/daily/2026-09-08.json new file mode 100644 index 0000000..f780827 --- /dev/null +++ b/results/daily/2026-09-08.json @@ -0,0 +1 @@ +{"date": "2026-09-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [104.41, 99.19, 98.72, 91.13, 86.86, 80.11, 81.84, 71.72, 70.74, 71.84, 68.16, 70.29, 69.27, 82.17, 96.25, 74.36, 52.62, 33.63, 36.64, 37.34, 31.62, 22.89, 24.69, 20.16, 15.37, 19.78, 11.52, 12.26, 21.51, 19.96, 24.54, 42.64, 93.68, 127.78, 133.62, 133.8, 130.68, 113.59, 105.56, 93.1, 90.77, 93.05, 88.55, 78.4, 95.3, 120.48, 109.95, 110.42], "forecast_price": {"naive": [83.45, 73.96, 59.42, 52.33, 64.48, 48.7, 45.1, 41.06, 48.75, 49.52, 49.53, 54.71, 59.72, 57.22, 47.32, 41.5, 28.36, 3.0, 4.34, 0.02, -1.25, -0.8, -0.6, -0.58, -1.52, -1.08, -0.16, -0.77, -1.09, -2.6, 0.04, 9.39, 48.2, 76.93, 120.42, 136.43, 139.28, 138.71, 125.28, 117.4, 112.64, 115.59, 112.33, 105.06, 104.34, 100.03, 94.37, 96.79], "lightgbm": [56.94, 53.92, 46.27, 46.3, 46.99, 43.97, 43.46, 42.55, 43.97, 45.54, 46.65, 46.18, 47.06, 46.18, 30.91, 31.26, 24.44, 12.89, 6.01, 4.5, 4.3, 4.3, 4.3, 4.3, 4.3, 3.97, 4.3, 6.88, 5.09, 5.09, 6.25, 16.33, 25.78, 51.86, 82.7, 97.32, 97.32, 97.61, 94.28, 91.54, 90.74, 89.38, 88.05, 83.51, 83.49, 83.74, 82.81, 82.11], "lstm": [96.89, 93.82, 89.81, 82.77, 79.4, 74.05, 71.84, 67.7, 69.79, 64.61, 72.42, 74.06, 83.47, 87.09, 73.11, 68.05, 53.74, 41.13, 35.16, 24.66, 25.42, 18.42, 18.55, 15.86, 14.67, 10.45, 8.02, 10.07, 11.05, 17.53, 19.7, 29.7, 37.16, 60.86, 87.6, 114.3, 135.81, 140.91, 113.86, 100.69, 89.53, 85.3, 84.96, 67.43, 72.94, 63.99, 64.75, 71.03]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -85.2, -104.88, -191.47, -88.76, 31.55, 31.55, 31.55, 31.55, 31.55, 31.55, 31.55, 31.55, 31.55, 31.55, 12.33, -12.39, -26.79, -42.12, -42.12, -53.2, -53.2, -53.2, -53.2, 106.53, 273.55, 440.8, 604.16, 604.16, 604.16, 604.16, 490.7, 452.08, 341.4, 243.4, 243.4, 394.0, 531.44, 669.47], "profit_aud": 669.47}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 1.94, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 1.88, 0.62, 1.75, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -113.91, -16.19, -116.34, -218.63, -308.28, -337.64, -337.64, -337.64, -249.77, -163.18, -60.47, -60.47, -60.47, -60.47, -102.51, -61.29, -61.29, -100.82, -129.43, -122.52, -97.32, -116.54, -141.26, -126.85, -142.19, -169.07, -194.02, -194.02, -194.02, -194.02, -194.02, -194.02, -26.76, 136.59, 278.58, 410.53, 410.53, 410.53, 410.53, 410.53, 410.53, 410.53, 410.53, 410.53, 410.53], "profit_aud": 410.53}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -39.52, -68.14, -99.0, -110.19, -110.19, -134.91, -134.91, -119.58, -146.46, -149.26, -149.26, -149.26, -149.26, -149.26, -149.26, 18.0, 181.35, 323.34, 455.29, 455.29, 455.29, 455.29, 455.29, 455.29, 455.29, 455.29, 455.29, 455.29], "profit_aud": 455.29}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -89.65, -109.46, -199.26, -199.26, -199.26, -112.67, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -9.96, -18.49, -43.21, -57.62, -72.95, -99.84, -99.84, -99.84, -99.84, -99.84, -99.84, -99.84, 67.42, 230.77, 372.76, 504.71, 504.71, 504.71, 504.71, 504.71, 504.71, 504.71, 504.71, 504.71, 504.71], "profit_aud": 504.71}}} \ No newline at end of file diff --git a/results/daily/2026-09-09.json b/results/daily/2026-09-09.json new file mode 100644 index 0000000..e0273a7 --- /dev/null +++ b/results/daily/2026-09-09.json @@ -0,0 +1 @@ +{"date": "2026-09-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [108.26, 100.86, 44.8, 18.9, 19.95, 2.59, 0.1, 0.01, 0.13, -0.2, 0.01, 0.97, -2.95, -4.05, 2.29, -4.18, -12.05, -6.53, -6.56, -7.04, -7.79, -11.01, -7.37, -8.1, -12.16, -15.39, -11.02, -13.56, -9.4, -8.57, -8.88, -12.34, -8.45, -40.35, -4.16, 68.09, 77.88, 84.26, 85.02, 86.81, 65.78, 81.01, 76.38, 77.26, 82.28, 84.32, 79.49, 68.15], "forecast_price": {"naive": [104.41, 99.19, 98.72, 91.13, 86.86, 80.11, 81.84, 71.72, 70.74, 71.84, 68.16, 70.29, 69.27, 82.17, 96.25, 74.36, 52.62, 33.63, 36.64, 37.34, 31.62, 22.89, 24.69, 20.16, 15.37, 19.78, 11.52, 12.26, 21.51, 19.96, 24.54, 42.64, 93.68, 127.78, 133.62, 133.8, 130.68, 113.59, 105.56, 93.1, 90.77, 93.05, 88.55, 78.4, 95.3, 120.48, 109.95, 110.42], "lightgbm": [74.89, 74.89, 74.29, 71.11, 70.16, 70.13, 70.18, 63.91, 61.96, 60.76, 58.2, 62.46, 62.83, 68.19, 69.97, 55.66, 45.37, 34.73, 29.29, 27.38, 24.7, 20.67, 21.99, 19.08, 18.81, 18.81, 18.81, 18.81, 24.92, 22.34, 22.78, 29.11, 50.57, 71.93, 93.1, 97.61, 96.2, 88.97, 84.3, 81.16, 80.72, 79.58, 76.07, 73.1, 77.07, 85.14, 78.37, 79.65], "lstm": [93.37, 95.26, 92.75, 82.27, 81.16, 75.55, 70.43, 68.24, 67.66, 62.47, 69.53, 71.66, 79.69, 75.34, 68.68, 61.38, 54.11, 42.81, 36.36, 24.64, 23.31, 17.86, 19.9, 14.36, 13.78, 10.27, 7.27, 10.12, 9.18, 18.54, 19.5, 25.14, 35.11, 56.22, 77.01, 105.76, 116.34, 122.5, 95.09, 85.68, 80.84, 72.03, 73.9, 58.23, 66.87, 54.57, 57.63, 65.81]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.25, 0.12, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 4.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01, -0.03, 0.13, 0.39, 0.39, 1.61, 2.34, 7.41, 10.27, 10.79, 25.86, 20.41, 20.41, 20.41, 21.38, 35.14, 28.0, 28.0, 43.2, 62.43, 76.21, 93.16, 93.16, 90.76, 90.76, 106.19, 96.81, 147.25, 147.77, 147.77, 147.77, 253.09, 359.37, 467.88, 385.66, 385.66, 385.66, 385.66, 478.22, 583.62, 583.62, 583.62], "profit_aud": 583.62}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01, -0.28, 3.4, -1.66, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 16.4, 35.63, 49.41, 66.36, 66.36, 71.11, 71.11, 71.11, 71.11, 20.67, 15.47, 100.58, 197.93, 197.93, 197.93, 197.93, 115.7, 82.08, -13.39, -109.97, -109.97, -4.57, 94.79, 179.97], "profit_aud": 179.97}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "soc_mwh": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.25, 0.25, 0.25, -3.81, -0.94, -0.94, -0.94, -0.94, -0.94, -0.94, -0.94, -0.94, -0.94, 3.55, 18.75, 37.98, 51.76, 68.71, 58.14, 68.85, 68.85, 68.85, 68.85, 68.85, 63.65, 148.76, 246.11, 351.43, 351.43, 351.43, 351.43, 351.43, 340.74, 244.16, 244.16, 349.56, 349.56, 349.56], "profit_aud": 349.56}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16, 0.09, 0.09, 0.09, -3.59, -7.65, -7.65, -7.65, -7.65, -7.65, -7.65, -7.65, -7.65, 6.11, -2.17, -2.17, 4.58, 23.81, 37.59, 54.53, 66.28, 66.28, 66.28, 66.28, 66.28, 66.28, 66.28, 151.39, 248.74, 354.06, 460.34, 460.34, 460.34, 460.34, 460.34, 363.76, 456.32, 350.92, 339.79, 424.98], "profit_aud": 424.98}}} \ No newline at end of file diff --git a/results/daily/2026-09-10.json b/results/daily/2026-09-10.json new file mode 100644 index 0000000..0eec89d --- /dev/null +++ b/results/daily/2026-09-10.json @@ -0,0 +1 @@ +{"date": "2026-09-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [72.55, 66.94, 67.24, 65.52, 69.85, 64.32, 68.92, 69.88, 74.07, 65.97, 70.12, 72.48, 85.46, 91.91, 73.34, 56.92, 35.54, 14.02, -7.04, -11.78, -18.55, -65.98, -100.17, -93.66, -113.87, -127.16, -207.35, -176.7, -193.54, -216.74, -224.97, -230.44, -85.11, -5.24, 42.2, 92.49, 99.27, 96.95, 94.16, 83.58, 82.81, 83.24, 82.39, 81.95, 78.19, 70.54, 70.66, 71.68], "forecast_price": {"naive": [108.26, 100.86, 44.8, 18.9, 19.95, 2.59, 0.1, 0.01, 0.13, -0.2, 0.01, 0.97, -2.95, -4.05, 2.29, -4.18, -12.05, -6.53, -6.56, -7.04, -7.79, -11.01, -7.37, -8.1, -12.16, -15.39, -11.02, -13.56, -9.4, -8.57, -8.88, -12.34, -8.45, -40.35, -4.16, 68.09, 77.88, 84.26, 85.02, 86.81, 65.78, 81.01, 76.38, 77.26, 82.28, 84.32, 79.49, 68.15], "lightgbm": [41.0, 42.82, 33.92, 34.1, 34.41, 32.91, 32.91, 32.91, 32.91, 32.91, 33.41, 32.91, 33.22, 29.91, 20.14, 18.96, 10.3, 8.85, 7.36, 0.83, -4.7, -5.57, 0.45, -1.45, -1.14, -1.14, -4.86, -1.14, -2.89, -1.45, -0.78, 7.19, 10.57, 17.75, 40.41, 66.45, 69.34, 74.35, 74.35, 74.35, 66.45, 72.62, 67.63, 67.27, 72.06, 72.19, 71.43, 65.37], "lstm": [52.39, 55.81, 50.11, 45.28, 41.59, 42.9, 35.63, 35.43, 33.59, 34.44, 39.98, 39.85, 44.91, 32.45, 25.49, 15.68, 8.56, 2.67, -0.25, -6.44, -8.86, -10.64, -14.45, -15.08, -16.59, -22.29, -20.51, -20.38, -22.41, -14.66, -14.46, -9.77, -0.2, 13.65, 34.07, 54.26, 65.37, 77.42, 72.17, 66.87, 63.96, 57.72, 55.58, 49.8, 45.5, 40.17, 45.43, 49.86]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -81.9, -81.9, -162.3, -162.3, -162.3, -97.49, -179.96, -179.96, -179.96, -73.14, 41.74, 41.74, 41.74, 41.74, 41.74, 42.62, 44.1, 46.41, 54.66, 79.7, 79.7, 93.94, 109.83, 369.02, 369.02, 514.18, 785.1, 1066.31, 1354.36, 1364.99, 1365.65, 1365.65, 1481.27, 1605.35, 1726.54, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24, 1844.24], "profit_aud": 1844.24}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.28, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.0, 0.0, 2.5, 2.25, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 1.12, 0.25, 0.12, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 4.38, 4.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 2.38, 2.38, 2.38, 2.38, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.65, -97.0, -4.41, -86.88, -96.7, -6.1, -27.46, -142.34, -50.67, -57.79, -102.21, -90.5, -90.5, -90.5, -88.18, -5.71, -102.88, -102.88, 39.46, 198.41, 457.59, 678.47, 678.47, 617.78, 617.78, 905.83, 811.36, 817.9, 812.63, 812.63, 812.63, 933.82, 1051.52, 1156.0, 1052.49, 1052.49, 1052.49, 1052.49, 1140.45, 1228.62, 1228.62, 1228.62], "profit_aud": 1228.62}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.22, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 2.12, 2.0, 1.88, 3.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.19, 105.66, -19.55, 97.52, 97.52, 97.52, 356.7, 331.97, 573.9, 844.82, 872.94, 872.94, 872.94, 872.94, 872.94, 872.94, 872.94, 994.13, 1111.83, 1216.31, 1216.31, 1320.36, 1320.36, 1320.36, 1320.36, 1320.36, 1320.36, 1320.36], "profit_aud": 1320.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -28.6, -115.95, -208.54, -291.01, -203.35, -112.75, -5.93, -5.93, -5.93, -5.93, -5.93, -5.93, -5.05, -3.58, -1.26, 6.99, 19.51, 31.22, 102.39, 261.33, 520.52, 741.4, 983.33, 1010.42, 1038.54, 1067.35, 1077.98, 1077.98, 1077.98, 1077.98, 1202.07, 1323.26, 1440.96, 1545.44, 1545.44, 1545.44, 1545.44, 1545.44, 1545.44, 1457.27, 1457.27, 1537.91], "profit_aud": 1537.91}}} \ No newline at end of file diff --git a/results/daily/2026-09-11.json b/results/daily/2026-09-11.json new file mode 100644 index 0000000..a81d774 --- /dev/null +++ b/results/daily/2026-09-11.json @@ -0,0 +1 @@ +{"date": "2026-09-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [77.28, 73.06, 74.43, 69.16, 58.53, 60.62, 57.23, 55.07, 58.97, 59.4, 71.82, 72.09, 78.35, 107.16, 111.96, 86.74, 30.4, 16.49, 5.02, -1.21, -3.41, -3.02, -3.97, -3.79, -5.03, -5.57, -8.96, -7.35, -11.16, -34.39, -13.83, -6.72, -4.44, 46.87, 94.87, 104.44, 109.64, 106.09, 101.56, 98.08, 94.79, 93.36, 92.5, 89.99, 91.86, 95.9, 97.06, 95.98], "forecast_price": {"naive": [72.55, 66.94, 67.24, 65.52, 69.85, 64.32, 68.92, 69.88, 74.07, 65.97, 70.12, 72.48, 85.46, 91.91, 73.34, 56.92, 35.54, 14.02, -7.04, -11.78, -18.55, -65.98, -100.17, -93.66, -113.87, -127.16, -207.35, -176.7, -193.54, -216.74, -224.97, -230.44, -85.11, -5.24, 42.2, 92.49, 99.27, 96.95, 94.16, 83.58, 82.81, 83.24, 82.39, 81.95, 78.19, 70.54, 70.66, 71.68], "lightgbm": [46.59, 45.21, 44.1, 43.55, 45.36, 43.55, 45.36, 45.36, 44.15, 43.96, 47.5, 47.03, 46.87, 46.79, 45.25, 44.72, 40.11, 21.15, 13.28, -0.73, -1.18, -19.79, -21.47, -21.47, -22.82, -22.82, -22.82, -21.91, -21.47, -21.47, -20.09, -18.55, -15.58, 19.36, 36.84, 74.2, 78.28, 76.41, 76.41, 71.11, 70.98, 69.05, 68.59, 67.66, 67.79, 60.15, 60.15, 59.57], "lstm": [67.35, 64.13, 60.43, 60.08, 54.58, 50.92, 39.61, 43.22, 35.74, 40.04, 44.13, 46.71, 52.93, 36.75, 26.05, 15.34, 1.89, -1.21, -5.63, -11.61, -17.02, -23.99, -24.65, -32.37, -34.36, -45.68, -46.07, -48.96, -38.26, -33.55, -27.32, -19.46, -7.75, 12.61, 42.87, 67.63, 87.76, 100.79, 90.04, 89.72, 78.36, 70.65, 78.3, 71.41, 68.65, 58.88, 62.8, 62.62]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -73.16, -73.16, -144.7, -213.53, -287.24, -320.21, -320.21, -320.21, -222.27, -88.33, 51.62, 160.04, 160.04, 160.04, 160.04, 160.19, 164.45, 161.09, 162.09, 162.09, 162.71, 163.41, 174.61, 179.21, 193.15, 236.14, 253.42, 254.26, 254.82, 254.82, 254.82, 385.37, 522.43, 655.04, 781.99, 781.99, 781.99, 781.99, 781.99, 781.99, 781.99, 781.99, 781.99, 781.99], "profit_aud": 781.99}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 0.0, 2.5, 1.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 2.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.0, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -86.45, -86.45, -162.23, -162.23, -162.23, -110.63, -184.88, -184.88, -184.88, -86.95, 47.0, 47.0, 47.0, 47.0, 47.0, 46.37, 46.52, 46.95, 47.33, 48.32, 48.32, 48.95, 49.65, 60.85, 60.85, 69.21, 112.2, 129.49, 137.89, 138.44, 132.59, 132.59, 263.14, 400.19, 532.81, 659.75, 659.75, 659.75, 659.75, 659.75, 659.75, 659.75, 659.75, 659.75, 659.75], "profit_aud": 659.75}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15, 0.58, 0.95, 3.93, 3.93, 10.22, 17.19, 28.39, 37.58, 38.97, 43.27, 45.0, 45.84, 46.39, 46.39, 46.39, 176.95, 314.0, 446.61, 573.56, 573.56, 573.56, 573.56, 573.56, 573.56, 573.56, 573.56, 573.56, 573.56], "profit_aud": 573.56}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -71.54, -71.54, -145.25, -161.88, -161.88, -71.77, 26.16, 26.16, 26.16, 26.16, 26.16, 24.1, 23.48, 23.63, 24.05, 24.43, 24.93, 25.4, 28.54, 35.51, 46.71, 55.9, 69.85, 74.14, 75.87, 76.71, 77.27, 77.27, 77.27, 77.27, 214.32, 346.94, 473.88, 596.49, 596.49, 596.49, 596.49, 596.49, 596.49, 596.49, 596.49, 596.49], "profit_aud": 596.49}}} \ No newline at end of file diff --git a/results/daily/2026-09-12.json b/results/daily/2026-09-12.json new file mode 100644 index 0000000..f3fe4ac --- /dev/null +++ b/results/daily/2026-09-12.json @@ -0,0 +1 @@ +{"date": "2026-09-12", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [95.51, 98.18, 100.87, 100.78, 92.8, 93.58, 88.14, 86.59, 82.4, 86.31, 84.78, 87.94, 89.13, 83.41, 43.23, 5.78, -6.38, -9.16, -12.94, -14.5, -7.87, -6.44, -6.19, -21.18, -25.76, -70.24, -62.31, -94.84, -124.34, -157.72, -55.39, -5.57, 6.35, 72.15, 89.52, 94.16, 92.85, 85.4, 75.13, 67.71, 54.83, 41.11, 23.66, 11.14, 1.36, 3.98, 0.01, 0.01], "forecast_price": {"naive": [77.28, 73.06, 74.43, 69.16, 58.53, 60.62, 57.23, 55.07, 58.97, 59.4, 71.82, 72.09, 78.35, 107.16, 111.96, 86.74, 30.4, 16.49, 5.02, -1.21, -3.41, -3.02, -3.97, -3.79, -5.03, -5.57, -8.96, -7.35, -11.16, -34.39, -13.83, -6.72, -4.44, 46.87, 94.87, 104.44, 109.64, 106.09, 101.56, 98.08, 94.79, 93.36, 92.5, 89.99, 91.86, 95.9, 97.06, 95.98], "lightgbm": [50.48, 49.16, 50.48, 47.72, 45.56, 45.56, 43.99, 43.99, 45.56, 45.56, 46.36, 46.86, 51.12, 53.09, 52.79, 44.97, 19.42, 6.23, 2.66, 0.35, 0.24, -2.89, -3.95, -3.95, -3.4, -4.26, -12.01, -4.76, -11.14, -17.21, -7.5, -0.21, 7.04, 29.43, 61.71, 76.49, 77.35, 77.35, 76.49, 76.49, 76.53, 71.67, 71.0, 69.44, 70.63, 73.77, 73.77, 73.77], "lstm": [97.47, 86.54, 83.93, 81.41, 77.22, 71.78, 61.41, 61.47, 53.43, 52.2, 55.53, 50.87, 49.2, 37.75, 23.3, 16.18, 9.34, 0.86, -1.61, -13.32, -15.39, -20.76, -18.5, -26.11, -24.15, -29.45, -26.63, -25.5, -17.34, -8.65, -3.96, 10.52, 17.27, 40.28, 77.02, 111.89, 130.24, 133.84, 112.6, 104.01, 92.34, 79.36, 86.65, 81.94, 82.52, 67.0, 72.22, 74.02]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 12.25, 28.42, 46.55, 39.97, 31.92, 24.18, 26.83, 30.05, 117.85, 156.79, 275.34, 430.77, 627.93, 634.85, 635.55, 635.55, 635.55, 747.45, 865.15, 981.21, 1087.95, 1087.95, 1087.95, 1087.95, 1087.95, 1087.95, 1087.95, 1086.25, 1090.73, 1090.73, 1090.73], "profit_aud": 1090.73}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 2.5, 2.0, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -116.01, -116.01, -226.19, -334.42, -437.42, -485.33, -485.33, -485.33, -373.92, -269.66, -215.62, -208.4, -208.4, -208.4, -208.4, -206.58, -196.74, -203.9, -202.35, -202.35, -199.13, -190.35, -112.46, -53.19, 102.24, 299.4, 368.64, 369.34, 368.54, 368.54, 368.54, 486.25, 602.31, 709.05, 802.96, 802.96, 802.96, 802.96, 802.96, 802.96, 802.96, 802.96, 802.96, 802.96], "profit_aud": 802.96}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.0, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.5, 2.62, 3.75, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -116.01, -154.84, -265.02, -373.26, -373.26, -373.26, -373.26, -373.26, -261.85, -157.59, -103.55, -103.55, -103.55, -103.55, -103.55, -103.55, -103.55, -102.75, -95.01, -89.72, -121.91, -113.13, -35.24, 24.03, 179.46, 376.62, 445.86, 446.56, 446.56, 446.56, 446.56, 446.56, 562.62, 669.36, 669.36, 754.0, 822.54, 822.54, 822.54, 822.54, 822.54, 822.54, 822.54, 822.54], "profit_aud": 822.54}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.62, 3.43, 4.41, 12.47, 5.6, 32.07, 48.16, 135.96, 213.85, 332.4, 347.94, 367.66, 374.58, 374.58, 374.58, 374.58, 374.58, 492.28, 608.35, 715.09, 809.0, 809.0, 809.0, 809.0, 809.0, 809.0, 809.0, 809.0, 809.0, 809.0], "profit_aud": 809.0}}} \ No newline at end of file diff --git a/results/daily/2026-09-13.json b/results/daily/2026-09-13.json new file mode 100644 index 0000000..a881d02 --- /dev/null +++ b/results/daily/2026-09-13.json @@ -0,0 +1 @@ +{"date": "2026-09-13", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-0.52, -1.02, -3.48, -4.7, -4.39, -5.46, -6.04, -6.13, -6.08, -6.88, -5.16, -5.73, -4.5, -4.34, -6.92, -7.18, -11.9, -13.51, -7.72, -7.04, -7.32, -7.76, -8.45, -9.19, -9.56, -11.0, -12.47, -10.7, -9.02, -7.45, -7.08, -6.99, -7.1, -6.14, -4.08, 28.75, 36.16, 42.57, 50.29, 57.24, 61.27, 69.61, 72.55, 68.79, 71.21, 66.91, 69.92, 61.88], "forecast_price": {"naive": [95.51, 98.18, 100.87, 100.78, 92.8, 93.58, 88.14, 86.59, 82.4, 86.31, 84.78, 87.94, 89.13, 83.41, 43.23, 5.78, -6.38, -9.16, -12.94, -14.5, -7.87, -6.44, -6.19, -21.18, -25.76, -70.24, -62.31, -94.84, -124.34, -157.72, -55.39, -5.57, 6.35, 72.15, 89.52, 94.16, 92.85, 85.4, 75.13, 67.71, 54.83, 41.11, 23.66, 11.14, 1.36, 3.98, 0.01, 0.01], "lightgbm": [44.52, 45.12, 45.12, 44.57, 41.78, 42.13, 40.05, 39.22, 38.66, 39.14, 40.27, 42.18, 42.18, 41.25, 40.29, 35.44, 24.58, 10.47, 0.38, -5.41, -3.0, -0.01, 6.89, -3.38, -6.75, -14.91, -15.2, -8.82, -10.12, -16.84, -14.49, 11.98, 17.64, 51.62, 65.12, 79.05, 77.55, 74.43, 69.41, 65.93, 62.78, 53.67, 51.86, 50.63, 50.23, 50.23, 49.61, 49.61], "lstm": [-1.34, -4.16, -9.44, -8.75, -6.04, -7.28, -8.21, -9.0, -7.4, -9.53, -3.35, -3.66, -6.66, -8.54, -15.67, -20.57, -27.28, -35.06, -37.35, -48.56, -42.07, -44.91, -48.32, -47.23, -51.46, -48.8, -54.21, -43.06, -37.75, -28.8, -24.25, -12.09, -6.69, 10.18, 33.58, 47.02, 67.7, 67.23, 54.65, 50.22, 44.96, 43.03, 43.84, 35.03, 37.4, 27.77, 32.74, 36.31]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 1.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 2.62, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.06, 0.19, 0.63, 1.8, 1.8, 2.48, 6.26, 13.92, 21.53, 30.13, 23.67, 23.67, 18.05, 12.63, 13.49, 14.39, 29.27, 46.16, 46.16, 37.35, 32.26, 32.26, 33.32, 39.06, 51.01, 64.76, 80.35, 93.72, 94.84, 95.78, 95.78, 95.78, 98.44, 99.21, 99.72, 99.72, 99.72, 99.72, 99.72, 99.72, 99.72, 186.74, 277.43, 277.43, 366.44, 366.44, 453.85, 453.85], "profit_aud": 453.85}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.49, 18.38, 28.03, 36.84, 30.73, 21.03, 10.47, 11.62, 12.81, 26.57, 34.36, 47.73, 59.01, 68.31, 69.2, 70.07, 70.07, 70.07, 64.98, 100.91, 146.11, 199.32, 199.32, 199.32, 199.32, 199.32, 199.32, 199.32, 110.31, 185.59, 185.59, 185.59], "profit_aud": 185.59}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 8.81, 17.95, 10.43, -0.13, 1.02, 2.21, 15.97, 31.55, 25.61, 36.89, 46.2, 55.05, 55.05, 55.05, 55.05, 55.05, 90.98, 136.18, 189.39, 252.26, 252.26, 252.26, 252.26, 252.26, 252.26, 252.26, 252.26, 252.26, 252.26], "profit_aud": 252.26}, "lstm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 1.67, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 1.12, 2.25, 1.0, 0.5, 1.62, 2.75, 2.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.06, 0.19, 4.54, 10.42, 4.93, 2.67, 10.21, 17.88, 17.88, 26.48, 20.03, 12.86, 7.24, 7.78, 8.65, 9.54, 11.03, 12.72, 13.69, 22.49, 15.39, 15.39, 25.95, 31.7, 43.64, 57.4, 72.98, 74.32, 75.45, 76.38, 77.26, 78.13, 79.02, 79.02, 79.02, 79.02, 124.22, 177.43, 240.3, 311.86, 311.86, 311.86, 311.86, 311.86, 311.86, 228.21, 228.21, 297.82], "profit_aud": 297.82}}} \ No newline at end of file diff --git a/results/daily/2026-09-14.json b/results/daily/2026-09-14.json new file mode 100644 index 0000000..d684104 --- /dev/null +++ b/results/daily/2026-09-14.json @@ -0,0 +1 @@ +{"date": "2026-09-14", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [70.44, 59.05, 60.18, 76.34, 75.3, 76.95, 75.3, 71.28, 69.42, 77.3, 73.09, 60.86, 58.57, 49.48, 47.65, 70.4, 87.92, 79.28, 84.83, 57.38, 70.71, 61.83, 33.03, 34.87, 35.46, 40.21, 22.79, 25.06, 26.76, 30.02, 31.92, 26.86, 27.52, 71.83, 68.95, 70.59, 75.32, 66.16, 59.56, 51.84, 45.81, 53.72, 53.58, 50.4, 35.12, 50.13, 45.41, 35.58], "forecast_price": {"naive": [-0.52, -1.02, -3.48, -4.7, -4.39, -5.46, -6.04, -6.13, -6.08, -6.88, -5.16, -5.73, -4.5, -4.34, -6.92, -7.18, -11.9, -13.51, -7.72, -7.04, -7.32, -7.76, -8.45, -9.19, -9.56, -11.0, -12.47, -10.7, -9.02, -7.45, -7.08, -6.99, -7.1, -6.14, -4.08, 28.75, 36.16, 42.57, 50.29, 57.24, 61.27, 69.61, 72.55, 68.79, 71.21, 66.91, 69.92, 61.88], "lightgbm": [31.23, 31.23, 29.26, 28.93, 31.23, 28.93, 28.86, 28.94, 28.82, 28.82, 30.64, 31.29, 30.96, 30.76, 31.37, 32.37, 17.85, 7.69, 20.63, 15.02, 13.64, 4.23, 4.23, 2.36, 2.07, 2.07, 2.07, 2.07, 2.07, 12.81, 13.19, 18.38, 21.41, 34.46, 44.15, 55.31, 57.29, 59.14, 65.22, 67.44, 68.95, 70.34, 70.53, 70.01, 70.49, 69.33, 70.01, 67.59], "lstm": [67.82, 62.8, 55.84, 54.73, 56.12, 52.56, 51.9, 52.24, 57.18, 55.2, 62.46, 72.06, 78.86, 76.6, 62.66, 48.2, 35.99, 25.54, 24.68, 10.23, 6.29, 1.33, 2.76, 0.1, 0.86, -6.46, -13.52, -11.2, -10.11, -2.05, -1.0, 5.4, 13.36, 37.86, 64.21, 94.77, 113.66, 116.01, 91.78, 86.82, 82.68, 77.16, 74.24, 63.76, 67.11, 58.67, 62.78, 58.91]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -73.82, -149.05, -149.05, -149.05, -72.09, -72.09, -72.09, -72.09, 24.53, 24.53, -51.54, -124.74, -186.59, -246.15, -202.16, -92.25, 6.84, 112.88, 41.15, 129.54, 129.54, 88.25, 83.36, 83.36, 133.62, 105.13, 73.81, 40.36, 40.36, 60.31, 26.73, -7.66, 82.13, 168.31, 256.55, 350.7, 350.7, 350.7, 350.7, 293.44, 353.88, 353.88, 353.88, 309.98, 366.37, 366.37, 366.37], "profit_aud": 366.37}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.5, 2.5, 1.75, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 2.62, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 4.88, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-8.8, -16.19, -23.71, -42.8, -42.8, -52.42, -99.48, -188.58, -275.35, -371.98, -280.62, -280.62, -207.42, -145.57, -151.53, -160.33, -270.23, -369.33, -369.33, -297.6, -248.45, -248.45, -252.58, -274.38, -318.71, -368.97, -397.46, -428.78, -432.13, -435.88, -435.88, -435.88, -446.2, -455.18, -463.79, -463.79, -463.79, -463.79, -463.79, -463.79, -463.79, -396.64, -329.67, -329.67, -285.77, -285.77, -229.0, -229.0], "profit_aud": -229.0}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.72, -106.35, -106.35, -106.35, -106.35, -106.35, -106.35, -18.35, -30.66, -129.76, -23.72, -23.72, -23.72, -23.72, -23.72, -23.72, -68.05, -118.31, -146.8, -178.12, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -192.97, -125.82, -58.85, 4.16, 48.06, 48.06, 48.06, 48.06], "profit_aud": 48.06}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -95.43, -95.43, -191.62, -285.75, -374.85, -374.85, -417.75, -417.75, -341.68, -268.47, -206.63, -147.06, -147.06, -147.06, -147.06, -147.06, -147.06, -147.06, -224.36, -187.2, -230.79, -190.89, -241.15, -269.64, -300.96, -334.41, -353.17, -357.17, -357.17, -357.17, -357.17, -357.17, -268.93, -174.78, -92.08, -17.63, -17.63, -17.63, -17.63, -17.63, -17.63, -17.63, -17.63, -17.63, -17.63], "profit_aud": -17.63}}} \ No newline at end of file diff --git a/results/daily/2026-09-15.json b/results/daily/2026-09-15.json new file mode 100644 index 0000000..2194fc7 --- /dev/null +++ b/results/daily/2026-09-15.json @@ -0,0 +1 @@ +{"date": "2026-09-15", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [40.5, 38.73, 46.96, 38.79, 35.49, 31.88, 15.83, 12.35, 13.15, 17.18, 12.46, 29.14, 58.56, 46.59, 10.47, 14.52, 7.61, -1.41, -4.81, -8.83, -10.86, -7.16, -7.34, -7.03, -7.4, -7.17, -7.28, -6.95, -7.08, -6.57, -6.85, -6.12, -7.86, -3.75, 6.72, 43.8, 61.65, 59.44, 61.03, 61.34, 64.82, 60.57, 66.16, 59.66, 54.27, 50.06, 48.88, 40.19], "forecast_price": {"naive": [70.44, 59.05, 60.18, 76.34, 75.3, 76.95, 75.3, 71.28, 69.42, 77.3, 73.09, 60.86, 58.57, 49.48, 47.65, 70.4, 87.92, 79.28, 84.83, 57.38, 70.71, 61.83, 33.03, 34.87, 35.46, 40.21, 22.79, 25.06, 26.76, 30.02, 31.92, 26.86, 27.52, 71.83, 68.95, 70.59, 75.32, 66.16, 59.56, 51.84, 45.81, 53.72, 53.58, 50.4, 35.12, 50.13, 45.41, 35.58], "lightgbm": [57.67, 56.35, 56.35, 60.59, 59.63, 58.49, 57.94, 52.96, 52.5, 56.91, 53.32, 50.69, 50.69, 51.22, 49.57, 51.95, 56.98, 56.09, 57.47, 41.16, 45.38, 40.13, 26.72, 26.72, 26.72, 27.48, 20.51, 21.83, 22.44, 23.35, 25.16, 25.51, 30.55, 56.94, 60.13, 69.59, 74.74, 66.79, 64.49, 60.55, 55.61, 62.43, 62.43, 57.49, 52.86, 59.67, 54.85, 52.84], "lstm": [41.82, 38.55, 34.34, 30.63, 29.16, 25.13, 25.0, 27.51, 26.49, 24.57, 30.12, 37.24, 44.01, 48.72, 39.38, 35.82, 28.66, 21.25, 16.8, 8.47, 9.88, 4.23, 6.2, 6.42, 3.3, -1.7, -2.0, 2.39, 0.5, 6.11, 3.54, 13.21, 14.61, 31.46, 49.95, 66.65, 83.24, 89.88, 74.55, 68.47, 58.64, 59.15, 54.21, 49.98, 44.87, 41.63, 46.45, 52.67]}, "methods": {"perfect_foresight": {"charge_mw": [0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.5, 2.5, 2.0, 2.5, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 3.12, 4.25, 4.12, 5.0, 4.88, 5.0, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-5.67, -54.08, 4.61, 4.61, 4.61, 4.61, -1.96, -17.4, -33.84, -33.84, -49.41, -12.99, 60.21, 118.45, 105.36, 121.69, 121.69, 121.87, 122.47, 133.51, 147.09, 147.09, 156.27, 156.27, 165.51, 165.51, 172.79, 172.79, 174.56, 174.56, 176.27, 169.48, 179.31, 179.77, 179.77, 179.77, 256.84, 256.84, 256.84, 333.51, 414.54, 414.54, 497.24, 497.24, 497.24, 497.24, 497.24, 497.24], "profit_aud": 497.24}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.25, 2.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.88, 2.62, 1.38, 0.12, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 1.12, 2.25, 3.38, 3.38, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -48.41, -107.11, -107.11, -107.11, -75.22, -75.22, -75.22, -75.22, -53.75, -53.75, -90.17, -163.37, -221.62, -234.71, -225.63, -216.11, -217.87, -223.88, -212.84, -226.42, -226.42, -217.24, -216.26, -216.26, -225.22, -216.12, -207.44, -198.58, -198.58, -202.86, -195.2, -185.37, -190.06, -181.66, -126.91, -49.84, -49.84, -49.84, -49.84, -130.87, -62.74, -62.74, -62.74, -130.57, -74.26, -74.26, -74.26], "profit_aud": -74.26}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.56, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 1.38, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -36.42, -52.82, -52.82, -65.91, -65.91, -56.39, -56.39, -62.4, -62.4, -62.4, -62.4, -62.4, -62.4, -62.4, -62.4, -53.31, -44.62, -35.76, -27.55, -23.75, -23.75, -23.75, -23.75, -23.75, 31.0, 108.07, 182.37, 258.66, 258.66, 177.63, 245.77, 245.77, 245.77, 177.93, 234.25, 234.25, 234.25], "profit_aud": 234.25}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -39.85, -59.64, -66.5, -82.93, -104.4, -104.4, -67.98, 5.22, 63.46, 76.55, 76.55, 76.55, 76.55, 76.55, 87.59, 75.37, 84.32, 84.32, 76.41, 80.52, 89.48, 98.57, 107.26, 116.12, 108.73, 117.29, 117.29, 117.29, 117.29, 117.29, 117.29, 194.35, 268.65, 344.94, 421.61, 421.61, 421.61, 421.61, 421.61, 414.01, 351.44, 351.44, 401.68], "profit_aud": 401.68}}} \ No newline at end of file diff --git a/results/daily/2026-09-16.json b/results/daily/2026-09-16.json new file mode 100644 index 0000000..2528cea --- /dev/null +++ b/results/daily/2026-09-16.json @@ -0,0 +1 @@ +{"date": "2026-09-16", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [53.54, 43.3, 50.17, 52.9, 40.33, 51.74, 24.58, 14.29, 24.52, 31.08, 62.46, 74.46, 90.9, 74.13, 39.88, 43.81, 11.69, -5.07, -6.72, -9.19, -18.3, -16.24, -18.75, -20.0, -34.74, -69.85, -155.53, -158.91, -162.62, -181.38, -154.38, -125.58, -99.25, -60.93, 84.05, 100.13, 104.53, 102.32, 100.19, 95.68, 84.14, 87.18, 85.39, 86.43, 89.13, 84.4, 85.08, 89.71], "forecast_price": {"naive": [40.5, 38.73, 46.96, 38.79, 35.49, 31.88, 15.83, 12.35, 13.15, 17.18, 12.46, 29.14, 58.56, 46.59, 10.47, 14.52, 7.61, -1.41, -4.81, -8.83, -10.86, -7.16, -7.34, -7.03, -7.4, -7.17, -7.28, -6.95, -7.08, -6.57, -6.85, -6.12, -7.86, -3.75, 6.72, 43.8, 61.65, 59.44, 61.03, 61.34, 64.82, 60.57, 66.16, 59.66, 54.27, 50.06, 48.88, 40.19], "lightgbm": [34.51, 35.59, 31.09, 28.63, 29.37, 28.8, 26.62, 26.62, 26.62, 26.62, 26.62, 29.09, 35.94, 29.23, 19.58, 18.0, 10.42, 7.68, 5.83, 0.66, -0.08, 1.87, 0.74, 0.3, 0.1, 0.1, -0.19, -0.19, 0.1, 0.3, 0.67, 2.95, 1.65, 15.49, 32.76, 52.19, 63.31, 63.91, 63.77, 63.77, 61.71, 61.66, 63.32, 61.22, 59.76, 57.55, 54.97, 50.06], "lstm": [46.14, 46.9, 40.54, 37.97, 35.77, 33.06, 31.21, 32.7, 32.54, 34.57, 41.02, 44.52, 51.77, 51.88, 39.97, 34.65, 27.86, 21.28, 17.66, 8.77, 8.11, 3.31, 4.26, 2.27, -0.11, -0.7, -4.38, -1.06, -2.57, 3.45, 2.85, 10.22, 13.77, 31.39, 48.5, 71.54, 88.25, 92.11, 74.15, 64.29, 64.48, 57.46, 56.39, 48.21, 48.73, 40.06, 46.97, 48.83]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 1.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -54.13, -54.13, 5.39, -45.03, -12.69, -43.42, -61.28, -91.93, -130.77, -52.7, 40.37, 153.98, 246.65, 246.65, 246.65, 246.65, 247.28, 248.12, 249.27, 272.14, 254.11, 256.46, 258.96, 263.3, 272.03, 466.45, 665.09, 868.37, 1095.09, 1191.59, 1207.28, 1219.69, 1227.31, 1227.31, 1352.47, 1483.14, 1611.05, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28, 1736.28], "profit_aud": 1736.28}, "naive": {"charge_mw": [0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.5, 2.5, 2.0, 2.5, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.38, 1.5, 2.62, 2.62, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.12, 3.25, 3.12, 4.25, 4.12, 5.0, 4.88, 5.0, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-7.5, -61.62, 1.09, 1.09, 1.09, 1.09, -9.12, -26.98, -57.62, -57.62, -135.7, -42.63, 70.99, 163.66, 113.81, 163.1, 163.1, 163.73, 164.57, 176.06, 198.93, 198.93, 222.37, 222.37, 265.79, 265.79, 421.32, 421.32, 461.98, 461.98, 500.57, 361.18, 485.24, 492.86, 492.86, 492.86, 623.53, 623.53, 623.53, 743.13, 848.31, 848.31, 955.05, 955.05, 955.05, 955.05, 955.05, 955.05], "profit_aud": 955.05}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.35, -82.42, -82.42, 31.2, 31.2, 31.2, 31.2, 31.2, 31.2, 31.2, 42.69, 65.56, 45.25, 26.51, 26.51, 45.79, 133.1, 327.52, 526.16, 729.44, 729.44, 729.44, 588.16, 712.22, 712.22, 712.22, 712.22, 712.22, 840.13, 965.37, 1084.97, 1084.97, 1084.97, 1191.71, 1191.71, 1191.71, 1191.71, 1191.71, 1191.71], "profit_aud": 1191.71}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -64.67, -95.4, -113.26, -143.9, -161.15, -83.08, 9.99, 123.61, 216.27, 216.27, 216.27, 216.27, 216.27, 216.27, 216.27, 216.27, 236.58, 215.49, 215.49, 237.2, 324.51, 518.93, 717.57, 920.85, 716.8, 909.78, 909.78, 909.78, 909.78, 909.78, 1034.94, 1165.61, 1293.52, 1418.75, 1418.75, 1418.75, 1418.75, 1418.75, 1418.75, 1418.75, 1313.25, 1313.25, 1414.18], "profit_aud": 1414.18}}} \ No newline at end of file diff --git a/results/daily/2026-09-17.json b/results/daily/2026-09-17.json new file mode 100644 index 0000000..3906793 --- /dev/null +++ b/results/daily/2026-09-17.json @@ -0,0 +1 @@ +{"date": "2026-09-17", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [92.63, 88.39, 82.31, 80.99, 80.22, 81.3, 76.5, 68.74, 69.72, 70.86, 77.34, 86.3, 88.25, 84.7, 80.8, 65.37, 63.4, 49.03, 9.91, -2.31, -5.61, -6.72, -5.79, 3.14, -20.67, -9.61, -9.7, -40.4, -2.96, -4.14, -7.16, -3.29, -23.14, 75.33, 102.68, 119.8, 122.31, 114.84, 115.64, 112.63, 113.38, 117.12, 115.51, 107.47, 104.65, 109.59, 96.54, 88.52], "forecast_price": {"naive": [53.54, 43.3, 50.17, 52.9, 40.33, 51.74, 24.58, 14.29, 24.52, 31.08, 62.46, 74.46, 90.9, 74.13, 39.88, 43.81, 11.69, -5.07, -6.72, -9.19, -18.3, -16.24, -18.75, -20.0, -34.74, -69.85, -155.53, -158.91, -162.62, -181.38, -154.38, -125.58, -99.25, -60.93, 84.05, 100.13, 104.53, 102.32, 100.19, 95.68, 84.14, 87.18, 85.39, 86.43, 89.13, 84.4, 85.08, 89.71], "lightgbm": [38.65, 36.66, 38.25, 37.73, 36.38, 37.52, 39.07, 38.4, 39.07, 38.25, 38.05, 41.74, 49.46, 47.69, 38.07, 33.17, 27.75, 12.01, 1.64, -7.21, -8.28, -8.37, -8.37, -8.37, -9.43, -23.71, -23.71, -23.71, -23.71, -23.18, -21.67, -19.29, -15.95, -8.34, 55.4, 77.72, 78.22, 78.35, 78.22, 77.39, 72.41, 71.72, 70.65, 69.95, 71.3, 68.03, 67.78, 69.18], "lstm": [82.81, 78.08, 73.31, 72.13, 65.63, 67.59, 56.35, 57.64, 55.79, 63.21, 65.53, 69.87, 84.78, 73.61, 51.77, 33.11, 17.61, 10.07, 4.22, -4.27, -8.92, -18.66, -19.74, -23.68, -33.3, -33.86, -36.37, -35.75, -32.09, -25.34, -19.27, -11.55, 1.27, 22.84, 61.44, 91.67, 116.61, 119.55, 102.14, 93.01, 79.42, 68.57, 69.71, 65.69, 61.39, 53.33, 56.01, 57.04]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -85.92, -173.08, -261.66, -261.66, -153.79, -43.48, 30.64, 30.64, 30.64, 30.64, 30.64, 30.64, 30.93, 31.63, 40.02, 44.37, 48.29, 74.12, 86.14, 98.26, 148.76, 145.05, 146.09, 155.03, 151.38, 180.31, 180.31, 180.31, 330.05, 482.94, 482.94, 627.49, 627.49, 627.49, 773.89, 773.89, 773.89, 773.89, 773.89, 773.89, 773.89], "profit_aud": 773.89}, "naive": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 1.12, 1.12, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -110.49, -110.49, -19.37, -119.64, -68.83, -164.45, -250.38, -337.53, -426.11, -329.44, -221.57, -111.26, -5.38, -5.38, -5.38, -5.38, -11.5, -12.74, -12.45, -5.44, -12.89, -12.17, -12.56, -9.98, -8.78, 3.34, 53.84, 57.55, 62.72, 67.19, 67.6, 70.49, 61.08, 61.08, 210.82, 363.71, 507.26, 651.81, 651.81, 651.81, 651.81, 651.81, 651.81, 651.81, 651.81, 651.81, 651.81], "profit_aud": 651.81}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 1.12, 1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, -110.49, -110.49, -110.49, -210.76, -312.38, -312.38, -312.38, -312.38, -312.38, -312.38, -236.87, -126.56, -20.68, -20.68, -20.68, -20.68, -20.68, -20.68, -20.39, -19.69, -18.85, -18.13, -18.52, -15.93, -3.92, 8.2, 58.7, 62.4, 64.99, 65.88, 66.29, 69.19, 59.77, 59.77, 209.51, 362.4, 505.95, 650.5, 650.5, 650.5, 650.5, 650.5, 650.5, 650.5, 650.5, 650.5, 650.5], "profit_aud": 650.5}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -95.62, -181.55, -268.7, -268.7, -268.7, -193.19, -82.88, 23.0, 23.0, 23.0, 23.0, 23.0, 23.0, 23.29, 23.99, 24.83, 25.55, 25.16, 51.0, 63.01, 75.13, 125.63, 127.48, 128.0, 128.89, 129.3, 129.3, 129.3, 129.3, 129.3, 282.19, 425.74, 570.29, 711.08, 711.08, 711.08, 711.08, 711.08, 711.08, 711.08, 711.08, 711.08], "profit_aud": 711.08}}} \ No newline at end of file diff --git a/results/daily/2026-09-18.json b/results/daily/2026-09-18.json new file mode 100644 index 0000000..6b23447 --- /dev/null +++ b/results/daily/2026-09-18.json @@ -0,0 +1 @@ +{"date": "2026-09-18", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [99.4, 96.96, 92.42, 87.32, 89.43, 92.83, 91.79, 88.92, 91.18, 92.86, 85.92, 53.54, 81.25, 77.03, 11.98, 2.37, -4.76, -8.99, -8.81, -12.38, -21.48, -26.18, -37.49, -54.78, -40.25, -63.46, -31.05, -22.67, -22.69, -19.34, -12.32, -6.53, -4.51, -4.19, 47.23, 54.28, 52.77, 45.06, 42.74, 39.66, 39.88, 29.02, 33.12, 32.28, 32.02, 21.32, 34.42, 38.56], "forecast_price": {"naive": [92.63, 88.39, 82.31, 80.99, 80.22, 81.3, 76.5, 68.74, 69.72, 70.86, 77.34, 86.3, 88.25, 84.7, 80.8, 65.37, 63.4, 49.03, 9.91, -2.31, -5.61, -6.72, -5.79, 3.14, -20.67, -9.61, -9.7, -40.4, -2.96, -4.14, -7.16, -3.29, -23.14, 75.33, 102.68, 119.8, 122.31, 114.84, 115.64, 112.63, 113.38, 117.12, 115.51, 107.47, 104.65, 109.59, 96.54, 88.52], "lightgbm": [61.9, 59.8, 60.54, 59.27, 57.05, 57.96, 54.08, 50.6, 51.52, 51.9, 56.98, 58.95, 61.19, 61.68, 57.96, 52.46, 39.47, 24.1, 11.73, 5.8, 3.58, 2.31, 2.31, 5.08, -2.6, -1.53, -6.06, -14.25, 1.39, 1.22, -1.23, 10.4, 0.76, 44.64, 71.47, 85.86, 85.86, 84.28, 84.28, 83.53, 82.93, 82.26, 81.15, 76.15, 75.86, 76.15, 76.28, 73.58], "lstm": [93.36, 87.03, 82.22, 81.2, 78.44, 70.94, 62.48, 60.83, 58.43, 54.81, 58.84, 61.24, 67.17, 56.5, 42.2, 30.45, 20.51, 9.98, 6.33, -6.92, -8.43, -10.59, -12.79, -20.63, -22.49, -26.38, -27.72, -29.45, -19.82, -14.99, -9.78, 2.33, 10.74, 34.63, 67.8, 114.89, 126.79, 141.12, 108.99, 106.53, 89.84, 83.92, 83.95, 74.48, 76.89, 64.44, 64.98, 65.6]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -66.92, 24.48, 24.48, 24.48, 24.48, 25.08, 27.33, 27.33, 28.88, 31.56, 34.83, 81.69, 150.16, 200.48, 279.8, 299.21, 299.21, 304.89, 307.31, 308.84, 309.66, 310.23, 310.75, 369.79, 437.64, 503.61, 559.93, 559.93, 559.93, 559.93, 523.65, 523.65, 523.65, 523.65, 496.99, 531.41, 579.61], "profit_aud": 579.61}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -111.15, -225.13, -341.21, -341.21, -274.28, -172.71, -105.31, -105.31, -105.31, -105.31, -105.31, -105.31, -103.76, -101.08, -68.35, -40.24, -108.71, -58.39, 20.94, 59.76, 88.09, 59.73, 64.56, 79.96, 72.71, 78.35, 78.35, 78.35, 146.21, 212.17, 212.17, 265.6, 265.6, 265.6, 301.88, 301.88, 301.88, 301.88, 301.88, 301.88, 301.88], "profit_aud": 301.88}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.39, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -111.15, -225.13, -341.21, -341.21, -294.36, -192.79, -96.5, -96.5, -96.5, -96.5, -96.5, -96.5, -96.5, -96.5, -92.84, -45.98, -114.45, -64.13, 15.2, 54.02, 82.35, 53.99, 67.43, 82.82, 75.48, 81.12, 81.12, 81.12, 148.97, 214.94, 271.26, 324.69, 324.69, 324.69, 324.69, 324.69, 324.69, 324.69, 324.69, 324.69, 324.69], "profit_aud": 324.69}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -12.77, -128.84, -128.84, -128.84, -27.27, -27.27, -27.27, -27.27, -27.27, -27.27, -27.27, -25.72, -23.04, -19.77, -15.08, 19.15, 69.47, 148.8, 187.62, 215.95, 218.79, 221.21, 222.75, 222.75, 222.75, 222.75, 222.75, 290.6, 356.56, 412.88, 466.31, 466.31, 466.31, 466.31, 466.31, 466.31, 466.31, 466.31, 466.31, 466.31], "profit_aud": 466.31}}} \ No newline at end of file diff --git a/results/daily/2026-09-19.json b/results/daily/2026-09-19.json new file mode 100644 index 0000000..832d6bf --- /dev/null +++ b/results/daily/2026-09-19.json @@ -0,0 +1 @@ +{"date": "2026-09-19", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [34.41, 28.99, 11.21, 0.01, -0.09, -0.55, -0.54, -0.54, -0.54, -0.18, 0.01, 0.01, 0.01, -1.04, -5.58, -10.24, -19.03, -25.52, -21.82, -51.01, -88.17, -28.02, -34.52, -40.33, -56.27, -55.79, -56.16, -51.14, -38.36, -89.37, -95.52, -91.15, -26.42, -5.2, 38.63, 61.56, 69.31, 74.53, 76.82, 62.0, 73.23, 78.6, 79.24, 73.73, 82.76, 78.35, 80.1, 65.27], "forecast_price": {"naive": [99.4, 96.96, 92.42, 87.32, 89.43, 92.83, 91.79, 88.92, 91.18, 92.86, 85.92, 53.54, 81.25, 77.03, 11.98, 2.37, -4.76, -8.99, -8.81, -12.38, -21.48, -26.18, -37.49, -54.78, -40.25, -63.46, -31.05, -22.67, -22.69, -19.34, -12.32, -6.53, -4.51, -4.19, 47.23, 54.28, 52.77, 45.06, 42.74, 39.66, 39.88, 29.02, 33.12, 32.28, 32.02, 21.32, 34.42, 38.56], "lightgbm": [46.92, 47.23, 46.03, 44.86, 45.02, 45.75, 44.9, 44.17, 44.62, 46.32, 44.85, 48.86, 45.95, 46.22, 27.03, 12.32, 6.34, -10.42, -12.93, -14.93, -14.54, -12.65, -18.34, -28.74, -27.92, -31.76, -21.19, -19.02, -18.44, -16.39, -14.98, 2.45, 10.92, 30.27, 48.73, 62.78, 60.08, 54.21, 52.28, 51.23, 49.28, 44.46, 43.74, 44.09, 44.36, 42.76, 43.74, 43.82], "lstm": [25.23, 22.93, 18.07, 17.82, 16.69, 13.02, 10.38, 12.12, 10.91, 10.93, 14.6, 15.51, 12.98, 9.98, -5.43, -9.27, -13.05, -21.14, -21.82, -30.29, -30.68, -31.29, -32.48, -36.88, -38.56, -33.93, -36.91, -30.52, -26.89, -19.03, -15.21, -2.51, 2.52, 18.38, 39.31, 60.1, 72.5, 82.34, 67.07, 58.93, 52.7, 50.23, 53.32, 49.08, 48.54, 39.17, 44.57, 48.72]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 1.88, 3.0, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.01, 0.69, 1.37, 2.04, 2.72, 2.59, 2.6, 2.62, 2.63, 2.76, 3.46, 4.74, 7.11, 39.01, 14.8, 78.56, 188.78, 153.76, 120.28, 125.32, 195.65, 244.47, 314.67, 314.67, 266.72, 378.43, 497.82, 611.77, 615.07, 615.72, 615.72, 615.72, 615.72, 615.72, 702.14, 624.64, 624.64, 722.89, 821.94, 821.94, 925.39, 925.39, 1025.51, 1025.51], "profit_aud": 1025.51}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01, -0.0, -0.0, -0.0, -0.0, 2.38, 8.76, 8.76, 15.13, 26.16, 29.66, 72.81, 123.22, 193.55, 263.29, 298.39, 298.39, 307.98, 319.15, 331.09, 342.49, 345.79, 346.44, 394.72, 471.67, 558.31, 651.47, 651.47, 651.47, 651.47, 553.23, 553.23, 553.23, 553.23, 455.29, 535.39, 616.98], "profit_aud": 616.98}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.0, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.19, 5.92, 69.69, 91.73, 56.71, 61.02, 111.44, 181.77, 251.51, 321.71, 353.67, 358.47, 369.64, 381.58, 381.58, 381.58, 381.58, 381.58, 458.53, 545.17, 638.33, 734.35, 734.35, 734.35, 734.35, 734.35, 734.35, 734.35, 734.35, 734.35, 734.35], "profit_aud": 734.35}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.75, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 2.25, 3.38, 2.12, 0.88, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.68, 0.68, 1.35, 1.57, 1.58, 1.6, 1.6, 1.6, 2.3, 3.58, 5.96, 9.15, 11.88, 18.26, 29.28, 32.78, 54.35, 104.76, 175.09, 244.84, 315.04, 321.43, 326.22, 337.4, 349.33, 360.73, 360.73, 360.73, 360.73, 437.68, 524.32, 617.48, 713.5, 713.5, 713.5, 713.5, 713.5, 713.5, 713.5, 615.57, 615.57, 689.0], "profit_aud": 689.0}}} \ No newline at end of file diff --git a/results/daily/2026-09-20.json b/results/daily/2026-09-20.json new file mode 100644 index 0000000..805d403 --- /dev/null +++ b/results/daily/2026-09-20.json @@ -0,0 +1 @@ +{"date": "2026-09-20", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [10.33, 2.81, -0.15, -0.94, -2.27, -6.43, -7.05, -7.07, -7.1, -7.11, -7.1, -7.1, -6.14, -8.72, -32.18, -46.13, -61.03, -60.16, -76.79, -63.41, -80.1, -65.44, -58.64, -65.54, -56.6, -57.76, -56.26, -55.59, -48.39, -41.66, -20.9, -16.27, -8.85, -5.23, -17.82, -61.65, -51.99, -35.51, -20.57, -0.91, -0.97, -0.77, -5.78, -1.93, -0.88, -0.67, -0.85, -1.03], "forecast_price": {"naive": [34.41, 28.99, 11.21, 0.01, -0.09, -0.55, -0.54, -0.54, -0.54, -0.18, 0.01, 0.01, 0.01, -1.04, -5.58, -10.24, -19.03, -25.52, -21.82, -51.01, -88.17, -28.02, -34.52, -40.33, -56.27, -55.79, -56.16, -51.14, -38.36, -89.37, -95.52, -91.15, -26.42, -5.2, 38.63, 61.56, 69.31, 74.53, 76.82, 62.0, 73.23, 78.6, 79.24, 73.73, 82.76, 78.35, 80.1, 65.27], "lightgbm": [26.56, 25.09, 24.21, 21.47, 21.47, 21.47, 23.82, 22.11, 23.82, 23.03, 21.47, 21.85, 21.96, 19.58, 2.05, -7.89, -14.29, -16.75, -13.27, -27.6, -28.42, -18.36, -20.63, -27.11, -30.19, -30.19, -30.19, -29.19, -27.11, -29.6, -27.44, -25.69, -8.33, 14.31, 35.87, 56.4, 60.39, 63.81, 64.81, 58.12, 63.76, 69.11, 69.0, 63.94, 68.58, 68.29, 68.29, 60.42], "lstm": [70.51, 61.38, 56.01, 56.09, 53.0, 51.68, 45.7, 45.47, 40.04, 38.82, 40.11, 34.49, 30.76, 14.37, -2.11, -12.6, -23.49, -24.11, -22.57, -34.79, -35.88, -38.53, -40.72, -42.49, -46.73, -50.16, -55.61, -49.77, -40.75, -31.9, -27.98, -16.22, -6.86, 14.3, 47.14, 73.04, 91.09, 97.81, 80.67, 75.63, 73.99, 60.01, 58.8, 56.65, 55.37, 49.72, 52.77, 50.89]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.75, 2.5, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.75, 2.88, 4.0, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0], "cumulative_profit_aud": [0.0, 0.0, 0.02, 0.14, 0.42, 1.22, 2.1, 2.99, 3.88, 12.76, 12.76, 15.42, 7.74, 8.83, 12.86, 18.62, 33.88, 33.88, 129.86, 177.42, 277.54, 359.34, 359.34, 441.27, 441.27, 455.71, 462.74, 469.69, 475.74, 480.95, 483.56, 463.22, 452.15, 445.62, 433.23, 510.3, 575.28, 619.66, 645.37, 644.61, 644.61, 643.65, 650.87, 653.29, 653.4, 652.56, 652.77, 654.06], "profit_aud": 654.06}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 1.88, 3.0, 2.88, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.28, 8.32, 17.13, 25.97, 34.84, 29.9, 21.03, 12.15, 4.48, 5.57, 9.59, 15.35, 22.98, 98.18, 12.95, 92.21, 192.34, 110.54, 53.66, 61.85, 132.6, 183.14, 253.47, 253.47, 192.98, 245.05, 271.18, 291.52, 292.63, 293.28, 293.28, 293.28, 293.28, 293.28, 270.14, 271.28, 271.28, 270.32, 263.09, 263.09, 261.99, 261.99, 260.93, 260.93], "profit_aud": 260.93}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 1.0, 2.5, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.77, 13.39, 88.59, 3.36, 82.63, 182.75, 100.95, 44.07, 52.27, 123.01, 195.21, 265.54, 307.23, 307.23, 359.3, 361.91, 363.94, 365.05, 365.05, 365.05, 365.05, 365.05, 365.05, 341.91, 343.05, 343.05, 342.09, 334.86, 334.86, 333.76, 333.76, 332.7, 332.7], "profit_aud": 332.7}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.02, 9.79, 17.42, 32.46, 32.46, 40.38, 50.4, 58.57, 65.9, 106.87, 177.62, 249.81, 320.14, 389.63, 395.68, 400.88, 403.5, 405.53, 406.64, 406.64, 406.64, 406.64, 341.65, 297.27, 271.56, 270.42, 270.42, 270.42, 270.42, 270.42, 270.42, 270.42, 270.42, 270.42], "profit_aud": 270.42}}} \ No newline at end of file diff --git a/results/daily/2026-09-21.json b/results/daily/2026-09-21.json new file mode 100644 index 0000000..3cbc40a --- /dev/null +++ b/results/daily/2026-09-21.json @@ -0,0 +1 @@ +{"date": "2026-09-21", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-1.05, -1.39, -1.08, -0.61, -0.26, -0.34, -0.35, -0.27, -0.08, 8.9, 12.59, 26.78, 39.61, 26.69, 17.15, 15.85, 5.16, 4.75, -1.79, -3.68, -4.72, -5.79, -6.56, -4.84, -4.93, -5.91, -3.81, -2.35, -4.34, -5.48, -4.25, -1.1, -1.0, 8.51, 78.73, 104.62, 93.24, 92.8, 90.46, 90.59, 85.4, 87.64, 93.86, 87.87, 90.56, 89.2, 87.36, 84.42], "forecast_price": {"naive": [10.33, 2.81, -0.15, -0.94, -2.27, -6.43, -7.05, -7.07, -7.1, -7.11, -7.1, -7.1, -6.14, -8.72, -32.18, -46.13, -61.03, -60.16, -76.79, -63.41, -80.1, -65.44, -58.64, -65.54, -56.6, -57.76, -56.26, -55.59, -48.39, -41.66, -20.9, -16.27, -8.85, -5.23, -17.82, -61.65, -51.99, -35.51, -20.57, -0.91, -0.97, -0.77, -5.78, -1.93, -0.88, -0.67, -0.85, -1.03], "lightgbm": [18.49, 11.5, 11.5, 13.24, 13.24, 9.5, 9.5, 9.5, 9.5, 9.98, 9.98, 8.73, 8.73, 2.58, -2.64, -0.15, -1.82, -1.98, -6.15, -6.88, -10.09, -13.57, -16.98, -16.54, -16.54, -13.57, -16.98, -16.52, -15.84, -15.14, -4.0, 2.81, 9.13, 29.81, 27.22, 17.13, 25.52, 40.09, 45.16, 42.35, 44.54, 45.3, 46.05, 44.42, 43.52, 44.42, 44.54, 42.01], "lstm": [8.79, 9.71, 6.51, 4.76, 1.89, 2.61, 2.09, 4.42, 6.04, 11.15, 18.35, 22.68, 25.49, 26.8, 16.1, 13.35, 4.55, -5.96, -6.18, -13.12, -13.46, -17.41, -19.88, -20.5, -21.42, -25.54, -31.78, -31.2, -29.95, -28.99, -26.49, -18.27, -13.35, 7.06, 21.23, 39.95, 55.48, 64.51, 59.51, 59.78, 55.62, 54.89, 53.63, 44.22, 41.02, 35.66, 42.81, 45.92]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [1.31, 3.06, 4.4, 5.16, 4.84, 5.1, 5.54, 5.57, 5.58, 5.58, 5.58, 39.06, 88.57, 121.94, 143.38, 143.38, 143.38, 143.38, 143.6, 144.06, 144.65, 151.89, 160.09, 163.11, 169.28, 176.67, 171.9, 168.96, 174.39, 181.24, 182.84, 182.97, 183.1, 183.1, 183.1, 313.88, 430.42, 546.43, 546.43, 546.43, 546.43, 546.43, 663.75, 663.75, 663.75, 663.75, 663.75, 663.75], "profit_aud": 663.75}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.83, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5], "discharge_mw": [0.0, -0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 1.75, 2.5, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 2.5, 2.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.75, 2.88, 4.0, 3.88, 5.0, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.5, 1.62, 2.75, 3.88, 5.0, 4.12, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0], "cumulative_profit_aud": [-0.0, 0.0, 0.13, 0.21, 0.24, 0.29, 0.33, 0.36, 0.37, -10.75, -10.75, -20.79, 28.71, 25.38, 23.23, 21.25, 19.96, 19.96, 22.2, 24.96, 30.86, 38.1, 38.1, 44.15, 44.15, 45.63, 46.11, 46.4, 46.94, 47.63, 48.16, 46.78, 45.53, 56.16, 110.88, -19.9, -136.44, -252.45, -365.52, -289.88, -289.88, -180.32, -297.65, -407.49, -418.81, -307.3, -329.14, -434.68], "profit_aud": -434.68}, "lightgbm": {"charge_mw": [0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.0, 2.25, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, 1.12, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.12, 3.25, 4.38, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 4.88, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [-0.0, 1.74, 3.09, 2.32, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, -19.38, -1.78, -2.43, -3.02, -2.8, -2.34, -1.75, -1.02, 7.17, 13.22, 19.39, 12.0, 16.77, 19.71, 22.97, 23.65, 24.18, 24.18, 24.18, 34.81, 34.81, -95.96, -109.02, -109.02, 4.05, 4.05, 4.05, 113.61, 230.93, 230.93, 230.93, 230.93, 340.13, 340.13], "profit_aud": 340.13}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, 0.34, 0.66, 1.1, 1.54, 1.87, 1.87, 1.87, 17.61, 51.08, 100.59, 133.96, 133.96, 133.96, 133.96, 133.37, 133.59, 134.05, 134.64, 135.36, 136.18, 136.79, 137.41, 138.14, 142.91, 145.85, 151.28, 158.13, 160.79, 160.93, 161.05, 161.05, 161.05, 161.05, 161.05, 277.06, 390.13, 503.37, 610.12, 610.12, 610.12, 610.12, 597.44, 485.93, 485.93, 591.46], "profit_aud": 591.46}}} \ No newline at end of file diff --git a/results/daily/2026-09-22.json b/results/daily/2026-09-22.json new file mode 100644 index 0000000..0ede6dd --- /dev/null +++ b/results/daily/2026-09-22.json @@ -0,0 +1 @@ +{"date": "2026-09-22", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [89.64, 86.93, 83.3, 74.66, 80.02, 79.6, 80.41, 76.55, 80.71, 82.57, 75.82, 79.47, 75.66, 82.6, 78.99, 75.71, 36.35, 19.42, 4.49, 1.76, 0.12, -2.06, 0.44, 4.64, 8.87, 9.75, 10.98, 6.15, 9.16, 7.41, 5.24, 19.42, 25.44, 60.78, 90.25, 105.03, 108.01, 105.67, 102.27, 94.47, 89.23, 91.75, 92.53, 90.22, 91.31, 89.14, 84.64, 80.38], "forecast_price": {"naive": [-1.05, -1.39, -1.08, -0.61, -0.26, -0.34, -0.35, -0.27, -0.08, 8.9, 12.59, 26.78, 39.61, 26.69, 17.15, 15.85, 5.16, 4.75, -1.79, -3.68, -4.72, -5.79, -6.56, -4.84, -4.93, -5.91, -3.81, -2.35, -4.34, -5.48, -4.25, -1.1, -1.0, 8.51, 78.73, 104.62, 93.24, 92.8, 90.46, 90.59, 85.4, 87.64, 93.86, 87.87, 90.56, 89.2, 87.36, 84.42], "lightgbm": [33.48, 33.48, 35.17, 33.48, 33.48, 33.48, 33.82, 33.82, 33.82, 35.17, 35.17, 34.21, 36.9, 35.37, 20.85, 20.22, 17.65, 14.75, 14.09, 3.19, 0.17, -0.36, -0.36, 1.77, 1.77, -0.36, 3.27, 3.27, 3.27, 8.03, 4.28, 12.56, 9.08, 23.5, 58.73, 78.62, 80.51, 80.3, 80.15, 81.99, 78.98, 79.15, 79.48, 78.24, 77.38, 76.54, 73.96, 73.96], "lstm": [92.77, 88.27, 82.88, 82.76, 80.43, 71.38, 74.77, 72.11, 77.1, 70.33, 75.54, 77.71, 83.62, 79.98, 59.45, 48.67, 34.06, 27.17, 21.76, 11.46, 11.03, 5.54, 5.4, 2.83, -0.87, -1.95, -4.33, -1.81, 1.09, 6.15, 5.24, 15.65, 23.47, 49.64, 82.76, 116.89, 137.5, 152.83, 131.43, 117.19, 103.87, 93.79, 90.03, 79.25, 81.36, 72.34, 70.56, 71.52]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.49, -4.69, -4.84, -2.27, -2.82, -2.82, -2.82, 9.37, 23.1, 15.41, 23.43, 14.16, 7.61, 7.61, 7.61, 7.61, 7.61, 138.9, 273.92, 406.01, 533.85, 533.85, 533.85, 533.85, 533.85, 533.85, 533.85, 533.85, 533.85, 533.85], "profit_aud": 533.85}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 1.75, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 2.5, 3.62, 4.75, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-112.05, -220.71, -324.84, -418.17, -318.14, -377.84, -478.35, -487.92, -498.01, -498.01, -498.01, -398.67, -304.09, -200.85, -102.12, -102.12, -102.12, -102.12, -102.68, -102.9, -102.91, -100.34, -100.88, -103.78, -114.87, -127.06, -113.33, -105.65, -117.09, -126.36, -128.33, -130.75, -133.93, -133.93, -133.93, -2.64, 132.37, 264.46, 264.46, 264.46, 264.46, 264.46, 380.13, 380.13, 380.13, 380.13, 380.13, 380.13], "profit_aud": 380.13}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16, 2.42, 1.87, -0.7, -0.7, -12.89, -12.89, -12.89, -12.89, -4.55, -11.11, 10.74, -21.06, -21.06, -21.06, -21.06, 113.95, 246.05, 373.89, 491.97, 491.97, 491.97, 491.97, 491.97, 491.97, 491.97, 491.97, 491.97], "profit_aud": 491.97}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 2.25, 2.25, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -99.5, -99.5, -99.5, -99.5, -202.71, -202.71, -202.71, -108.13, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -25.54, -36.62, -48.81, -62.54, -70.22, -75.3, -66.97, -73.52, -73.52, -73.52, -73.52, -73.52, -73.52, 61.5, 193.59, 321.43, 439.51, 439.51, 439.51, 439.51, 439.51, 439.51, 439.51, 439.51, 439.51], "profit_aud": 439.51}}} \ No newline at end of file diff --git a/results/daily/2026-09-23.json b/results/daily/2026-09-23.json new file mode 100644 index 0000000..2dadd32 --- /dev/null +++ b/results/daily/2026-09-23.json @@ -0,0 +1 @@ +{"date": "2026-09-23", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [86.81, 87.69, 87.69, 86.43, 88.04, 89.19, 93.94, 92.74, 93.26, 102.13, 104.02, 143.6, 158.08, 103.09, 75.43, 86.52, 66.67, -2.19, -2.83, -6.02, -5.54, -2.7, -2.79, -3.58, -2.2, 0.81, 2.96, 2.15, 3.15, 4.58, 6.48, 45.22, 82.38, 100.88, 108.09, 108.83, 107.15, 106.59, 110.35, 110.6, 107.54, 111.95, 108.11, 108.98, 105.94, 115.45, 111.54, 114.88], "forecast_price": {"naive": [89.64, 86.93, 83.3, 74.66, 80.02, 79.6, 80.41, 76.55, 80.71, 82.57, 75.82, 79.47, 75.66, 82.6, 78.99, 75.71, 36.35, 19.42, 4.49, 1.76, 0.12, -2.06, 0.44, 4.64, 8.87, 9.75, 10.98, 6.15, 9.16, 7.41, 5.24, 19.42, 25.44, 60.78, 90.25, 105.03, 108.01, 105.67, 102.27, 94.47, 89.23, 91.75, 92.53, 90.22, 91.31, 89.14, 84.64, 80.38], "lightgbm": [57.69, 56.56, 56.74, 53.63, 54.71, 55.01, 54.23, 48.9, 52.34, 54.72, 54.63, 58.08, 58.55, 56.84, 52.15, 48.07, 27.03, 17.92, 13.47, 3.89, 3.36, 3.36, 3.36, 3.36, 4.0, 4.0, 4.0, 3.11, 4.0, 3.11, 3.36, 9.17, 13.85, 27.24, 69.02, 80.31, 80.31, 80.31, 79.43, 79.16, 76.02, 75.54, 74.68, 74.08, 74.66, 73.27, 72.0, 71.94], "lstm": [78.99, 77.23, 76.7, 74.28, 72.15, 63.52, 61.08, 59.24, 60.97, 54.76, 61.08, 63.51, 66.94, 61.07, 48.04, 42.94, 31.47, 21.39, 17.45, 7.46, 8.46, 2.3, 4.25, -0.88, -3.46, -4.36, -4.89, -2.68, -1.52, 4.91, 4.52, 14.83, 19.34, 43.54, 70.74, 102.43, 118.26, 123.29, 99.71, 90.39, 82.7, 68.12, 72.5, 59.59, 64.24, 51.15, 55.26, 57.16]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-108.51, -218.12, -327.73, -435.78, -484.63, -484.63, -484.63, -484.63, -484.63, -484.63, -354.61, -175.11, 22.5, 151.36, 57.07, 154.41, 154.41, 154.68, 158.22, 165.75, 172.68, 172.68, 174.78, 179.25, 179.53, 179.53, 182.85, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 180.17, 320.1, 320.1, 320.1, 320.1, 464.41, 603.84, 747.44], "profit_aud": 747.44}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.57, 9.1, 16.03, 19.4, 22.9, 22.9, 22.9, 23.9, 27.6, 24.91, 27.66, 21.93, 13.84, 13.84, 13.84, 13.84, 13.84, 149.87, 283.81, 417.06, 554.99, 554.99, 554.99, 554.99, 554.99, 554.99, 554.99, 554.99, 554.99, 554.99], "profit_aud": 554.99}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 4.12, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -115.93, -128.99, -128.99, -128.99, -128.99, 68.62, 68.62, 68.62, 68.62, 68.62, 68.62, 68.62, 68.62, 75.55, 78.92, 82.41, 86.89, 86.89, 87.19, 90.89, 88.2, 92.13, 86.4, 78.3, 78.3, 78.3, 78.3, 78.3, 214.34, 348.28, 481.52, 619.46, 619.46, 619.46, 619.46, 619.46, 619.46, 619.46, 619.46, 619.46, 619.46], "profit_aud": 619.46}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -12.98, -12.98, -140.65, -140.65, -140.65, 56.96, 56.96, 56.96, 56.96, 56.96, 56.96, 56.96, 64.49, 58.25, 61.63, 58.48, 58.93, 61.68, 60.67, 56.98, 54.29, 52.32, 52.32, 52.32, 52.32, 52.32, 52.32, 52.32, 188.36, 322.3, 455.55, 593.48, 593.48, 593.48, 593.48, 593.48, 593.48, 593.48, 449.17, 449.17, 578.42], "profit_aud": 578.42}}} \ No newline at end of file diff --git a/results/daily/2026-09-24.json b/results/daily/2026-09-24.json new file mode 100644 index 0000000..fc43dca --- /dev/null +++ b/results/daily/2026-09-24.json @@ -0,0 +1 @@ +{"date": "2026-09-24", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [188.69, 202.18, 141.62, 115.26, 103.95, 113.91, 124.41, 154.6, 148.23, 135.9, 157.52, 234.95, 168.64, 80.49, 37.23, 62.44, 8.97, 5.27, 4.24, 8.54, 14.67, 33.18, 18.93, 21.87, 36.81, 56.56, 89.62, 86.92, 106.46, 112.62, 76.94, 95.64, 100.08, 120.8, 115.75, 128.12, 117.71, 114.93, 106.01, 109.28, 102.27, 103.98, 108.6, 106.13, 105.48, 110.88, 115.47, 113.83], "forecast_price": {"naive": [86.81, 87.69, 87.69, 86.43, 88.04, 89.19, 93.94, 92.74, 93.26, 102.13, 104.02, 143.6, 158.08, 103.09, 75.43, 86.52, 66.67, -2.19, -2.83, -6.02, -5.54, -2.7, -2.79, -3.58, -2.2, 0.81, 2.96, 2.15, 3.15, 4.58, 6.48, 45.22, 82.38, 100.88, 108.09, 108.83, 107.15, 106.59, 110.35, 110.6, 107.54, 111.95, 108.11, 108.98, 105.94, 115.45, 111.54, 114.88], "lightgbm": [68.73, 68.72, 68.39, 66.9, 66.24, 67.02, 67.5, 63.73, 64.11, 63.83, 65.43, 64.03, 64.32, 67.14, 59.54, 60.89, 49.08, 28.58, 17.61, 11.35, 11.73, 11.49, 11.49, 13.27, 4.3, 4.3, 4.3, 3.31, 13.27, 13.27, 7.93, 25.44, 37.97, 52.62, 72.96, 84.02, 84.02, 84.02, 85.37, 84.99, 83.64, 86.08, 79.7, 75.17, 75.17, 79.72, 78.69, 79.41], "lstm": [106.14, 99.95, 97.68, 93.81, 92.9, 86.67, 82.38, 76.74, 83.99, 72.23, 76.35, 76.44, 82.87, 77.37, 58.93, 50.53, 39.1, 22.37, 19.32, 7.68, 8.45, 3.01, 5.82, -2.28, 0.12, -3.42, -2.16, 1.82, 2.48, 10.81, 12.34, 26.8, 31.72, 56.03, 85.75, 123.54, 133.08, 147.03, 122.17, 108.03, 96.29, 83.06, 83.51, 73.68, 71.7, 64.69, 62.37, 68.08]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -144.07, -274.01, -416.39, -571.91, -378.66, -378.66, -454.09, -257.19, 36.51, 247.31, 247.31, 200.77, 271.02, 259.81, 253.22, 247.92, 237.24, 229.1, 270.57, 246.91, 243.85, 243.85, 243.85, 243.85, 243.85, 350.3, 491.08, 394.9, 275.35, 275.35, 426.35, 571.04, 731.19, 878.33, 878.33, 878.33, 878.33, 750.49, 750.49, 750.49, 750.49, 750.49, 750.49, 880.39, 880.39], "profit_aud": 880.39}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 1.0, 0.0, 2.25, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.25, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-235.86, -488.59, -665.61, -809.68, -867.37, -867.37, -867.37, -867.37, -867.37, -867.37, -670.47, -376.78, -165.98, -65.36, -111.9, -41.65, -41.65, -42.31, -47.61, -58.29, -76.62, -76.62, -90.82, -118.15, -122.76, -122.76, -21.93, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -130.58, -0.61, -0.61, -0.61, -0.61, 137.99, 282.32, 424.61], "profit_aud": 424.61}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.39, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -10.68, -10.68, -10.68, -23.84, 3.5, -42.52, -113.22, -225.25, -333.91, -333.91, -207.21, -303.39, -303.39, -303.39, -303.39, -303.39, -143.23, -143.23, -143.23, -10.72, 125.88, 125.88, 255.85, 255.85, 255.85, 255.85, 255.85, 255.85, 255.85], "profit_aud": 255.85}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -169.87, -169.87, -169.87, 19.85, 19.85, 19.85, 19.85, 19.85, 19.85, 19.85, 19.85, 19.85, -21.62, -0.32, -27.65, -73.67, -144.37, -256.4, -304.65, -304.65, -304.65, -304.65, -304.65, -304.65, -304.65, -304.65, -144.49, 2.64, 146.31, 278.82, 278.82, 278.82, 278.82, 278.82, 278.82, 278.82, 278.82, 278.82, 278.82], "profit_aud": 278.82}}} \ No newline at end of file diff --git a/results/daily/2026-09-25.json b/results/daily/2026-09-25.json new file mode 100644 index 0000000..cdfd7ad --- /dev/null +++ b/results/daily/2026-09-25.json @@ -0,0 +1 @@ +{"date": "2026-09-25", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [109.27, 115.38, 97.73, 100.82, 100.92, 100.8, 99.88, 98.3, 99.59, 100.68, 111.99, 127.5, 113.94, 89.98, 77.04, 84.79, 70.82, 82.07, 96.5, 87.62, 88.42, 74.6, 45.59, 52.13, 34.15, 23.1, 23.98, 35.24, 42.24, 69.62, 81.69, 83.41, 89.74, 100.34, 100.59, 100.98, 99.19, 97.27, 98.23, 97.94, 95.91, 98.56, 99.97, 96.12, 95.46, 91.34, 110.02, 115.23], "forecast_price": {"naive": [188.69, 202.18, 141.62, 115.26, 103.95, 113.91, 124.41, 154.6, 148.23, 135.9, 157.52, 234.95, 168.64, 80.49, 37.23, 62.44, 8.97, 5.27, 4.24, 8.54, 14.67, 33.18, 18.93, 21.87, 36.81, 56.56, 89.62, 86.92, 106.46, 112.62, 76.94, 95.64, 100.08, 120.8, 115.75, 128.12, 117.71, 114.93, 106.01, 109.28, 102.27, 103.98, 108.6, 106.13, 105.48, 110.88, 115.47, 113.83], "lightgbm": [81.7, 79.63, 78.0, 76.33, 72.85, 75.17, 75.46, 77.25, 77.25, 77.85, 78.02, 84.24, 79.06, 65.3, 37.07, 46.89, 30.51, 7.69, 5.91, 5.07, 5.09, 10.23, 4.62, 4.62, 10.58, 19.74, 18.84, 22.65, 17.87, 19.74, 22.46, 28.99, 40.71, 64.14, 83.12, 92.55, 90.71, 90.71, 82.63, 82.63, 81.74, 79.76, 78.36, 77.4, 77.4, 78.67, 85.1, 85.1], "lstm": [118.0, 107.48, 104.08, 99.03, 105.67, 95.94, 89.73, 87.73, 98.33, 82.35, 89.86, 89.43, 94.17, 84.65, 70.78, 65.18, 59.72, 46.73, 40.94, 27.13, 29.38, 30.37, 30.18, 22.59, 33.12, 29.59, 24.7, 27.49, 32.02, 40.28, 42.95, 56.67, 60.77, 80.49, 100.67, 139.5, 139.7, 149.49, 123.03, 119.05, 107.75, 96.42, 102.39, 86.62, 96.01, 87.09, 76.89, 88.44]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 1.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -122.16, -122.16, -122.16, -122.16, -163.62, -286.49, -410.98, -410.98, -271.0, -111.63, 30.8, 30.8, -65.5, -65.5, -154.03, -154.03, -33.4, -33.4, 55.02, 55.02, -1.97, 56.68, 13.99, -14.89, -44.86, -88.91, -112.35, -112.35, -112.35, -112.35, -112.35, -112.35, 13.38, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 139.6, 277.13, 421.16], "profit_aud": 421.16}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 3.25, 3.25, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.12, 1.12, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -126.02, -252.18, -378.18, -503.03, -380.15, -380.15, -436.03, -296.05, -136.68, 5.75, 5.75, -90.55, 4.85, -83.68, -186.27, -306.9, -416.43, -465.5, -372.25, -429.24, -436.54, -436.54, -436.54, -436.54, -436.54, -394.3, -307.27, -409.39, -513.65, -513.65, -388.22, -262.48, -136.26, -12.28, -12.28, -12.28, -12.28, -132.16, -132.16, -132.16, -132.16, -132.16, -132.16, -8.39, -8.39], "profit_aud": -8.39}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 1.39, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -126.15, -140.27, -140.27, -140.27, -140.27, -140.27, -140.27, 19.11, 19.11, 19.11, -77.19, 18.2, 18.2, -38.84, -159.47, -269.0, -379.52, -286.27, -343.26, -408.43, -408.43, -408.43, -408.43, -364.38, -417.18, -426.92, -426.92, -426.92, -426.92, -426.92, -426.92, -300.7, -176.72, -55.13, -55.13, -55.13, -55.13, -55.13, -55.13, -55.13, -55.13, -55.13, 82.39, 82.39], "profit_aud": 82.39}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 1.39, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.25, 3.38, 2.12, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -122.88, -10.83, -136.68, -136.68, -136.68, -8.5, -8.5, -8.5, -8.5, -8.5, -8.5, -8.5, -118.03, -228.55, -228.55, -228.55, -293.72, -251.03, -267.08, -297.05, -341.1, -341.1, -341.1, -341.1, -341.1, -341.1, -341.1, -341.1, -214.88, -90.9, 30.69, 153.48, 153.48, 153.48, 153.48, 153.48, 153.48, 153.48, 153.48, 15.96, 145.59], "profit_aud": 145.59}}} \ No newline at end of file diff --git a/results/daily/2026-09-26.json b/results/daily/2026-09-26.json new file mode 100644 index 0000000..7bcf59d --- /dev/null +++ b/results/daily/2026-09-26.json @@ -0,0 +1 @@ +{"date": "2026-09-26", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [98.87, 106.4, 98.32, 100.85, 103.27, 100.78, 102.23, 100.67, 110.04, 110.01, 113.35, 99.57, 85.95, 52.18, 28.06, 13.74, 18.5, 17.82, 30.22, 91.94, 60.75, 27.05, 19.32, 28.74, 15.01, 13.87, 11.16, -4.55, -6.64, -3.49, -6.92, -8.41, -12.19, -8.15, -2.24, 1.35, 9.07, 23.38, 36.36, 38.04, 36.47, 35.96, 30.98, 21.95, 30.74, 18.39, 7.96, 5.6], "forecast_price": {"naive": [109.27, 115.38, 97.73, 100.82, 100.92, 100.8, 99.88, 98.3, 99.59, 100.68, 111.99, 127.5, 113.94, 89.98, 77.04, 84.79, 70.82, 82.07, 96.5, 87.62, 88.42, 74.6, 45.59, 52.13, 34.15, 23.1, 23.98, 35.24, 42.24, 69.62, 81.69, 83.41, 89.74, 100.34, 100.59, 100.98, 99.19, 97.27, 98.23, 97.94, 95.91, 98.56, 99.97, 96.12, 95.46, 91.34, 110.02, 115.23], "lightgbm": [71.71, 73.41, 72.16, 71.44, 70.73, 70.0, 70.0, 70.0, 70.0, 70.0, 72.2, 71.98, 72.23, 63.28, 54.21, 57.97, 40.52, 45.78, 45.25, 36.07, 36.07, 30.67, 17.58, 25.89, 14.72, 3.51, 3.06, 12.04, 14.22, 25.23, 32.47, 33.61, 40.39, 60.49, 72.75, 81.15, 81.15, 80.49, 82.51, 81.15, 80.49, 81.24, 78.95, 75.9, 77.98, 76.2, 78.85, 81.63], "lstm": [111.76, 105.7, 96.9, 91.31, 97.55, 86.73, 79.04, 79.46, 77.13, 67.16, 70.58, 65.26, 58.19, 46.26, 40.45, 32.45, 28.81, 19.96, 16.04, 5.86, 2.29, -0.41, 5.93, 1.43, 1.77, -0.31, -3.82, -1.73, -2.27, 7.07, 9.95, 18.14, 28.96, 46.0, 60.49, 81.79, 99.14, 104.94, 86.91, 88.3, 80.43, 72.27, 74.1, 68.72, 73.41, 64.15, 67.91, 76.68]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-123.59, -123.59, -246.49, -246.49, -246.49, -246.49, -246.49, -246.49, -136.44, -136.44, 5.24, 5.24, 5.24, 5.24, 5.24, -11.94, -35.06, -57.33, -30.89, 84.04, 159.98, 159.98, 135.82, 168.16, 168.16, 168.16, 168.16, 171.57, 179.87, 175.5, 184.15, 194.66, 209.9, 220.08, 220.36, 220.36, 220.36, 220.36, 265.81, 313.36, 358.94, 403.89, 403.89, 376.45, 411.03, 411.03, 411.03, 411.03], "profit_aud": 411.03}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.83, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 1.12, 1.12, 1.12, 1.12, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.25, 1.0, 1.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, -122.9, -122.9, -122.9, -122.9, -165.33, -291.16, -428.72, -428.72, -287.03, -162.57, -55.13, -55.13, -90.2, -90.2, -113.33, -113.33, -75.56, -75.56, -14.81, -14.81, -38.96, -6.63, -25.39, -42.73, -56.68, -50.99, -47.3, -47.3, -47.3, -47.3, -47.3, -47.3, -50.1, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -48.4, -38.46, -31.46], "profit_aud": -31.46}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -23.13, -3.09, -3.09, -3.09, -3.09, -3.09, -27.24, 5.09, -3.23, -20.57, -34.52, -28.83, -20.54, -20.54, -20.54, -20.54, -20.54, -20.54, -20.54, -18.84, -18.84, -18.84, 26.6, 26.6, 26.6, 71.55, 71.55, 71.55, 71.55, 71.55, 71.55, 78.55], "profit_aud": 78.55}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -8.51, -42.32, -18.16, -54.09, -44.71, -62.05, -76.0, -70.31, -62.01, -62.01, -62.01, -62.01, -62.01, -62.01, -62.01, -62.01, -50.67, -21.44, 24.01, 71.56, 71.56, 71.56, 71.56, 71.56, 71.56, 48.57, 47.46, 54.46], "profit_aud": 54.46}}} \ No newline at end of file diff --git a/results/daily/2026-09-27.json b/results/daily/2026-09-27.json new file mode 100644 index 0000000..18cf6dd --- /dev/null +++ b/results/daily/2026-09-27.json @@ -0,0 +1 @@ +{"date": "2026-09-27", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [3.06, -0.16, 2.75, 6.22, 3.49, 0.01, 0.0, 0.0, 0.0, -0.62, -0.89, -0.34, -0.08, -0.93, -5.4, -7.81, -25.92, -31.25, -93.55, -59.24, -54.27, -69.12, -50.51, -47.55, -137.85, -73.95, -47.82, -34.38, -127.4, -149.83, -18.21, -11.45, -10.78, -10.48, 4.82, 40.9, 37.84, 39.1, 41.54, 45.33, 43.67, 40.75, 46.3, 46.27, 45.34, 42.67, 35.23, 37.09], "forecast_price": {"naive": [98.87, 106.4, 98.32, 100.85, 103.27, 100.78, 102.23, 100.67, 110.04, 110.01, 113.35, 99.57, 85.95, 52.18, 28.06, 13.74, 18.5, 17.82, 30.22, 91.94, 60.75, 27.05, 19.32, 28.74, 15.01, 13.87, 11.16, -4.55, -6.64, -3.49, -6.92, -8.41, -12.19, -8.15, -2.24, 1.35, 9.07, 23.38, 36.36, 38.04, 36.47, 35.96, 30.98, 21.95, 30.74, 18.39, 7.96, 5.6], "lightgbm": [49.43, 47.49, 49.43, 48.85, 48.29, 47.7, 47.7, 47.7, 46.35, 46.35, 48.16, 47.7, 46.83, 38.34, 10.8, 2.41, 1.82, -0.43, 3.63, 24.08, 18.06, 1.16, -3.59, 1.39, -4.68, -4.68, -4.68, -6.21, -7.19, -3.84, -1.92, -5.65, -3.74, 7.71, 24.54, 28.92, 33.14, 32.83, 40.92, 44.16, 44.21, 43.87, 43.3, 42.76, 44.36, 42.43, 41.28, 41.89], "lstm": [12.99, 9.03, 9.49, 8.58, 8.38, 6.89, 6.13, 5.96, 5.82, 4.9, 7.98, 1.37, -4.33, -12.07, -25.26, -25.87, -37.33, -44.81, -42.54, -50.71, -50.75, -49.34, -46.0, -44.88, -51.21, -57.36, -51.81, -50.58, -47.65, -43.3, -39.69, -29.86, -27.18, -11.0, 3.13, 18.0, 33.97, 43.56, 42.97, 43.86, 43.09, 44.65, 40.6, 36.42, 34.58, 30.34, 34.59, 40.14]}, "methods": {"perfect_foresight": {"charge_mw": [0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.86, -0.66, -4.09, 3.68, 8.04, 8.04, 8.04, 8.04, 8.05, 8.82, 9.93, 9.6, 9.5, 9.61, 10.29, 11.27, 14.51, 18.41, 135.35, 209.41, 256.9, 343.29, 343.29, 283.86, 456.17, 548.61, 502.23, 459.26, 618.5, 805.79, 808.06, 809.5, 810.84, 812.15, 812.15, 812.15, 812.15, 812.15, 812.15, 868.81, 868.81, 868.81, 926.68, 984.52, 1041.2, 1041.2, 1041.2, 1041.2], "profit_aud": 1041.2}, "naive": {"charge_mw": [2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.12, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.62, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-3.82, -3.82, -7.26, -7.26, -7.26, -7.26, -7.26, -7.26, -7.25, -7.25, -8.37, -8.37, -8.37, -8.37, -8.37, 1.4, 33.8, 72.86, -9.0, -83.05, -150.89, -150.89, -87.75, -141.24, -141.24, -141.24, -141.24, -115.46, 43.79, -143.5, -120.74, -106.42, -92.95, -79.85, -80.45, -80.45, -80.45, -80.45, -28.53, 28.13, 82.71, 133.65, 133.65, 75.82, 126.83, 126.83, 126.83, 126.83], "profit_aud": 126.83}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.5, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.76, 42.16, 81.23, -0.63, -74.69, -142.52, -132.85, -69.7, -129.14, 43.17, 135.61, 165.5, 208.47, 367.71, 386.44, 363.68, 377.99, 380.68, 380.68, 380.68, 380.68, 380.68, 380.68, 380.68, 437.35, 491.93, 542.87, 542.87, 542.87, 599.55, 599.55, 599.55, 599.55], "profit_aud": 599.55}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 2.12, 2.0, 0.75, 1.88, 3.0, 4.12, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.77, -0.34, -0.34, -0.33, -0.22, 0.46, 1.44, 4.68, 12.49, 12.49, 86.55, 154.38, 154.38, 154.38, 94.95, 267.26, 359.7, 419.47, 453.85, 469.77, 488.5, 490.78, 492.21, 493.56, 494.87, 494.87, 494.87, 494.87, 543.74, 543.74, 600.4, 654.98, 705.92, 705.92, 705.92, 699.58, 646.23, 646.23, 692.59], "profit_aud": 692.59}}} \ No newline at end of file diff --git a/results/daily/2026-09-28.json b/results/daily/2026-09-28.json new file mode 100644 index 0000000..72b353a --- /dev/null +++ b/results/daily/2026-09-28.json @@ -0,0 +1 @@ +{"date": "2026-09-28", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [39.95, 38.52, 43.14, 41.12, 41.46, 51.23, 44.74, 38.93, 53.28, 50.48, 49.48, 52.75, 46.47, 34.18, 8.38, 27.3, 86.56, 127.98, -2.43, -5.65, -7.09, -13.3, -15.22, -19.2, -35.58, -35.57, -28.65, -30.24, -17.82, -16.21, -13.35, 54.0, 54.38, 67.78, 87.2, 92.51, 87.36, 80.56, 73.06, 68.61, 65.17, 67.14, 69.71, 73.17, 67.58, 51.18, 52.25, 57.82], "forecast_price": {"naive": [3.06, -0.16, 2.75, 6.22, 3.49, 0.01, 0.0, 0.0, 0.0, -0.62, -0.89, -0.34, -0.08, -0.93, -5.4, -7.81, -25.92, -31.25, -93.55, -59.24, -54.27, -69.12, -50.51, -47.55, -137.85, -73.95, -47.82, -34.38, -127.4, -149.83, -18.21, -11.45, -10.78, -10.48, 4.82, 40.9, 37.84, 39.1, 41.54, 45.33, 43.67, 40.75, 46.3, 46.27, 45.34, 42.67, 35.23, 37.09], "lightgbm": [15.63, 15.63, 15.63, 17.16, 15.63, 15.63, 15.63, 15.63, 15.63, 15.98, 17.53, 17.53, 20.78, 16.07, 17.97, 9.68, 5.17, 2.18, -2.97, -2.42, -5.3, -10.97, -10.73, -7.93, -11.87, -12.88, -10.77, -5.7, -14.31, -15.29, -0.45, 3.48, 6.81, 13.84, 39.13, 55.18, 53.77, 53.77, 54.53, 55.73, 55.0, 53.56, 56.33, 55.67, 55.35, 55.35, 51.54, 51.36], "lstm": [51.42, 45.93, 43.09, 40.75, 42.19, 40.54, 38.58, 40.97, 48.23, 43.67, 53.64, 49.52, 53.77, 50.47, 41.58, 39.27, 32.6, 26.1, 23.68, 17.59, 14.44, 10.75, 20.0, 18.94, 21.1, 18.2, 14.79, 19.92, 19.47, 25.53, 25.74, 34.43, 34.84, 57.11, 68.84, 87.15, 97.02, 104.21, 90.79, 76.28, 82.57, 77.03, 72.4, 63.85, 67.01, 58.29, 63.73, 63.02]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 3.75, 4.88, 3.62, 2.38, 1.25, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [-49.94, -98.09, -122.03, -173.43, -225.26, -161.22, -161.22, -209.88, -143.28, -80.18, -24.51, 41.43, 41.43, 31.86, 21.38, -12.75, 95.45, 255.42, 255.72, 256.43, 257.31, 258.98, 260.88, 272.88, 317.36, 361.82, 397.63, 435.42, 437.65, 439.67, 441.34, 441.34, 441.34, 441.34, 550.34, 665.98, 775.18, 875.88, 875.88, 875.88, 794.42, 794.42, 794.42, 876.73, 876.73, 812.76, 812.76, 877.81], "profit_aud": 877.81}, "naive": {"charge_mw": [0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.75, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.12, 1.25, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.0, 4.12, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-11.19, -59.34, -113.26, -61.86, -10.04, -10.04, -16.3, -64.96, 1.64, -61.46, -123.32, -72.15, -14.06, -18.33, -19.38, -22.79, -33.61, -49.61, -46.58, -39.52, -33.32, -16.69, -16.69, -40.68, 3.8, 48.25, 20.46, -17.33, 4.95, 25.21, 26.88, 20.13, 13.33, 4.86, 4.86, 4.86, 4.86, 4.86, 4.86, 90.63, 90.63, 90.63, 177.76, 269.22, 353.7, 353.7, 353.7, 353.7], "profit_aud": 353.7}, "lightgbm": {"charge_mw": [2.5, 2.5, 2.5, 0.0, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 0.0, 0.75, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 2.25, 3.38, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 1.12, 1.88, 0.62, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-49.94, -98.09, -152.01, -152.01, -203.84, -232.27, -232.27, -232.27, -232.27, -232.27, -170.42, -104.48, -46.39, -46.39, -35.91, -35.91, -35.91, -35.91, -32.88, -39.15, -38.26, -21.63, -8.31, -32.31, 12.17, 56.63, 92.44, 54.64, 76.92, 97.18, 98.85, 98.85, 98.85, 98.85, 98.85, 98.85, 98.85, 98.85, 98.85, 184.62, 184.62, 184.62, 271.76, 363.22, 447.7, 447.7, 447.7, 447.7], "profit_aud": 447.7}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 1.39, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -51.4, -74.41, -138.44, -194.36, -243.03, -243.03, -243.03, -181.17, -115.24, -57.15, -14.43, -14.43, -14.43, -14.43, -14.43, -14.43, -7.37, 1.49, 18.12, 18.12, 31.46, -13.02, 31.43, 67.25, 67.25, 67.25, 67.25, 67.25, 67.25, 67.25, 67.25, 67.25, 182.88, 292.08, 392.78, 484.11, 484.11, 484.11, 484.11, 484.11, 484.11, 484.11, 484.11, 484.11, 484.11], "profit_aud": 484.11}}} \ No newline at end of file diff --git a/results/daily/2026-09-29.json b/results/daily/2026-09-29.json new file mode 100644 index 0000000..fff1945 --- /dev/null +++ b/results/daily/2026-09-29.json @@ -0,0 +1 @@ +{"date": "2026-09-29", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [40.07, 32.04, 31.52, 26.6, 23.21, 20.98, 8.43, 6.52, -3.44, -1.99, -3.6, -0.72, -0.5, -2.65, -10.58, -13.1, -19.37, -19.62, -19.19, -27.14, -34.78, -33.5, -37.46, -38.1, -38.78, -37.97, -35.34, -27.75, -13.29, -12.82, -10.07, -8.66, -14.39, -4.74, 11.78, 31.77, 35.43, 32.97, 32.05, 43.47, 37.15, 30.84, 0.83, 1.11, 0.01, 1.06, 11.05, 30.35], "forecast_price": {"naive": [39.95, 38.52, 43.14, 41.12, 41.46, 51.23, 44.74, 38.93, 53.28, 50.48, 49.48, 52.75, 46.47, 34.18, 8.38, 27.3, 86.56, 127.98, -2.43, -5.65, -7.09, -13.3, -15.22, -19.2, -35.58, -35.57, -28.65, -30.24, -17.82, -16.21, -13.35, 54.0, 54.38, 67.78, 87.2, 92.51, 87.36, 80.56, 73.06, 68.61, 65.17, 67.14, 69.71, 73.17, 67.58, 51.18, 52.25, 57.82], "lightgbm": [45.84, 45.59, 46.33, 45.37, 44.3, 50.22, 44.9, 43.98, 50.22, 50.53, 49.76, 50.22, 46.26, 43.26, 38.76, 40.89, 43.33, 34.34, 10.92, 5.9, 4.51, -0.41, -0.41, -0.83, -3.07, -3.07, -3.07, -4.13, 0.23, 0.23, -0.18, 30.97, 33.82, 43.82, 69.78, 83.17, 80.1, 78.83, 69.21, 67.99, 66.46, 65.69, 66.75, 67.51, 65.69, 59.13, 57.82, 60.0], "lstm": [63.79, 58.26, 55.68, 53.31, 49.05, 47.49, 44.94, 43.27, 48.36, 43.98, 52.02, 50.68, 57.8, 56.62, 46.49, 42.73, 34.82, 26.35, 20.29, 13.43, 15.84, 10.58, 12.35, 11.73, 9.67, 5.61, 5.25, 15.59, 14.2, 20.53, 19.77, 27.28, 29.79, 50.36, 62.45, 87.2, 93.83, 106.55, 92.13, 78.54, 78.89, 73.2, 68.97, 59.56, 60.89, 55.69, 58.67, 60.43]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.31, 5.05, 9.55, 8.65, 8.02, 8.35, 9.67, 11.31, 13.73, 18.63, 18.63, 22.02, 30.72, 30.72, 77.54, 125.16, 173.64, 221.1, 243.19, 246.66, 248.32, 249.92, 251.18, 241.57, 259.56, 260.15, 260.15, 260.15, 304.44, 345.65, 345.65, 399.98, 446.41, 446.41, 445.38, 445.38, 445.36, 445.07, 458.88, 496.82], "profit_aud": 496.82}, "naive": {"charge_mw": [2.5, 2.5, 1.11, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 2.25, 2.75, 3.88, 5.0, 3.75, 3.75, 4.88, 3.62, 2.38, 1.25, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [-50.09, -90.15, -107.64, -140.89, -169.91, -143.69, -143.69, -151.84, -156.15, -158.64, -162.69, -163.59, -163.59, -162.85, -149.62, -133.26, -157.46, -181.98, -179.59, -176.19, -171.85, -167.66, -162.98, -139.17, -90.69, -43.23, 0.95, 35.63, 37.3, 38.9, 40.16, 40.16, 40.16, 40.16, 54.89, 94.6, 138.89, 180.1, 180.1, 180.1, 133.67, 133.67, 133.67, 134.91, 134.91, 133.59, 133.59, 167.74], "profit_aud": 167.74}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, -29.01, -5.41, -15.95, -24.1, -27.55, -30.04, -30.04, -30.04, -30.04, -30.04, -16.81, -16.81, -38.6, -38.6, -38.6, -38.6, -38.6, -34.41, -29.73, -5.92, 42.56, 90.02, 134.2, 168.88, 168.88, 154.46, 167.05, 167.05, 167.05, 167.05, 181.78, 221.49, 265.78, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99, 306.99], "profit_aud": 306.99}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 3.38, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -10.53, -18.69, -18.69, -16.2, -19.35, -19.35, -19.98, -23.3, -23.3, -23.3, -23.3, -23.3, -23.3, 10.62, -28.51, 13.37, 13.37, 34.52, 82.99, 130.45, 174.63, 174.63, 174.63, 174.63, 174.63, 174.63, 174.63, 174.63, 174.63, 214.35, 258.63, 299.85, 339.9, 339.9, 339.9, 339.9, 339.9, 339.9, 339.9, 339.9, 339.9, 339.9], "profit_aud": 339.9}}} \ No newline at end of file diff --git a/results/daily/2026-09-30.json b/results/daily/2026-09-30.json new file mode 100644 index 0000000..abff4d8 --- /dev/null +++ b/results/daily/2026-09-30.json @@ -0,0 +1 @@ +{"date": "2026-09-30", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [36.08, 39.45, 35.45, 55.6, 65.1, 87.76, 82.25, 82.15, 91.71, 77.38, 66.02, 71.65, 77.72, 88.01, 72.69, 59.46, 39.5, 48.34, 76.41, 51.52, 40.49, 88.99, 43.25, 51.55, 69.23, 95.68, 59.61, 41.0, 97.84, 111.0, 70.36, 92.02, 107.11, 102.56, 105.68, 110.72, 111.48, 114.62, 109.87, 103.23, 100.8, 99.65, 97.94, 97.83, 101.67, 105.0, 119.4, 127.05], "forecast_price": {"naive": [40.07, 32.04, 31.52, 26.6, 23.21, 20.98, 8.43, 6.52, -3.44, -1.99, -3.6, -0.72, -0.5, -2.65, -10.58, -13.1, -19.37, -19.62, -19.19, -27.14, -34.78, -33.5, -37.46, -38.1, -38.78, -37.97, -35.34, -27.75, -13.29, -12.82, -10.07, -8.66, -14.39, -4.74, 11.78, 31.77, 35.43, 32.97, 32.05, 43.47, 37.15, 30.84, 0.83, 1.11, 0.01, 1.06, 11.05, 30.35], "lightgbm": [25.66, 23.5, 23.5, 24.03, 23.17, 22.73, 21.17, 19.95, 15.86, 17.09, 17.09, 16.35, 18.5, 18.5, 16.46, 14.74, 15.96, 6.23, 0.65, -5.02, -6.02, -6.49, -7.9, -7.9, -13.1, -8.19, -6.65, -5.39, -1.19, -1.41, -1.05, 11.23, 15.75, 27.35, 39.15, 51.35, 53.17, 53.17, 52.89, 53.92, 52.32, 51.9, 49.3, 49.3, 48.34, 47.85, 49.64, 52.61], "lstm": [11.41, 14.9, 9.95, 8.15, 5.26, 3.58, 5.02, 3.69, 5.18, 7.67, 13.73, 13.8, 20.15, 21.55, 14.71, 16.26, 12.51, 3.29, 1.92, -2.31, -0.29, -2.89, -4.78, -5.45, -7.65, -5.61, -8.12, -5.45, -5.07, 2.0, -0.69, 2.61, 5.56, 22.08, 30.84, 49.52, 59.27, 67.56, 60.15, 50.64, 54.45, 51.49, 46.98, 39.99, 39.0, 32.65, 41.72, 41.96]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 1.67, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.75, 1.88, 3.0, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-45.1, -94.42, -138.73, -208.24, -244.37, -134.67, -31.85, 70.84, 185.47, 185.47, 102.94, 92.91, 92.91, 202.92, 202.92, 153.27, 103.89, 43.47, 138.98, 74.58, 23.96, 135.2, 81.13, 16.69, 85.92, 205.51, 131.0, 79.75, 79.75, 218.51, 130.56, 117.67, 117.67, 117.67, 117.67, 256.08, 395.43, 538.71, 648.58, 648.58, 648.58, 648.58, 526.15, 403.86, 403.86, 403.86, 553.12, 711.92], "profit_aud": 711.92}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.56, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 0.0, 0.0, 1.12, 1.12, 2.25, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -114.63, -143.65, -226.18, -136.62, -39.47, -50.47, -59.56, -66.99, -71.93, -84.01, -84.01, -90.45, -100.58, -100.58, -154.64, -219.08, -305.61, -425.21, -462.47, -467.59, -479.82, -493.7, -502.49, -400.35, -534.24, -547.06, -547.06, -547.06, -407.71, -264.43, -264.43, -135.39, -9.39, -9.39, -131.82, -131.82, -258.91, -288.31, -139.05, 19.76], "profit_aud": 19.76}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -114.63, -114.63, -114.63, -204.2, -126.48, -16.46, -16.46, -16.46, -16.46, -16.46, -16.46, -22.9, -27.96, -39.09, -93.15, -157.59, -244.13, -363.72, -400.98, -406.1, -297.5, -436.25, -445.04, -445.04, -445.04, -445.04, -445.04, -445.04, -305.7, -162.42, -25.08, 103.96, 103.96, 103.96, 103.96, 103.96, 103.96, 103.96, 103.96, 103.96], "profit_aud": 103.96}, "lstm": {"charge_mw": [2.5, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [-45.1, -0.71, -0.71, -0.71, -36.85, -146.55, -249.37, -352.05, -466.69, -466.69, -466.69, -466.69, -369.54, -259.52, -168.66, -94.33, -94.33, -94.33, -94.33, -158.73, -113.78, -124.91, -130.31, -162.53, -249.06, -368.66, -443.17, -494.42, -506.65, -381.77, -469.72, -469.72, -469.72, -469.72, -469.72, -469.72, -330.37, -187.09, -49.75, -49.75, 76.25, 76.25, 76.25, 76.25, 76.25, -54.99, -54.99, 87.93], "profit_aud": 87.93}}} \ No newline at end of file diff --git a/results/daily/2026-10-01.json b/results/daily/2026-10-01.json new file mode 100644 index 0000000..9926527 --- /dev/null +++ b/results/daily/2026-10-01.json @@ -0,0 +1 @@ +{"date": "2026-10-01", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [113.47, 109.13, 107.06, 105.79, 100.39, 91.11, 93.3, 96.15, 94.24, 85.64, 89.55, 92.11, 96.24, 97.99, 114.81, 159.72, 215.43, 185.18, 170.97, 123.24, 138.11, 184.23, 149.39, 131.72, 115.38, 94.71, 83.21, 98.41, 115.52, 135.2, 152.6, 132.77, 141.12, 129.64, 124.02, 124.2, 118.3, 125.11, 127.46, 126.42, 121.7, 126.21, 129.44, 117.69, 121.01, 121.62, 160.12, 119.13], "forecast_price": {"naive": [36.08, 39.45, 35.45, 55.6, 65.1, 87.76, 82.25, 82.15, 91.71, 77.38, 66.02, 71.65, 77.72, 88.01, 72.69, 59.46, 39.5, 48.34, 76.41, 51.52, 40.49, 88.99, 43.25, 51.55, 69.23, 95.68, 59.61, 41.0, 97.84, 111.0, 70.36, 92.02, 107.11, 102.56, 105.68, 110.72, 111.48, 114.62, 109.87, 103.23, 100.8, 99.65, 97.94, 97.83, 101.67, 105.0, 119.4, 127.05], "lightgbm": [55.95, 55.28, 57.08, 62.38, 64.24, 71.51, 70.24, 70.24, 72.88, 67.02, 64.2, 65.94, 67.57, 69.15, 55.13, 56.66, 36.55, 36.78, 46.38, 37.23, 28.96, 54.07, 29.51, 37.08, 46.66, 61.47, 48.68, 32.28, 66.7, 65.91, 51.96, 65.75, 64.05, 70.65, 73.73, 77.35, 83.62, 84.81, 80.08, 79.48, 79.48, 77.54, 77.54, 77.14, 77.14, 77.72, 82.04, 84.59], "lstm": [103.21, 98.35, 93.54, 88.1, 83.11, 77.3, 80.24, 75.8, 83.11, 74.59, 77.17, 79.36, 78.67, 76.91, 66.76, 57.17, 56.47, 45.13, 37.51, 25.3, 29.02, 27.57, 30.03, 23.52, 26.97, 23.48, 23.26, 28.97, 22.0, 29.23, 26.62, 37.4, 41.63, 53.68, 69.52, 92.28, 96.96, 126.58, 108.96, 99.32, 87.05, 77.02, 70.21, 68.79, 64.61, 59.39, 59.76, 69.9]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -113.89, -165.67, -165.67, -165.67, -272.72, -384.66, -499.8, -499.8, -499.8, -499.8, -300.15, -30.86, 200.61, 414.32, 260.27, 240.93, 471.22, 471.22, 471.22, 326.99, 208.61, 104.6, -18.42, -82.54, 86.46, 277.21, 443.18, 619.58, 619.58, 619.58, 619.58, 603.02, 603.02, 603.02, 603.02, 603.02, 603.02, 603.02, 455.91, 455.91, 455.91, 656.05, 656.05], "profit_aud": 656.05}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 1.67, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.75, 1.88, 3.0, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.25, 0.25, 0.25, 0.25, 1.38, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-141.83, -278.24, -412.08, -544.31, -600.02, -486.13, -369.51, -249.32, -131.52, -131.52, -243.46, -256.36, -256.36, -133.87, -133.87, -267.23, -536.52, -767.99, -554.29, -708.34, -880.98, -650.69, -837.43, -1002.08, -886.7, -768.31, -872.33, -995.35, -995.35, -826.35, -1017.11, -1035.69, -1035.69, -1035.69, -1035.69, -880.45, -732.57, -576.18, -448.72, -448.72, -448.72, -448.72, -610.52, -757.63, -757.63, -757.63, -557.49, -408.58], "profit_aud": -408.58}, "lightgbm": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 1.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 4.5, 3.25, 2.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.75, 2.88, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 3.88, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-141.83, -278.24, -412.08, -544.31, -544.31, -430.42, -313.79, -241.68, -123.88, -123.88, -123.88, -123.88, -123.88, -123.88, -123.88, -123.88, -393.17, -624.64, -539.16, -693.21, -865.85, -635.56, -822.3, -986.95, -986.95, -868.57, -880.22, -1003.24, -873.27, -873.27, -1064.03, -1064.03, -1064.03, -1064.03, -1064.03, -1064.03, -916.15, -759.76, -759.76, -759.76, -759.76, -759.76, -759.76, -759.76, -759.76, -759.76, -559.62, -410.71], "profit_aud": -410.71}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 1.12, 1.12, 2.25, 3.38, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -154.05, -154.05, -154.05, 14.01, -150.64, -150.64, -269.02, -373.04, -373.04, -517.44, -517.44, -602.14, -602.14, -602.14, -602.14, -602.14, -602.14, -454.26, -297.87, -138.55, 19.48, 19.48, 19.48, 19.48, 19.48, 19.48, -132.55, -154.96, -6.06], "profit_aud": -6.06}}} \ No newline at end of file diff --git a/results/daily/2026-10-02.json b/results/daily/2026-10-02.json new file mode 100644 index 0000000..c47d84f --- /dev/null +++ b/results/daily/2026-10-02.json @@ -0,0 +1 @@ +{"date": "2026-10-02", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [121.69, 122.77, 128.99, 129.14, 132.66, 124.75, 112.69, 100.66, 96.74, 92.64, 92.13, 94.53, 73.88, 67.1, 67.41, 85.78, 75.39, 96.3, 57.89, 57.12, 52.43, 36.86, 15.92, 18.87, 20.9, 25.02, 23.72, 41.82, 50.0, 55.62, 63.96, 60.4, 57.44, 46.05, 47.7, 82.31, 92.59, 102.88, 110.28, 107.27, 102.36, 100.74, 108.38, 102.19, 116.88, 100.83, 99.38, 106.28], "forecast_price": {"naive": [113.47, 109.13, 107.06, 105.79, 100.39, 91.11, 93.3, 96.15, 94.24, 85.64, 89.55, 92.11, 96.24, 97.99, 114.81, 159.72, 215.43, 185.18, 170.97, 123.24, 138.11, 184.23, 149.39, 131.72, 115.38, 94.71, 83.21, 98.41, 115.52, 135.2, 152.6, 132.77, 141.12, 129.64, 124.02, 124.2, 118.3, 125.11, 127.46, 126.42, 121.7, 126.21, 129.44, 117.69, 121.01, 121.62, 160.12, 119.13], "lightgbm": [85.23, 81.59, 82.13, 78.48, 76.33, 74.08, 74.5, 76.44, 76.44, 72.08, 73.25, 74.61, 76.98, 76.7, 81.22, 82.69, 89.49, 83.67, 77.79, 66.64, 67.89, 71.87, 63.48, 61.27, 60.63, 53.95, 48.21, 59.97, 66.35, 65.0, 65.42, 66.03, 70.09, 72.39, 77.11, 78.24, 80.91, 83.44, 83.44, 83.44, 82.45, 81.92, 81.92, 78.72, 80.22, 80.22, 90.24, 80.5], "lstm": [132.86, 137.81, 132.01, 125.4, 134.06, 119.9, 127.05, 129.24, 129.29, 118.43, 123.68, 120.81, 117.38, 124.64, 117.0, 110.62, 110.68, 98.58, 91.05, 64.54, 68.56, 74.06, 78.8, 60.49, 65.53, 61.78, 52.17, 50.52, 46.06, 54.12, 50.04, 62.45, 64.52, 76.27, 96.72, 108.21, 115.49, 158.23, 140.49, 134.71, 112.31, 113.0, 102.53, 102.59, 110.74, 89.02, 91.81, 105.58]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -20.69, -104.56, -188.83, -81.6, -81.6, 38.77, 38.77, 38.77, 38.77, 38.77, 18.86, -4.73, -30.85, -44.73, -74.39, -74.39, -74.39, -74.39, 5.57, 65.97, 65.97, 8.4, -51.22, -51.22, -51.22, -51.22, 86.63, 220.72, 220.72, 220.72, 356.19, 356.19, 502.29, 502.29, 502.29, 502.29], "profit_aud": 502.29}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 1.11, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.62, 1.62, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -155.94, -218.48, -218.48, -218.48, -334.28, -449.45, -567.61, -567.61, -567.61, -567.61, -460.38, -366.14, -245.77, -173.41, -244.82, -252.16, -206.08, -206.08, -206.08, -232.2, -263.47, -293.12, -345.39, -373.14, -303.62, -223.67, -148.17, -76.37, -76.37, -76.37, -76.37, -89.33, -89.33, -89.33, -89.33, -89.33, -89.33, -89.33, -217.07, -217.07, -217.07, -92.85, -92.85], "profit_aud": -92.85}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.75, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 1.12, 1.12, 1.12, 1.12, 2.25, 3.38, 3.38, 3.38, 3.38, 3.38, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -155.94, -155.94, -155.94, -155.94, -271.74, -386.9, -386.9, -386.9, -386.9, -386.9, -311.84, -217.6, -97.23, -97.23, -97.23, -97.23, -97.23, -97.23, -107.71, -133.83, -165.1, -194.75, -247.02, -247.02, -247.02, -247.02, -247.02, -247.02, -247.02, -247.02, -247.02, -247.02, -118.43, 19.42, 153.51, 153.51, 153.51, 153.51, 153.51, 153.51, 153.51, 277.73, 277.73], "profit_aud": 277.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -71.41, -78.75, -78.75, -58.84, -58.84, -58.84, -58.84, -88.5, -140.77, -203.27, -234.13, -314.09, -314.09, -314.09, -314.09, -314.09, -314.09, -198.35, -69.75, 68.1, 202.19, 202.19, 202.19, 202.19, 202.19, 202.19, 76.15, 62.24, 195.09], "profit_aud": 195.09}}} \ No newline at end of file diff --git a/results/daily/2026-10-03.json b/results/daily/2026-10-03.json new file mode 100644 index 0000000..1605654 --- /dev/null +++ b/results/daily/2026-10-03.json @@ -0,0 +1 @@ +{"date": "2026-10-03", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [95.96, 69.21, 38.73, 32.1, 29.92, 28.95, 27.81, 29.26, 30.23, 28.67, 32.97, 30.22, 25.13, 18.91, -4.38, -8.15, -8.86, -12.0, -19.81, -21.55, -27.64, -34.74, -40.57, -67.12, -68.36, -56.0, -41.6, -65.32, -70.91, -18.98, -9.38, -6.4, -24.26, -17.0, 4.02, 97.8, 82.34, 97.03, 97.73, 87.52, 93.91, 96.97, 98.5, 101.88, 106.57, 109.68, 106.32, 115.76], "forecast_price": {"naive": [121.69, 122.77, 128.99, 129.14, 132.66, 124.75, 112.69, 100.66, 96.74, 92.64, 92.13, 94.53, 73.88, 67.1, 67.41, 85.78, 75.39, 96.3, 57.89, 57.12, 52.43, 36.86, 15.92, 18.87, 20.9, 25.02, 23.72, 41.82, 50.0, 55.62, 63.96, 60.4, 57.44, 46.05, 47.7, 82.31, 92.59, 102.88, 110.28, 107.27, 102.36, 100.74, 108.38, 102.19, 116.88, 100.83, 99.38, 106.28], "lightgbm": [75.21, 75.24, 75.24, 75.24, 76.1, 72.8, 73.16, 72.01, 71.76, 70.64, 70.64, 71.76, 65.25, 54.56, 47.84, 58.53, 47.56, 61.6, 41.13, 48.61, 34.95, 22.76, 13.01, 16.7, 12.17, 14.96, 14.96, 23.7, 31.6, 34.6, 35.92, 39.16, 38.62, 34.15, 42.24, 70.9, 75.27, 79.96, 81.87, 80.57, 79.96, 78.01, 76.86, 75.88, 80.76, 75.88, 75.88, 76.17], "lstm": [104.88, 100.35, 89.07, 85.86, 86.23, 77.05, 71.86, 73.02, 70.05, 66.21, 65.49, 57.51, 43.47, 35.61, 26.12, 20.15, 21.67, 14.12, 11.32, 5.4, -0.47, -2.35, 4.52, -2.03, -2.29, -2.65, -3.13, -4.32, -3.01, 3.21, 7.18, 14.87, 21.83, 35.25, 42.48, 63.78, 80.72, 99.51, 83.36, 84.31, 78.9, 74.36, 74.39, 73.13, 70.22, 63.68, 68.31, 79.95]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -34.76, -34.76, -34.76, -38.77, 2.44, 2.44, 2.44, 2.44, 2.99, 4.01, 5.12, 6.62, 9.09, 11.79, 15.24, 19.58, 24.65, 108.56, 194.01, 264.01, 240.92, 322.57, 411.21, 413.58, 404.49, 396.48, 426.81, 448.06, 448.06, 570.31, 467.39, 467.39, 565.12, 455.72, 455.72, 455.72, 455.72, 455.72, 588.93, 726.03, 858.93, 1003.63], "profit_aud": 1003.63}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.56, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.11, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 1.38, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -7.04, -30.68, -25.2, -35.39, -35.39, -50.39, -50.39, -50.39, -50.39, -50.39, 0.32, 84.22, 169.67, 200.75, 252.74, 252.74, 252.74, 252.74, 241.02, 234.62, 234.62, 255.87, 250.84, 250.84, 250.84, 250.84, 373.01, 482.41, 482.41, 482.41, 605.54, 605.54, 738.75, 738.75, 738.75, 738.75], "profit_aud": 738.75}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 1.25, 0.0, 1.12, 0.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.48, -2.67, 8.4, -6.6, 18.16, -6.08, -6.08, -6.08, 44.63, 81.88, 167.34, 237.33, 289.33, 289.33, 289.33, 289.33, 289.33, 282.12, 282.12, 303.37, 303.37, 303.37, 303.37, 424.65, 546.82, 656.22, 656.22, 656.22, 656.22, 656.22, 789.43, 789.43, 789.43, 789.43], "profit_aud": 789.43}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.91, 50.33, -0.37, 8.02, 50.74, 120.74, 172.74, 254.38, 343.02, 343.02, 343.02, 343.02, 343.02, 343.02, 343.02, 343.02, 445.94, 567.22, 689.39, 798.79, 798.79, 798.79, 798.79, 798.79, 798.79, 661.69, 646.8, 791.5], "profit_aud": 791.5}}} \ No newline at end of file diff --git a/results/daily/2026-10-04.json b/results/daily/2026-10-04.json new file mode 100644 index 0000000..f81ffca --- /dev/null +++ b/results/daily/2026-10-04.json @@ -0,0 +1 @@ +{"date": "2026-10-04", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [117.3, 115.41, 122.81, 127.76, 109.63, 114.27, 110.51, 111.36, 113.71, 110.84, 110.97, 108.2, 102.0, 62.04, 9.62, 1.65, 1.7, 12.46, 26.84, 24.76, 51.96, 93.47, 131.24, 134.91, 154.26, 197.44, 167.82, 235.45, 210.3, 241.72, 151.48, 144.93, 151.45, 174.93, 163.56, 145.84, 141.45, 138.61, 136.68, 135.86, 134.71, 131.74, 131.28, 129.52, 127.84, 124.73, 128.98, 147.65], "forecast_price": {"naive": [95.96, 69.21, 38.73, 32.1, 29.92, 28.95, 27.81, 29.26, 30.23, 28.67, 32.97, 30.22, 25.13, 18.91, -4.38, -8.15, -8.86, -12.0, -19.81, -21.55, -27.64, -34.74, -40.57, -67.12, -68.36, -56.0, -41.6, -65.32, -70.91, -18.98, -9.38, -6.4, -24.26, -17.0, 4.02, 97.8, 82.34, 97.03, 97.73, 87.52, 93.91, 96.97, 98.5, 101.88, 106.57, 109.68, 106.32, 115.76], "lightgbm": [43.28, 38.65, 36.86, 38.12, 36.21, 35.96, 35.96, 36.36, 36.36, 35.96, 36.0, 37.41, 34.58, 29.3, 15.84, 0.62, -8.04, -9.24, -11.92, -12.58, -14.83, -18.39, -27.31, -27.98, -27.98, -27.98, -25.91, -25.82, -25.08, -12.58, -8.45, 0.09, -6.52, 4.05, 28.56, 74.73, 69.55, 75.94, 75.9, 69.55, 75.94, 74.06, 74.02, 73.63, 73.92, 73.92, 73.92, 79.16], "lstm": [117.63, 117.07, 107.8, 108.77, 105.75, 94.12, 90.55, 86.12, 78.22, 76.62, 75.23, 57.97, 34.73, 17.95, 3.97, -5.72, -8.52, -13.8, -12.52, -21.8, -20.76, -24.88, -23.97, -28.66, -29.9, -35.28, -35.88, -35.86, -26.05, -21.71, -17.43, -7.02, -0.92, 15.65, 32.88, 56.53, 78.66, 94.66, 88.14, 90.1, 91.28, 79.15, 78.73, 80.06, 73.3, 65.0, 67.06, 76.32]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -12.02, -14.08, -16.21, -31.79, -31.79, -45.53, -45.53, -45.53, -45.53, -45.53, -45.53, 201.27, 201.27, 495.59, 758.46, 1060.61, 1060.61, 879.45, 858.25, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1076.91, 1059.01, 903.11, 903.11, 1087.66], "profit_aud": 1087.66}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 3.75, 4.88, 4.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -138.13, -138.13, -138.13, -153.65, -14.94, -14.94, -14.94, -14.94, -16.14, -16.35, -16.56, -18.12, -21.47, -24.57, -31.07, -42.75, -59.15, -227.8, -420.62, -667.42, -574.28, -868.6, -1131.48, -1161.69, -1014.76, -833.6, -1022.91, -1241.57, -1241.57, -1059.27, -1236.08, -1236.08, -1099.4, -1269.23, -1269.23, -1269.23, -1269.23, -1269.23, -1109.43, -953.52, -792.29, -607.73], "profit_aud": -607.73}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.21, -1.77, -5.13, -8.22, -14.72, -26.4, -190.45, -359.09, -551.92, -798.72, -903.61, -933.04, -959.33, -989.55, -1008.48, -845.43, -1034.74, -1034.74, -1034.74, -1034.74, -1034.74, -861.48, -690.63, -690.63, -522.24, -522.24, -522.24, -522.24, -522.24, -522.24, -522.24, -337.68], "profit_aud": -337.68}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.0, 2.5, 2.0, 2.5, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.12, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.21, -0.42, -3.53, -3.53, -9.73, -9.73, -33.09, -33.09, -117.41, -310.24, -557.04, -766.82, -1061.14, -1087.42, -1117.64, -1136.57, -1154.69, -1173.62, -1173.62, -1173.62, -1173.62, -1173.62, -1000.35, -829.51, -659.68, -491.29, -491.29, -491.29, -491.29, -491.29, -647.2, -665.26, -480.7], "profit_aud": -480.7}}} \ No newline at end of file diff --git a/results/daily/2026-10-05.json b/results/daily/2026-10-05.json new file mode 100644 index 0000000..078136c --- /dev/null +++ b/results/daily/2026-10-05.json @@ -0,0 +1 @@ +{"date": "2026-10-05", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [156.18, 169.98, 173.12, 175.47, 176.9, 181.05, 179.71, 196.58, 184.07, 187.77, 182.73, 199.26, 262.05, 246.0, 160.71, 134.72, 103.2, 98.41, 91.7, 70.46, 8.89, 14.62, 9.0, 7.98, -3.46, -3.19, 47.1, 67.87, 62.37, 26.47, 39.24, 62.12, 94.08, 117.42, 117.35, 124.88, 135.93, 130.31, 126.4, 126.09, 130.68, 128.69, 129.28, 133.23, 143.91, 144.43, 156.5, 144.38], "forecast_price": {"naive": [117.3, 115.41, 122.81, 127.76, 109.63, 114.27, 110.51, 111.36, 113.71, 110.84, 110.97, 108.2, 102.0, 62.04, 9.62, 1.65, 1.7, 12.46, 26.84, 24.76, 51.96, 93.47, 131.24, 134.91, 154.26, 197.44, 167.82, 235.45, 210.3, 241.72, 151.48, 144.93, 151.45, 174.93, 163.56, 145.84, 141.45, 138.61, 136.68, 135.86, 134.71, 131.74, 131.28, 129.52, 127.84, 124.73, 128.98, 147.65], "lightgbm": [74.82, 72.43, 82.04, 81.88, 76.36, 79.83, 76.93, 78.59, 79.83, 76.93, 76.93, 76.51, 75.81, 51.33, 38.46, 36.75, 54.1, 38.8, 27.12, 23.29, 23.98, 23.51, 24.85, 24.98, 25.21, 29.69, 23.57, 35.76, 32.89, 40.42, 28.74, 37.18, 46.24, 82.35, 83.06, 80.59, 85.09, 85.91, 89.39, 88.2, 88.67, 84.06, 84.06, 80.77, 81.16, 80.34, 80.34, 90.52], "lstm": [123.43, 121.22, 110.92, 111.77, 108.67, 94.62, 90.36, 99.65, 92.52, 102.18, 98.14, 98.14, 80.99, 76.59, 61.05, 66.77, 64.92, 59.4, 50.69, 41.94, 43.63, 36.48, 47.31, 46.36, 44.21, 47.46, 45.14, 42.96, 50.94, 59.19, 55.31, 75.78, 73.68, 92.35, 110.85, 128.68, 148.89, 177.73, 157.17, 125.34, 117.48, 115.79, 102.47, 99.11, 98.0, 85.32, 82.28, 98.51]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-195.23, -407.71, -624.1, -843.43, -941.61, -941.61, -941.61, -695.89, -695.89, -695.89, -695.89, -446.82, -119.26, 188.23, 188.23, 188.23, 188.23, 188.23, 188.23, 188.23, 177.12, 186.25, 175.0, 165.03, 169.35, 173.34, 173.34, 258.18, 320.55, 287.46, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 238.41, 418.3, 598.84, 794.47, 974.94], "profit_aud": 974.94}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 1.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -200.88, -369.29, -498.28, -621.29, -621.29, -660.4, -660.4, -660.4, -660.4, -660.4, -660.4, -664.39, -664.39, -579.56, -501.6, -468.51, -468.51, -546.16, -559.33, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -412.56, -432.71, -613.25, -613.25, -432.78], "profit_aud": -432.78}, "lightgbm": {"charge_mw": [0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, -212.48, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -17.72, -40.22, -208.63, -79.63, -79.63, -79.63, -167.71, -178.82, -197.09, -208.34, -212.77, -212.77, -216.36, -275.23, -275.23, -275.23, -245.46, -294.51, -294.51, -294.51, -294.51, -294.51, -294.51, -294.51, -294.51, -136.51, 21.1, 184.45, 184.45, 184.45, 184.45, 184.45, 184.45, 184.45, 364.92], "profit_aud": 364.92}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 1.11, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 3.38, 3.38, 3.38, 3.88, 3.88, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -224.64, -224.64, -224.64, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -13.39, -101.47, -112.59, -130.86, -130.86, -130.86, -128.94, -128.94, -128.94, -213.77, -213.77, -213.77, -213.77, -213.77, -213.77, -213.77, -213.77, -57.67, 112.25, 275.13, 433.14, 433.14, 433.14, 433.14, 433.14, 433.14, 433.14, 412.92, 217.29, 397.76], "profit_aud": 397.76}}} \ No newline at end of file diff --git a/results/daily/2026-10-06.json b/results/daily/2026-10-06.json new file mode 100644 index 0000000..6d2c5ec --- /dev/null +++ b/results/daily/2026-10-06.json @@ -0,0 +1 @@ +{"date": "2026-10-06", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [140.42, 133.95, 137.0, 107.9, 102.07, 123.57, 104.83, 103.58, 130.5, 112.4, 103.09, 107.33, 87.36, 18.08, 1.37, -12.51, -7.22, -5.61, -5.58, -7.04, -8.12, -8.55, -9.92, -12.02, -17.16, -21.8, -19.46, -19.3, -19.48, -34.95, -34.95, -38.54, -29.54, -10.8, -1.74, 73.34, 99.34, 100.35, 99.84, 97.73, 90.41, 98.28, 96.99, 99.83, 104.0, 103.62, 107.41, 104.64], "forecast_price": {"naive": [156.18, 169.98, 173.12, 175.47, 176.9, 181.05, 179.71, 196.58, 184.07, 187.77, 182.73, 199.26, 262.05, 246.0, 160.71, 134.72, 103.2, 98.41, 91.7, 70.46, 8.89, 14.62, 9.0, 7.98, -3.46, -3.19, 47.1, 67.87, 62.37, 26.47, 39.24, 62.12, 94.08, 117.42, 117.35, 124.88, 135.93, 130.31, 126.4, 126.09, 130.68, 128.69, 129.28, 133.23, 143.91, 144.43, 156.5, 144.38], "lightgbm": [82.82, 82.91, 82.91, 85.06, 84.26, 84.32, 84.26, 84.32, 84.32, 84.32, 84.32, 84.05, 83.81, 72.66, 75.0, 73.32, 58.45, 54.31, 31.2, 23.33, 8.32, 9.1, 9.81, 9.81, 8.77, 8.77, 21.63, 26.71, 32.78, 15.76, 18.35, 35.5, 36.62, 55.59, 70.02, 80.03, 94.71, 87.56, 85.32, 85.32, 87.56, 83.78, 83.78, 86.52, 93.47, 93.47, 93.47, 93.47], "lstm": [130.86, 124.96, 122.78, 116.58, 117.76, 110.11, 109.47, 106.14, 112.13, 109.82, 118.7, 113.64, 102.75, 103.84, 83.66, 67.15, 58.05, 43.92, 35.55, 24.36, 25.79, 19.92, 20.07, 13.27, 14.83, 10.17, 3.79, 7.16, 7.71, 12.11, 17.65, 27.82, 35.35, 52.4, 62.29, 83.42, 106.73, 137.55, 126.64, 126.99, 110.33, 110.13, 113.73, 107.39, 107.86, 95.78, 100.83, 115.59]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -15.11, -142.69, 11.77, -2.9, -132.38, 30.74, 30.74, 30.74, 30.74, 30.74, 30.74, 30.74, 46.38, 55.4, 49.96, 42.99, 43.87, 44.88, 45.95, 47.19, 48.7, 50.84, 78.1, 78.1, 72.69, 72.69, 116.38, 160.07, 208.24, 245.16, 246.51, 246.73, 246.73, 246.73, 246.73, 246.73, 246.73, 246.73, 246.73, 246.73, 246.73, 376.73, 506.26, 640.53, 771.33], "profit_aud": 771.33}, "naive": {"charge_mw": [2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [-175.53, -342.97, -514.21, -649.09, -705.74, -705.74, -705.74, -576.26, -576.26, -576.26, -576.26, -442.1, -332.9, -310.29, -310.29, -310.29, -310.29, -310.29, -310.29, -310.29, -300.14, -305.48, -293.08, -278.04, -256.59, -229.34, -229.34, -253.47, -272.94, -229.26, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -185.57, -55.57, 73.96, 208.23, 339.03], "profit_aud": 339.03}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 1.11, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.25, 2.75, 3.88, 5.0, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 3.75, 3.75, 3.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.16, 20.84, 20.84, 27.52, 48.97, 76.22, 76.22, 56.92, 32.57, 76.26, 119.95, 119.95, 119.95, 119.95, 119.95, 119.95, 244.12, 244.12, 244.12, 244.12, 244.12, 230.36, 109.12, 109.12, 239.12, 368.66, 502.92, 633.73], "profit_aud": 633.73}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -129.48, -129.48, -129.48, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, -13.5, 1.53, -17.78, 9.48, 33.8, 57.93, 82.28, 101.67, 101.67, 101.67, 101.67, 101.67, 101.67, 101.67, 101.67, 227.11, 351.91, 474.08, 474.08, 474.08, 595.32, 595.32, 595.32, 465.79, 450.75, 581.55], "profit_aud": 581.55}}} \ No newline at end of file diff --git a/results/daily/2026-10-07.json b/results/daily/2026-10-07.json new file mode 100644 index 0000000..0df3956 --- /dev/null +++ b/results/daily/2026-10-07.json @@ -0,0 +1 @@ +{"date": "2026-10-07", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [104.92, 102.2, 104.93, 103.65, 101.96, 100.88, 102.29, 103.8, 107.62, 101.61, 104.8, 105.35, 94.96, 77.02, -4.98, -47.87, -45.02, -65.85, -65.55, -86.08, -95.17, -86.27, -49.1, -72.87, -58.68, -42.17, -48.88, -42.28, -26.49, -13.58, 1.4, -16.77, -13.98, -9.18, 72.94, 115.08, 116.33, 112.63, 108.78, 102.88, 103.3, 104.51, 104.64, 97.34, 90.2, 82.09, 100.48, 92.58], "forecast_price": {"naive": [140.42, 133.95, 137.0, 107.9, 102.07, 123.57, 104.83, 103.58, 130.5, 112.4, 103.09, 107.33, 87.36, 18.08, 1.37, -12.51, -7.22, -5.61, -5.58, -7.04, -8.12, -8.55, -9.92, -12.02, -17.16, -21.8, -19.46, -19.3, -19.48, -34.95, -34.95, -38.54, -29.54, -10.8, -1.74, 73.34, 99.34, 100.35, 99.84, 97.73, 90.41, 98.28, 96.99, 99.83, 104.0, 103.62, 107.41, 104.64], "lightgbm": [64.35, 66.1, 64.35, 62.82, 62.23, 65.17, 64.81, 64.81, 65.17, 65.47, 63.69, 63.69, 65.3, 57.97, 55.44, 38.24, 39.24, 25.32, 24.69, 15.17, 5.89, 7.01, 5.73, 4.64, 2.73, 4.58, 6.17, 11.28, 11.76, 4.3, 4.61, 11.22, 15.66, 26.68, 38.12, 69.03, 81.68, 82.67, 81.68, 81.68, 77.53, 79.68, 78.79, 78.79, 79.44, 79.44, 80.92, 80.92], "lstm": [93.66, 99.66, 89.63, 84.77, 80.59, 71.77, 70.47, 73.94, 75.22, 83.22, 92.58, 79.88, 58.14, 47.53, 29.68, 21.23, 13.69, 5.42, 1.49, -2.11, -5.18, -9.84, -7.86, -12.44, -12.18, -16.71, -18.05, -19.37, -17.22, -11.18, -7.75, 0.95, 3.26, 20.24, 30.22, 55.52, 72.52, 103.99, 108.41, 106.95, 102.74, 89.63, 92.52, 89.16, 85.23, 68.85, 83.0, 88.48]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 1.75, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 4.88, 3.62, 4.75, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.62, 12.59, 12.59, 94.9, 135.87, 243.47, 362.43, 470.27, 408.89, 499.98, 514.65, 467.85, 528.94, 534.23, 537.54, 537.54, 539.29, 560.25, 565.49, 566.64, 566.64, 710.49, 855.9, 996.69, 1132.66, 1132.66, 1132.66, 1132.66, 1132.66, 1132.66, 1120.04, 1017.42, 1143.02, 1143.02], "profit_aud": 1143.02}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.12, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, -14.51, -141.97, -15.87, -30.19, -159.93, -25.41, -25.41, -25.41, -25.41, -25.41, -25.41, -25.41, 34.43, 90.71, 26.84, -55.11, -44.35, -32.45, -21.67, -15.53, -6.42, 0.92, 53.62, 53.62, 41.79, 41.79, 58.76, 57.01, 77.96, 95.44, 96.59, 87.47, 87.47, 87.47, 87.47, 87.47, 87.47, 87.47, 87.47, 87.47, 87.47, 200.22, 302.84, 428.44, 544.17], "profit_aud": 544.17}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 1.11, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 4.0, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 118.96, 21.91, 83.29, 174.38, 247.74, 300.45, 327.57, 285.29, 252.18, 269.15, 267.4, 267.4, 267.4, 267.4, 267.4, 267.4, 412.81, 553.6, 689.57, 818.17, 818.17, 818.17, 818.17, 818.17, 818.17, 818.17, 818.17, 818.17], "profit_aud": 818.17}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 1.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.62, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.12, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, -126.1, -253.95, -283.01, -283.01, -156.0, -25.01, -25.01, -25.01, -25.01, -25.01, -25.01, -25.01, -25.01, -25.01, -14.25, -2.35, 105.48, 50.98, 105.63, 105.63, 158.34, 219.44, 272.29, 305.4, 307.1, 306.92, 306.92, 306.92, 306.92, 306.92, 306.92, 306.92, 447.71, 583.68, 712.28, 841.41, 841.41, 841.41, 841.41, 841.41, 738.79, 738.79, 842.95], "profit_aud": 842.95}}} \ No newline at end of file diff --git a/results/daily/2026-10-08.json b/results/daily/2026-10-08.json new file mode 100644 index 0000000..dced9b5 --- /dev/null +++ b/results/daily/2026-10-08.json @@ -0,0 +1 @@ +{"date": "2026-10-08", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [94.37, 90.74, 90.52, 92.61, 96.5, 98.02, 100.28, 102.51, 103.29, 96.75, 100.61, 110.33, 88.84, 27.73, -19.94, -76.6, -69.26, -73.37, -90.1, -79.01, -86.17, -90.23, -101.28, -133.45, -156.28, -90.05, -21.03, -42.45, -134.85, -218.93, -231.46, -128.88, -52.66, -14.2, 4.66, 30.38, 35.29, 43.19, 10.56, 1.47, 1.55, 1.84, 1.85, -0.84, 0.81, -3.73, -4.37, -3.71], "forecast_price": {"naive": [104.92, 102.2, 104.93, 103.65, 101.96, 100.88, 102.29, 103.8, 107.62, 101.61, 104.8, 105.35, 94.96, 77.02, -4.98, -47.87, -45.02, -65.85, -65.55, -86.08, -95.17, -86.27, -49.1, -72.87, -58.68, -42.17, -48.88, -42.28, -26.49, -13.58, 1.4, -16.77, -13.98, -9.18, 72.94, 115.08, 116.33, 112.63, 108.78, 102.88, 103.3, 104.51, 104.64, 97.34, 90.2, 82.09, 100.48, 92.58], "lightgbm": [57.97, 57.79, 58.36, 56.87, 56.31, 56.31, 56.31, 56.87, 56.87, 56.31, 58.18, 58.18, 57.37, 52.29, 49.48, 12.99, 10.25, 4.12, 0.07, -5.55, -7.36, -8.53, -7.93, -11.72, -11.72, -8.37, -9.91, -8.37, -4.99, -2.13, 12.78, 1.77, 5.71, 17.21, 59.14, 87.36, 89.8, 89.32, 86.14, 86.14, 86.14, 84.05, 83.13, 81.93, 76.45, 74.26, 82.46, 78.27], "lstm": [84.73, 81.49, 82.52, 78.12, 72.11, 68.47, 66.54, 64.57, 67.7, 72.53, 78.82, 68.43, 56.86, 45.78, 25.34, 16.72, 9.11, -0.91, -4.62, -11.8, -10.18, -9.53, -12.75, -15.64, -13.08, -15.03, -14.16, -13.71, -9.71, -3.6, 3.71, 12.29, 16.63, 35.97, 51.88, 87.39, 96.69, 121.53, 126.04, 116.0, 99.99, 90.64, 90.3, 88.71, 85.44, 75.18, 79.35, 82.19]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 1.75, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [0.0, -113.43, -226.58, -252.51, -252.51, -252.51, -252.51, -252.51, -123.4, -123.4, -123.4, 14.51, 14.51, 14.51, 17.0, 45.73, 45.73, 45.73, 158.35, 81.72, 81.72, 93.0, 219.6, 386.41, 581.76, 556.54, 530.26, 477.2, 645.76, 919.42, 1208.75, 1369.86, 1376.44, 1378.22, 1378.22, 1416.19, 1460.3, 1514.29, 1527.48, 1525.64, 1523.7, 1525.54, 1527.86, 1528.91, 1529.82, 1534.49, 1539.95, 1544.59], "profit_aud": 1544.59}, "naive": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.0, 2.5, 0.0, 1.25, 0.0, 0.0, 0.0, 2.5, 0.0, 2.0, 2.5, 0.0, 2.25, 2.25, 2.5, 2.5, 0.0, 1.75, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 3.75, 4.88, 5.0, 3.88, 5.0, 5.0, 5.0, 4.88, 3.62, 4.75, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.49, 21.64, 21.64, 113.36, 169.67, 268.43, 376.14, 488.93, 362.33, 529.14, 568.21, 468.26, 494.54, 499.85, 516.7, 516.7, 227.37, 388.48, 408.23, 410.0, 410.0, 447.98, 492.08, 546.07, 559.26, 559.26, 559.26, 559.26, 559.26, 559.26, 559.15, 563.82, 558.35, 558.35], "profit_aud": 558.35}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0, 2.25, 2.25, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 2.12, 3.25, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 4.88, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.88, 20.65, 133.44, 133.44, 300.25, 495.6, 563.13, 589.42, 594.73, 611.58, 638.95, 349.62, 510.72, 518.1, 518.1, 518.1, 556.07, 600.18, 654.17, 667.36, 667.36, 667.36, 667.36, 667.36, 667.36, 667.36, 667.36, 667.36, 667.36], "profit_aud": 667.36}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.28, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.25, 0.0, 1.25, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.0, 0.0, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -14.04, -142.18, -142.18, -142.18, -16.41, -16.41, -16.41, -16.41, -16.41, -16.41, -16.41, -7.24, 4.02, 102.78, 102.78, 15.26, 27.92, 194.73, 292.4, 404.97, 431.25, 484.31, 501.17, 528.54, 528.54, 528.54, 528.54, 528.54, 528.54, 528.54, 528.54, 582.52, 595.72, 597.55, 599.49, 599.49, 599.49, 599.49, 599.49, 599.49, 599.49, 599.49], "profit_aud": 599.49}}} \ No newline at end of file diff --git a/results/daily/2026-10-09.json b/results/daily/2026-10-09.json new file mode 100644 index 0000000..9b9d607 --- /dev/null +++ b/results/daily/2026-10-09.json @@ -0,0 +1 @@ +{"date": "2026-10-09", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [-4.54, -4.2, -3.72, -6.69, -6.44, -4.85, -3.86, -6.76, -2.84, 14.15, 52.2, 73.23, 66.29, 127.0, 791.8, 47.26, 72.09, 182.35, 226.36, 153.26, 27.64, -6.06, -18.74, -22.98, -9.24, -15.92, -14.57, -33.9, -46.52, -56.37, -59.36, -61.08, -46.49, -13.43, -9.79, -11.79, -1.12, 1.42, 5.56, 24.19, 40.57, 60.03, 50.62, 59.51, 75.63, 46.71, 30.79, 29.82], "forecast_price": {"naive": [94.37, 90.74, 90.52, 92.61, 96.5, 98.02, 100.28, 102.51, 103.29, 96.75, 100.61, 110.33, 88.84, 27.73, -19.94, -76.6, -69.26, -73.37, -90.1, -79.01, -86.17, -90.23, -101.28, -133.45, -156.28, -90.05, -21.03, -42.45, -134.85, -218.93, -231.46, -128.88, -52.66, -14.2, 4.66, 30.38, 35.29, 43.19, 10.56, 1.47, 1.55, 1.84, 1.85, -0.84, 0.81, -3.73, -4.37, -3.71], "lightgbm": [54.56, 50.4, 49.99, 49.76, 53.82, 55.02, 50.71, 50.71, 51.23, 50.72, 53.13, 53.67, 45.48, 40.83, 23.86, 6.6, 2.92, -0.69, -5.09, -8.57, -10.4, -16.15, -25.6, -25.6, -18.48, -18.48, -4.38, -13.11, -13.51, -13.09, -4.59, -5.81, -0.03, 13.87, 36.24, 50.95, 54.88, 56.28, 55.53, 55.88, 55.88, 55.88, 55.88, 55.88, 57.16, 55.88, 55.88, 55.88], "lstm": [-5.59, -4.62, -5.79, -7.42, -12.14, -11.52, -7.46, -9.28, -5.91, 1.19, 7.86, 7.09, 2.7, -8.13, -23.99, -29.64, -38.56, -48.27, -51.32, -61.77, -52.33, -52.36, -60.06, -64.77, -56.24, -61.44, -68.16, -63.75, -55.59, -49.35, -45.99, -35.89, -30.79, -18.74, -5.35, 18.06, 25.79, 51.36, 61.89, 57.12, 51.02, 48.51, 51.45, 44.35, 48.4, 40.68, 44.02, 51.2]}, "methods": {"perfect_foresight": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.75, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.88, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.88, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [5.68, 9.35, 4.71, 13.07, 21.13, 27.2, 27.2, 35.65, 36.0, 36.0, 36.0, 36.0, 36.0, 194.76, 1184.5, 1125.43, 1115.34, 1343.28, 1626.22, 1817.79, 1817.79, 1818.55, 1841.98, 1870.71, 1859.16, 1859.16, 1846.99, 1851.23, 1909.38, 1979.85, 2054.04, 2130.38, 2159.44, 2161.12, 2150.25, 2164.98, 2165.13, 2165.13, 2165.13, 2165.13, 2165.13, 2240.16, 2303.43, 2377.82, 2472.35, 2472.35, 2472.35, 2472.35], "profit_aud": 2472.35}, "naive": {"charge_mw": [0.0, 2.5, 2.5, 0.56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 1.94, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 2.5], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 2.25, 1.75, 2.5, 2.5, 0.0, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 1.12, 2.25, 2.5, 2.5, 2.5, 2.5, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.25, 0.12, 0.0, 1.12, 0.12, 0.0, 0.0, 1.12, 2.25, 3.38, 3.0, 1.75, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 2.25, 1.25, 0.0, 1.12, 0.0, 1.12, 2.25, 3.38], "cumulative_profit_aud": [-0.0, 5.26, 9.9, 11.78, 11.78, 11.78, 11.78, 11.78, 8.22, 8.22, 8.22, 99.76, 99.76, 99.76, 0.79, -16.93, -16.93, -16.93, -299.88, -151.22, -151.22, -150.46, -127.03, -98.3, -86.75, -91.2, -109.42, -151.8, -93.65, -23.18, 51.01, 127.35, 133.17, 134.84, 134.84, 120.11, 118.7, 120.48, 127.43, 97.19, 46.48, 106.51, 169.78, 95.4, 180.48, 122.1, 83.61, 46.34], "profit_aud": 46.34}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.0, 0.0, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 3.75, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 3.75, 2.5, 1.25, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -22.79, -51.09, -70.24, -73.7, -69.91, -46.48, -17.75, -6.2, 13.7, -4.52, 3.96, 62.11, 69.16, 3.28, 79.62, 85.43, 85.43, 85.43, 85.43, 85.43, 87.21, 87.21, 117.45, 168.16, 168.16, 168.16, 168.16, 262.7, 262.7, 262.7, 262.7], "profit_aud": 262.7}, "lstm": {"charge_mw": [2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 2.5, 2.25, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 2.5, 2.5, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 2.5, 2.5, 1.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [1.12, 0.0, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.12, 0.0, 0.62, 1.75, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 1.25, 1.25, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [5.68, 1.01, 1.47, 5.65, 13.71, 19.78, 24.6, 33.05, 33.41, 51.1, 116.35, 207.89, 290.75, 274.87, 175.9, 169.99, 160.98, 138.19, 109.89, -81.68, -54.86, -54.86, -40.8, -12.07, -12.07, 7.83, 26.04, 68.43, 74.24, 81.29, 88.71, 96.34, 102.15, 103.83, 105.05, 105.05, 105.05, 106.84, 113.78, 144.02, 144.02, 144.02, 207.29, 207.29, 207.29, 148.9, 144.59, 181.87], "profit_aud": 181.87}}} \ No newline at end of file diff --git a/results/daily/2026-10-10.json b/results/daily/2026-10-10.json new file mode 100644 index 0000000..9e4196a --- /dev/null +++ b/results/daily/2026-10-10.json @@ -0,0 +1 @@ +{"date": "2026-10-10", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [26.46, 5.56, -0.83, -3.13, -0.27, -0.23, -0.25, -2.65, -4.08, -2.81, -0.54, 1.45, 9.01, -6.83, -10.27, -5.33, -6.84, -8.37, -8.37, -13.86, -23.01, -19.6, -17.82, -18.73, -20.69, -14.82, -13.17, -13.16, -7.07, -4.64, 8.12, 37.16, 66.0, 81.52, 83.89, 63.42, 86.98, 91.24, 97.36, 96.48, 91.4, 97.37, 107.48, 111.17, 103.07, 102.46, 101.32, 101.43], "forecast_price": {"naive": [-4.54, -4.2, -3.72, -6.69, -6.44, -4.85, -3.86, -6.76, -2.84, 14.15, 52.2, 73.23, 66.29, 127.0, 791.8, 47.26, 72.09, 182.35, 226.36, 153.26, 27.64, -6.06, -18.74, -22.98, -9.24, -15.92, -14.57, -33.9, -46.52, -56.37, -59.36, -61.08, -46.49, -13.43, -9.79, -11.79, -1.12, 1.42, 5.56, 24.19, 40.57, 60.03, 50.62, 59.51, 75.63, 46.71, 30.79, 29.82], "lightgbm": [65.21, 60.6, 53.49, 50.69, 51.03, 49.14, 49.14, 49.82, 49.14, 46.21, 43.83, 45.63, 41.75, 36.78, 29.56, 12.28, 20.69, 9.6, 7.11, 6.58, -4.66, -13.19, -20.2, -20.2, -19.13, -20.2, -20.2, -24.99, -37.54, -36.94, -34.7, -29.74, -21.65, 2.42, 17.58, 37.01, 48.27, 53.62, 54.31, 55.99, 57.07, 64.61, 64.56, 65.37, 68.72, 60.96, 56.92, 57.35], "lstm": [41.43, 45.0, 33.04, 29.27, 30.12, 26.43, 26.25, 29.06, 29.63, 34.76, 46.1, 46.62, 31.59, 20.03, 0.72, -10.36, -26.16, -32.63, -37.81, -43.02, -43.1, -45.41, -52.93, -57.38, -52.22, -68.24, -74.03, -74.93, -71.79, -63.12, -61.74, -48.86, -37.8, -20.09, 0.27, 13.62, 36.6, 63.23, 71.89, 78.73, 65.25, 67.59, 62.62, 61.65, 58.93, 51.93, 63.06, 69.53]}, "methods": {"perfect_foresight": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.83, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 1.04, 4.96, 4.96, 4.66, 4.45, 7.77, 12.86, 16.37, 15.92, 17.74, 29.0, 30.71, 43.55, 36.88, 37.74, 39.83, 39.83, 41.56, 70.32, 94.82, 105.96, 129.37, 155.23, 157.08, 158.73, 160.37, 161.26, 161.84, 161.84, 161.84, 161.84, 161.84, 256.21, 176.94, 176.94, 176.94, 176.94, 176.94, 176.94, 176.94, 311.29, 450.26, 579.09, 707.16, 707.16, 707.16], "profit_aud": 707.16}, "naive": {"charge_mw": [2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.5, 0.83, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.75, 2.5, 0.0, 0.0, 0.0, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 2.25, 0.0, 0.0, 2.5, 2.5, 2.5, 2.25, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.5, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [1.12, 1.88, 0.62, 1.75, 2.88, 4.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 3.62, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 1.12, 2.25, 1.0, 0.88, 0.0, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [-33.07, -37.93, -38.97, -35.06, -34.72, -34.43, -34.43, -31.12, -30.61, -30.61, -30.61, -30.61, -30.61, -39.14, -51.98, -45.31, -44.36, -54.82, -65.28, -82.61, -82.61, -80.16, -57.88, -34.47, -60.33, -60.33, -71.33, -69.69, -60.85, -55.04, -65.19, -111.64, -152.89, -163.08, -69.96, -149.24, -160.11, -160.11, -160.11, -160.11, -160.11, -38.4, 95.96, 234.92, 363.75, 363.75, 363.75, 363.75], "profit_aud": 363.75}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 2.25, 2.25, 1.25, 2.5, 2.5, 2.5, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.38, 0.25, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.66, -1.03, -1.03, -1.03, -1.03, 1.85, 4.3, 15.43, 15.43, 15.43, 15.43, 15.43, 23.66, 32.5, 38.31, 28.16, -18.29, -26.54, -26.54, -26.54, -26.54, -26.54, -26.54, -26.54, -26.54, -26.54, 95.17, 229.52, 368.49, 497.32, 497.32, 497.32, 497.32], "profit_aud": 497.32}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.83, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 0.0, 0.0, 0.0, 0.0, 1.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.25, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [0.0, 0.0, 0.0, 0.38, 0.38, 1.5, 2.62, 3.75, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 1.12, 2.25, 3.38, 4.5, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.38, 0.12, 0.12, 0.12, 0.12, 1.25, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 1.3, 1.3, 1.59, 1.91, 5.23, 5.23, 1.71, 1.04, 2.86, 2.86, 2.86, 2.86, 3.53, 4.38, 5.43, 6.47, 8.21, 11.08, 13.53, 15.76, 20.44, 20.44, 38.97, 55.43, 71.89, 80.73, 83.63, 82.62, 77.97, 69.72, 59.53, 59.53, 59.53, 59.53, 59.53, 181.24, 301.84, 404.67, 526.38, 526.38, 526.38, 526.38, 398.31, 398.31, 525.1], "profit_aud": 525.1}}} \ No newline at end of file diff --git a/results/daily/2026-10-11.json b/results/daily/2026-10-11.json new file mode 100644 index 0000000..9db7bc2 --- /dev/null +++ b/results/daily/2026-10-11.json @@ -0,0 +1 @@ +{"date": "2026-10-11", "intervals": ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], "actual_price": [105.43, 104.36, 100.22, 95.9, 99.45, 114.45, 139.99, 155.17, 164.96, 141.89, 112.15, 94.85, 49.77, -7.78, -13.72, -76.1, -97.17, -143.09, -166.7, -162.54, -190.06, -212.05, -265.56, -205.01, -234.75, -134.46, -120.31, -127.04, -135.98, -127.17, -107.79, -202.48, -74.66, -16.67, -7.06, -5.52, -0.52, -1.82, -0.09, -0.1, -0.07, 6.27, 0.01, 0.01, 0.01, -0.27, 0.01, 0.01], "forecast_price": {"naive": [26.46, 5.56, -0.83, -3.13, -0.27, -0.23, -0.25, -2.65, -4.08, -2.81, -0.54, 1.45, 9.01, -6.83, -10.27, -5.33, -6.84, -8.37, -8.37, -13.86, -23.01, -19.6, -17.82, -18.73, -20.69, -14.82, -13.17, -13.16, -7.07, -4.64, 8.12, 37.16, 66.0, 81.52, 83.89, 63.42, 86.98, 91.24, 97.36, 96.48, 91.4, 97.37, 107.48, 111.17, 103.07, 102.46, 101.32, 101.43], "lightgbm": [41.11, 39.12, 38.55, 39.33, 39.33, 37.5, 37.5, 38.28, 37.5, 37.5, 37.0, 37.08, 35.41, 33.18, 30.26, 11.8, 10.95, 0.95, 6.89, 4.26, 0.88, -2.25, -5.89, -5.89, -2.13, -5.11, -5.11, -4.66, 4.93, 9.36, 11.29, 21.27, 39.99, 48.83, 62.51, 63.86, 74.4, 76.85, 80.38, 79.96, 76.85, 78.71, 78.35, 81.34, 78.47, 77.52, 77.52, 77.52], "lstm": [126.7, 116.66, 108.25, 103.89, 96.69, 88.31, 90.2, 83.9, 77.04, 80.2, 81.39, 68.37, 53.6, 45.04, 32.01, 21.63, 15.43, 11.83, 9.43, 3.13, 2.22, 1.67, 2.44, -0.68, 1.2, -6.64, -5.87, -3.42, 2.27, 8.7, 11.36, 20.69, 26.31, 53.03, 71.53, 99.68, 125.29, 142.26, 119.87, 118.4, 106.34, 97.56, 88.83, 79.58, 84.44, 76.21, 79.55, 88.8]}, "methods": {"perfect_foresight": {"charge_mw": [1.11, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.56, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 2.5, 0.28, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 2.0, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 2.25, 2.5, 2.5, 0.0, 2.25, 2.5, 0.0, 2.25, 2.25, 2.25, 2.25, 2.5, 0.0, 2.5, 2.0, 2.25, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 2.5], "soc_mwh": [0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.0, 0.5, 1.62, 2.75, 3.88, 5.0, 5.0, 4.0, 3.88, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 4.88, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [-58.51, -188.96, -314.24, -434.11, -558.42, -558.42, -383.43, -189.47, 16.72, 194.08, 194.08, 194.08, 194.08, 195.05, 196.77, 206.28, 218.43, 236.31, 277.99, 277.99, 396.78, 661.84, 993.79, 1250.06, 1543.49, 1560.3, 1443.6, 1443.6, 1613.58, 1629.47, 1509.83, 1762.92, 1772.25, 1774.34, 1775.22, 1775.91, 1775.33, 1777.61, 1777.61, 1777.63, 1777.64, 1785.48, 1785.49, 1785.51, 1785.52, 1785.86, 1785.85, 1785.87], "profit_aud": 1785.87}, "naive": {"charge_mw": [0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.83, 2.5, 2.5, 2.5, 0.83, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.0, 0.0, 2.5, 2.25, 2.0, 2.5, 2.25, 0.0, 0.0, 1.25, 0.0, 0.0, 2.25, 2.25, 2.25, 2.25, 2.25, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0], "soc_mwh": [-0.0, 0.0, 1.12, 2.25, 2.12, 0.88, 0.0, 1.12, 2.25, 3.38, 2.5, 1.25, 0.0, 0.12, 1.25, 0.0, 0.0, 0.12, 0.0, 0.0, 1.12, 2.25, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, -125.27, -245.15, -245.15, -102.08, 14.81, -179.15, -385.34, -562.7, -469.06, -350.5, -288.28, -286.34, -269.18, -364.3, -352.16, -316.38, -316.38, -296.07, -58.49, 206.57, 372.55, 628.81, 922.25, 939.05, 954.09, 969.97, 986.97, 1002.87, 1002.87, 1002.87, 1002.87, 1002.87, 994.92, 1001.82, 1001.82, 1001.82, 1001.82, 1001.82, 1001.82, 1001.82, 1001.83, 1001.85, 1001.86, 1001.52, 1001.52, 1001.52], "profit_aud": 1001.52}, "lightgbm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 1.39, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "discharge_mw": [0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 2.25, 0.0, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 0.0, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0, 0.0], "soc_mwh": [-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 0.0, 0.0, 0.0, 1.12, 2.25, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 2.5, 1.25, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 178.86, -8.68, -8.68, -8.68, 17.83, 349.78, 606.04, 475.76, 643.84, 794.23, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 953.02, 952.91, 952.79, 952.79, 960.63, 960.63, 960.64, 960.64, 960.64, 960.64, 960.64], "profit_aud": 960.64}, "lstm": {"charge_mw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.0, 2.5, 1.11, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 0.28, 0.0], "discharge_mw": [0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 2.5, 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5], "soc_mwh": [-0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 0.0, 1.12, 1.62, 2.75, 3.88, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.75, 2.5, 1.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.12, 1.25, 0.0], "cumulative_profit_aud": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 265.06, -33.7, 222.56, 352.85, 520.93, 671.32, 830.12, 830.12, 830.12, 830.12, 830.12, 830.12, 830.12, 830.12, 830.12, 829.46, 827.18, 827.06, 826.94, 826.94, 826.94, 826.94, 826.94, 826.94, 827.28, 827.28, 827.29], "profit_aud": 827.29}}} \ No newline at end of file diff --git a/results/daily/index.json b/results/daily/index.json new file mode 100644 index 0000000..5fe35f6 --- /dev/null +++ b/results/daily/index.json @@ -0,0 +1 @@ +{"best_model": "lstm", "best_day": "2026-01-06", "worst_day": "2026-05-18", "biggest_spike_day": "2026-06-22", "definitions": {"best_day": "highest lstm capture rate among days where perfect foresight earned >= $100", "worst_day": "lowest lstm capture rate among days where perfect foresight earned >= $100", "biggest_spike_day": "highest actual 30-minute price"}, "days": [{"date": "2025-10-12", "price_max": 106.28, "price_min": -36.28, "perfect_foresight_aud": 938.51, "naive_aud": 648.26, "lightgbm_aud": 608.37, "lstm_aud": 596.66}, {"date": "2025-10-13", "price_max": 259.27, "price_min": -17.78, "perfect_foresight_aud": 1326.52, "naive_aud": 694.5, "lightgbm_aud": 949.79, "lstm_aud": 936.03}, {"date": "2025-10-14", "price_max": 193.78, "price_min": -23.98, "perfect_foresight_aud": 1304.8, "naive_aud": 1034.6, "lightgbm_aud": 1132.51, "lstm_aud": 1020.06}, {"date": "2025-10-15", "price_max": 230.84, "price_min": -17.6, "perfect_foresight_aud": 1385.42, "naive_aud": 651.15, "lightgbm_aud": 1206.53, "lstm_aud": 1120.6}, {"date": "2025-10-16", "price_max": 151.48, "price_min": -113.22, "perfect_foresight_aud": 1143.69, "naive_aud": 932.2, "lightgbm_aud": 806.87, "lstm_aud": 768.61}, {"date": "2025-10-17", "price_max": 138.03, "price_min": -175.15, "perfect_foresight_aud": 1523.53, "naive_aud": 562.42, "lightgbm_aud": 1010.22, "lstm_aud": 874.39}, {"date": "2025-10-18", "price_max": 149.17, "price_min": -93.06, "perfect_foresight_aud": 1205.12, "naive_aud": 73.68, "lightgbm_aud": 765.89, "lstm_aud": 752.05}, {"date": "2025-10-19", "price_max": 115.73, "price_min": -44.92, "perfect_foresight_aud": 854.16, "naive_aud": 414.94, "lightgbm_aud": 665.8, "lstm_aud": 658.67}, {"date": "2025-10-20", "price_max": 178.04, "price_min": 49.62, "perfect_foresight_aud": 903.52, "naive_aud": -197.85, "lightgbm_aud": -228.16, "lstm_aud": -27.14}, {"date": "2025-10-21", "price_max": 255.35, "price_min": -11.68, "perfect_foresight_aud": 676.14, "naive_aud": -927.96, "lightgbm_aud": -292.81, "lstm_aud": 56.73}, {"date": "2025-10-22", "price_max": 124.18, "price_min": -90.77, "perfect_foresight_aud": 1034.01, "naive_aud": -237.44, "lightgbm_aud": 421.88, "lstm_aud": 507.1}, {"date": "2025-10-23", "price_max": 460.4, "price_min": -1.35, "perfect_foresight_aud": 1787.58, "naive_aud": -1455.28, "lightgbm_aud": 291.65, "lstm_aud": 517.36}, {"date": "2025-10-24", "price_max": 183.33, "price_min": -20.67, "perfect_foresight_aud": 1002.34, "naive_aud": 238.32, "lightgbm_aud": 731.81, "lstm_aud": 673.83}, {"date": "2025-10-25", "price_max": 195.75, "price_min": -10.85, "perfect_foresight_aud": 811.5, "naive_aud": -159.06, "lightgbm_aud": 350.83, "lstm_aud": 554.27}, {"date": "2025-10-26", "price_max": 65.6, "price_min": -167.95, "perfect_foresight_aud": 1152.26, "naive_aud": 144.94, "lightgbm_aud": 453.19, "lstm_aud": 616.49}, {"date": "2025-10-27", "price_max": 547.0, "price_min": -19.21, "perfect_foresight_aud": 2138.08, "naive_aud": -56.82, "lightgbm_aud": 541.91, "lstm_aud": 499.31}, {"date": "2025-10-28", "price_max": 160.81, "price_min": -43.97, "perfect_foresight_aud": 1250.91, "naive_aud": 692.08, "lightgbm_aud": 956.02, "lstm_aud": 937.13}, {"date": "2025-10-29", "price_max": 255.62, "price_min": -35.56, "perfect_foresight_aud": 1622.03, "naive_aud": 1103.95, "lightgbm_aud": 1403.15, "lstm_aud": 1341.8}, {"date": "2025-10-30", "price_max": 243.78, "price_min": -22.98, "perfect_foresight_aud": 1448.29, "naive_aud": 1056.57, "lightgbm_aud": 1029.05, "lstm_aud": 1146.11}, {"date": "2025-10-31", "price_max": 194.57, "price_min": -252.44, "perfect_foresight_aud": 2448.64, "naive_aud": 911.62, "lightgbm_aud": 1338.72, "lstm_aud": 1307.5}, {"date": "2025-11-01", "price_max": 144.15, "price_min": -108.64, "perfect_foresight_aud": 1264.6, "naive_aud": 630.1, "lightgbm_aud": 880.75, "lstm_aud": 1028.24}, {"date": "2025-11-02", "price_max": 105.58, "price_min": -55.72, "perfect_foresight_aud": 1234.04, "naive_aud": 324.94, "lightgbm_aud": 294.42, "lstm_aud": 120.62}, {"date": "2025-11-03", "price_max": 144.54, "price_min": -15.19, "perfect_foresight_aud": 920.16, "naive_aud": 206.94, "lightgbm_aud": 663.66, "lstm_aud": 373.24}, {"date": "2025-11-04", "price_max": 181.18, "price_min": -15.5, "perfect_foresight_aud": 366.32, "naive_aud": -62.58, "lightgbm_aud": 40.91, "lstm_aud": 222.67}, {"date": "2025-11-05", "price_max": 342.41, "price_min": -22.76, "perfect_foresight_aud": 1588.75, "naive_aud": 139.36, "lightgbm_aud": 1072.43, "lstm_aud": 1294.42}, {"date": "2025-11-06", "price_max": 181.4, "price_min": -13.02, "perfect_foresight_aud": 1004.7, "naive_aud": 423.81, "lightgbm_aud": 582.59, "lstm_aud": 650.81}, {"date": "2025-11-07", "price_max": 108.23, "price_min": -20.4, "perfect_foresight_aud": 347.74, "naive_aud": -122.74, "lightgbm_aud": -122.24, "lstm_aud": 59.96}, {"date": "2025-11-08", "price_max": 61.61, "price_min": -26.86, "perfect_foresight_aud": 552.93, "naive_aud": -148.1, "lightgbm_aud": 332.03, "lstm_aud": 363.53}, {"date": "2025-11-09", "price_max": 123.67, "price_min": -21.8, "perfect_foresight_aud": 746.75, "naive_aud": 395.05, "lightgbm_aud": 515.1, "lstm_aud": 673.0}, {"date": "2025-11-10", "price_max": 172.96, "price_min": -216.96, "perfect_foresight_aud": 1985.36, "naive_aud": 1211.14, "lightgbm_aud": 1119.65, "lstm_aud": 812.22}, {"date": "2025-11-11", "price_max": 119.29, "price_min": -17.62, "perfect_foresight_aud": 802.45, "naive_aud": 559.1, "lightgbm_aud": 682.07, "lstm_aud": 675.95}, {"date": "2025-11-12", "price_max": 184.66, "price_min": -27.98, "perfect_foresight_aud": 1289.64, "naive_aud": 787.9, "lightgbm_aud": 870.23, "lstm_aud": 1093.33}, {"date": "2025-11-13", "price_max": 183.8, "price_min": -24.6, "perfect_foresight_aud": 1085.16, "naive_aud": 336.83, "lightgbm_aud": 186.69, "lstm_aud": 414.86}, {"date": "2025-11-14", "price_max": 163.98, "price_min": -18.61, "perfect_foresight_aud": 1050.78, "naive_aud": 222.45, "lightgbm_aud": 590.3, "lstm_aud": 702.0}, {"date": "2025-11-15", "price_max": 247.66, "price_min": -16.14, "perfect_foresight_aud": 701.85, "naive_aud": 125.71, "lightgbm_aud": 529.01, "lstm_aud": 446.9}, {"date": "2025-11-16", "price_max": 77.94, "price_min": -37.45, "perfect_foresight_aud": 250.67, "naive_aud": 18.81, "lightgbm_aud": 135.22, "lstm_aud": 117.08}, {"date": "2025-11-17", "price_max": 9.27, "price_min": -14.9, "perfect_foresight_aud": 212.77, "naive_aud": 48.16, "lightgbm_aud": 67.75, "lstm_aud": 154.69}, {"date": "2025-11-18", "price_max": 265.62, "price_min": -231.81, "perfect_foresight_aud": 2580.58, "naive_aud": 1142.41, "lightgbm_aud": 774.5, "lstm_aud": 2012.42}, {"date": "2025-11-19", "price_max": 121.11, "price_min": -41.46, "perfect_foresight_aud": 825.5, "naive_aud": 328.11, "lightgbm_aud": 524.59, "lstm_aud": 510.67}, {"date": "2025-11-20", "price_max": 100.07, "price_min": -170.25, "perfect_foresight_aud": 908.22, "naive_aud": 253.61, "lightgbm_aud": 300.39, "lstm_aud": 443.09}, {"date": "2025-11-21", "price_max": 80.2, "price_min": -110.97, "perfect_foresight_aud": 983.53, "naive_aud": 471.66, "lightgbm_aud": 739.34, "lstm_aud": 622.21}, {"date": "2025-11-22", "price_max": 219.25, "price_min": -12.63, "perfect_foresight_aud": 1194.35, "naive_aud": 209.24, "lightgbm_aud": 647.78, "lstm_aud": 520.07}, {"date": "2025-11-23", "price_max": 232.38, "price_min": -38.92, "perfect_foresight_aud": 1085.83, "naive_aud": -263.15, "lightgbm_aud": 639.19, "lstm_aud": 640.89}, {"date": "2025-11-24", "price_max": 138.42, "price_min": -17.04, "perfect_foresight_aud": 490.89, "naive_aud": 64.0, "lightgbm_aud": 52.99, "lstm_aud": 192.4}, {"date": "2025-11-25", "price_max": 155.92, "price_min": -94.14, "perfect_foresight_aud": 1224.1, "naive_aud": 505.13, "lightgbm_aud": 761.53, "lstm_aud": 668.52}, {"date": "2025-11-26", "price_max": 92.28, "price_min": -70.96, "perfect_foresight_aud": 452.65, "naive_aud": 47.97, "lightgbm_aud": 233.93, "lstm_aud": 224.53}, {"date": "2025-11-27", "price_max": 183.36, "price_min": -41.65, "perfect_foresight_aud": 1252.68, "naive_aud": 375.56, "lightgbm_aud": 955.83, "lstm_aud": 1038.76}, {"date": "2025-11-28", "price_max": 298.18, "price_min": -13.93, "perfect_foresight_aud": 835.04, "naive_aud": -39.01, "lightgbm_aud": 528.08, "lstm_aud": 484.98}, {"date": "2025-11-29", "price_max": 105.68, "price_min": -19.39, "perfect_foresight_aud": 695.8, "naive_aud": 75.38, "lightgbm_aud": 519.17, "lstm_aud": 484.33}, {"date": "2025-11-30", "price_max": 85.87, "price_min": -94.02, "perfect_foresight_aud": 705.54, "naive_aud": 443.54, "lightgbm_aud": 515.19, "lstm_aud": 503.62}, {"date": "2025-12-01", "price_max": 118.26, "price_min": -64.11, "perfect_foresight_aud": 951.49, "naive_aud": -4.25, "lightgbm_aud": 492.73, "lstm_aud": 699.33}, {"date": "2025-12-02", "price_max": 355.18, "price_min": -14.84, "perfect_foresight_aud": 1443.36, "naive_aud": 539.69, "lightgbm_aud": 1012.36, "lstm_aud": 996.69}, {"date": "2025-12-03", "price_max": 220.06, "price_min": -36.89, "perfect_foresight_aud": 1166.01, "naive_aud": 641.42, "lightgbm_aud": 902.6, "lstm_aud": 495.3}, {"date": "2025-12-04", "price_max": 150.12, "price_min": -13.71, "perfect_foresight_aud": 869.7, "naive_aud": 588.0, "lightgbm_aud": 739.81, "lstm_aud": 759.08}, {"date": "2025-12-05", "price_max": 174.93, "price_min": -16.61, "perfect_foresight_aud": 1118.51, "naive_aud": 222.02, "lightgbm_aud": 549.19, "lstm_aud": 427.72}, {"date": "2025-12-06", "price_max": 116.47, "price_min": -37.68, "perfect_foresight_aud": 570.72, "naive_aud": 25.2, "lightgbm_aud": 9.14, "lstm_aud": 91.3}, {"date": "2025-12-07", "price_max": 147.06, "price_min": -212.03, "perfect_foresight_aud": 2048.88, "naive_aud": 629.81, "lightgbm_aud": 1054.32, "lstm_aud": 1411.51}, {"date": "2025-12-08", "price_max": 2372.68, "price_min": -66.04, "perfect_foresight_aud": 4075.65, "naive_aud": 3253.08, "lightgbm_aud": 2413.36, "lstm_aud": 3114.24}, {"date": "2025-12-09", "price_max": 159.55, "price_min": -58.96, "perfect_foresight_aud": 821.45, "naive_aud": 415.11, "lightgbm_aud": 412.21, "lstm_aud": 386.42}, {"date": "2025-12-10", "price_max": 201.88, "price_min": -19.41, "perfect_foresight_aud": 726.09, "naive_aud": -496.84, "lightgbm_aud": -155.63, "lstm_aud": -265.77}, {"date": "2025-12-11", "price_max": 121.11, "price_min": -33.8, "perfect_foresight_aud": 858.47, "naive_aud": 89.8, "lightgbm_aud": 656.65, "lstm_aud": 676.95}, {"date": "2025-12-12", "price_max": 183.33, "price_min": -41.62, "perfect_foresight_aud": 1032.5, "naive_aud": 225.59, "lightgbm_aud": 434.19, "lstm_aud": 430.35}, {"date": "2025-12-13", "price_max": 115.2, "price_min": -14.06, "perfect_foresight_aud": 546.79, "naive_aud": -36.97, "lightgbm_aud": 297.35, "lstm_aud": 400.61}, {"date": "2025-12-14", "price_max": 75.95, "price_min": -74.11, "perfect_foresight_aud": 826.44, "naive_aud": 396.84, "lightgbm_aud": 566.66, "lstm_aud": 716.09}, {"date": "2025-12-15", "price_max": 81.64, "price_min": -378.28, "perfect_foresight_aud": 2474.94, "naive_aud": 1567.7, "lightgbm_aud": 1946.02, "lstm_aud": 2280.16}, {"date": "2025-12-16", "price_max": 124.47, "price_min": -202.19, "perfect_foresight_aud": 1882.06, "naive_aud": 1090.12, "lightgbm_aud": 1074.46, "lstm_aud": 1188.0}, {"date": "2025-12-17", "price_max": 243.16, "price_min": -19.85, "perfect_foresight_aud": 1432.93, "naive_aud": 946.19, "lightgbm_aud": 1065.08, "lstm_aud": 1161.84}, {"date": "2025-12-18", "price_max": 316.89, "price_min": -54.17, "perfect_foresight_aud": 1716.62, "naive_aud": 1381.34, "lightgbm_aud": 1456.97, "lstm_aud": 1328.85}, {"date": "2025-12-19", "price_max": 167.34, "price_min": -27.88, "perfect_foresight_aud": 786.12, "naive_aud": 354.04, "lightgbm_aud": 477.16, "lstm_aud": 539.03}, {"date": "2025-12-20", "price_max": 342.34, "price_min": -217.58, "perfect_foresight_aud": 2012.12, "naive_aud": 917.49, "lightgbm_aud": 1117.07, "lstm_aud": 1138.75}, {"date": "2025-12-21", "price_max": 192.52, "price_min": -83.52, "perfect_foresight_aud": 829.66, "naive_aud": 41.23, "lightgbm_aud": 198.88, "lstm_aud": 215.24}, {"date": "2025-12-22", "price_max": 147.78, "price_min": -229.61, "perfect_foresight_aud": 2094.29, "naive_aud": 900.81, "lightgbm_aud": 697.36, "lstm_aud": 1190.79}, {"date": "2025-12-23", "price_max": 86.2, "price_min": -120.73, "perfect_foresight_aud": 1259.01, "naive_aud": 512.54, "lightgbm_aud": 749.82, "lstm_aud": 805.25}, {"date": "2025-12-24", "price_max": 38.25, "price_min": -134.85, "perfect_foresight_aud": 707.52, "naive_aud": 447.27, "lightgbm_aud": 543.3, "lstm_aud": 346.59}, {"date": "2025-12-25", "price_max": -2.54, "price_min": -264.98, "perfect_foresight_aud": 1852.07, "naive_aud": 1163.77, "lightgbm_aud": 1486.67, "lstm_aud": 1594.84}, {"date": "2025-12-26", "price_max": 8.35, "price_min": -269.29, "perfect_foresight_aud": 1823.54, "naive_aud": 1391.19, "lightgbm_aud": 1417.73, "lstm_aud": 1333.74}, {"date": "2025-12-27", "price_max": 115.37, "price_min": -148.32, "perfect_foresight_aud": 1490.78, "naive_aud": 1075.1, "lightgbm_aud": 1350.9, "lstm_aud": 1265.68}, {"date": "2025-12-28", "price_max": 3539.91, "price_min": -49.39, "perfect_foresight_aud": 5333.5, "naive_aud": 519.95, "lightgbm_aud": 614.1, "lstm_aud": 655.62}, {"date": "2025-12-29", "price_max": 372.24, "price_min": -10.39, "perfect_foresight_aud": 1478.92, "naive_aud": 822.18, "lightgbm_aud": 439.33, "lstm_aud": 1195.56}, {"date": "2025-12-30", "price_max": 65.27, "price_min": -19.87, "perfect_foresight_aud": 415.06, "naive_aud": 112.01, "lightgbm_aud": 190.14, "lstm_aud": 52.93}, {"date": "2025-12-31", "price_max": 28.58, "price_min": -262.76, "perfect_foresight_aud": 1386.4, "naive_aud": 600.01, "lightgbm_aud": 384.74, "lstm_aud": 643.65}, {"date": "2026-01-01", "price_max": 37.64, "price_min": -181.01, "perfect_foresight_aud": 1083.59, "naive_aud": 558.99, "lightgbm_aud": 898.99, "lstm_aud": 983.33}, {"date": "2026-01-02", "price_max": 144.0, "price_min": -163.7, "perfect_foresight_aud": 1517.8, "naive_aud": 614.84, "lightgbm_aud": 705.58, "lstm_aud": 693.42}, {"date": "2026-01-03", "price_max": 336.06, "price_min": -74.46, "perfect_foresight_aud": 1059.48, "naive_aud": 278.19, "lightgbm_aud": 611.97, "lstm_aud": 458.35}, {"date": "2026-01-04", "price_max": 79.22, "price_min": -251.58, "perfect_foresight_aud": 1819.16, "naive_aud": 721.3, "lightgbm_aud": 994.99, "lstm_aud": 930.34}, {"date": "2026-01-05", "price_max": 107.09, "price_min": -118.95, "perfect_foresight_aud": 1221.04, "naive_aud": 700.68, "lightgbm_aud": 732.51, "lstm_aud": 864.69}, {"date": "2026-01-06", "price_max": 14577.94, "price_min": -22.28, "perfect_foresight_aud": 29705.59, "naive_aud": 29187.42, "lightgbm_aud": 29269.09, "lstm_aud": 29481.49}, {"date": "2026-01-07", "price_max": 1097.71, "price_min": -10.42, "perfect_foresight_aud": 3945.96, "naive_aud": 3140.45, "lightgbm_aud": 2726.79, "lstm_aud": 3476.9}, {"date": "2026-01-08", "price_max": 861.25, "price_min": -12.02, "perfect_foresight_aud": 3006.29, "naive_aud": 719.63, "lightgbm_aud": 1511.88, "lstm_aud": 1558.36}, {"date": "2026-01-09", "price_max": 211.34, "price_min": -39.83, "perfect_foresight_aud": 902.95, "naive_aud": 229.3, "lightgbm_aud": 194.83, "lstm_aud": 375.39}, {"date": "2026-01-10", "price_max": 20.76, "price_min": -61.0, "perfect_foresight_aud": 535.71, "naive_aud": 158.99, "lightgbm_aud": 458.08, "lstm_aud": 407.64}, {"date": "2026-01-11", "price_max": 32.5, "price_min": -82.33, "perfect_foresight_aud": 688.89, "naive_aud": 584.69, "lightgbm_aud": 575.83, "lstm_aud": 621.02}, {"date": "2026-01-12", "price_max": 180.11, "price_min": -109.8, "perfect_foresight_aud": 1130.04, "naive_aud": 612.12, "lightgbm_aud": 707.58, "lstm_aud": 696.49}, {"date": "2026-01-13", "price_max": 139.78, "price_min": -92.97, "perfect_foresight_aud": 1058.25, "naive_aud": 469.28, "lightgbm_aud": 520.76, "lstm_aud": 619.3}, {"date": "2026-01-14", "price_max": 146.49, "price_min": -22.83, "perfect_foresight_aud": 888.76, "naive_aud": 600.22, "lightgbm_aud": 627.45, "lstm_aud": 569.29}, {"date": "2026-01-15", "price_max": 88.39, "price_min": -69.86, "perfect_foresight_aud": 445.05, "naive_aud": 77.16, "lightgbm_aud": 235.28, "lstm_aud": 175.43}, {"date": "2026-01-16", "price_max": 48.79, "price_min": -97.76, "perfect_foresight_aud": 685.45, "naive_aud": 469.21, "lightgbm_aud": 323.71, "lstm_aud": 391.44}, {"date": "2026-01-17", "price_max": 39.78, "price_min": -124.34, "perfect_foresight_aud": 803.67, "naive_aud": 432.2, "lightgbm_aud": 519.13, "lstm_aud": 501.79}, {"date": "2026-01-18", "price_max": 3795.42, "price_min": -16.31, "perfect_foresight_aud": 11178.34, "naive_aud": 6361.31, "lightgbm_aud": 10930.06, "lstm_aud": 10885.91}, {"date": "2026-01-19", "price_max": 53.8, "price_min": -71.87, "perfect_foresight_aud": 681.75, "naive_aud": 161.9, "lightgbm_aud": 189.06, "lstm_aud": 336.07}, {"date": "2026-01-20", "price_max": 77.42, "price_min": 0.26, "perfect_foresight_aud": 428.43, "naive_aud": 275.26, "lightgbm_aud": 275.73, "lstm_aud": 323.91}, {"date": "2026-01-21", "price_max": 96.88, "price_min": -16.9, "perfect_foresight_aud": 331.99, "naive_aud": 215.16, "lightgbm_aud": 252.74, "lstm_aud": 172.84}, {"date": "2026-01-22", "price_max": 79.5, "price_min": -24.82, "perfect_foresight_aud": 580.9, "naive_aud": 259.16, "lightgbm_aud": 430.91, "lstm_aud": 400.06}, {"date": "2026-01-23", "price_max": 194.26, "price_min": -7.75, "perfect_foresight_aud": 957.83, "naive_aud": 663.53, "lightgbm_aud": 824.91, "lstm_aud": 783.79}, {"date": "2026-01-24", "price_max": 271.26, "price_min": -9.08, "perfect_foresight_aud": 1246.74, "naive_aud": 655.22, "lightgbm_aud": 722.81, "lstm_aud": 906.52}, {"date": "2026-01-25", "price_max": 402.5, "price_min": -5.55, "perfect_foresight_aud": 1959.85, "naive_aud": 1215.31, "lightgbm_aud": 893.1, "lstm_aud": 1064.21}, {"date": "2026-01-26", "price_max": 20157.59, "price_min": -2.44, "perfect_foresight_aud": 98781.77, "naive_aud": -22851.91, "lightgbm_aud": 26866.83, "lstm_aud": 77655.75}, {"date": "2026-01-27", "price_max": 5388.34, "price_min": -8.08, "perfect_foresight_aud": 13532.45, "naive_aud": 6266.21, "lightgbm_aud": 92.62, "lstm_aud": -490.45}, {"date": "2026-01-28", "price_max": 143.87, "price_min": -0.46, "perfect_foresight_aud": 579.53, "naive_aud": -66.38, "lightgbm_aud": 168.86, "lstm_aud": 255.43}, {"date": "2026-01-29", "price_max": 97.13, "price_min": 7.62, "perfect_foresight_aud": 694.97, "naive_aud": 513.38, "lightgbm_aud": 535.28, "lstm_aud": 548.47}, {"date": "2026-01-30", "price_max": 216.12, "price_min": 68.79, "perfect_foresight_aud": 698.92, "naive_aud": 113.56, "lightgbm_aud": -38.07, "lstm_aud": -145.5}, {"date": "2026-01-31", "price_max": 247.9, "price_min": -2.83, "perfect_foresight_aud": 950.1, "naive_aud": -251.75, "lightgbm_aud": 200.0, "lstm_aud": 303.09}, {"date": "2026-02-01", "price_max": 47.03, "price_min": -78.41, "perfect_foresight_aud": 421.12, "naive_aud": -95.0, "lightgbm_aud": 257.28, "lstm_aud": 283.38}, {"date": "2026-02-02", "price_max": 66.89, "price_min": -39.71, "perfect_foresight_aud": 707.11, "naive_aud": 276.49, "lightgbm_aud": 556.58, "lstm_aud": 601.59}, {"date": "2026-02-03", "price_max": 108.88, "price_min": -10.16, "perfect_foresight_aud": 606.77, "naive_aud": 453.8, "lightgbm_aud": 499.81, "lstm_aud": 483.59}, {"date": "2026-02-04", "price_max": 249.6, "price_min": -32.22, "perfect_foresight_aud": 1346.07, "naive_aud": 710.89, "lightgbm_aud": 642.0, "lstm_aud": 614.25}, {"date": "2026-02-05", "price_max": 204.66, "price_min": -57.29, "perfect_foresight_aud": 1081.55, "naive_aud": 619.04, "lightgbm_aud": 752.59, "lstm_aud": 723.46}, {"date": "2026-02-06", "price_max": 224.57, "price_min": -99.35, "perfect_foresight_aud": 1526.79, "naive_aud": 697.74, "lightgbm_aud": 691.74, "lstm_aud": 808.34}, {"date": "2026-02-07", "price_max": 3983.8, "price_min": 6.55, "perfect_foresight_aud": 5810.77, "naive_aud": 4785.01, "lightgbm_aud": 95.08, "lstm_aud": 200.66}, {"date": "2026-02-08", "price_max": 233.99, "price_min": -4.15, "perfect_foresight_aud": 1205.34, "naive_aud": 525.5, "lightgbm_aud": 499.91, "lstm_aud": 648.95}, {"date": "2026-02-09", "price_max": 159.29, "price_min": -94.41, "perfect_foresight_aud": 1033.73, "naive_aud": 166.54, "lightgbm_aud": 515.31, "lstm_aud": 518.04}, {"date": "2026-02-10", "price_max": 663.02, "price_min": -7.25, "perfect_foresight_aud": 2441.15, "naive_aud": 1468.07, "lightgbm_aud": 1651.15, "lstm_aud": 1955.87}, {"date": "2026-02-11", "price_max": 157.48, "price_min": -20.59, "perfect_foresight_aud": 772.26, "naive_aud": -21.83, "lightgbm_aud": 64.25, "lstm_aud": 207.37}, {"date": "2026-02-12", "price_max": 62.19, "price_min": -299.25, "perfect_foresight_aud": 1964.67, "naive_aud": 1130.68, "lightgbm_aud": 1015.22, "lstm_aud": 803.87}, {"date": "2026-02-13", "price_max": 56.99, "price_min": -191.57, "perfect_foresight_aud": 1504.58, "naive_aud": 1092.78, "lightgbm_aud": 621.2, "lstm_aud": 1021.29}, {"date": "2026-02-14", "price_max": 40.96, "price_min": -136.63, "perfect_foresight_aud": 1241.62, "naive_aud": 522.13, "lightgbm_aud": 788.36, "lstm_aud": 884.23}, {"date": "2026-02-15", "price_max": 154.29, "price_min": -13.66, "perfect_foresight_aud": 791.51, "naive_aud": 490.6, "lightgbm_aud": 711.7, "lstm_aud": 657.1}, {"date": "2026-02-16", "price_max": 348.34, "price_min": -9.6, "perfect_foresight_aud": 1625.63, "naive_aud": 673.22, "lightgbm_aud": 1033.85, "lstm_aud": 1174.38}, {"date": "2026-02-17", "price_max": 259.17, "price_min": -165.02, "perfect_foresight_aud": 1167.25, "naive_aud": 130.69, "lightgbm_aud": -204.01, "lstm_aud": 401.21}, {"date": "2026-02-18", "price_max": 537.22, "price_min": -42.0, "perfect_foresight_aud": 1553.26, "naive_aud": 338.85, "lightgbm_aud": 550.94, "lstm_aud": 574.72}, {"date": "2026-02-19", "price_max": 148.05, "price_min": -108.84, "perfect_foresight_aud": 1153.76, "naive_aud": 111.75, "lightgbm_aud": 749.53, "lstm_aud": 716.46}, {"date": "2026-02-20", "price_max": 169.45, "price_min": -5.32, "perfect_foresight_aud": 1137.92, "naive_aud": 629.82, "lightgbm_aud": 615.79, "lstm_aud": 793.97}, {"date": "2026-02-21", "price_max": 228.1, "price_min": -16.39, "perfect_foresight_aud": 1111.89, "naive_aud": 219.05, "lightgbm_aud": 747.69, "lstm_aud": 883.61}, {"date": "2026-02-22", "price_max": 208.97, "price_min": -4.14, "perfect_foresight_aud": 1205.22, "naive_aud": -95.34, "lightgbm_aud": -132.26, "lstm_aud": -199.17}, {"date": "2026-02-23", "price_max": 120.97, "price_min": -108.19, "perfect_foresight_aud": 1456.25, "naive_aud": 179.82, "lightgbm_aud": 780.0, "lstm_aud": 1025.35}, {"date": "2026-02-24", "price_max": 163.73, "price_min": 37.16, "perfect_foresight_aud": 170.9, "naive_aud": -141.65, "lightgbm_aud": -5.22, "lstm_aud": 30.7}, {"date": "2026-02-25", "price_max": 70.94, "price_min": -20.0, "perfect_foresight_aud": 392.8, "naive_aud": 131.5, "lightgbm_aud": 218.29, "lstm_aud": 270.32}, {"date": "2026-02-26", "price_max": 113.28, "price_min": -26.33, "perfect_foresight_aud": 849.51, "naive_aud": 671.32, "lightgbm_aud": 714.93, "lstm_aud": 763.26}, {"date": "2026-02-27", "price_max": 245.96, "price_min": 5.94, "perfect_foresight_aud": 1380.72, "naive_aud": 463.64, "lightgbm_aud": 776.39, "lstm_aud": 1010.8}, {"date": "2026-02-28", "price_max": 252.65, "price_min": 0.66, "perfect_foresight_aud": 540.51, "naive_aud": 23.41, "lightgbm_aud": 241.67, "lstm_aud": 256.03}, {"date": "2026-03-01", "price_max": 345.22, "price_min": 20.16, "perfect_foresight_aud": 1385.41, "naive_aud": 412.1, "lightgbm_aud": -564.61, "lstm_aud": -673.18}, {"date": "2026-03-02", "price_max": 127.3, "price_min": 32.14, "perfect_foresight_aud": 554.97, "naive_aud": -44.35, "lightgbm_aud": 121.26, "lstm_aud": 90.58}, {"date": "2026-03-03", "price_max": 183.37, "price_min": -13.19, "perfect_foresight_aud": 691.91, "naive_aud": -0.38, "lightgbm_aud": 197.8, "lstm_aud": 592.14}, {"date": "2026-03-04", "price_max": 123.58, "price_min": -159.67, "perfect_foresight_aud": 765.02, "naive_aud": 680.02, "lightgbm_aud": 444.34, "lstm_aud": 400.11}, {"date": "2026-03-05", "price_max": 152.58, "price_min": -20.74, "perfect_foresight_aud": 789.64, "naive_aud": 591.44, "lightgbm_aud": 597.17, "lstm_aud": 627.54}, {"date": "2026-03-06", "price_max": 111.22, "price_min": -58.97, "perfect_foresight_aud": 884.82, "naive_aud": 749.85, "lightgbm_aud": 656.04, "lstm_aud": 645.63}, {"date": "2026-03-07", "price_max": 87.08, "price_min": -157.76, "perfect_foresight_aud": 1028.47, "naive_aud": 206.83, "lightgbm_aud": 391.62, "lstm_aud": 371.36}, {"date": "2026-03-08", "price_max": 66.64, "price_min": -191.29, "perfect_foresight_aud": 1674.27, "naive_aud": 682.02, "lightgbm_aud": 1075.88, "lstm_aud": 1185.53}, {"date": "2026-03-09", "price_max": 215.56, "price_min": -239.04, "perfect_foresight_aud": 2457.65, "naive_aud": 1027.08, "lightgbm_aud": 1135.12, "lstm_aud": 1342.64}, {"date": "2026-03-10", "price_max": 278.65, "price_min": -180.0, "perfect_foresight_aud": 1554.57, "naive_aud": 358.62, "lightgbm_aud": 709.85, "lstm_aud": 902.75}, {"date": "2026-03-11", "price_max": 49.84, "price_min": -58.92, "perfect_foresight_aud": 469.73, "naive_aud": 149.61, "lightgbm_aud": 191.47, "lstm_aud": 194.3}, {"date": "2026-03-12", "price_max": 35.82, "price_min": -33.73, "perfect_foresight_aud": 425.41, "naive_aud": 197.67, "lightgbm_aud": 253.83, "lstm_aud": 279.19}, {"date": "2026-03-13", "price_max": 24.05, "price_min": -314.18, "perfect_foresight_aud": 2003.53, "naive_aud": 1499.54, "lightgbm_aud": 1547.61, "lstm_aud": 1331.85}, {"date": "2026-03-14", "price_max": 63.35, "price_min": -50.62, "perfect_foresight_aud": 669.86, "naive_aud": 450.03, "lightgbm_aud": 578.28, "lstm_aud": 617.03}, {"date": "2026-03-15", "price_max": 207.86, "price_min": -9.37, "perfect_foresight_aud": 877.55, "naive_aud": 704.86, "lightgbm_aud": 800.24, "lstm_aud": 793.24}, {"date": "2026-03-16", "price_max": 225.05, "price_min": 60.22, "perfect_foresight_aud": 771.25, "naive_aud": -334.97, "lightgbm_aud": -205.48, "lstm_aud": -77.98}, {"date": "2026-03-17", "price_max": 150.29, "price_min": 66.8, "perfect_foresight_aud": 207.19, "naive_aud": -289.33, "lightgbm_aud": 27.77, "lstm_aud": 18.24}, {"date": "2026-03-18", "price_max": 154.19, "price_min": 75.09, "perfect_foresight_aud": 413.66, "naive_aud": 151.59, "lightgbm_aud": -65.67, "lstm_aud": 98.37}, {"date": "2026-03-19", "price_max": 154.57, "price_min": 92.27, "perfect_foresight_aud": 407.11, "naive_aud": -80.33, "lightgbm_aud": 247.71, "lstm_aud": 268.82}, {"date": "2026-03-20", "price_max": 154.06, "price_min": -5.38, "perfect_foresight_aud": 711.37, "naive_aud": 364.11, "lightgbm_aud": 474.95, "lstm_aud": 407.73}, {"date": "2026-03-21", "price_max": 176.62, "price_min": -65.31, "perfect_foresight_aud": 1033.73, "naive_aud": 733.79, "lightgbm_aud": 725.16, "lstm_aud": 662.63}, {"date": "2026-03-22", "price_max": 182.05, "price_min": -34.4, "perfect_foresight_aud": 913.17, "naive_aud": 458.38, "lightgbm_aud": 731.87, "lstm_aud": 743.7}, {"date": "2026-03-23", "price_max": 240.7, "price_min": -4.73, "perfect_foresight_aud": 1083.21, "naive_aud": 658.34, "lightgbm_aud": 791.71, "lstm_aud": 826.08}, {"date": "2026-03-24", "price_max": 400.8, "price_min": 11.07, "perfect_foresight_aud": 1481.19, "naive_aud": 269.88, "lightgbm_aud": 201.66, "lstm_aud": 178.94}, {"date": "2026-03-25", "price_max": 336.13, "price_min": 5.57, "perfect_foresight_aud": 1142.86, "naive_aud": 29.24, "lightgbm_aud": 264.35, "lstm_aud": -287.57}, {"date": "2026-03-26", "price_max": 108.01, "price_min": -128.26, "perfect_foresight_aud": 760.21, "naive_aud": -41.85, "lightgbm_aud": 217.58, "lstm_aud": 303.59}, {"date": "2026-03-27", "price_max": 51.42, "price_min": -112.5, "perfect_foresight_aud": 1138.72, "naive_aud": 367.34, "lightgbm_aud": 524.16, "lstm_aud": 474.56}, {"date": "2026-03-28", "price_max": 164.08, "price_min": -8.28, "perfect_foresight_aud": 975.59, "naive_aud": 378.22, "lightgbm_aud": 110.37, "lstm_aud": 546.17}, {"date": "2026-03-29", "price_max": 133.88, "price_min": -116.81, "perfect_foresight_aud": 1194.07, "naive_aud": 335.29, "lightgbm_aud": 742.17, "lstm_aud": 732.84}, {"date": "2026-03-30", "price_max": 179.82, "price_min": -12.16, "perfect_foresight_aud": 1096.09, "naive_aud": 731.41, "lightgbm_aud": 806.55, "lstm_aud": 921.56}, {"date": "2026-03-31", "price_max": 70.74, "price_min": -188.43, "perfect_foresight_aud": 1420.9, "naive_aud": 529.32, "lightgbm_aud": 778.46, "lstm_aud": 844.64}, {"date": "2026-04-01", "price_max": 132.91, "price_min": -4.13, "perfect_foresight_aud": 889.83, "naive_aud": -138.77, "lightgbm_aud": 585.27, "lstm_aud": 622.0}, {"date": "2026-04-02", "price_max": 193.87, "price_min": -6.69, "perfect_foresight_aud": 674.46, "naive_aud": 315.03, "lightgbm_aud": 387.49, "lstm_aud": 560.21}, {"date": "2026-04-03", "price_max": 29.65, "price_min": -101.3, "perfect_foresight_aud": 704.47, "naive_aud": 424.13, "lightgbm_aud": 570.48, "lstm_aud": 618.16}, {"date": "2026-04-04", "price_max": 82.81, "price_min": -85.66, "perfect_foresight_aud": 753.95, "naive_aud": 729.43, "lightgbm_aud": 629.33, "lstm_aud": 648.58}, {"date": "2026-04-05", "price_max": 224.61, "price_min": 12.66, "perfect_foresight_aud": 1340.06, "naive_aud": 268.71, "lightgbm_aud": 351.37, "lstm_aud": 144.77}, {"date": "2026-04-06", "price_max": 143.41, "price_min": -22.06, "perfect_foresight_aud": 470.79, "naive_aud": -160.91, "lightgbm_aud": -69.27, "lstm_aud": 228.16}, {"date": "2026-04-07", "price_max": 160.79, "price_min": -5.5, "perfect_foresight_aud": 981.71, "naive_aud": 644.96, "lightgbm_aud": 716.92, "lstm_aud": 743.08}, {"date": "2026-04-08", "price_max": 248.3, "price_min": -0.24, "perfect_foresight_aud": 877.28, "naive_aud": -622.85, "lightgbm_aud": -264.0, "lstm_aud": -74.15}, {"date": "2026-04-09", "price_max": 0.05, "price_min": -17.52, "perfect_foresight_aud": 171.45, "naive_aud": 21.09, "lightgbm_aud": 7.01, "lstm_aud": 70.15}, {"date": "2026-04-10", "price_max": 1.02, "price_min": -22.61, "perfect_foresight_aud": 138.36, "naive_aud": 23.73, "lightgbm_aud": 82.51, "lstm_aud": 72.21}, {"date": "2026-04-11", "price_max": 6.44, "price_min": -17.96, "perfect_foresight_aud": 165.21, "naive_aud": 108.2, "lightgbm_aud": 106.34, "lstm_aud": 96.72}, {"date": "2026-04-12", "price_max": 121.5, "price_min": -13.08, "perfect_foresight_aud": 671.38, "naive_aud": -159.22, "lightgbm_aud": 341.98, "lstm_aud": 450.4}, {"date": "2026-04-13", "price_max": 268.54, "price_min": 31.4, "perfect_foresight_aud": 1089.64, "naive_aud": -406.4, "lightgbm_aud": -72.77, "lstm_aud": -126.82}, {"date": "2026-04-14", "price_max": 274.85, "price_min": 102.13, "perfect_foresight_aud": 1080.62, "naive_aud": -222.56, "lightgbm_aud": 4.08, "lstm_aud": -36.12}, {"date": "2026-04-15", "price_max": 297.1, "price_min": 8.65, "perfect_foresight_aud": 976.61, "naive_aud": 21.57, "lightgbm_aud": 702.57, "lstm_aud": 711.4}, {"date": "2026-04-16", "price_max": 228.59, "price_min": -19.78, "perfect_foresight_aud": 1202.85, "naive_aud": 462.43, "lightgbm_aud": 419.31, "lstm_aud": 579.9}, {"date": "2026-04-17", "price_max": 173.16, "price_min": -12.9, "perfect_foresight_aud": 868.93, "naive_aud": 443.88, "lightgbm_aud": 434.42, "lstm_aud": 421.98}, {"date": "2026-04-18", "price_max": 132.32, "price_min": -2.68, "perfect_foresight_aud": 634.57, "naive_aud": 462.09, "lightgbm_aud": 568.25, "lstm_aud": 462.15}, {"date": "2026-04-19", "price_max": 175.86, "price_min": -3.46, "perfect_foresight_aud": 943.46, "naive_aud": 844.59, "lightgbm_aud": 847.21, "lstm_aud": 806.52}, {"date": "2026-04-20", "price_max": 218.95, "price_min": 30.36, "perfect_foresight_aud": 765.64, "naive_aud": 171.57, "lightgbm_aud": 238.54, "lstm_aud": 239.66}, {"date": "2026-04-21", "price_max": 134.89, "price_min": -10.75, "perfect_foresight_aud": 710.44, "naive_aud": 415.56, "lightgbm_aud": 511.47, "lstm_aud": 530.96}, {"date": "2026-04-22", "price_max": 206.22, "price_min": -2.53, "perfect_foresight_aud": 1585.19, "naive_aud": 1037.09, "lightgbm_aud": 1435.97, "lstm_aud": 1273.95}, {"date": "2026-04-23", "price_max": 112.21, "price_min": -2.76, "perfect_foresight_aud": 622.6, "naive_aud": 424.83, "lightgbm_aud": 538.18, "lstm_aud": 519.52}, {"date": "2026-04-24", "price_max": 72.73, "price_min": -13.12, "perfect_foresight_aud": 473.71, "naive_aud": 413.48, "lightgbm_aud": 426.74, "lstm_aud": 403.95}, {"date": "2026-04-25", "price_max": 111.27, "price_min": -53.25, "perfect_foresight_aud": 969.69, "naive_aud": 492.28, "lightgbm_aud": 753.5, "lstm_aud": 751.54}, {"date": "2026-04-26", "price_max": 193.38, "price_min": -0.76, "perfect_foresight_aud": 1181.78, "naive_aud": 670.12, "lightgbm_aud": 784.42, "lstm_aud": 755.68}, {"date": "2026-04-27", "price_max": 145.6, "price_min": 5.73, "perfect_foresight_aud": 676.74, "naive_aud": 214.85, "lightgbm_aud": 377.6, "lstm_aud": 514.91}, {"date": "2026-04-28", "price_max": 204.52, "price_min": 4.37, "perfect_foresight_aud": 1039.08, "naive_aud": 737.14, "lightgbm_aud": 728.81, "lstm_aud": 824.12}, {"date": "2026-04-29", "price_max": 135.49, "price_min": 0.16, "perfect_foresight_aud": 684.68, "naive_aud": 538.46, "lightgbm_aud": 575.75, "lstm_aud": 587.23}, {"date": "2026-04-30", "price_max": 100.89, "price_min": -10.14, "perfect_foresight_aud": 516.52, "naive_aud": 447.69, "lightgbm_aud": 479.84, "lstm_aud": 445.66}, {"date": "2026-05-01", "price_max": 30.26, "price_min": -5.48, "perfect_foresight_aud": 188.04, "naive_aud": 157.94, "lightgbm_aud": 145.9, "lstm_aud": 141.2}, {"date": "2026-05-02", "price_max": 52.84, "price_min": -4.41, "perfect_foresight_aud": 161.93, "naive_aud": 22.15, "lightgbm_aud": -41.8, "lstm_aud": 23.64}, {"date": "2026-05-03", "price_max": 14.79, "price_min": -18.62, "perfect_foresight_aud": 118.72, "naive_aud": -4.65, "lightgbm_aud": 79.22, "lstm_aud": 84.59}, {"date": "2026-05-04", "price_max": 89.27, "price_min": -6.52, "perfect_foresight_aud": 536.98, "naive_aud": -79.8, "lightgbm_aud": 349.6, "lstm_aud": 363.45}, {"date": "2026-05-05", "price_max": 163.04, "price_min": 41.39, "perfect_foresight_aud": 573.96, "naive_aud": -256.34, "lightgbm_aud": 15.4, "lstm_aud": 47.71}, {"date": "2026-05-06", "price_max": 131.02, "price_min": -0.07, "perfect_foresight_aud": 363.08, "naive_aud": -474.69, "lightgbm_aud": -2.67, "lstm_aud": 233.22}, {"date": "2026-05-07", "price_max": 61.13, "price_min": -0.08, "perfect_foresight_aud": 532.76, "naive_aud": 246.2, "lightgbm_aud": 460.71, "lstm_aud": 421.29}, {"date": "2026-05-08", "price_max": 103.71, "price_min": -3.03, "perfect_foresight_aud": 689.4, "naive_aud": 435.49, "lightgbm_aud": 521.99, "lstm_aud": 524.39}, {"date": "2026-05-09", "price_max": 132.53, "price_min": 45.49, "perfect_foresight_aud": 418.66, "naive_aud": 84.2, "lightgbm_aud": 137.08, "lstm_aud": 75.93}, {"date": "2026-05-10", "price_max": 201.51, "price_min": 46.07, "perfect_foresight_aud": 505.25, "naive_aud": 117.84, "lightgbm_aud": 243.93, "lstm_aud": 151.01}, {"date": "2026-05-11", "price_max": 129.49, "price_min": 35.24, "perfect_foresight_aud": 568.19, "naive_aud": 276.39, "lightgbm_aud": 426.36, "lstm_aud": 468.56}, {"date": "2026-05-12", "price_max": 190.58, "price_min": 67.98, "perfect_foresight_aud": 512.6, "naive_aud": -230.98, "lightgbm_aud": -291.82, "lstm_aud": -236.79}, {"date": "2026-05-13", "price_max": 139.54, "price_min": 27.58, "perfect_foresight_aud": 599.46, "naive_aud": -274.36, "lightgbm_aud": 350.41, "lstm_aud": 405.55}, {"date": "2026-05-14", "price_max": 165.94, "price_min": 19.43, "perfect_foresight_aud": 816.23, "naive_aud": 139.77, "lightgbm_aud": 497.73, "lstm_aud": 555.53}, {"date": "2026-05-15", "price_max": 84.5, "price_min": -2.07, "perfect_foresight_aud": 726.06, "naive_aud": 275.54, "lightgbm_aud": 322.88, "lstm_aud": 191.32}, {"date": "2026-05-16", "price_max": 160.86, "price_min": 0.01, "perfect_foresight_aud": 1178.22, "naive_aud": 769.14, "lightgbm_aud": 881.82, "lstm_aud": 587.11}, {"date": "2026-05-17", "price_max": 180.63, "price_min": 104.74, "perfect_foresight_aud": 273.66, "naive_aud": -170.12, "lightgbm_aud": -16.25, "lstm_aud": 132.49}, {"date": "2026-05-18", "price_max": 241.28, "price_min": 94.1, "perfect_foresight_aud": 391.33, "naive_aud": -649.44, "lightgbm_aud": -489.73, "lstm_aud": -360.25}, {"date": "2026-05-19", "price_max": 105.34, "price_min": -9.72, "perfect_foresight_aud": 434.92, "naive_aud": -118.3, "lightgbm_aud": 195.42, "lstm_aud": 119.32}, {"date": "2026-05-20", "price_max": 138.73, "price_min": 4.88, "perfect_foresight_aud": 761.99, "naive_aud": 420.51, "lightgbm_aud": 600.04, "lstm_aud": 599.68}, {"date": "2026-05-21", "price_max": 152.84, "price_min": 70.09, "perfect_foresight_aud": 386.51, "naive_aud": -191.76, "lightgbm_aud": 209.38, "lstm_aud": 157.66}, {"date": "2026-05-22", "price_max": 200.04, "price_min": 39.11, "perfect_foresight_aud": 705.91, "naive_aud": 388.34, "lightgbm_aud": 157.22, "lstm_aud": 26.42}, {"date": "2026-05-23", "price_max": 101.08, "price_min": 15.43, "perfect_foresight_aud": 429.46, "naive_aud": -108.12, "lightgbm_aud": 269.23, "lstm_aud": 273.52}, {"date": "2026-05-24", "price_max": 151.18, "price_min": 38.64, "perfect_foresight_aud": 427.05, "naive_aud": -41.78, "lightgbm_aud": 169.34, "lstm_aud": 141.46}, {"date": "2026-05-25", "price_max": 167.48, "price_min": 56.68, "perfect_foresight_aud": 523.53, "naive_aud": 312.24, "lightgbm_aud": 243.04, "lstm_aud": 251.78}, {"date": "2026-05-26", "price_max": 274.36, "price_min": 81.7, "perfect_foresight_aud": 1086.54, "naive_aud": -314.04, "lightgbm_aud": -620.89, "lstm_aud": -434.65}, {"date": "2026-05-27", "price_max": 204.02, "price_min": 108.23, "perfect_foresight_aud": 339.01, "naive_aud": -29.71, "lightgbm_aud": -9.13, "lstm_aud": 21.85}, {"date": "2026-05-28", "price_max": 186.52, "price_min": 107.32, "perfect_foresight_aud": 319.1, "naive_aud": 118.78, "lightgbm_aud": 151.2, "lstm_aud": 193.62}, {"date": "2026-05-29", "price_max": 230.78, "price_min": 37.32, "perfect_foresight_aud": 468.77, "naive_aud": -1.19, "lightgbm_aud": -213.39, "lstm_aud": -173.01}, {"date": "2026-05-30", "price_max": 47.58, "price_min": -0.35, "perfect_foresight_aud": 304.54, "naive_aud": 171.9, "lightgbm_aud": 207.04, "lstm_aud": 260.16}, {"date": "2026-05-31", "price_max": 109.18, "price_min": -1.21, "perfect_foresight_aud": 650.96, "naive_aud": 468.4, "lightgbm_aud": 593.32, "lstm_aud": 630.31}, {"date": "2026-06-01", "price_max": 68.22, "price_min": -5.13, "perfect_foresight_aud": 260.42, "naive_aud": -11.61, "lightgbm_aud": 18.35, "lstm_aud": -18.95}, {"date": "2026-06-02", "price_max": 58.77, "price_min": -2.33, "perfect_foresight_aud": 412.73, "naive_aud": -46.17, "lightgbm_aud": 256.87, "lstm_aud": 310.44}, {"date": "2026-06-03", "price_max": 110.39, "price_min": -3.39, "perfect_foresight_aud": 554.35, "naive_aud": 393.66, "lightgbm_aud": 432.33, "lstm_aud": 417.65}, {"date": "2026-06-04", "price_max": 65.06, "price_min": -10.02, "perfect_foresight_aud": 517.9, "naive_aud": 320.45, "lightgbm_aud": 336.89, "lstm_aud": 223.44}, {"date": "2026-06-05", "price_max": 114.5, "price_min": 23.7, "perfect_foresight_aud": 542.73, "naive_aud": 49.12, "lightgbm_aud": 290.31, "lstm_aud": 393.41}, {"date": "2026-06-06", "price_max": 126.32, "price_min": 33.97, "perfect_foresight_aud": 449.43, "naive_aud": 52.3, "lightgbm_aud": 308.82, "lstm_aud": 284.89}, {"date": "2026-06-07", "price_max": 197.58, "price_min": 48.96, "perfect_foresight_aud": 468.79, "naive_aud": -6.65, "lightgbm_aud": 150.22, "lstm_aud": 197.22}, {"date": "2026-06-08", "price_max": 100.64, "price_min": -0.77, "perfect_foresight_aud": 482.1, "naive_aud": 164.36, "lightgbm_aud": 381.38, "lstm_aud": 366.28}, {"date": "2026-06-09", "price_max": 22.78, "price_min": -4.58, "perfect_foresight_aud": 175.57, "naive_aud": 88.19, "lightgbm_aud": 109.96, "lstm_aud": 137.49}, {"date": "2026-06-10", "price_max": 170.67, "price_min": -6.28, "perfect_foresight_aud": 875.05, "naive_aud": -397.73, "lightgbm_aud": 365.65, "lstm_aud": 307.29}, {"date": "2026-06-11", "price_max": 167.57, "price_min": -2.19, "perfect_foresight_aud": 337.41, "naive_aud": -285.35, "lightgbm_aud": 48.54, "lstm_aud": 242.63}, {"date": "2026-06-12", "price_max": 18.09, "price_min": -17.26, "perfect_foresight_aud": 169.93, "naive_aud": 48.26, "lightgbm_aud": 1.69, "lstm_aud": 7.19}, {"date": "2026-06-13", "price_max": 73.76, "price_min": -10.27, "perfect_foresight_aud": 432.75, "naive_aud": -371.71, "lightgbm_aud": 196.26, "lstm_aud": 300.1}, {"date": "2026-06-14", "price_max": 81.83, "price_min": -5.94, "perfect_foresight_aud": 442.73, "naive_aud": -83.69, "lightgbm_aud": 298.81, "lstm_aud": 349.29}, {"date": "2026-06-15", "price_max": 89.67, "price_min": 1.66, "perfect_foresight_aud": 346.71, "naive_aud": -42.92, "lightgbm_aud": 153.02, "lstm_aud": 226.74}, {"date": "2026-06-16", "price_max": 78.17, "price_min": -2.04, "perfect_foresight_aud": 437.02, "naive_aud": 283.27, "lightgbm_aud": 288.67, "lstm_aud": 307.5}, {"date": "2026-06-17", "price_max": 42.35, "price_min": -2.96, "perfect_foresight_aud": 409.22, "naive_aud": 327.01, "lightgbm_aud": 173.05, "lstm_aud": 186.05}, {"date": "2026-06-18", "price_max": 10.64, "price_min": -19.24, "perfect_foresight_aud": 173.73, "naive_aud": 54.83, "lightgbm_aud": 106.96, "lstm_aud": 109.95}, {"date": "2026-06-19", "price_max": 79.8, "price_min": -2.89, "perfect_foresight_aud": 496.86, "naive_aud": -148.71, "lightgbm_aud": 159.12, "lstm_aud": 353.44}, {"date": "2026-06-20", "price_max": 221.56, "price_min": 38.56, "perfect_foresight_aud": 823.45, "naive_aud": 430.72, "lightgbm_aud": 518.62, "lstm_aud": 514.82}, {"date": "2026-06-21", "price_max": 8688.62, "price_min": 76.79, "perfect_foresight_aud": 18317.89, "naive_aud": -3038.6, "lightgbm_aud": 1388.48, "lstm_aud": 999.91}, {"date": "2026-06-22", "price_max": 20300.0, "price_min": 215.19, "perfect_foresight_aud": 48617.2, "naive_aud": 27917.08, "lightgbm_aud": 43908.67, "lstm_aud": 46828.9}, {"date": "2026-06-23", "price_max": 513.27, "price_min": 137.22, "perfect_foresight_aud": 2041.1, "naive_aud": -669.25, "lightgbm_aud": 1349.29, "lstm_aud": 1546.03}, {"date": "2026-06-24", "price_max": 675.46, "price_min": 115.44, "perfect_foresight_aud": 2107.41, "naive_aud": 199.81, "lightgbm_aud": 474.19, "lstm_aud": 400.61}, {"date": "2026-06-25", "price_max": 199.04, "price_min": 98.94, "perfect_foresight_aud": 473.96, "naive_aud": 290.4, "lightgbm_aud": 274.4, "lstm_aud": 249.51}, {"date": "2026-06-26", "price_max": 201.06, "price_min": 85.37, "perfect_foresight_aud": 644.28, "naive_aud": 359.81, "lightgbm_aud": 389.39, "lstm_aud": 442.62}, {"date": "2026-06-27", "price_max": 145.83, "price_min": 64.4, "perfect_foresight_aud": 121.21, "naive_aud": -231.66, "lightgbm_aud": 63.31, "lstm_aud": 61.99}, {"date": "2026-06-28", "price_max": 101.91, "price_min": 37.44, "perfect_foresight_aud": 223.15, "naive_aud": 171.31, "lightgbm_aud": 153.36, "lstm_aud": 115.34}, {"date": "2026-06-29", "price_max": 457.78, "price_min": 8.34, "perfect_foresight_aud": 1879.01, "naive_aud": 1242.49, "lightgbm_aud": 1583.55, "lstm_aud": 1723.08}, {"date": "2026-06-30", "price_max": 200.8, "price_min": 12.44, "perfect_foresight_aud": 383.45, "naive_aud": -382.5, "lightgbm_aud": -284.09, "lstm_aud": -307.74}, {"date": "2026-07-01", "price_max": 70.82, "price_min": -2.16, "perfect_foresight_aud": 432.9, "naive_aud": 216.74, "lightgbm_aud": 300.18, "lstm_aud": 170.61}, {"date": "2026-07-02", "price_max": 72.89, "price_min": -43.91, "perfect_foresight_aud": 576.31, "naive_aud": -167.13, "lightgbm_aud": 123.06, "lstm_aud": 162.9}, {"date": "2026-07-03", "price_max": 176.27, "price_min": -6.69, "perfect_foresight_aud": 1140.61, "naive_aud": -601.19, "lightgbm_aud": 819.33, "lstm_aud": 767.0}, {"date": "2026-07-04", "price_max": 166.54, "price_min": 87.7, "perfect_foresight_aud": 70.21, "naive_aud": -586.1, "lightgbm_aud": -297.3, "lstm_aud": -269.29}, {"date": "2026-07-05", "price_max": 151.07, "price_min": 54.48, "perfect_foresight_aud": 467.83, "naive_aud": 109.03, "lightgbm_aud": -121.78, "lstm_aud": -93.97}, {"date": "2026-07-06", "price_max": 104.2, "price_min": 5.32, "perfect_foresight_aud": 430.79, "naive_aud": -10.77, "lightgbm_aud": 296.89, "lstm_aud": 383.31}, {"date": "2026-07-07", "price_max": 161.11, "price_min": -7.01, "perfect_foresight_aud": 844.45, "naive_aud": 692.17, "lightgbm_aud": 601.92, "lstm_aud": 700.86}, {"date": "2026-07-08", "price_max": 5082.59, "price_min": 90.77, "perfect_foresight_aud": 9036.9, "naive_aud": 1117.56, "lightgbm_aud": 1202.86, "lstm_aud": 1188.78}, {"date": "2026-07-09", "price_max": 212.23, "price_min": 94.06, "perfect_foresight_aud": 776.66, "naive_aud": 251.57, "lightgbm_aud": 466.75, "lstm_aud": 520.97}, {"date": "2026-07-10", "price_max": 145.7, "price_min": 51.1, "perfect_foresight_aud": 247.23, "naive_aud": 124.29, "lightgbm_aud": 113.04, "lstm_aud": 134.36}, {"date": "2026-07-11", "price_max": 48.22, "price_min": -14.0, "perfect_foresight_aud": 358.62, "naive_aud": 141.89, "lightgbm_aud": 154.3, "lstm_aud": 208.73}, {"date": "2026-07-12", "price_max": 1.46, "price_min": -58.58, "perfect_foresight_aud": 266.06, "naive_aud": 69.74, "lightgbm_aud": 85.54, "lstm_aud": 138.53}, {"date": "2026-07-13", "price_max": 56.45, "price_min": -71.15, "perfect_foresight_aud": 598.25, "naive_aud": 22.89, "lightgbm_aud": 265.3, "lstm_aud": 288.15}, {"date": "2026-07-14", "price_max": 103.87, "price_min": -24.38, "perfect_foresight_aud": 816.33, "naive_aud": 125.81, "lightgbm_aud": 600.03, "lstm_aud": 695.34}, {"date": "2026-07-15", "price_max": 162.42, "price_min": 66.54, "perfect_foresight_aud": 553.11, "naive_aud": -91.19, "lightgbm_aud": 30.88, "lstm_aud": 203.62}, {"date": "2026-07-16", "price_max": 141.27, "price_min": 38.59, "perfect_foresight_aud": 454.47, "naive_aud": 76.3, "lightgbm_aud": 251.88, "lstm_aud": 278.22}, {"date": "2026-07-17", "price_max": 151.64, "price_min": 54.3, "perfect_foresight_aud": 464.07, "naive_aud": 152.39, "lightgbm_aud": 166.29, "lstm_aud": 176.63}, {"date": "2026-07-18", "price_max": 158.28, "price_min": 27.87, "perfect_foresight_aud": 468.47, "naive_aud": 236.8, "lightgbm_aud": 286.34, "lstm_aud": 330.69}, {"date": "2026-07-19", "price_max": 132.2, "price_min": 25.47, "perfect_foresight_aud": 554.89, "naive_aud": 277.29, "lightgbm_aud": 435.26, "lstm_aud": 413.05}, {"date": "2026-07-20", "price_max": 130.95, "price_min": 45.84, "perfect_foresight_aud": 613.45, "naive_aud": 223.07, "lightgbm_aud": 397.83, "lstm_aud": 459.13}, {"date": "2026-07-21", "price_max": 144.86, "price_min": 60.94, "perfect_foresight_aud": 378.93, "naive_aud": 207.78, "lightgbm_aud": 298.6, "lstm_aud": 326.96}, {"date": "2026-07-22", "price_max": 125.46, "price_min": -1.64, "perfect_foresight_aud": 819.87, "naive_aud": 368.31, "lightgbm_aud": 535.24, "lstm_aud": 580.31}, {"date": "2026-07-23", "price_max": 99.59, "price_min": -0.86, "perfect_foresight_aud": 574.92, "naive_aud": 448.54, "lightgbm_aud": 481.35, "lstm_aud": 427.4}, {"date": "2026-07-24", "price_max": 124.04, "price_min": 38.23, "perfect_foresight_aud": 397.77, "naive_aud": 128.19, "lightgbm_aud": 267.66, "lstm_aud": 245.71}, {"date": "2026-07-25", "price_max": 105.49, "price_min": -6.18, "perfect_foresight_aud": 669.96, "naive_aud": 367.82, "lightgbm_aud": 440.12, "lstm_aud": 344.17}, {"date": "2026-07-26", "price_max": 123.12, "price_min": 69.46, "perfect_foresight_aud": 211.27, "naive_aud": 1.2, "lightgbm_aud": 103.33, "lstm_aud": 64.95}, {"date": "2026-07-27", "price_max": 184.61, "price_min": -29.41, "perfect_foresight_aud": 549.0, "naive_aud": -35.7, "lightgbm_aud": 114.01, "lstm_aud": 312.82}, {"date": "2026-07-28", "price_max": 76.05, "price_min": -71.22, "perfect_foresight_aud": 820.86, "naive_aud": 67.3, "lightgbm_aud": 486.75, "lstm_aud": 552.47}, {"date": "2026-07-29", "price_max": 299.6, "price_min": -17.86, "perfect_foresight_aud": 2056.62, "naive_aud": 508.16, "lightgbm_aud": 1364.06, "lstm_aud": 1653.44}, {"date": "2026-07-30", "price_max": 561.41, "price_min": 243.33, "perfect_foresight_aud": 1913.19, "naive_aud": 22.3, "lightgbm_aud": 369.02, "lstm_aud": 461.08}, {"date": "2026-07-31", "price_max": 1947.41, "price_min": 89.37, "perfect_foresight_aud": 2533.13, "naive_aud": -3330.67, "lightgbm_aud": -2196.11, "lstm_aud": -1701.03}, {"date": "2026-08-01", "price_max": 127.46, "price_min": -5.9, "perfect_foresight_aud": 716.94, "naive_aud": 371.97, "lightgbm_aud": 575.29, "lstm_aud": 523.67}, {"date": "2026-08-02", "price_max": 101.02, "price_min": -52.53, "perfect_foresight_aud": 792.21, "naive_aud": 406.42, "lightgbm_aud": 493.78, "lstm_aud": 566.87}, {"date": "2026-08-03", "price_max": 106.68, "price_min": -4.11, "perfect_foresight_aud": 814.22, "naive_aud": 215.76, "lightgbm_aud": 580.8, "lstm_aud": 642.9}, {"date": "2026-08-04", "price_max": 140.98, "price_min": 76.95, "perfect_foresight_aud": 264.46, "naive_aud": -97.89, "lightgbm_aud": 3.68, "lstm_aud": 63.01}, {"date": "2026-08-05", "price_max": 273.5, "price_min": 111.6, "perfect_foresight_aud": 761.67, "naive_aud": 222.11, "lightgbm_aud": -464.72, "lstm_aud": -90.23}, {"date": "2026-08-06", "price_max": 230.04, "price_min": 50.44, "perfect_foresight_aud": 723.67, "naive_aud": 368.78, "lightgbm_aud": 578.14, "lstm_aud": 495.75}, {"date": "2026-08-07", "price_max": 140.19, "price_min": -6.71, "perfect_foresight_aud": 630.7, "naive_aud": 316.74, "lightgbm_aud": 447.91, "lstm_aud": 575.07}, {"date": "2026-08-08", "price_max": 49.15, "price_min": -8.12, "perfect_foresight_aud": 268.39, "naive_aud": 134.51, "lightgbm_aud": 192.12, "lstm_aud": 176.34}, {"date": "2026-08-09", "price_max": 100.35, "price_min": -6.6, "perfect_foresight_aud": 536.02, "naive_aud": 107.01, "lightgbm_aud": 170.87, "lstm_aud": 205.27}, {"date": "2026-08-10", "price_max": 98.7, "price_min": -43.84, "perfect_foresight_aud": 754.63, "naive_aud": 286.66, "lightgbm_aud": 569.51, "lstm_aud": 709.01}, {"date": "2026-08-11", "price_max": 83.55, "price_min": -6.04, "perfect_foresight_aud": 481.96, "naive_aud": 303.42, "lightgbm_aud": 415.13, "lstm_aud": 432.62}, {"date": "2026-08-12", "price_max": 103.12, "price_min": -2.54, "perfect_foresight_aud": 866.1, "naive_aud": 583.03, "lightgbm_aud": 746.79, "lstm_aud": 751.2}, {"date": "2026-08-13", "price_max": 132.79, "price_min": 8.6, "perfect_foresight_aud": 562.32, "naive_aud": 411.6, "lightgbm_aud": 349.77, "lstm_aud": 413.47}, {"date": "2026-08-14", "price_max": 269.9, "price_min": 101.46, "perfect_foresight_aud": 843.8, "naive_aud": -135.74, "lightgbm_aud": 71.0, "lstm_aud": -58.98}, {"date": "2026-08-15", "price_max": 172.2, "price_min": 45.46, "perfect_foresight_aud": 604.08, "naive_aud": 386.79, "lightgbm_aud": 303.01, "lstm_aud": 252.85}, {"date": "2026-08-16", "price_max": 86.93, "price_min": -12.03, "perfect_foresight_aud": 479.84, "naive_aud": 129.07, "lightgbm_aud": 336.07, "lstm_aud": 377.52}, {"date": "2026-08-17", "price_max": 84.82, "price_min": 13.42, "perfect_foresight_aud": 385.23, "naive_aud": 305.78, "lightgbm_aud": 325.86, "lstm_aud": 269.04}, {"date": "2026-08-18", "price_max": 51.37, "price_min": -6.53, "perfect_foresight_aud": 275.91, "naive_aud": 132.93, "lightgbm_aud": 233.1, "lstm_aud": 224.93}, {"date": "2026-08-19", "price_max": 93.22, "price_min": -138.63, "perfect_foresight_aud": 1225.9, "naive_aud": 514.94, "lightgbm_aud": 884.05, "lstm_aud": 1015.5}, {"date": "2026-08-20", "price_max": 301.01, "price_min": 6.13, "perfect_foresight_aud": 1058.52, "naive_aud": 334.5, "lightgbm_aud": 561.04, "lstm_aud": 576.71}, {"date": "2026-08-21", "price_max": 239.54, "price_min": 32.81, "perfect_foresight_aud": 1044.61, "naive_aud": 655.38, "lightgbm_aud": 578.03, "lstm_aud": 819.04}, {"date": "2026-08-22", "price_max": 223.0, "price_min": 30.68, "perfect_foresight_aud": 959.4, "naive_aud": 4.26, "lightgbm_aud": 34.44, "lstm_aud": 31.08}, {"date": "2026-08-23", "price_max": 134.17, "price_min": -6.54, "perfect_foresight_aud": 488.07, "naive_aud": -91.63, "lightgbm_aud": 450.79, "lstm_aud": 423.73}, {"date": "2026-08-24", "price_max": 124.4, "price_min": 22.13, "perfect_foresight_aud": 728.71, "naive_aud": 209.56, "lightgbm_aud": 445.72, "lstm_aud": 504.12}, {"date": "2026-08-25", "price_max": 120.53, "price_min": -7.74, "perfect_foresight_aud": 598.21, "naive_aud": -136.68, "lightgbm_aud": -13.84, "lstm_aud": -21.81}, {"date": "2026-08-26", "price_max": 233.55, "price_min": 67.82, "perfect_foresight_aud": 823.05, "naive_aud": 37.0, "lightgbm_aud": -494.22, "lstm_aud": -635.95}, {"date": "2026-08-27", "price_max": 220.29, "price_min": 3.53, "perfect_foresight_aud": 998.53, "naive_aud": -438.89, "lightgbm_aud": 301.58, "lstm_aud": 437.53}, {"date": "2026-08-28", "price_max": 156.42, "price_min": 20.68, "perfect_foresight_aud": 609.71, "naive_aud": 138.42, "lightgbm_aud": 283.47, "lstm_aud": 211.23}, {"date": "2026-08-29", "price_max": 111.59, "price_min": -13.94, "perfect_foresight_aud": 591.73, "naive_aud": 250.81, "lightgbm_aud": 448.94, "lstm_aud": 487.54}, {"date": "2026-08-30", "price_max": 112.9, "price_min": -11.12, "perfect_foresight_aud": 621.77, "naive_aud": 528.0, "lightgbm_aud": 545.13, "lstm_aud": 574.24}, {"date": "2026-08-31", "price_max": 118.57, "price_min": -0.57, "perfect_foresight_aud": 620.67, "naive_aud": 510.82, "lightgbm_aud": 498.19, "lstm_aud": 507.52}, {"date": "2026-09-01", "price_max": 105.51, "price_min": -54.98, "perfect_foresight_aud": 808.88, "naive_aud": 496.57, "lightgbm_aud": 502.18, "lstm_aud": 638.25}, {"date": "2026-09-02", "price_max": 156.97, "price_min": 10.34, "perfect_foresight_aud": 494.07, "naive_aud": -105.58, "lightgbm_aud": 125.18, "lstm_aud": 142.76}, {"date": "2026-09-03", "price_max": 162.0, "price_min": -16.24, "perfect_foresight_aud": 989.81, "naive_aud": 702.02, "lightgbm_aud": 769.35, "lstm_aud": 793.94}, {"date": "2026-09-04", "price_max": 128.5, "price_min": -12.62, "perfect_foresight_aud": 273.86, "naive_aud": -163.82, "lightgbm_aud": -26.97, "lstm_aud": -119.09}, {"date": "2026-09-05", "price_max": 33.01, "price_min": -10.38, "perfect_foresight_aud": 247.03, "naive_aud": -17.72, "lightgbm_aud": 179.24, "lstm_aud": 218.2}, {"date": "2026-09-06", "price_max": 104.42, "price_min": 16.99, "perfect_foresight_aud": 677.32, "naive_aud": 193.71, "lightgbm_aud": 163.51, "lstm_aud": 263.63}, {"date": "2026-09-07", "price_max": 139.28, "price_min": -2.6, "perfect_foresight_aud": 718.93, "naive_aud": 499.24, "lightgbm_aud": 638.25, "lstm_aud": 647.8}, {"date": "2026-09-08", "price_max": 133.8, "price_min": 11.52, "perfect_foresight_aud": 669.47, "naive_aud": 410.53, "lightgbm_aud": 455.29, "lstm_aud": 504.71}, {"date": "2026-09-09", "price_max": 108.26, "price_min": -40.35, "perfect_foresight_aud": 583.62, "naive_aud": 179.97, "lightgbm_aud": 349.56, "lstm_aud": 424.98}, {"date": "2026-09-10", "price_max": 99.27, "price_min": -230.44, "perfect_foresight_aud": 1844.24, "naive_aud": 1228.62, "lightgbm_aud": 1320.36, "lstm_aud": 1537.91}, {"date": "2026-09-11", "price_max": 111.96, "price_min": -34.39, "perfect_foresight_aud": 781.99, "naive_aud": 659.75, "lightgbm_aud": 573.56, "lstm_aud": 596.49}, {"date": "2026-09-12", "price_max": 100.87, "price_min": -157.72, "perfect_foresight_aud": 1090.73, "naive_aud": 802.96, "lightgbm_aud": 822.54, "lstm_aud": 809.0}, {"date": "2026-09-13", "price_max": 72.55, "price_min": -13.51, "perfect_foresight_aud": 453.85, "naive_aud": 185.59, "lightgbm_aud": 252.26, "lstm_aud": 297.82}, {"date": "2026-09-14", "price_max": 87.92, "price_min": 22.79, "perfect_foresight_aud": 366.37, "naive_aud": -229.0, "lightgbm_aud": 48.06, "lstm_aud": -17.63}, {"date": "2026-09-15", "price_max": 66.16, "price_min": -10.86, "perfect_foresight_aud": 497.24, "naive_aud": -74.26, "lightgbm_aud": 234.25, "lstm_aud": 401.68}, {"date": "2026-09-16", "price_max": 104.53, "price_min": -181.38, "perfect_foresight_aud": 1736.28, "naive_aud": 955.05, "lightgbm_aud": 1191.71, "lstm_aud": 1414.18}, {"date": "2026-09-17", "price_max": 122.31, "price_min": -40.4, "perfect_foresight_aud": 773.89, "naive_aud": 651.81, "lightgbm_aud": 650.5, "lstm_aud": 711.08}, {"date": "2026-09-18", "price_max": 99.4, "price_min": -63.46, "perfect_foresight_aud": 579.61, "naive_aud": 301.88, "lightgbm_aud": 324.69, "lstm_aud": 466.31}, {"date": "2026-09-19", "price_max": 82.76, "price_min": -95.52, "perfect_foresight_aud": 1025.51, "naive_aud": 616.98, "lightgbm_aud": 734.35, "lstm_aud": 689.0}, {"date": "2026-09-20", "price_max": 10.33, "price_min": -80.1, "perfect_foresight_aud": 654.06, "naive_aud": 260.93, "lightgbm_aud": 332.7, "lstm_aud": 270.42}, {"date": "2026-09-21", "price_max": 104.62, "price_min": -6.56, "perfect_foresight_aud": 663.75, "naive_aud": -434.68, "lightgbm_aud": 340.13, "lstm_aud": 591.46}, {"date": "2026-09-22", "price_max": 108.01, "price_min": -2.06, "perfect_foresight_aud": 533.85, "naive_aud": 380.13, "lightgbm_aud": 491.97, "lstm_aud": 439.51}, {"date": "2026-09-23", "price_max": 158.08, "price_min": -6.02, "perfect_foresight_aud": 747.44, "naive_aud": 554.99, "lightgbm_aud": 619.46, "lstm_aud": 578.42}, {"date": "2026-09-24", "price_max": 234.95, "price_min": 4.24, "perfect_foresight_aud": 880.39, "naive_aud": 424.61, "lightgbm_aud": 255.85, "lstm_aud": 278.82}, {"date": "2026-09-25", "price_max": 127.5, "price_min": 23.1, "perfect_foresight_aud": 421.16, "naive_aud": -8.39, "lightgbm_aud": 82.39, "lstm_aud": 145.59}, {"date": "2026-09-26", "price_max": 113.35, "price_min": -12.19, "perfect_foresight_aud": 411.03, "naive_aud": -31.46, "lightgbm_aud": 78.55, "lstm_aud": 54.46}, {"date": "2026-09-27", "price_max": 46.3, "price_min": -149.83, "perfect_foresight_aud": 1041.2, "naive_aud": 126.83, "lightgbm_aud": 599.55, "lstm_aud": 692.59}, {"date": "2026-09-28", "price_max": 127.98, "price_min": -35.58, "perfect_foresight_aud": 877.81, "naive_aud": 353.7, "lightgbm_aud": 447.7, "lstm_aud": 484.11}, {"date": "2026-09-29", "price_max": 43.47, "price_min": -38.78, "perfect_foresight_aud": 496.82, "naive_aud": 167.74, "lightgbm_aud": 306.99, "lstm_aud": 339.9}, {"date": "2026-09-30", "price_max": 127.05, "price_min": 35.45, "perfect_foresight_aud": 711.92, "naive_aud": 19.76, "lightgbm_aud": 103.96, "lstm_aud": 87.93}, {"date": "2026-10-01", "price_max": 215.43, "price_min": 83.21, "perfect_foresight_aud": 656.05, "naive_aud": -408.58, "lightgbm_aud": -410.71, "lstm_aud": -6.06}, {"date": "2026-10-02", "price_max": 132.66, "price_min": 15.92, "perfect_foresight_aud": 502.29, "naive_aud": -92.85, "lightgbm_aud": 277.73, "lstm_aud": 195.09}, {"date": "2026-10-03", "price_max": 115.76, "price_min": -70.91, "perfect_foresight_aud": 1003.63, "naive_aud": 738.75, "lightgbm_aud": 789.43, "lstm_aud": 791.5}, {"date": "2026-10-04", "price_max": 241.72, "price_min": 1.65, "perfect_foresight_aud": 1087.66, "naive_aud": -607.73, "lightgbm_aud": -337.68, "lstm_aud": -480.7}, {"date": "2026-10-05", "price_max": 262.05, "price_min": -3.46, "perfect_foresight_aud": 974.94, "naive_aud": -432.78, "lightgbm_aud": 364.92, "lstm_aud": 397.76}, {"date": "2026-10-06", "price_max": 140.42, "price_min": -38.54, "perfect_foresight_aud": 771.33, "naive_aud": 339.03, "lightgbm_aud": 633.73, "lstm_aud": 581.55}, {"date": "2026-10-07", "price_max": 116.33, "price_min": -95.17, "perfect_foresight_aud": 1143.02, "naive_aud": 544.17, "lightgbm_aud": 818.17, "lstm_aud": 842.95}, {"date": "2026-10-08", "price_max": 110.33, "price_min": -231.46, "perfect_foresight_aud": 1544.59, "naive_aud": 558.35, "lightgbm_aud": 667.36, "lstm_aud": 599.49}, {"date": "2026-10-09", "price_max": 791.8, "price_min": -61.08, "perfect_foresight_aud": 2472.35, "naive_aud": 46.34, "lightgbm_aud": 262.7, "lstm_aud": 181.87}, {"date": "2026-10-10", "price_max": 111.17, "price_min": -23.01, "perfect_foresight_aud": 707.16, "naive_aud": 363.75, "lightgbm_aud": 497.32, "lstm_aud": 525.1}, {"date": "2026-10-11", "price_max": 164.96, "price_min": -265.56, "perfect_foresight_aud": 1785.87, "naive_aud": 1001.52, "lightgbm_aud": 960.64, "lstm_aud": 827.29}]} \ No newline at end of file diff --git a/results/typical_day.png b/results/typical_day.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c29ccdd56a099c2411ed09f0dd8d144e6b19f5 GIT binary patch literal 120501 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 pd.DataFrame: + rng = np.random.default_rng(seed) + days = pd.date_range("2024-01-01", periods=n_days, freq="D") + shape = 80 + 60 * np.sin(np.linspace(0, 2 * np.pi, 48)) + values = shape + rng.normal(0, 20, (n_days, 48)) + values[rng.random((n_days, 48)) < 0.01] = 5000.0 # occasional spikes + return pd.DataFrame(values, index=days, columns=range(48)) + + +def tamper_from(P: pd.DataFrame, day: pd.Timestamp) -> pd.DataFrame: + """Replace every price on `day` and after with garbage.""" + Q = P.copy() + Q.loc[Q.index >= day] = np.random.default_rng(1).normal(9999, 5000, Q.loc[Q.index >= day].shape) + return Q + + +# --- leakage: features for day D must not depend on day D or later --- + +def test_lgbm_features_ignore_target_day_and_future(): + P = synthetic_prices() + D = P.index[120] + days = pd.DatetimeIndex([D]) + pd.testing.assert_frame_equal(lgbm_features(P, days), lgbm_features(tamper_from(P, D), days)) + + +def test_lstm_inputs_ignore_target_day_and_future(): + P = synthetic_prices() + D = P.index[120] + days = pd.DatetimeIndex([D]) + for a, b in zip(lstm_inputs(P, days), lstm_inputs(tamper_from(P, D), days)): + np.testing.assert_array_equal(a, b) + + +def test_features_do_change_when_history_changes(): + # guard against a vacuous leakage test: D-1 must actually matter + P = synthetic_prices() + D = P.index[120] + days = pd.DatetimeIndex([D]) + assert not lgbm_features(P, days).equals(lgbm_features(tamper_from(P, P.index[119]), days)) + + +@pytest.mark.parametrize("model_factory", [ + lambda: NaiveModel(), + lambda: LightGBMModel(transform="asinh", num_leaves=7), + lambda: LSTMModel(hidden=8, max_epochs=3, patience=2), +], ids=["naive", "lightgbm", "lstm"]) +def test_fit_and_forecast_ignore_target_day_and_future(model_factory): + """End to end: fit with cutoff D and forecast D; tampering with D and later changes nothing.""" + P = synthetic_prices() + D = P.index[150] + days = pd.DatetimeIndex([D]) + clean = model_factory().fit(P, cutoff=D).predict(P, days) + Q = tamper_from(P, D) + tampered = model_factory().fit(Q, cutoff=D).predict(Q, days) + np.testing.assert_allclose(clean, tampered) + + +def test_split_order(): + P = synthetic_prices(n_days=800) + s = split(P) + assert s["data_start"] < s["val_start"] < s["test_start"] <= s["test_end"] + assert (s["test_end"] - s["test_start"]).days == 364 + + +# --- realised profit --- + +def test_realised_profit_hand_calculation(): + charge = [2.0, 0.0, 0.0] + discharge = [0.0, 0.0, 1.8] + actual = [10.0, 50.0, 200.0] + # (0 - 2) * 10 * 0.5 + 0 + (1.8 - 0) * 200 * 0.5 = -10 + 180 + np.testing.assert_allclose(realised_profit(charge, discharge, actual), [-10.0, 0.0, 180.0]) + + +def test_realised_profit_uses_actual_not_forecast_prices(): + actual = np.array([10.0] * 24 + [200.0] * 24) + # forecast puts the peak in the morning, when actual prices are flat and cheap + wrong_forecast = np.array([10.0] * 12 + [200.0] * 12 + [10.0] * 24) + s = schedule(wrong_forecast) + realised = realised_profit(s["charge_mw"], s["discharge_mw"], actual).sum() + pf = schedule(actual) + perfect = realised_profit(pf["charge_mw"], pf["discharge_mw"], actual).sum() + assert perfect > 0 + # it cycled inside the flat $10 period, so it lost the 10% charging loss + assert realised < 0 + assert realised <= perfect + + +def test_perfect_forecast_captures_everything(): + actual = np.array([30.0, -20.0, 5.0, 300.0] * 12) + s = schedule(actual) + pf = realised_profit(s["charge_mw"], s["discharge_mw"], actual).sum() + s2 = schedule(actual.copy()) + assert realised_profit(s2["charge_mw"], s2["discharge_mw"], actual).sum() == pytest.approx(pf) diff --git a/uv.lock b/uv.lock index 5ac82e9..df718a1 100644 --- a/uv.lock +++ b/uv.lock @@ -1,16 +1,19 @@ version = 1 -revision = 1 +revision = 3 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'win32'", "python_full_version >= '3.14' and sys_platform == 'emscripten'", - "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and sys_platform == 'darwin'", "python_full_version == '3.13.*' and sys_platform == 'win32'", "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", "python_full_version < '3.13' and sys_platform == 'win32'", "python_full_version < '3.13' and sys_platform == 'emscripten'", - "python_full_version < '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.13' and sys_platform == 'darwin'", ] [[package]] @@ -20,18 +23,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycares" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/da/97235e953109936bfeda62c1f9f1a7c5652d4dc49f2b5911f9ae1043afa9/aiodns-4.0.0.tar.gz", hash = "sha256:17be26a936ba788c849ba5fd20e0ba69d8c46e6273e846eb5430eae2630ce5b1", size = 26204 } +sdist = { url = "https://files.pythonhosted.org/packages/10/da/97235e953109936bfeda62c1f9f1a7c5652d4dc49f2b5911f9ae1043afa9/aiodns-4.0.0.tar.gz", hash = "sha256:17be26a936ba788c849ba5fd20e0ba69d8c46e6273e846eb5430eae2630ce5b1", size = 26204, upload-time = "2026-01-10T22:33:27.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/60/14ac40c03e8a26216e4f2642497b776e52f9e3214e4fd537628829bbb082/aiodns-4.0.0-py3-none-any.whl", hash = "sha256:a188a75fb8b2b7862ac8f84811a231402fb74f5b4e6f10766dc8a4544b0cf989", size = 11334 }, + { url = "https://files.pythonhosted.org/packages/d0/60/14ac40c03e8a26216e4f2642497b776e52f9e3214e4fd537628829bbb082/aiodns-4.0.0-py3-none-any.whl", hash = "sha256:a188a75fb8b2b7862ac8f84811a231402fb74f5b4e6f10766dc8a4544b0cf989", size = 11334, upload-time = "2026-01-10T22:33:25.65Z" }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, ] [[package]] @@ -47,76 +50,76 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732 }, - { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293 }, - { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533 }, - { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839 }, - { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932 }, - { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906 }, - { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020 }, - { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181 }, - { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794 }, - { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900 }, - { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239 }, - { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527 }, - { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489 }, - { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852 }, - { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379 }, - { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253 }, - { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407 }, - { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190 }, - { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783 }, - { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704 }, - { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652 }, - { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014 }, - { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777 }, - { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276 }, - { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131 }, - { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863 }, - { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793 }, - { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676 }, - { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217 }, - { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303 }, - { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673 }, - { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120 }, - { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383 }, - { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899 }, - { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238 }, - { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292 }, - { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021 }, - { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263 }, - { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107 }, - { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196 }, - { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591 }, - { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277 }, - { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575 }, - { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455 }, - { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417 }, - { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968 }, - { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690 }, - { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390 }, - { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188 }, - { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126 }, - { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128 }, - { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512 }, - { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444 }, - { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798 }, - { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835 }, - { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486 }, - { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951 }, - { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001 }, - { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246 }, - { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131 }, - { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196 }, - { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841 }, - { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193 }, - { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979 }, - { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193 }, - { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801 }, - { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523 }, - { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694 }, +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, + { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, + { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, + { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, + { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, + { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, ] [package.optional-dependencies] @@ -135,27 +138,27 @@ dependencies = [ { name = "frozenlist" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007 } +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490 }, + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, ] [[package]] name = "annotated-doc" version = "0.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288 } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303 }, + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, ] [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -166,77 +169,77 @@ dependencies = [ { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685 } +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592 }, + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] [[package]] name = "attrs" version = "26.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548 }, + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, ] [[package]] name = "backports-zstd" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f4/b1/36a5182ce1d8ef9ef32bff69037bd28b389bbdb66338f8069e61da7028cb/backports_zstd-1.3.0.tar.gz", hash = "sha256:e8b2d68e2812f5c9970cabc5e21da8b409b5ed04e79b4585dbffa33e9b45ebe2", size = 997138 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/d4/356da49d3053f4bc50e71a8535631b57bc9ca4e8c6d2442e073e0ab41c44/backports_zstd-1.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f4a292e357f3046d18766ce06d990ccbab97411708d3acb934e63529c2ea7786", size = 435972 }, - { url = "https://files.pythonhosted.org/packages/30/8f/dbe389e60c7e47af488520f31a4aa14028d66da5bf3c60d3044b571eb906/backports_zstd-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb4c386f38323698991b38edcc9c091d46d4713f5df02a3b5c80a28b40e289ea", size = 362124 }, - { url = "https://files.pythonhosted.org/packages/55/4b/173beafc99e99e7276ce008ef060b704471e75124c826bc5e2092815da37/backports_zstd-1.3.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f52523d2bdada29e653261abdc9cfcecd9e5500d305708b7e37caddb24909d4e", size = 506378 }, - { url = "https://files.pythonhosted.org/packages/df/c8/3f12a411d9a99d262cdb37b521025eecc2aa7e4a93277be3f4f4889adb74/backports_zstd-1.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3321d00beaacbd647252a7f581c1e1cdbdbda2407f2addce4bfb10e8e404b7c7", size = 476201 }, - { url = "https://files.pythonhosted.org/packages/43/dc/73c090e4a2d5671422512e1b6d276ca6ea0cc0c45ec4634789106adc0d66/backports_zstd-1.3.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:88f94d238ef36c639c0ae17cf41054ce103da9c4d399c6a778ce82690d9f4919", size = 581659 }, - { url = "https://files.pythonhosted.org/packages/08/4f/11bfcef534aa2bf3f476f52130217b45337f334d8a287edb2e06744a6515/backports_zstd-1.3.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:97d8c78fe20c7442c810adccfd5e3ea6a4e6f4f1fa4c73da2bc083260ebead17", size = 640388 }, - { url = "https://files.pythonhosted.org/packages/71/17/8faea426d4f49b63238bdfd9f211a9f01c862efe0d756d3abeb84265a4e2/backports_zstd-1.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eefda80c3dbfbd924f1c317e7b0543d39304ee645583cb58bae29e19f42948ed", size = 494173 }, - { url = "https://files.pythonhosted.org/packages/ba/9d/901f19ac90f3cd999bdcfb6edb4d7b4dc383dfba537f06f533fc9ac4777b/backports_zstd-1.3.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2ab5d3b5a54a674f4f6367bb9e0914063f22cd102323876135e9cc7a8f14f17e", size = 568628 }, - { url = "https://files.pythonhosted.org/packages/60/39/4d29788590c2465a570c2fae49dbff05741d1f0c8e4a0fb2c1c310f31804/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7558fb0e8c8197c59a5f80c56bf8f56c3690c45fd62f14e9e2081661556e3e64", size = 482233 }, - { url = "https://files.pythonhosted.org/packages/d9/4b/24c7c9e8ef384b19d515a7b1644a500ceb3da3baeff6d579687da1a0f62b/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:27744870e38f017159b9c0241ea51562f94c7fefcfa4c5190fb3ec4a65a7fc63", size = 509806 }, - { url = "https://files.pythonhosted.org/packages/3f/7e/7ba1aeecf0b5859f1855c0e661b4559566b64000f0627698ebd9e83f2138/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b099750755bb74c280827c7d68de621da0f245189082ab48ff91bda0ec2db9df", size = 586037 }, - { url = "https://files.pythonhosted.org/packages/4a/1a/18f0402b36b9cfb0aea010b5df900cfd42c214f37493561dba3abac90c4e/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5434e86f2836d453ae3e19a2711449683b7e21e107686838d12a255ad256ca99", size = 566220 }, - { url = "https://files.pythonhosted.org/packages/dc/d9/44c098ab31b948bbfd909ec4ae08e1e44c5025a2d846f62991a62ab3ebea/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:407e451f64e2f357c9218f5be4e372bb6102d7ae88582d415262a9d0a4f9b625", size = 630847 }, - { url = "https://files.pythonhosted.org/packages/30/33/e74cb2cfb162d2e9e00dad8bcdf53118ca7786cfd467925d6864732f79cc/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:58a071f3c198c781b2df801070290b7174e3ff61875454e9df93ab7ea9ea832b", size = 498665 }, - { url = "https://files.pythonhosted.org/packages/a2/a9/67a24007c333ed22736d5cd79f1aa1d7209f09be772ff82a8fd724c1978e/backports_zstd-1.3.0-cp312-cp312-win32.whl", hash = "sha256:21a9a542ccc7958ddb51ae6e46d8ed25d585b54d0d52aaa1c8da431ea158046a", size = 288809 }, - { url = "https://files.pythonhosted.org/packages/42/24/34b816118ea913debb2ea23e71ffd0fb2e2ac738064c4ac32e3fb62c18bb/backports_zstd-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:89ea8281821123b071a06b30b80da8e4d8a2b40a4f57315a19850337a21297ac", size = 313815 }, - { url = "https://files.pythonhosted.org/packages/4e/2f/babd02c9fc4ca35376ada7c291193a208165c7be2455f0f98bc1e1243f31/backports_zstd-1.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:f6843ecb181480e423b02f60fe29e393cbc31a95fb532acdf0d3a2c87bd50ce3", size = 288927 }, - { url = "https://files.pythonhosted.org/packages/0c/7d/53e8da5950cdfc5e8fe23efd5165ce2f4fed5222f9a3292e0cdb03dd8c0d/backports_zstd-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e86e03e3661900955f01afed6c59cae9baa63574e3b66896d99b7de97eaffce9", size = 435463 }, - { url = "https://files.pythonhosted.org/packages/da/78/f98e53870f7404071a41e3d04f2ff514302eeeb3279d931d02b220f437aa/backports_zstd-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:41974dcacc9824c1effe1c8d2f9d762bcf47d265ca4581a3c63321c7b06c61f0", size = 361740 }, - { url = "https://files.pythonhosted.org/packages/6d/ed/2c64706205a944c9c346d95c17f632d4e3468db3ce60efb6f5caa7c0dcae/backports_zstd-1.3.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:3090a97738d6ce9545d3ca5446df43370928092a962cbc0153e5445a947e98ed", size = 505651 }, - { url = "https://files.pythonhosted.org/packages/7b/7b/22998f691dc6e0c7e6fa81d611eb4b1f6a72fb27327f322366d4a7ca8fb3/backports_zstd-1.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddc874638abf03ea1ff3b0525b4a26a8d0adf7cb46a448c3449f08e4abc276b3", size = 475859 }, - { url = "https://files.pythonhosted.org/packages/0b/78/0cde898339a339530e5f932634872d2d64549969535447a48d3b98959e11/backports_zstd-1.3.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:db609e57b8ed88b3472930c87e93c08a4bbd5ffeb94608cd9c7c6f0ac0e166c6", size = 581339 }, - { url = "https://files.pythonhosted.org/packages/e2/1d/e0973e0eebe678c12c146473af2c54cda8a3e63b179785ca1a20727ad69c/backports_zstd-1.3.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5f13033a3dd95f323c067199f2e61b4589a7880188ef4ef356c7ffbdb78a9f11", size = 642182 }, - { url = "https://files.pythonhosted.org/packages/82/a2/ac67e79e137eb98aead66c7162bafe3cffcb82ef9cdeb6367ec18d88fbce/backports_zstd-1.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c4c7bcda5619a754726e7f5b391827f5efbe4bed8e62e9ec7490d42bff18aa6", size = 490807 }, - { url = "https://files.pythonhosted.org/packages/0f/e9/3514b1d065801ae7dce05246e9389003ed8fb1d7c3d71f85aa07a80f41e6/backports_zstd-1.3.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:884a94c40f27affe986f394f219a4fd3cbbd08e1cff2e028d29d467574cd266e", size = 566103 }, - { url = "https://files.pythonhosted.org/packages/1b/03/10ddb54cbf032e5fe390c0776d3392611b1fc772d6c3cb5a9bcdff4f915f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497f5765126f11a5b3fd8fedfdae0166d1dd867e7179b8148370a3313d047197", size = 481614 }, - { url = "https://files.pythonhosted.org/packages/5c/13/21efa7f94c41447f43aee1563b05fc540a235e61bce4597754f6c11c2e97/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a6ff6769948bb29bba07e1c2e8582d5a9765192a366108e42d6581a458475881", size = 509207 }, - { url = "https://files.pythonhosted.org/packages/de/e7/12da9256d9e49e71030f0ff75e9f7c258e76091a4eaf5b5f414409be6a57/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1623e5bff1acd9c8ef90d24fc548110f20df2d14432bfe5de59e76fc036824ef", size = 585765 }, - { url = "https://files.pythonhosted.org/packages/24/bf/59ca9cb4e7be1e59331bb792e8ef1331828efe596b1a2f8cbbc4e3f70d75/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:622c28306dcc429c8f2057fc4421d5722b1f22968d299025b35d71b50cfd4e03", size = 563852 }, - { url = "https://files.pythonhosted.org/packages/7c/ee/5a3eaed9a73bdf2c35dc0c7adc0616a99588e0de28f5ab52f3e0caaaa96f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09a2785e410ed2e812cb39b684ef5eb55083a5897bfd0e6f5de3bbd2c6345f70", size = 632549 }, - { url = "https://files.pythonhosted.org/packages/75/b9/c823633afc48a1ac56d6ad34289c8f51b0234685142531bfa8197ca91777/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ade1f4127fdbe36a02f8067d75aa79c1ea1c8a306bf63c7b818bb7b530e1beaa", size = 495104 }, - { url = "https://files.pythonhosted.org/packages/a3/8f/6f7030f18fa7307f87b0f57108a50a3a540b6350e2486d1739c0567629a3/backports_zstd-1.3.0-cp313-cp313-win32.whl", hash = "sha256:668e6fb1805b825cb7504c71436f7b28d4d792bb2663ee901ec9a2bb15804437", size = 288447 }, - { url = "https://files.pythonhosted.org/packages/a2/82/b1df1bbbe4e6d3ffd364d0bcffdeb6c4361115c1eccd91238dbdd0c07fec/backports_zstd-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:385bdadf0ea8fe6ba780a95e4c7d7f018db7bafdd630932f0f9f0fad05d608ff", size = 313664 }, - { url = "https://files.pythonhosted.org/packages/45/0f/60918fe4d3f2881de8f4088d73be4837df9e4c6567594109d355a2d548b6/backports_zstd-1.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:4321a8a367537224b3559fe7aeb8012b98aea2a60a737e59e51d86e2e856fe0a", size = 288678 }, - { url = "https://files.pythonhosted.org/packages/a7/b9/35f423c0bcd85020d5e7be6ab8d7517843e3e4441071beb5c3bd8c5216cb/backports_zstd-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:10057d66fa4f0a7d3f6419ffb84b4fe61088da572e3ac4446134a1c8089e4166", size = 436155 }, - { url = "https://files.pythonhosted.org/packages/f6/14/e504daea24e8916f14ecbc223c354b558d8410cfc846606668ab91d96b38/backports_zstd-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4abf29d706ba05f658ca0247eb55675bcc00e10f12bca15736e45b05f1f2d2dc", size = 362436 }, - { url = "https://files.pythonhosted.org/packages/c4/f7/06e178dbab7edb88c2872aebd68b54137e07a169eba1aeedf614014f7036/backports_zstd-1.3.0-cp313-cp313t-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:127b0d73c745b0684da3d95c31c0939570810dad8967dfe8231eea8f0e047b2f", size = 507600 }, - { url = "https://files.pythonhosted.org/packages/3e/f1/2ce499b81c4389d6fa1eeea7e76f6e0bad48effdbb239da7cbcdaaf24b76/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0205ef809fb38bb5ca7f59fa03993596f918768b9378fb7fbd8a68889a6ce028", size = 475496 }, - { url = "https://files.pythonhosted.org/packages/18/1e/c82a586f2866aabf3a601a521af3c58756d83d98b724fda200016ac5e7e2/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1c389b667b0b07915781aa28beabf2481f11a6062a1a081873c4c443b98601a7", size = 580919 }, - { url = "https://files.pythonhosted.org/packages/1b/a3/eb5d9b7c4cb69d1b8ccd011abe244ba6815693b70bed07ed4b77ddda4535/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8e7ac5ef693d49d6fb35cd7bbb98c4762cfea94a8bd2bf2ab112027004f70b11", size = 639913 }, - { url = "https://files.pythonhosted.org/packages/11/2c/7296b99df79d9f31174a99c81c1964a32de8996ce2b3068f5bc66b413615/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d5543945aae2a76a850b23f283249424f535de6a622d6002957b7d971e6a36d", size = 494800 }, - { url = "https://files.pythonhosted.org/packages/f9/fc/b8ae6e104ba72d20cd5f9dfd9baee36675e89c81d432434927967114f30f/backports_zstd-1.3.0-cp313-cp313t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e38be15ebce82737deda2c9410c1f942f1df9da74121049243a009810432db75", size = 570396 }, - { url = "https://files.pythonhosted.org/packages/30/56/60a7a9de7a5bc951ea1106358b413c95183c93480394f3abc541313c8679/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3e3f58c76f4730607a4e0130d629173aa114ae72a5c8d3d5ad94e1bf51f18d8", size = 481980 }, - { url = "https://files.pythonhosted.org/packages/4b/bb/93fc1e8e81b8ecba58b0e53a14f7b44375cf837db6354410998f0c4cb6ff/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b808bf889722d889b792f7894e19c1f904bb0e9092d8c0eb0787b939b08bad9a", size = 511358 }, - { url = "https://files.pythonhosted.org/packages/ae/0f/b165c2a6080d22306975cd86ce97270208493f31a298867e343110570370/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f7be27d56f2f715bcd252d0c65c232146d8e1e039c7e2835b8a3ad3dc88bc508", size = 585492 }, - { url = "https://files.pythonhosted.org/packages/26/76/85b4bde76e982b24a7eb57a2fb9868807887bef4d2114a3654a6530a67ef/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:cbe341c7fcc723893663a37175ba859328b907a4e6d2d40a4c26629cc55efb67", size = 568309 }, - { url = "https://files.pythonhosted.org/packages/83/64/9490667827a320766fb883f358a7c19171fdc04f19ade156a8c341c36967/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:b4116a9e12dfcd834dd9132cf6a94657bf0d328cba5b295f26de26ea0ae1adc8", size = 630518 }, - { url = "https://files.pythonhosted.org/packages/ea/43/258587233b728bbff457bdb0c52b3e08504c485a8642b3daeb0bdd5a76bc/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1049e804cc8754290b24dab383d4d6ed0b7f794ad8338813ddcb3907d15a89d0", size = 499429 }, - { url = "https://files.pythonhosted.org/packages/32/04/cfab76878f360f124dbb533779e1e4603c801a0f5ada72ae5c742b7c4d7d/backports_zstd-1.3.0-cp313-cp313t-win32.whl", hash = "sha256:7d3f0f2499d2049ec53d2674c605a4b3052c217cc7ee49c05258046411685adc", size = 289389 }, - { url = "https://files.pythonhosted.org/packages/cb/ff/dbcfb6c9c922ab6d98f3d321e7d0c7b34ecfa26f3ca71d930fe1ef639737/backports_zstd-1.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:eb2f8fab0b1ea05148394cb34a9e543a43477178765f2d6e7c84ed332e34935e", size = 314776 }, - { url = "https://files.pythonhosted.org/packages/01/4b/82e4baae3117806639fe1c693b1f2f7e6133a7cefd1fa2e38018c8edcd68/backports_zstd-1.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c66ad9eb5bfbe28c2387b7fc58ddcdecfb336d6e4e60bcba1694a906c1f21a6c", size = 289315 }, +sdist = { url = "https://files.pythonhosted.org/packages/f4/b1/36a5182ce1d8ef9ef32bff69037bd28b389bbdb66338f8069e61da7028cb/backports_zstd-1.3.0.tar.gz", hash = "sha256:e8b2d68e2812f5c9970cabc5e21da8b409b5ed04e79b4585dbffa33e9b45ebe2", size = 997138, upload-time = "2025-12-29T17:28:06.143Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/d4/356da49d3053f4bc50e71a8535631b57bc9ca4e8c6d2442e073e0ab41c44/backports_zstd-1.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f4a292e357f3046d18766ce06d990ccbab97411708d3acb934e63529c2ea7786", size = 435972, upload-time = "2025-12-29T17:26:18.752Z" }, + { url = "https://files.pythonhosted.org/packages/30/8f/dbe389e60c7e47af488520f31a4aa14028d66da5bf3c60d3044b571eb906/backports_zstd-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb4c386f38323698991b38edcc9c091d46d4713f5df02a3b5c80a28b40e289ea", size = 362124, upload-time = "2025-12-29T17:26:19.995Z" }, + { url = "https://files.pythonhosted.org/packages/55/4b/173beafc99e99e7276ce008ef060b704471e75124c826bc5e2092815da37/backports_zstd-1.3.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:f52523d2bdada29e653261abdc9cfcecd9e5500d305708b7e37caddb24909d4e", size = 506378, upload-time = "2025-12-29T17:26:21.855Z" }, + { url = "https://files.pythonhosted.org/packages/df/c8/3f12a411d9a99d262cdb37b521025eecc2aa7e4a93277be3f4f4889adb74/backports_zstd-1.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3321d00beaacbd647252a7f581c1e1cdbdbda2407f2addce4bfb10e8e404b7c7", size = 476201, upload-time = "2025-12-29T17:26:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/73c090e4a2d5671422512e1b6d276ca6ea0cc0c45ec4634789106adc0d66/backports_zstd-1.3.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:88f94d238ef36c639c0ae17cf41054ce103da9c4d399c6a778ce82690d9f4919", size = 581659, upload-time = "2025-12-29T17:26:24.189Z" }, + { url = "https://files.pythonhosted.org/packages/08/4f/11bfcef534aa2bf3f476f52130217b45337f334d8a287edb2e06744a6515/backports_zstd-1.3.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:97d8c78fe20c7442c810adccfd5e3ea6a4e6f4f1fa4c73da2bc083260ebead17", size = 640388, upload-time = "2025-12-29T17:26:25.47Z" }, + { url = "https://files.pythonhosted.org/packages/71/17/8faea426d4f49b63238bdfd9f211a9f01c862efe0d756d3abeb84265a4e2/backports_zstd-1.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eefda80c3dbfbd924f1c317e7b0543d39304ee645583cb58bae29e19f42948ed", size = 494173, upload-time = "2025-12-29T17:26:26.736Z" }, + { url = "https://files.pythonhosted.org/packages/ba/9d/901f19ac90f3cd999bdcfb6edb4d7b4dc383dfba537f06f533fc9ac4777b/backports_zstd-1.3.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2ab5d3b5a54a674f4f6367bb9e0914063f22cd102323876135e9cc7a8f14f17e", size = 568628, upload-time = "2025-12-29T17:26:28.12Z" }, + { url = "https://files.pythonhosted.org/packages/60/39/4d29788590c2465a570c2fae49dbff05741d1f0c8e4a0fb2c1c310f31804/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7558fb0e8c8197c59a5f80c56bf8f56c3690c45fd62f14e9e2081661556e3e64", size = 482233, upload-time = "2025-12-29T17:26:29.399Z" }, + { url = "https://files.pythonhosted.org/packages/d9/4b/24c7c9e8ef384b19d515a7b1644a500ceb3da3baeff6d579687da1a0f62b/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:27744870e38f017159b9c0241ea51562f94c7fefcfa4c5190fb3ec4a65a7fc63", size = 509806, upload-time = "2025-12-29T17:26:30.605Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7e/7ba1aeecf0b5859f1855c0e661b4559566b64000f0627698ebd9e83f2138/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b099750755bb74c280827c7d68de621da0f245189082ab48ff91bda0ec2db9df", size = 586037, upload-time = "2025-12-29T17:26:32.201Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1a/18f0402b36b9cfb0aea010b5df900cfd42c214f37493561dba3abac90c4e/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5434e86f2836d453ae3e19a2711449683b7e21e107686838d12a255ad256ca99", size = 566220, upload-time = "2025-12-29T17:26:33.5Z" }, + { url = "https://files.pythonhosted.org/packages/dc/d9/44c098ab31b948bbfd909ec4ae08e1e44c5025a2d846f62991a62ab3ebea/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:407e451f64e2f357c9218f5be4e372bb6102d7ae88582d415262a9d0a4f9b625", size = 630847, upload-time = "2025-12-29T17:26:35.273Z" }, + { url = "https://files.pythonhosted.org/packages/30/33/e74cb2cfb162d2e9e00dad8bcdf53118ca7786cfd467925d6864732f79cc/backports_zstd-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:58a071f3c198c781b2df801070290b7174e3ff61875454e9df93ab7ea9ea832b", size = 498665, upload-time = "2025-12-29T17:26:37.123Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a9/67a24007c333ed22736d5cd79f1aa1d7209f09be772ff82a8fd724c1978e/backports_zstd-1.3.0-cp312-cp312-win32.whl", hash = "sha256:21a9a542ccc7958ddb51ae6e46d8ed25d585b54d0d52aaa1c8da431ea158046a", size = 288809, upload-time = "2025-12-29T17:26:38.373Z" }, + { url = "https://files.pythonhosted.org/packages/42/24/34b816118ea913debb2ea23e71ffd0fb2e2ac738064c4ac32e3fb62c18bb/backports_zstd-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:89ea8281821123b071a06b30b80da8e4d8a2b40a4f57315a19850337a21297ac", size = 313815, upload-time = "2025-12-29T17:26:39.665Z" }, + { url = "https://files.pythonhosted.org/packages/4e/2f/babd02c9fc4ca35376ada7c291193a208165c7be2455f0f98bc1e1243f31/backports_zstd-1.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:f6843ecb181480e423b02f60fe29e393cbc31a95fb532acdf0d3a2c87bd50ce3", size = 288927, upload-time = "2025-12-29T17:26:40.923Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7d/53e8da5950cdfc5e8fe23efd5165ce2f4fed5222f9a3292e0cdb03dd8c0d/backports_zstd-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e86e03e3661900955f01afed6c59cae9baa63574e3b66896d99b7de97eaffce9", size = 435463, upload-time = "2025-12-29T17:26:42.152Z" }, + { url = "https://files.pythonhosted.org/packages/da/78/f98e53870f7404071a41e3d04f2ff514302eeeb3279d931d02b220f437aa/backports_zstd-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:41974dcacc9824c1effe1c8d2f9d762bcf47d265ca4581a3c63321c7b06c61f0", size = 361740, upload-time = "2025-12-29T17:26:43.377Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ed/2c64706205a944c9c346d95c17f632d4e3468db3ce60efb6f5caa7c0dcae/backports_zstd-1.3.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:3090a97738d6ce9545d3ca5446df43370928092a962cbc0153e5445a947e98ed", size = 505651, upload-time = "2025-12-29T17:26:44.495Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7b/22998f691dc6e0c7e6fa81d611eb4b1f6a72fb27327f322366d4a7ca8fb3/backports_zstd-1.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddc874638abf03ea1ff3b0525b4a26a8d0adf7cb46a448c3449f08e4abc276b3", size = 475859, upload-time = "2025-12-29T17:26:45.722Z" }, + { url = "https://files.pythonhosted.org/packages/0b/78/0cde898339a339530e5f932634872d2d64549969535447a48d3b98959e11/backports_zstd-1.3.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:db609e57b8ed88b3472930c87e93c08a4bbd5ffeb94608cd9c7c6f0ac0e166c6", size = 581339, upload-time = "2025-12-29T17:26:46.93Z" }, + { url = "https://files.pythonhosted.org/packages/e2/1d/e0973e0eebe678c12c146473af2c54cda8a3e63b179785ca1a20727ad69c/backports_zstd-1.3.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5f13033a3dd95f323c067199f2e61b4589a7880188ef4ef356c7ffbdb78a9f11", size = 642182, upload-time = "2025-12-29T17:26:48.545Z" }, + { url = "https://files.pythonhosted.org/packages/82/a2/ac67e79e137eb98aead66c7162bafe3cffcb82ef9cdeb6367ec18d88fbce/backports_zstd-1.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c4c7bcda5619a754726e7f5b391827f5efbe4bed8e62e9ec7490d42bff18aa6", size = 490807, upload-time = "2025-12-29T17:26:49.789Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e9/3514b1d065801ae7dce05246e9389003ed8fb1d7c3d71f85aa07a80f41e6/backports_zstd-1.3.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:884a94c40f27affe986f394f219a4fd3cbbd08e1cff2e028d29d467574cd266e", size = 566103, upload-time = "2025-12-29T17:26:51.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/03/10ddb54cbf032e5fe390c0776d3392611b1fc772d6c3cb5a9bcdff4f915f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497f5765126f11a5b3fd8fedfdae0166d1dd867e7179b8148370a3313d047197", size = 481614, upload-time = "2025-12-29T17:26:52.255Z" }, + { url = "https://files.pythonhosted.org/packages/5c/13/21efa7f94c41447f43aee1563b05fc540a235e61bce4597754f6c11c2e97/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a6ff6769948bb29bba07e1c2e8582d5a9765192a366108e42d6581a458475881", size = 509207, upload-time = "2025-12-29T17:26:53.496Z" }, + { url = "https://files.pythonhosted.org/packages/de/e7/12da9256d9e49e71030f0ff75e9f7c258e76091a4eaf5b5f414409be6a57/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1623e5bff1acd9c8ef90d24fc548110f20df2d14432bfe5de59e76fc036824ef", size = 585765, upload-time = "2025-12-29T17:26:54.99Z" }, + { url = "https://files.pythonhosted.org/packages/24/bf/59ca9cb4e7be1e59331bb792e8ef1331828efe596b1a2f8cbbc4e3f70d75/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:622c28306dcc429c8f2057fc4421d5722b1f22968d299025b35d71b50cfd4e03", size = 563852, upload-time = "2025-12-29T17:26:56.371Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ee/5a3eaed9a73bdf2c35dc0c7adc0616a99588e0de28f5ab52f3e0caaaa96f/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09a2785e410ed2e812cb39b684ef5eb55083a5897bfd0e6f5de3bbd2c6345f70", size = 632549, upload-time = "2025-12-29T17:26:57.598Z" }, + { url = "https://files.pythonhosted.org/packages/75/b9/c823633afc48a1ac56d6ad34289c8f51b0234685142531bfa8197ca91777/backports_zstd-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ade1f4127fdbe36a02f8067d75aa79c1ea1c8a306bf63c7b818bb7b530e1beaa", size = 495104, upload-time = "2025-12-29T17:26:58.826Z" }, + { url = "https://files.pythonhosted.org/packages/a3/8f/6f7030f18fa7307f87b0f57108a50a3a540b6350e2486d1739c0567629a3/backports_zstd-1.3.0-cp313-cp313-win32.whl", hash = "sha256:668e6fb1805b825cb7504c71436f7b28d4d792bb2663ee901ec9a2bb15804437", size = 288447, upload-time = "2025-12-29T17:27:00.036Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/b1df1bbbe4e6d3ffd364d0bcffdeb6c4361115c1eccd91238dbdd0c07fec/backports_zstd-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:385bdadf0ea8fe6ba780a95e4c7d7f018db7bafdd630932f0f9f0fad05d608ff", size = 313664, upload-time = "2025-12-29T17:27:01.267Z" }, + { url = "https://files.pythonhosted.org/packages/45/0f/60918fe4d3f2881de8f4088d73be4837df9e4c6567594109d355a2d548b6/backports_zstd-1.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:4321a8a367537224b3559fe7aeb8012b98aea2a60a737e59e51d86e2e856fe0a", size = 288678, upload-time = "2025-12-29T17:27:02.506Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b9/35f423c0bcd85020d5e7be6ab8d7517843e3e4441071beb5c3bd8c5216cb/backports_zstd-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:10057d66fa4f0a7d3f6419ffb84b4fe61088da572e3ac4446134a1c8089e4166", size = 436155, upload-time = "2025-12-29T17:27:03.859Z" }, + { url = "https://files.pythonhosted.org/packages/f6/14/e504daea24e8916f14ecbc223c354b558d8410cfc846606668ab91d96b38/backports_zstd-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4abf29d706ba05f658ca0247eb55675bcc00e10f12bca15736e45b05f1f2d2dc", size = 362436, upload-time = "2025-12-29T17:27:05.076Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f7/06e178dbab7edb88c2872aebd68b54137e07a169eba1aeedf614014f7036/backports_zstd-1.3.0-cp313-cp313t-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:127b0d73c745b0684da3d95c31c0939570810dad8967dfe8231eea8f0e047b2f", size = 507600, upload-time = "2025-12-29T17:27:06.254Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f1/2ce499b81c4389d6fa1eeea7e76f6e0bad48effdbb239da7cbcdaaf24b76/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0205ef809fb38bb5ca7f59fa03993596f918768b9378fb7fbd8a68889a6ce028", size = 475496, upload-time = "2025-12-29T17:27:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/18/1e/c82a586f2866aabf3a601a521af3c58756d83d98b724fda200016ac5e7e2/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1c389b667b0b07915781aa28beabf2481f11a6062a1a081873c4c443b98601a7", size = 580919, upload-time = "2025-12-29T17:27:09.1Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a3/eb5d9b7c4cb69d1b8ccd011abe244ba6815693b70bed07ed4b77ddda4535/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8e7ac5ef693d49d6fb35cd7bbb98c4762cfea94a8bd2bf2ab112027004f70b11", size = 639913, upload-time = "2025-12-29T17:27:10.433Z" }, + { url = "https://files.pythonhosted.org/packages/11/2c/7296b99df79d9f31174a99c81c1964a32de8996ce2b3068f5bc66b413615/backports_zstd-1.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5d5543945aae2a76a850b23f283249424f535de6a622d6002957b7d971e6a36d", size = 494800, upload-time = "2025-12-29T17:27:11.59Z" }, + { url = "https://files.pythonhosted.org/packages/f9/fc/b8ae6e104ba72d20cd5f9dfd9baee36675e89c81d432434927967114f30f/backports_zstd-1.3.0-cp313-cp313t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e38be15ebce82737deda2c9410c1f942f1df9da74121049243a009810432db75", size = 570396, upload-time = "2025-12-29T17:27:13.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/56/60a7a9de7a5bc951ea1106358b413c95183c93480394f3abc541313c8679/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3e3f58c76f4730607a4e0130d629173aa114ae72a5c8d3d5ad94e1bf51f18d8", size = 481980, upload-time = "2025-12-29T17:27:14.317Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bb/93fc1e8e81b8ecba58b0e53a14f7b44375cf837db6354410998f0c4cb6ff/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b808bf889722d889b792f7894e19c1f904bb0e9092d8c0eb0787b939b08bad9a", size = 511358, upload-time = "2025-12-29T17:27:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/ae/0f/b165c2a6080d22306975cd86ce97270208493f31a298867e343110570370/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f7be27d56f2f715bcd252d0c65c232146d8e1e039c7e2835b8a3ad3dc88bc508", size = 585492, upload-time = "2025-12-29T17:27:16.986Z" }, + { url = "https://files.pythonhosted.org/packages/26/76/85b4bde76e982b24a7eb57a2fb9868807887bef4d2114a3654a6530a67ef/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:cbe341c7fcc723893663a37175ba859328b907a4e6d2d40a4c26629cc55efb67", size = 568309, upload-time = "2025-12-29T17:27:18.28Z" }, + { url = "https://files.pythonhosted.org/packages/83/64/9490667827a320766fb883f358a7c19171fdc04f19ade156a8c341c36967/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:b4116a9e12dfcd834dd9132cf6a94657bf0d328cba5b295f26de26ea0ae1adc8", size = 630518, upload-time = "2025-12-29T17:27:19.525Z" }, + { url = "https://files.pythonhosted.org/packages/ea/43/258587233b728bbff457bdb0c52b3e08504c485a8642b3daeb0bdd5a76bc/backports_zstd-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1049e804cc8754290b24dab383d4d6ed0b7f794ad8338813ddcb3907d15a89d0", size = 499429, upload-time = "2025-12-29T17:27:21.063Z" }, + { url = "https://files.pythonhosted.org/packages/32/04/cfab76878f360f124dbb533779e1e4603c801a0f5ada72ae5c742b7c4d7d/backports_zstd-1.3.0-cp313-cp313t-win32.whl", hash = "sha256:7d3f0f2499d2049ec53d2674c605a4b3052c217cc7ee49c05258046411685adc", size = 289389, upload-time = "2025-12-29T17:27:22.287Z" }, + { url = "https://files.pythonhosted.org/packages/cb/ff/dbcfb6c9c922ab6d98f3d321e7d0c7b34ecfa26f3ca71d930fe1ef639737/backports_zstd-1.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:eb2f8fab0b1ea05148394cb34a9e543a43477178765f2d6e7c84ed332e34935e", size = 314776, upload-time = "2025-12-29T17:27:23.458Z" }, + { url = "https://files.pythonhosted.org/packages/01/4b/82e4baae3117806639fe1c693b1f2f7e6133a7cefd1fa2e38018c8edcd68/backports_zstd-1.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c66ad9eb5bfbe28c2387b7fc58ddcdecfb336d6e4e60bcba1694a906c1f21a6c", size = 289315, upload-time = "2025-12-29T17:27:24.601Z" }, ] [[package]] @@ -257,57 +260,73 @@ dependencies = [ { name = "uvicorn" }, ] +[package.optional-dependencies] +forecast = [ + { name = "holidays" }, + { name = "lightgbm" }, + { name = "matplotlib" }, + { name = "pyarrow" }, + { name = "torch", version = "2.14.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.14.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, +] + [package.metadata] requires-dist = [ { name = "fastapi", specifier = ">=0.135.1" }, + { name = "holidays", marker = "extra == 'forecast'", specifier = ">=0.60" }, { name = "httpx", specifier = ">=0.28.1" }, + { name = "lightgbm", marker = "extra == 'forecast'", specifier = ">=4.5" }, + { name = "matplotlib", marker = "extra == 'forecast'", specifier = ">=3.9" }, { name = "numpy", specifier = ">=2.4.3" }, { name = "openelectricity", extras = ["analysis"], specifier = ">=0.9.2" }, { name = "pandas", specifier = ">=3.0.1" }, { name = "pulp", specifier = ">=3.3.0" }, + { name = "pyarrow", marker = "extra == 'forecast'", specifier = ">=18.0" }, { name = "pydantic", specifier = ">=2.12.5" }, { name = "pytest", specifier = ">=9.0.2" }, { name = "python-dotenv", specifier = ">=1.2.2" }, { name = "requests", specifier = ">=2.32.5" }, + { name = "torch", marker = "extra == 'forecast'", specifier = ">=2.5", index = "https://download.pytorch.org/whl/cpu" }, { name = "uvicorn", specifier = ">=0.42.0" }, ] +provides-extras = ["forecast"] [[package]] name = "brotli" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543 }, - { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288 }, - { url = "https://files.pythonhosted.org/packages/3d/6f/feba03130d5fceadfa3a1bb102cb14650798c848b1df2a808356f939bb16/brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d", size = 1528071 }, - { url = "https://files.pythonhosted.org/packages/2b/38/f3abb554eee089bd15471057ba85f47e53a44a462cfce265d9bf7088eb09/brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca", size = 1626913 }, - { url = "https://files.pythonhosted.org/packages/03/a7/03aa61fbc3c5cbf99b44d158665f9b0dd3d8059be16c460208d9e385c837/brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f", size = 1419762 }, - { url = "https://files.pythonhosted.org/packages/21/1b/0374a89ee27d152a5069c356c96b93afd1b94eae83f1e004b57eb6ce2f10/brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28", size = 1484494 }, - { url = "https://files.pythonhosted.org/packages/cf/57/69d4fe84a67aef4f524dcd075c6eee868d7850e85bf01d778a857d8dbe0a/brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7", size = 1593302 }, - { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913 }, - { url = "https://files.pythonhosted.org/packages/62/28/4d00cb9bd76a6357a66fcd54b4b6d70288385584063f4b07884c1e7286ac/brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161", size = 334362 }, - { url = "https://files.pythonhosted.org/packages/1c/4e/bc1dcac9498859d5e353c9b153627a3752868a9d5f05ce8dedd81a2354ab/brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44", size = 369115 }, - { url = "https://files.pythonhosted.org/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab", size = 861523 }, - { url = "https://files.pythonhosted.org/packages/91/9f/9cc5bd03ee68a85dc4bc89114f7067c056a3c14b3d95f171918c088bf88d/brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c", size = 444289 }, - { url = "https://files.pythonhosted.org/packages/2e/b6/fe84227c56a865d16a6614e2c4722864b380cb14b13f3e6bef441e73a85a/brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f", size = 1528076 }, - { url = "https://files.pythonhosted.org/packages/55/de/de4ae0aaca06c790371cf6e7ee93a024f6b4bb0568727da8c3de112e726c/brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6", size = 1626880 }, - { url = "https://files.pythonhosted.org/packages/5f/16/a1b22cbea436642e071adcaf8d4b350a2ad02f5e0ad0da879a1be16188a0/brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c", size = 1419737 }, - { url = "https://files.pythonhosted.org/packages/46/63/c968a97cbb3bdbf7f974ef5a6ab467a2879b82afbc5ffb65b8acbb744f95/brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48", size = 1484440 }, - { url = "https://files.pythonhosted.org/packages/06/9d/102c67ea5c9fc171f423e8399e585dabea29b5bc79b05572891e70013cdd/brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18", size = 1593313 }, - { url = "https://files.pythonhosted.org/packages/9e/4a/9526d14fa6b87bc827ba1755a8440e214ff90de03095cacd78a64abe2b7d/brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5", size = 1487945 }, - { url = "https://files.pythonhosted.org/packages/5b/e8/3fe1ffed70cbef83c5236166acaed7bb9c766509b157854c80e2f766b38c/brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a", size = 334368 }, - { url = "https://files.pythonhosted.org/packages/ff/91/e739587be970a113b37b821eae8097aac5a48e5f0eca438c22e4c7dd8648/brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8", size = 369116 }, - { url = "https://files.pythonhosted.org/packages/17/e1/298c2ddf786bb7347a1cd71d63a347a79e5712a7c0cba9e3c3458ebd976f/brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21", size = 863080 }, - { url = "https://files.pythonhosted.org/packages/84/0c/aac98e286ba66868b2b3b50338ffbd85a35c7122e9531a73a37a29763d38/brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac", size = 445453 }, - { url = "https://files.pythonhosted.org/packages/ec/f1/0ca1f3f99ae300372635ab3fe2f7a79fa335fee3d874fa7f9e68575e0e62/brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e", size = 1528168 }, - { url = "https://files.pythonhosted.org/packages/d6/a6/2ebfc8f766d46df8d3e65b880a2e220732395e6d7dc312c1e1244b0f074a/brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7", size = 1627098 }, - { url = "https://files.pythonhosted.org/packages/f3/2f/0976d5b097ff8a22163b10617f76b2557f15f0f39d6a0fe1f02b1a53e92b/brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63", size = 1419861 }, - { url = "https://files.pythonhosted.org/packages/9c/97/d76df7176a2ce7616ff94c1fb72d307c9a30d2189fe877f3dd99af00ea5a/brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b", size = 1484594 }, - { url = "https://files.pythonhosted.org/packages/d3/93/14cf0b1216f43df5609f5b272050b0abd219e0b54ea80b47cef9867b45e7/brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361", size = 1593455 }, - { url = "https://files.pythonhosted.org/packages/b3/73/3183c9e41ca755713bdf2cc1d0810df742c09484e2e1ddd693bee53877c1/brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888", size = 1488164 }, - { url = "https://files.pythonhosted.org/packages/64/6a/0c78d8f3a582859236482fd9fa86a65a60328a00983006bcf6d83b7b2253/brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d", size = 339280 }, - { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639 }, +sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543, upload-time = "2025-11-05T18:38:24.183Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288, upload-time = "2025-11-05T18:38:25.139Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/feba03130d5fceadfa3a1bb102cb14650798c848b1df2a808356f939bb16/brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d", size = 1528071, upload-time = "2025-11-05T18:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/2b/38/f3abb554eee089bd15471057ba85f47e53a44a462cfce265d9bf7088eb09/brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca", size = 1626913, upload-time = "2025-11-05T18:38:27.284Z" }, + { url = "https://files.pythonhosted.org/packages/03/a7/03aa61fbc3c5cbf99b44d158665f9b0dd3d8059be16c460208d9e385c837/brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f", size = 1419762, upload-time = "2025-11-05T18:38:28.295Z" }, + { url = "https://files.pythonhosted.org/packages/21/1b/0374a89ee27d152a5069c356c96b93afd1b94eae83f1e004b57eb6ce2f10/brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28", size = 1484494, upload-time = "2025-11-05T18:38:29.29Z" }, + { url = "https://files.pythonhosted.org/packages/cf/57/69d4fe84a67aef4f524dcd075c6eee868d7850e85bf01d778a857d8dbe0a/brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7", size = 1593302, upload-time = "2025-11-05T18:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913, upload-time = "2025-11-05T18:38:31.618Z" }, + { url = "https://files.pythonhosted.org/packages/62/28/4d00cb9bd76a6357a66fcd54b4b6d70288385584063f4b07884c1e7286ac/brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161", size = 334362, upload-time = "2025-11-05T18:38:32.939Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4e/bc1dcac9498859d5e353c9b153627a3752868a9d5f05ce8dedd81a2354ab/brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44", size = 369115, upload-time = "2025-11-05T18:38:33.765Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab", size = 861523, upload-time = "2025-11-05T18:38:34.67Z" }, + { url = "https://files.pythonhosted.org/packages/91/9f/9cc5bd03ee68a85dc4bc89114f7067c056a3c14b3d95f171918c088bf88d/brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c", size = 444289, upload-time = "2025-11-05T18:38:35.6Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b6/fe84227c56a865d16a6614e2c4722864b380cb14b13f3e6bef441e73a85a/brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f", size = 1528076, upload-time = "2025-11-05T18:38:36.639Z" }, + { url = "https://files.pythonhosted.org/packages/55/de/de4ae0aaca06c790371cf6e7ee93a024f6b4bb0568727da8c3de112e726c/brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6", size = 1626880, upload-time = "2025-11-05T18:38:37.623Z" }, + { url = "https://files.pythonhosted.org/packages/5f/16/a1b22cbea436642e071adcaf8d4b350a2ad02f5e0ad0da879a1be16188a0/brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c", size = 1419737, upload-time = "2025-11-05T18:38:38.729Z" }, + { url = "https://files.pythonhosted.org/packages/46/63/c968a97cbb3bdbf7f974ef5a6ab467a2879b82afbc5ffb65b8acbb744f95/brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48", size = 1484440, upload-time = "2025-11-05T18:38:39.916Z" }, + { url = "https://files.pythonhosted.org/packages/06/9d/102c67ea5c9fc171f423e8399e585dabea29b5bc79b05572891e70013cdd/brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18", size = 1593313, upload-time = "2025-11-05T18:38:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4a/9526d14fa6b87bc827ba1755a8440e214ff90de03095cacd78a64abe2b7d/brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5", size = 1487945, upload-time = "2025-11-05T18:38:42.277Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e8/3fe1ffed70cbef83c5236166acaed7bb9c766509b157854c80e2f766b38c/brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a", size = 334368, upload-time = "2025-11-05T18:38:43.345Z" }, + { url = "https://files.pythonhosted.org/packages/ff/91/e739587be970a113b37b821eae8097aac5a48e5f0eca438c22e4c7dd8648/brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8", size = 369116, upload-time = "2025-11-05T18:38:44.609Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/298c2ddf786bb7347a1cd71d63a347a79e5712a7c0cba9e3c3458ebd976f/brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21", size = 863080, upload-time = "2025-11-05T18:38:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/0c/aac98e286ba66868b2b3b50338ffbd85a35c7122e9531a73a37a29763d38/brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac", size = 445453, upload-time = "2025-11-05T18:38:46.433Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f1/0ca1f3f99ae300372635ab3fe2f7a79fa335fee3d874fa7f9e68575e0e62/brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e", size = 1528168, upload-time = "2025-11-05T18:38:47.371Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a6/2ebfc8f766d46df8d3e65b880a2e220732395e6d7dc312c1e1244b0f074a/brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7", size = 1627098, upload-time = "2025-11-05T18:38:48.385Z" }, + { url = "https://files.pythonhosted.org/packages/f3/2f/0976d5b097ff8a22163b10617f76b2557f15f0f39d6a0fe1f02b1a53e92b/brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63", size = 1419861, upload-time = "2025-11-05T18:38:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/d76df7176a2ce7616ff94c1fb72d307c9a30d2189fe877f3dd99af00ea5a/brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b", size = 1484594, upload-time = "2025-11-05T18:38:50.655Z" }, + { url = "https://files.pythonhosted.org/packages/d3/93/14cf0b1216f43df5609f5b272050b0abd219e0b54ea80b47cef9867b45e7/brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361", size = 1593455, upload-time = "2025-11-05T18:38:51.624Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/3183c9e41ca755713bdf2cc1d0810df742c09484e2e1ddd693bee53877c1/brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888", size = 1488164, upload-time = "2025-11-05T18:38:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/64/6a/0c78d8f3a582859236482fd9fa86a65a60328a00983006bcf6d83b7b2253/brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d", size = 339280, upload-time = "2025-11-05T18:38:54.02Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" }, ] [[package]] @@ -317,27 +336,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/b6/017dc5f852ed9b8735af77774509271acbf1de02d238377667145fcee01d/brotlicffi-1.2.0.1.tar.gz", hash = "sha256:c20d5c596278307ad06414a6d95a892377ea274a5c6b790c2548c009385d621c", size = 478156 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/b6/017dc5f852ed9b8735af77774509271acbf1de02d238377667145fcee01d/brotlicffi-1.2.0.1.tar.gz", hash = "sha256:c20d5c596278307ad06414a6d95a892377ea274a5c6b790c2548c009385d621c", size = 478156, upload-time = "2026-03-05T19:54:11.547Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/f9/dfa56316837fa798eac19358351e974de8e1e2ca9475af4cb90293cd6576/brotlicffi-1.2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c85e65913cf2b79c57a3fdd05b98d9731d9255dc0cb696b09376cc091b9cddd", size = 433046 }, - { url = "https://files.pythonhosted.org/packages/4a/f5/f8f492158c76b0d940388801f04f747028971ad5774287bded5f1e53f08d/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:535f2d05d0273408abc13fc0eebb467afac17b0ad85090c8913690d40207dac5", size = 1541126 }, - { url = "https://files.pythonhosted.org/packages/3b/e1/ff87af10ac419600c63e9287a0649c673673ae6b4f2bcf48e96cb2f89f60/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce17eb798ca59ecec67a9bb3fd7a4304e120d1cd02953ce522d959b9a84d58ac", size = 1541983 }, - { url = "https://files.pythonhosted.org/packages/47/c0/80ecd9bd45776109fab14040e478bf63e456967c9ddee2353d8330ed8de1/brotlicffi-1.2.0.1-cp314-cp314t-win32.whl", hash = "sha256:3c9544f83cb715d95d7eab3af4adbbef8b2093ad6382288a83b3a25feb1a57ec", size = 349047 }, - { url = "https://files.pythonhosted.org/packages/ab/98/13e5b250236a281b6cd9e92a01ee1ae231029fa78faee932ef3766e1cb24/brotlicffi-1.2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:625f8115d32ae9c0740d01ea51518437c3fbaa3e78d41cb18459f6f7ac326000", size = 385652 }, - { url = "https://files.pythonhosted.org/packages/9a/9f/b98dcd4af47994cee97aebac866996a006a2e5fc1fd1e2b82a8ad95cf09c/brotlicffi-1.2.0.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:91ba5f0ccc040f6ff8f7efaf839f797723d03ed46acb8ae9408f99ffd2572cf4", size = 432608 }, - { url = "https://files.pythonhosted.org/packages/b1/7a/ac4ee56595a061e3718a6d1ea7e921f4df156894acffb28ed88a1fd52022/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9a670c6811af30a4bd42d7116dc5895d3b41beaa8ed8a89050447a0181f5ce", size = 1534257 }, - { url = "https://files.pythonhosted.org/packages/99/39/e7410db7f6f56de57744ea52a115084ceb2735f4d44973f349bb92136586/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3314a3476f59e5443f9f72a6dff16edc0c3463c9b318feaef04ae3e4683f5a", size = 1536838 }, - { url = "https://files.pythonhosted.org/packages/a6/75/6e7977d1935fc3fbb201cbd619be8f2c7aea25d40a096967132854b34708/brotlicffi-1.2.0.1-cp38-abi3-win32.whl", hash = "sha256:82ea52e2b5d3145b6c406ebd3efb0d55db718b7ad996bd70c62cec0439de1187", size = 343337 }, - { url = "https://files.pythonhosted.org/packages/d8/ef/e7e485ce5e4ba3843a0a92feb767c7b6098fd6e65ce752918074d175ae71/brotlicffi-1.2.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:da2e82a08e7778b8bc539d27ca03cdd684113e81394bfaaad8d0dfc6a17ddede", size = 379026 }, + { url = "https://files.pythonhosted.org/packages/ef/f9/dfa56316837fa798eac19358351e974de8e1e2ca9475af4cb90293cd6576/brotlicffi-1.2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c85e65913cf2b79c57a3fdd05b98d9731d9255dc0cb696b09376cc091b9cddd", size = 433046, upload-time = "2026-03-05T19:53:46.209Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f5/f8f492158c76b0d940388801f04f747028971ad5774287bded5f1e53f08d/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:535f2d05d0273408abc13fc0eebb467afac17b0ad85090c8913690d40207dac5", size = 1541126, upload-time = "2026-03-05T19:53:48.248Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e1/ff87af10ac419600c63e9287a0649c673673ae6b4f2bcf48e96cb2f89f60/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce17eb798ca59ecec67a9bb3fd7a4304e120d1cd02953ce522d959b9a84d58ac", size = 1541983, upload-time = "2026-03-05T19:53:50.317Z" }, + { url = "https://files.pythonhosted.org/packages/47/c0/80ecd9bd45776109fab14040e478bf63e456967c9ddee2353d8330ed8de1/brotlicffi-1.2.0.1-cp314-cp314t-win32.whl", hash = "sha256:3c9544f83cb715d95d7eab3af4adbbef8b2093ad6382288a83b3a25feb1a57ec", size = 349047, upload-time = "2026-03-05T19:53:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/ab/98/13e5b250236a281b6cd9e92a01ee1ae231029fa78faee932ef3766e1cb24/brotlicffi-1.2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:625f8115d32ae9c0740d01ea51518437c3fbaa3e78d41cb18459f6f7ac326000", size = 385652, upload-time = "2026-03-05T19:53:53.892Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9f/b98dcd4af47994cee97aebac866996a006a2e5fc1fd1e2b82a8ad95cf09c/brotlicffi-1.2.0.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:91ba5f0ccc040f6ff8f7efaf839f797723d03ed46acb8ae9408f99ffd2572cf4", size = 432608, upload-time = "2026-03-05T19:53:56.736Z" }, + { url = "https://files.pythonhosted.org/packages/b1/7a/ac4ee56595a061e3718a6d1ea7e921f4df156894acffb28ed88a1fd52022/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9a670c6811af30a4bd42d7116dc5895d3b41beaa8ed8a89050447a0181f5ce", size = 1534257, upload-time = "2026-03-05T19:53:58.667Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/e7410db7f6f56de57744ea52a115084ceb2735f4d44973f349bb92136586/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3314a3476f59e5443f9f72a6dff16edc0c3463c9b318feaef04ae3e4683f5a", size = 1536838, upload-time = "2026-03-05T19:54:00.705Z" }, + { url = "https://files.pythonhosted.org/packages/a6/75/6e7977d1935fc3fbb201cbd619be8f2c7aea25d40a096967132854b34708/brotlicffi-1.2.0.1-cp38-abi3-win32.whl", hash = "sha256:82ea52e2b5d3145b6c406ebd3efb0d55db718b7ad996bd70c62cec0439de1187", size = 343337, upload-time = "2026-03-05T19:54:02.446Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ef/e7e485ce5e4ba3843a0a92feb767c7b6098fd6e65ce752918074d175ae71/brotlicffi-1.2.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:da2e82a08e7778b8bc539d27ca03cdd684113e81394bfaaad8d0dfc6a17ddede", size = 379026, upload-time = "2026-03-05T19:54:04.322Z" }, ] [[package]] name = "certifi" version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029 } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684 }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] @@ -347,127 +366,127 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271 }, - { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048 }, - { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529 }, - { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097 }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983 }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519 }, - { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572 }, - { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963 }, - { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361 }, - { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932 }, - { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557 }, - { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762 }, - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230 }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043 }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446 }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101 }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948 }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422 }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499 }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928 }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302 }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909 }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402 }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780 }, - { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320 }, - { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487 }, - { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049 }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793 }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300 }, - { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244 }, - { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828 }, - { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926 }, - { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328 }, - { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650 }, - { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687 }, - { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773 }, - { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013 }, - { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593 }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354 }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480 }, - { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584 }, - { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443 }, - { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437 }, - { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487 }, - { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726 }, - { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195 }, +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/60/e3bec1881450851b087e301bedc3daa9377a4d45f1c26aa90b0b235e38aa/charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6", size = 143363 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/62/c0815c992c9545347aeea7859b50dc9044d147e2e7278329c6e02ac9a616/charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab", size = 295154 }, - { url = "https://files.pythonhosted.org/packages/a8/37/bdca6613c2e3c58c7421891d80cc3efa1d32e882f7c4a7ee6039c3fc951a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21", size = 199191 }, - { url = "https://files.pythonhosted.org/packages/6c/92/9934d1bbd69f7f398b38c5dae1cbf9cc672e7c34a4adf7b17c0a9c17d15d/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2", size = 218674 }, - { url = "https://files.pythonhosted.org/packages/af/90/25f6ab406659286be929fd89ab0e78e38aa183fc374e03aa3c12d730af8a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff", size = 215259 }, - { url = "https://files.pythonhosted.org/packages/4e/ef/79a463eb0fff7f96afa04c1d4c51f8fc85426f918db467854bfb6a569ce3/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5", size = 207276 }, - { url = "https://files.pythonhosted.org/packages/f7/72/d0426afec4b71dc159fa6b4e68f868cd5a3ecd918fec5813a15d292a7d10/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0", size = 195161 }, - { url = "https://files.pythonhosted.org/packages/bf/18/c82b06a68bfcb6ce55e508225d210c7e6a4ea122bfc0748892f3dc4e8e11/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a", size = 203452 }, - { url = "https://files.pythonhosted.org/packages/44/d6/0c25979b92f8adafdbb946160348d8d44aa60ce99afdc27df524379875cb/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2", size = 202272 }, - { url = "https://files.pythonhosted.org/packages/2e/3d/7fea3e8fe84136bebbac715dd1221cc25c173c57a699c030ab9b8900cbb7/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5", size = 195622 }, - { url = "https://files.pythonhosted.org/packages/57/8a/d6f7fd5cb96c58ef2f681424fbca01264461336d2a7fc875e4446b1f1346/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6", size = 220056 }, - { url = "https://files.pythonhosted.org/packages/16/50/478cdda782c8c9c3fb5da3cc72dd7f331f031e7f1363a893cdd6ca0f8de0/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d", size = 203751 }, - { url = "https://files.pythonhosted.org/packages/75/fc/cc2fcac943939c8e4d8791abfa139f685e5150cae9f94b60f12520feaa9b/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2", size = 216563 }, - { url = "https://files.pythonhosted.org/packages/a8/b7/a4add1d9a5f68f3d037261aecca83abdb0ab15960a3591d340e829b37298/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923", size = 209265 }, - { url = "https://files.pythonhosted.org/packages/6c/18/c094561b5d64a24277707698e54b7f67bd17a4f857bbfbb1072bba07c8bf/charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4", size = 144229 }, - { url = "https://files.pythonhosted.org/packages/ab/20/0567efb3a8fd481b8f34f739ebddc098ed062a59fed41a8d193a61939e8f/charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb", size = 154277 }, - { url = "https://files.pythonhosted.org/packages/15/57/28d79b44b51933119e21f65479d0864a8d5893e494cf5daab15df0247c17/charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4", size = 142817 }, - { url = "https://files.pythonhosted.org/packages/1e/1d/4fdabeef4e231153b6ed7567602f3b68265ec4e5b76d6024cf647d43d981/charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f", size = 294823 }, - { url = "https://files.pythonhosted.org/packages/47/7b/20e809b89c69d37be748d98e84dce6820bf663cf19cf6b942c951a3e8f41/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843", size = 198527 }, - { url = "https://files.pythonhosted.org/packages/37/a6/4f8d27527d59c039dce6f7622593cdcd3d70a8504d87d09eb11e9fdc6062/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf", size = 218388 }, - { url = "https://files.pythonhosted.org/packages/f6/9b/4770ccb3e491a9bacf1c46cc8b812214fe367c86a96353ccc6daf87b01ec/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8", size = 214563 }, - { url = "https://files.pythonhosted.org/packages/2b/58/a199d245894b12db0b957d627516c78e055adc3a0d978bc7f65ddaf7c399/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9", size = 206587 }, - { url = "https://files.pythonhosted.org/packages/7e/70/3def227f1ec56f5c69dfc8392b8bd63b11a18ca8178d9211d7cc5e5e4f27/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88", size = 194724 }, - { url = "https://files.pythonhosted.org/packages/58/ab/9318352e220c05efd31c2779a23b50969dc94b985a2efa643ed9077bfca5/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84", size = 202956 }, - { url = "https://files.pythonhosted.org/packages/75/13/f3550a3ac25b70f87ac98c40d3199a8503676c2f1620efbf8d42095cfc40/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd", size = 201923 }, - { url = "https://files.pythonhosted.org/packages/1b/db/c5c643b912740b45e8eec21de1bbab8e7fc085944d37e1e709d3dcd9d72f/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c", size = 195366 }, - { url = "https://files.pythonhosted.org/packages/5a/67/3b1c62744f9b2448443e0eb160d8b001c849ec3fef591e012eda6484787c/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194", size = 219752 }, - { url = "https://files.pythonhosted.org/packages/f6/98/32ffbaf7f0366ffb0445930b87d103f6b406bc2c271563644bde8a2b1093/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc", size = 203296 }, - { url = "https://files.pythonhosted.org/packages/41/12/5d308c1bbe60cabb0c5ef511574a647067e2a1f631bc8634fcafaccd8293/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f", size = 215956 }, - { url = "https://files.pythonhosted.org/packages/53/e9/5f85f6c5e20669dbe56b165c67b0260547dea97dba7e187938833d791687/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2", size = 208652 }, - { url = "https://files.pythonhosted.org/packages/f1/11/897052ea6af56df3eef3ca94edafee410ca699ca0c7b87960ad19932c55e/charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d", size = 143940 }, - { url = "https://files.pythonhosted.org/packages/a1/5c/724b6b363603e419829f561c854b87ed7c7e31231a7908708ac086cdf3e2/charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389", size = 154101 }, - { url = "https://files.pythonhosted.org/packages/01/a5/7abf15b4c0968e47020f9ca0935fb3274deb87cb288cd187cad92e8cdffd/charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f", size = 143109 }, - { url = "https://files.pythonhosted.org/packages/25/6f/ffe1e1259f384594063ea1869bfb6be5cdb8bc81020fc36c3636bc8302a1/charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8", size = 294458 }, - { url = "https://files.pythonhosted.org/packages/56/60/09bb6c13a8c1016c2ed5c6a6488e4ffef506461aa5161662bd7636936fb1/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421", size = 199277 }, - { url = "https://files.pythonhosted.org/packages/00/50/dcfbb72a5138bbefdc3332e8d81a23494bf67998b4b100703fd15fa52d81/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2", size = 218758 }, - { url = "https://files.pythonhosted.org/packages/03/b3/d79a9a191bb75f5aa81f3aaaa387ef29ce7cb7a9e5074ba8ea095cc073c2/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30", size = 215299 }, - { url = "https://files.pythonhosted.org/packages/76/7e/bc8911719f7084f72fd545f647601ea3532363927f807d296a8c88a62c0d/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db", size = 206811 }, - { url = "https://files.pythonhosted.org/packages/e2/40/c430b969d41dda0c465aa36cc7c2c068afb67177bef50905ac371b28ccc7/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8", size = 193706 }, - { url = "https://files.pythonhosted.org/packages/48/15/e35e0590af254f7df984de1323640ef375df5761f615b6225ba8deb9799a/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815", size = 202706 }, - { url = "https://files.pythonhosted.org/packages/5e/bd/f736f7b9cc5e93a18b794a50346bb16fbfd6b37f99e8f306f7951d27c17c/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a", size = 202497 }, - { url = "https://files.pythonhosted.org/packages/9d/ba/2cc9e3e7dfdf7760a6ed8da7446d22536f3d0ce114ac63dee2a5a3599e62/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43", size = 193511 }, - { url = "https://files.pythonhosted.org/packages/9e/cb/5be49b5f776e5613be07298c80e1b02a2d900f7a7de807230595c85a8b2e/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0", size = 220133 }, - { url = "https://files.pythonhosted.org/packages/83/43/99f1b5dad345accb322c80c7821071554f791a95ee50c1c90041c157ae99/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1", size = 203035 }, - { url = "https://files.pythonhosted.org/packages/87/9a/62c2cb6a531483b55dddff1a68b3d891a8b498f3ca555fbcf2978e804d9d/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f", size = 216321 }, - { url = "https://files.pythonhosted.org/packages/6e/79/94a010ff81e3aec7c293eb82c28f930918e517bc144c9906a060844462eb/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815", size = 208973 }, - { url = "https://files.pythonhosted.org/packages/2a/57/4ecff6d4ec8585342f0c71bc03efaa99cb7468f7c91a57b105bcd561cea8/charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d", size = 144610 }, - { url = "https://files.pythonhosted.org/packages/80/94/8434a02d9d7f168c25767c64671fead8d599744a05d6a6c877144c754246/charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f", size = 154962 }, - { url = "https://files.pythonhosted.org/packages/46/4c/48f2cdbfd923026503dfd67ccea45c94fd8fe988d9056b468579c66ed62b/charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e", size = 143595 }, - { url = "https://files.pythonhosted.org/packages/31/93/8878be7569f87b14f1d52032946131bcb6ebbd8af3e20446bc04053dc3f1/charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866", size = 314828 }, - { url = "https://files.pythonhosted.org/packages/06/b6/fae511ca98aac69ecc35cde828b0a3d146325dd03d99655ad38fc2cc3293/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc", size = 208138 }, - { url = "https://files.pythonhosted.org/packages/54/57/64caf6e1bf07274a1e0b7c160a55ee9e8c9ec32c46846ce59b9c333f7008/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e", size = 224679 }, - { url = "https://files.pythonhosted.org/packages/aa/cb/9ff5a25b9273ef160861b41f6937f86fae18b0792fe0a8e75e06acb08f1d/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077", size = 223475 }, - { url = "https://files.pythonhosted.org/packages/fc/97/440635fc093b8d7347502a377031f9605a1039c958f3cd18dcacffb37743/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f", size = 215230 }, - { url = "https://files.pythonhosted.org/packages/cd/24/afff630feb571a13f07c8539fbb502d2ab494019492aaffc78ef41f1d1d0/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e", size = 199045 }, - { url = "https://files.pythonhosted.org/packages/e5/17/d1399ecdaf7e0498c327433e7eefdd862b41236a7e484355b8e0e5ebd64b/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484", size = 211658 }, - { url = "https://files.pythonhosted.org/packages/b5/38/16baa0affb957b3d880e5ac2144caf3f9d7de7bc4a91842e447fbb5e8b67/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7", size = 210769 }, - { url = "https://files.pythonhosted.org/packages/05/34/c531bc6ac4c21da9ddfddb3107be2287188b3ea4b53b70fc58f2a77ac8d8/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff", size = 201328 }, - { url = "https://files.pythonhosted.org/packages/fa/73/a5a1e9ca5f234519c1953608a03fe109c306b97fdfb25f09182babad51a7/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e", size = 225302 }, - { url = "https://files.pythonhosted.org/packages/ba/f6/cd782923d112d296294dea4bcc7af5a7ae0f86ab79f8fefbda5526b6cfc0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659", size = 211127 }, - { url = "https://files.pythonhosted.org/packages/0e/c5/0b6898950627af7d6103a449b22320372c24c6feda91aa24e201a478d161/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602", size = 222840 }, - { url = "https://files.pythonhosted.org/packages/7d/25/c4bba773bef442cbdc06111d40daa3de5050a676fa26e85090fc54dd12f0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407", size = 216890 }, - { url = "https://files.pythonhosted.org/packages/35/1a/05dacadb0978da72ee287b0143097db12f2e7e8d3ffc4647da07a383b0b7/charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579", size = 155379 }, - { url = "https://files.pythonhosted.org/packages/5d/7a/d269d834cb3a76291651256f3b9a5945e81d0a49ab9f4a498964e83c0416/charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4", size = 169043 }, - { url = "https://files.pythonhosted.org/packages/23/06/28b29fba521a37a8932c6a84192175c34d49f84a6d4773fa63d05f9aff22/charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c", size = 148523 }, - { url = "https://files.pythonhosted.org/packages/2a/68/687187c7e26cb24ccbd88e5069f5ef00eba804d36dde11d99aad0838ab45/charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69", size = 61455 }, +sdist = { url = "https://files.pythonhosted.org/packages/7b/60/e3bec1881450851b087e301bedc3daa9377a4d45f1c26aa90b0b235e38aa/charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6", size = 143363, upload-time = "2026-03-15T18:53:25.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/62/c0815c992c9545347aeea7859b50dc9044d147e2e7278329c6e02ac9a616/charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab", size = 295154, upload-time = "2026-03-15T18:50:50.88Z" }, + { url = "https://files.pythonhosted.org/packages/a8/37/bdca6613c2e3c58c7421891d80cc3efa1d32e882f7c4a7ee6039c3fc951a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21", size = 199191, upload-time = "2026-03-15T18:50:52.658Z" }, + { url = "https://files.pythonhosted.org/packages/6c/92/9934d1bbd69f7f398b38c5dae1cbf9cc672e7c34a4adf7b17c0a9c17d15d/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2", size = 218674, upload-time = "2026-03-15T18:50:54.102Z" }, + { url = "https://files.pythonhosted.org/packages/af/90/25f6ab406659286be929fd89ab0e78e38aa183fc374e03aa3c12d730af8a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff", size = 215259, upload-time = "2026-03-15T18:50:55.616Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ef/79a463eb0fff7f96afa04c1d4c51f8fc85426f918db467854bfb6a569ce3/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5", size = 207276, upload-time = "2026-03-15T18:50:57.054Z" }, + { url = "https://files.pythonhosted.org/packages/f7/72/d0426afec4b71dc159fa6b4e68f868cd5a3ecd918fec5813a15d292a7d10/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0", size = 195161, upload-time = "2026-03-15T18:50:58.686Z" }, + { url = "https://files.pythonhosted.org/packages/bf/18/c82b06a68bfcb6ce55e508225d210c7e6a4ea122bfc0748892f3dc4e8e11/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a", size = 203452, upload-time = "2026-03-15T18:51:00.196Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/0c25979b92f8adafdbb946160348d8d44aa60ce99afdc27df524379875cb/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2", size = 202272, upload-time = "2026-03-15T18:51:01.703Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3d/7fea3e8fe84136bebbac715dd1221cc25c173c57a699c030ab9b8900cbb7/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5", size = 195622, upload-time = "2026-03-15T18:51:03.526Z" }, + { url = "https://files.pythonhosted.org/packages/57/8a/d6f7fd5cb96c58ef2f681424fbca01264461336d2a7fc875e4446b1f1346/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6", size = 220056, upload-time = "2026-03-15T18:51:05.269Z" }, + { url = "https://files.pythonhosted.org/packages/16/50/478cdda782c8c9c3fb5da3cc72dd7f331f031e7f1363a893cdd6ca0f8de0/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d", size = 203751, upload-time = "2026-03-15T18:51:06.858Z" }, + { url = "https://files.pythonhosted.org/packages/75/fc/cc2fcac943939c8e4d8791abfa139f685e5150cae9f94b60f12520feaa9b/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2", size = 216563, upload-time = "2026-03-15T18:51:08.564Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b7/a4add1d9a5f68f3d037261aecca83abdb0ab15960a3591d340e829b37298/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923", size = 209265, upload-time = "2026-03-15T18:51:10.312Z" }, + { url = "https://files.pythonhosted.org/packages/6c/18/c094561b5d64a24277707698e54b7f67bd17a4f857bbfbb1072bba07c8bf/charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4", size = 144229, upload-time = "2026-03-15T18:51:11.694Z" }, + { url = "https://files.pythonhosted.org/packages/ab/20/0567efb3a8fd481b8f34f739ebddc098ed062a59fed41a8d193a61939e8f/charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb", size = 154277, upload-time = "2026-03-15T18:51:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/15/57/28d79b44b51933119e21f65479d0864a8d5893e494cf5daab15df0247c17/charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4", size = 142817, upload-time = "2026-03-15T18:51:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/1e/1d/4fdabeef4e231153b6ed7567602f3b68265ec4e5b76d6024cf647d43d981/charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f", size = 294823, upload-time = "2026-03-15T18:51:15.755Z" }, + { url = "https://files.pythonhosted.org/packages/47/7b/20e809b89c69d37be748d98e84dce6820bf663cf19cf6b942c951a3e8f41/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843", size = 198527, upload-time = "2026-03-15T18:51:17.177Z" }, + { url = "https://files.pythonhosted.org/packages/37/a6/4f8d27527d59c039dce6f7622593cdcd3d70a8504d87d09eb11e9fdc6062/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf", size = 218388, upload-time = "2026-03-15T18:51:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/f6/9b/4770ccb3e491a9bacf1c46cc8b812214fe367c86a96353ccc6daf87b01ec/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8", size = 214563, upload-time = "2026-03-15T18:51:20.374Z" }, + { url = "https://files.pythonhosted.org/packages/2b/58/a199d245894b12db0b957d627516c78e055adc3a0d978bc7f65ddaf7c399/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9", size = 206587, upload-time = "2026-03-15T18:51:21.807Z" }, + { url = "https://files.pythonhosted.org/packages/7e/70/3def227f1ec56f5c69dfc8392b8bd63b11a18ca8178d9211d7cc5e5e4f27/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88", size = 194724, upload-time = "2026-03-15T18:51:23.508Z" }, + { url = "https://files.pythonhosted.org/packages/58/ab/9318352e220c05efd31c2779a23b50969dc94b985a2efa643ed9077bfca5/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84", size = 202956, upload-time = "2026-03-15T18:51:25.239Z" }, + { url = "https://files.pythonhosted.org/packages/75/13/f3550a3ac25b70f87ac98c40d3199a8503676c2f1620efbf8d42095cfc40/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd", size = 201923, upload-time = "2026-03-15T18:51:26.682Z" }, + { url = "https://files.pythonhosted.org/packages/1b/db/c5c643b912740b45e8eec21de1bbab8e7fc085944d37e1e709d3dcd9d72f/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c", size = 195366, upload-time = "2026-03-15T18:51:28.129Z" }, + { url = "https://files.pythonhosted.org/packages/5a/67/3b1c62744f9b2448443e0eb160d8b001c849ec3fef591e012eda6484787c/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194", size = 219752, upload-time = "2026-03-15T18:51:29.556Z" }, + { url = "https://files.pythonhosted.org/packages/f6/98/32ffbaf7f0366ffb0445930b87d103f6b406bc2c271563644bde8a2b1093/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc", size = 203296, upload-time = "2026-03-15T18:51:30.921Z" }, + { url = "https://files.pythonhosted.org/packages/41/12/5d308c1bbe60cabb0c5ef511574a647067e2a1f631bc8634fcafaccd8293/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f", size = 215956, upload-time = "2026-03-15T18:51:32.399Z" }, + { url = "https://files.pythonhosted.org/packages/53/e9/5f85f6c5e20669dbe56b165c67b0260547dea97dba7e187938833d791687/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2", size = 208652, upload-time = "2026-03-15T18:51:34.214Z" }, + { url = "https://files.pythonhosted.org/packages/f1/11/897052ea6af56df3eef3ca94edafee410ca699ca0c7b87960ad19932c55e/charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d", size = 143940, upload-time = "2026-03-15T18:51:36.15Z" }, + { url = "https://files.pythonhosted.org/packages/a1/5c/724b6b363603e419829f561c854b87ed7c7e31231a7908708ac086cdf3e2/charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389", size = 154101, upload-time = "2026-03-15T18:51:37.876Z" }, + { url = "https://files.pythonhosted.org/packages/01/a5/7abf15b4c0968e47020f9ca0935fb3274deb87cb288cd187cad92e8cdffd/charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f", size = 143109, upload-time = "2026-03-15T18:51:39.565Z" }, + { url = "https://files.pythonhosted.org/packages/25/6f/ffe1e1259f384594063ea1869bfb6be5cdb8bc81020fc36c3636bc8302a1/charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8", size = 294458, upload-time = "2026-03-15T18:51:41.134Z" }, + { url = "https://files.pythonhosted.org/packages/56/60/09bb6c13a8c1016c2ed5c6a6488e4ffef506461aa5161662bd7636936fb1/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421", size = 199277, upload-time = "2026-03-15T18:51:42.953Z" }, + { url = "https://files.pythonhosted.org/packages/00/50/dcfbb72a5138bbefdc3332e8d81a23494bf67998b4b100703fd15fa52d81/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2", size = 218758, upload-time = "2026-03-15T18:51:44.339Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/d79a9a191bb75f5aa81f3aaaa387ef29ce7cb7a9e5074ba8ea095cc073c2/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30", size = 215299, upload-time = "2026-03-15T18:51:45.871Z" }, + { url = "https://files.pythonhosted.org/packages/76/7e/bc8911719f7084f72fd545f647601ea3532363927f807d296a8c88a62c0d/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db", size = 206811, upload-time = "2026-03-15T18:51:47.308Z" }, + { url = "https://files.pythonhosted.org/packages/e2/40/c430b969d41dda0c465aa36cc7c2c068afb67177bef50905ac371b28ccc7/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8", size = 193706, upload-time = "2026-03-15T18:51:48.849Z" }, + { url = "https://files.pythonhosted.org/packages/48/15/e35e0590af254f7df984de1323640ef375df5761f615b6225ba8deb9799a/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815", size = 202706, upload-time = "2026-03-15T18:51:50.257Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bd/f736f7b9cc5e93a18b794a50346bb16fbfd6b37f99e8f306f7951d27c17c/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a", size = 202497, upload-time = "2026-03-15T18:51:52.012Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ba/2cc9e3e7dfdf7760a6ed8da7446d22536f3d0ce114ac63dee2a5a3599e62/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43", size = 193511, upload-time = "2026-03-15T18:51:53.723Z" }, + { url = "https://files.pythonhosted.org/packages/9e/cb/5be49b5f776e5613be07298c80e1b02a2d900f7a7de807230595c85a8b2e/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0", size = 220133, upload-time = "2026-03-15T18:51:55.333Z" }, + { url = "https://files.pythonhosted.org/packages/83/43/99f1b5dad345accb322c80c7821071554f791a95ee50c1c90041c157ae99/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1", size = 203035, upload-time = "2026-03-15T18:51:56.736Z" }, + { url = "https://files.pythonhosted.org/packages/87/9a/62c2cb6a531483b55dddff1a68b3d891a8b498f3ca555fbcf2978e804d9d/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f", size = 216321, upload-time = "2026-03-15T18:51:58.17Z" }, + { url = "https://files.pythonhosted.org/packages/6e/79/94a010ff81e3aec7c293eb82c28f930918e517bc144c9906a060844462eb/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815", size = 208973, upload-time = "2026-03-15T18:51:59.998Z" }, + { url = "https://files.pythonhosted.org/packages/2a/57/4ecff6d4ec8585342f0c71bc03efaa99cb7468f7c91a57b105bcd561cea8/charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d", size = 144610, upload-time = "2026-03-15T18:52:02.213Z" }, + { url = "https://files.pythonhosted.org/packages/80/94/8434a02d9d7f168c25767c64671fead8d599744a05d6a6c877144c754246/charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f", size = 154962, upload-time = "2026-03-15T18:52:03.658Z" }, + { url = "https://files.pythonhosted.org/packages/46/4c/48f2cdbfd923026503dfd67ccea45c94fd8fe988d9056b468579c66ed62b/charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e", size = 143595, upload-time = "2026-03-15T18:52:05.123Z" }, + { url = "https://files.pythonhosted.org/packages/31/93/8878be7569f87b14f1d52032946131bcb6ebbd8af3e20446bc04053dc3f1/charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866", size = 314828, upload-time = "2026-03-15T18:52:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/06/b6/fae511ca98aac69ecc35cde828b0a3d146325dd03d99655ad38fc2cc3293/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc", size = 208138, upload-time = "2026-03-15T18:52:08.239Z" }, + { url = "https://files.pythonhosted.org/packages/54/57/64caf6e1bf07274a1e0b7c160a55ee9e8c9ec32c46846ce59b9c333f7008/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e", size = 224679, upload-time = "2026-03-15T18:52:10.043Z" }, + { url = "https://files.pythonhosted.org/packages/aa/cb/9ff5a25b9273ef160861b41f6937f86fae18b0792fe0a8e75e06acb08f1d/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077", size = 223475, upload-time = "2026-03-15T18:52:11.854Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/440635fc093b8d7347502a377031f9605a1039c958f3cd18dcacffb37743/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f", size = 215230, upload-time = "2026-03-15T18:52:13.325Z" }, + { url = "https://files.pythonhosted.org/packages/cd/24/afff630feb571a13f07c8539fbb502d2ab494019492aaffc78ef41f1d1d0/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e", size = 199045, upload-time = "2026-03-15T18:52:14.752Z" }, + { url = "https://files.pythonhosted.org/packages/e5/17/d1399ecdaf7e0498c327433e7eefdd862b41236a7e484355b8e0e5ebd64b/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484", size = 211658, upload-time = "2026-03-15T18:52:16.278Z" }, + { url = "https://files.pythonhosted.org/packages/b5/38/16baa0affb957b3d880e5ac2144caf3f9d7de7bc4a91842e447fbb5e8b67/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7", size = 210769, upload-time = "2026-03-15T18:52:17.782Z" }, + { url = "https://files.pythonhosted.org/packages/05/34/c531bc6ac4c21da9ddfddb3107be2287188b3ea4b53b70fc58f2a77ac8d8/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff", size = 201328, upload-time = "2026-03-15T18:52:19.553Z" }, + { url = "https://files.pythonhosted.org/packages/fa/73/a5a1e9ca5f234519c1953608a03fe109c306b97fdfb25f09182babad51a7/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e", size = 225302, upload-time = "2026-03-15T18:52:21.043Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f6/cd782923d112d296294dea4bcc7af5a7ae0f86ab79f8fefbda5526b6cfc0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659", size = 211127, upload-time = "2026-03-15T18:52:22.491Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c5/0b6898950627af7d6103a449b22320372c24c6feda91aa24e201a478d161/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602", size = 222840, upload-time = "2026-03-15T18:52:24.113Z" }, + { url = "https://files.pythonhosted.org/packages/7d/25/c4bba773bef442cbdc06111d40daa3de5050a676fa26e85090fc54dd12f0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407", size = 216890, upload-time = "2026-03-15T18:52:25.541Z" }, + { url = "https://files.pythonhosted.org/packages/35/1a/05dacadb0978da72ee287b0143097db12f2e7e8d3ffc4647da07a383b0b7/charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579", size = 155379, upload-time = "2026-03-15T18:52:27.05Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7a/d269d834cb3a76291651256f3b9a5945e81d0a49ab9f4a498964e83c0416/charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4", size = 169043, upload-time = "2026-03-15T18:52:28.502Z" }, + { url = "https://files.pythonhosted.org/packages/23/06/28b29fba521a37a8932c6a84192175c34d49f84a6d4773fa63d05f9aff22/charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c", size = 148523, upload-time = "2026-03-15T18:52:29.956Z" }, + { url = "https://files.pythonhosted.org/packages/2a/68/687187c7e26cb24ccbd88e5069f5ef00eba804d36dde11d99aad0838ab45/charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69", size = 61455, upload-time = "2026-03-15T18:53:23.833Z" }, ] [[package]] @@ -477,18 +496,107 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274 }, + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "contourpy" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/5a/a55177dd22553a277388e8a1b3220e92de91bacb28356cdc73caa240121d/contourpy-1.4.0.tar.gz", hash = "sha256:20156f5a1ac4f8ce02656e39a61e82164a3d359796dc8026f75b062783d500e1", size = 13323726, upload-time = "2026-09-11T19:05:05.808Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/ba/01bde9753bdbba04a6da9d2bff3881f021bc708f654655e95fae26d3b3a3/contourpy-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:186ba929df36d61b6127da2e89cd1357e4cb79aca647381ab1a6feb0b152877b", size = 297302, upload-time = "2026-09-11T19:02:45.103Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f5/c5bf67522d49a2222f3154fe46879451d26f0e35ece41770758a64ea78cb/contourpy-1.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c76f3a5318164db7d9401132fc1b5364b784c613c93fa506e3b5e6d1bf353ec8", size = 284921, upload-time = "2026-09-11T19:02:48.049Z" }, + { url = "https://files.pythonhosted.org/packages/0f/cc/cb989599eec12fda312e127eb8e04a8b21a7a6c94bf7ff1bc68273334a42/contourpy-1.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:43c3ccbb32c6294b183dcc8e8c46dacf5ecef809497e3d48a5be298eef185ad0", size = 356332, upload-time = "2026-09-11T19:02:51.408Z" }, + { url = "https://files.pythonhosted.org/packages/47/fb/6f620d7602507817b0b4c21dd790ed68688f1f4ae9c29aacf21f08db5cf1/contourpy-1.4.0-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:86d05cec773c9507a3950122e0e40ce77c23c75ceeb2fc189514e71893cbb34b", size = 405878, upload-time = "2026-09-11T19:02:54.093Z" }, + { url = "https://files.pythonhosted.org/packages/32/4e/693c6d6bdece679f0953775eef3a1b66d56be55478d936e7deb1f3004422/contourpy-1.4.0-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2deb580178ca19437a84bd77e4bc2cd91a8ccad212413a83c273900868b5978c", size = 408296, upload-time = "2026-09-11T19:02:56.528Z" }, + { url = "https://files.pythonhosted.org/packages/78/f9/b6831508960d559581c448532ba4df312217072975486dbf2b24fcc5b76f/contourpy-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:875f42444c9cf48d56f724f2637e60d0f73b3b12c9041e1484580a233edf9591", size = 383243, upload-time = "2026-09-11T19:02:58.638Z" }, + { url = "https://files.pythonhosted.org/packages/f2/21/52903825a0ae7bb625e8bd30a09816d4c3c5d6174a469c10a616166cf780/contourpy-1.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f863c6100bf926cf47d13f3cd75f9bb8ebd98aaab230eeb4468b91f98f39a6b3", size = 1357306, upload-time = "2026-09-11T19:03:01.036Z" }, + { url = "https://files.pythonhosted.org/packages/d8/79/d68b1ce8539e4071518fed9523f558398f34dcd078b8927b109c72dad2ef/contourpy-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3863ef2e2b13fe93f8c0ebb08ee400cb07153b8b0e91c5acb26e4537f283634f", size = 1427243, upload-time = "2026-09-11T19:03:03.866Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f0/b75a10e9d0616b97a30de277b6dfe83f1879880854c7330337309530eb48/contourpy-1.4.0-cp312-cp312-win32.whl", hash = "sha256:5450f091ac1be0be3ad3a2a3b3f23b5e443e78c670ced4fd347d626f92a28fd2", size = 347345, upload-time = "2026-09-11T19:03:06.192Z" }, + { url = "https://files.pythonhosted.org/packages/50/a9/dab08786bb4d77ef9a046b3c1be923be4e73c5d07d91f5a54e8ea9b09e41/contourpy-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e697d94e69f499ff6bebb899cae97a58d5d14f0e1fe9568b43a0248d2f9af8c", size = 234083, upload-time = "2026-09-11T19:03:08.122Z" }, + { url = "https://files.pythonhosted.org/packages/47/b9/3ba509755a970dbde5948e7142ac21f266be72f38017cc4087a05fdceee1/contourpy-1.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:0c7a4c2716a4e98342221954416a836cca77c996c14ddbf22b5f01d5d93ca09c", size = 559521, upload-time = "2026-09-11T19:03:10.047Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8b/62a6eacea08ea0b6ab0159a7783df7ed421ff9c1ff58fef7c31f58fa5e52/contourpy-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e21d1d4a9db5b3a793649c7ab0ddb4697f2818929eec871a7b9c45fce7b2a1ea", size = 297330, upload-time = "2026-09-11T19:03:11.809Z" }, + { url = "https://files.pythonhosted.org/packages/3f/2f/103cdc5b7077cd569989d3ddb99ee3d4e96ee31bde8df2a6e426b2dc6195/contourpy-1.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:196759a3e4db60e1546167e361090ebb6d199aa3aafc9e34ea17a5ac3b23e814", size = 285037, upload-time = "2026-09-11T19:03:13.781Z" }, + { url = "https://files.pythonhosted.org/packages/bf/25/97001d1fdf940e6f5adfc592d4f5899fff95daf7dceead3988fe09987d2d/contourpy-1.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c0e07c691f3b3321913ed9b8161c50ea5f77fadd006f52f5e755359b0dcbfc5", size = 356675, upload-time = "2026-09-11T19:03:15.374Z" }, + { url = "https://files.pythonhosted.org/packages/a6/5e/9a7241a89e2f74402aefa2569e1349ad2750ff77823c04c788eaaedb7fdd/contourpy-1.4.0-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7f861af508fca2384eef392bc1d8377cfa349b2b854cb11b45d89c75780e2561", size = 406990, upload-time = "2026-09-11T19:03:17.44Z" }, + { url = "https://files.pythonhosted.org/packages/36/81/3a4fbbf6a806eada5453a6d16f6c7d96b9f4b3e57a3127368fb545986b8a/contourpy-1.4.0-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a03b32c2e7eda8b17757c022162c13c86f5c3d6f937dddf9ba3c3ff7b513953b", size = 407271, upload-time = "2026-09-11T19:03:19.523Z" }, + { url = "https://files.pythonhosted.org/packages/68/77/8f93ecbde1a4d11dfd460cd19a0c159f5487352e751fa87f5d78cc9db08e/contourpy-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f1219a8898523cba821085f2da8a1b962cc696325763f09d7f93538ba43b2d70", size = 384707, upload-time = "2026-09-11T19:03:21.208Z" }, + { url = "https://files.pythonhosted.org/packages/05/07/e5cdf94d68961ee464de6b4fedd3d2f666584f59ccd124bb1290597122ab/contourpy-1.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:20da2f86bfaed60dbba729fe738c8241b1dd22b6cf7e8cbbf30df290bd04ba28", size = 1356741, upload-time = "2026-09-11T19:03:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/fd/8a/2301d07accb257ac08daeb631875fada06fedd019c20ff7b00ee07e9d211/contourpy-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6ced1670fafee703b8277ab1645072a226e74f167166eae146fb743916119b67", size = 1426793, upload-time = "2026-09-11T19:03:25.955Z" }, + { url = "https://files.pythonhosted.org/packages/7d/5d/a62648f06259d15c139b14eb8cf3c58fe53cb970a55f2bb77d1070e80a41/contourpy-1.4.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl", hash = "sha256:abd0f7e51ecc52bf8c95713bd80b1c17c516a71fa391c54475308a4377903c2b", size = 117961, upload-time = "2026-09-11T19:03:27.713Z" }, + { url = "https://files.pythonhosted.org/packages/71/31/c5b7771ba6982f319ec90c0cf5c425b36891adfeee2d9f667f90b2d0c166/contourpy-1.4.0-cp313-cp313-win32.whl", hash = "sha256:510f7d93d94cf6ebf4e2cd0640bea16ab8affac7547230175b6745b596ce0599", size = 347438, upload-time = "2026-09-11T19:03:29.829Z" }, + { url = "https://files.pythonhosted.org/packages/68/c1/a59df0754bf83a6f3e153cc19d550a5b01f607e389b1c4d57f436f9139e0/contourpy-1.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:6507a016976a75a15aee47809a34605de6244ccc056e6164bf9fb14b27eecad4", size = 234084, upload-time = "2026-09-11T19:03:31.657Z" }, + { url = "https://files.pythonhosted.org/packages/41/48/97224f5decb1efa5a610f912195deb45321f73ec9b9dac485cd6fe2d5a6a/contourpy-1.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:423bd5f4b3f11d54a8c597234e513382e3454bb106b8ec7ae32ba4ed63f8d99b", size = 559559, upload-time = "2026-09-11T19:03:33.528Z" }, + { url = "https://files.pythonhosted.org/packages/75/b0/b548628c8dddf6e5e0a981b7fa8e4c008024df09c7d17c6a9e271edfa0b3/contourpy-1.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a3e67bc1a6a4618a1dac7c3053a9ffece5ddfa2046b2670b342cf430bb0b87d1", size = 297354, upload-time = "2026-09-11T19:03:35.017Z" }, + { url = "https://files.pythonhosted.org/packages/04/5a/513484208742f65af2648c519f0b7ab034616e183c4403538024c136a1ab/contourpy-1.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:072a702e2e178f4fcf96f04775d0c059e4c917925abf0d3208ebb6865df3c23d", size = 283729, upload-time = "2026-09-11T19:03:36.818Z" }, + { url = "https://files.pythonhosted.org/packages/35/da/5a6562febc994b2c4bf9d01e57a50458ef8a2051bb3e7b35a00333e0fc26/contourpy-1.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:404dbcd9233513dfd1323b66ea593fef90e899f658f6b8a9ed8e93bd0ca669db", size = 357819, upload-time = "2026-09-11T19:03:39.058Z" }, + { url = "https://files.pythonhosted.org/packages/6d/99/7b358ce888aaa426f755daa096c99c59d17c352037344e836f20e5d3b957/contourpy-1.4.0-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:61624f6722480aa7e168fd746164e7bfdf48f8ccb6542f1613741200dc37e2b1", size = 407795, upload-time = "2026-09-11T19:03:41.293Z" }, + { url = "https://files.pythonhosted.org/packages/be/02/34d7548adf08c60967435d79d7a90882eacc84f5093435287974c7e99943/contourpy-1.4.0-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2e741a39dfc96babe1722561e81351aeec104526c57dbe91c167c1db606c2d55", size = 408552, upload-time = "2026-09-11T19:03:42.728Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8c/9677dad226e5aaac5b823d5b09d881ebc32ff1648af417597649841e516c/contourpy-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e439ab450c93455feb0218532ded3e946ec7a9b5f459069f122cfa44b89229f6", size = 384850, upload-time = "2026-09-11T19:03:44.402Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/e3fbeaa489c223629fbb434737cb3de4ecaca9cae4825e77b92490f640f8/contourpy-1.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:417be048f7e122cefbe2a34c51a1f2b0410f8eb35796f794d45475ddb7872d9d", size = 1357601, upload-time = "2026-09-11T19:03:46.746Z" }, + { url = "https://files.pythonhosted.org/packages/88/be/55fec293d342c222ed58a5d4056df4362e192af2e59527a3d5d822de8828/contourpy-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:43d80072a32299bf945de0a6dd4e034ea0162e832261de2e07a274a5adbba9c9", size = 1427340, upload-time = "2026-09-11T19:03:48.745Z" }, + { url = "https://files.pythonhosted.org/packages/86/40/0faabf453edf59b0e3633381d7ca72c3414fb9b72b5cbb08b06ed792d3e5/contourpy-1.4.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl", hash = "sha256:fa1b787362a3856e63dd2b89449f6c384d55ee1beb8f94f4bcc871b40f02462c", size = 118355, upload-time = "2026-09-11T19:03:50.047Z" }, + { url = "https://files.pythonhosted.org/packages/38/0c/7ea75aa3559ae8a6805015e15a19c92b6480752ecc92526361e5776e88c5/contourpy-1.4.0-cp314-cp314-win32.whl", hash = "sha256:738c44fa71735a617f36da58e32810512407d283d5d1bb5b1cecb00d7eeba7cf", size = 356977, upload-time = "2026-09-11T19:04:11.401Z" }, + { url = "https://files.pythonhosted.org/packages/15/41/3df8cc14bb572c8b447f9dfbc876703f0f2f2896058285b5c87a1d4a638d/contourpy-1.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:181bea01bc742734ae672fa00c717d855dd35e1f029536406538c52e7b0cd73d", size = 240101, upload-time = "2026-09-11T19:04:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/66/01/ee6830a5aa4565662a345172f6f35eeeed625d20f1c9d4ecd35318fe4ade/contourpy-1.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:64039341e2d8804f1a13bda8c69083eab935167bbd7e856cf096241f17d5bd45", size = 576359, upload-time = "2026-09-11T19:04:14.983Z" }, + { url = "https://files.pythonhosted.org/packages/51/af/49ee9c9cf012699e505c1b63c531cc99f19df50f205173092c4d541e3ec7/contourpy-1.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:ef47fef9a912c77e3d84b014f701e5a9340f25703e9ed3bcebe37f91fb69dc49", size = 313601, upload-time = "2026-09-11T19:03:51.452Z" }, + { url = "https://files.pythonhosted.org/packages/ad/59/ce411ab2be0f805038626d8f4ca9ce563487ff51ff6c363e7512271564ed/contourpy-1.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:96019f059bcb3774acc0104be3360a57b36d33eaaa2e1d7f77c800ca8e07618b", size = 302812, upload-time = "2026-09-11T19:03:53.022Z" }, + { url = "https://files.pythonhosted.org/packages/95/b0/390915f9af14c1e2d3b2a9ad99d85b98df4352346a51e368cbb825f813c3/contourpy-1.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddf5a2596d716fd3793434844caf31abc7a40b1e8718431420c89858268fb909", size = 348996, upload-time = "2026-09-11T19:03:54.594Z" }, + { url = "https://files.pythonhosted.org/packages/c7/85/e0952576d54322f3e9983b1e049a7a31f42ce82c5c29d01821e6dd3780d7/contourpy-1.4.0-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dd59df9e2fb0aff8bd7fd1adb9f349b7c835245a9d0f18c2f2deeb537190f2b1", size = 400272, upload-time = "2026-09-11T19:03:56.822Z" }, + { url = "https://files.pythonhosted.org/packages/d6/7d/f13543a5e1598e4a4ad01d9d5e2d65f9c09c37660616429913d606c5977d/contourpy-1.4.0-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b7794ea07cab575633daad8d6e963b662053391022294d3aacc1d9ba9ef54114", size = 412895, upload-time = "2026-09-11T19:03:58.487Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a8/6e5eaff53507dfd2dfc428240eecda32453067277d4b3e7ca71210b2d611/contourpy-1.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1c8a74744fa746eeaa12f0f9ed7f8b4add9d8f1b14d95e3b5e133675eac888f", size = 377060, upload-time = "2026-09-11T19:04:00.122Z" }, + { url = "https://files.pythonhosted.org/packages/16/a3/d00e44d35511b3cead5bd794ee672d4eecf30d9de4ceac57a49d6204064f/contourpy-1.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:107ec46f7aa1664266d69b1181aadc953d58d39f7d8d648fa5b795d4a060b0de", size = 1345688, upload-time = "2026-09-11T19:04:02.705Z" }, + { url = "https://files.pythonhosted.org/packages/1e/01/1e533b0cae32c8edd63fe40435ec3b29345dab87321afcd28722d7f957d1/contourpy-1.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5a4c89c7f38a0d7a94356d74e3391073c4325c4d47ad2fd065c3fe7dbae16c0c", size = 1416140, upload-time = "2026-09-11T19:04:04.77Z" }, + { url = "https://files.pythonhosted.org/packages/6d/0c/4ee66759f00d6a5d6909782f14f441d639fa18a4a43142e334351efc47f8/contourpy-1.4.0-cp314-cp314t-win32.whl", hash = "sha256:912c6afaa106e2f74ba22b30416b77ef7eb94e3bdc5a4df51ab147845dba9b6d", size = 371982, upload-time = "2026-09-11T19:04:06.233Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ac/b3e5324138c3e3741f526663f4f265f4f69dfdf26415a39428940864a5f6/contourpy-1.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:ef9440f6f8506246269a82734f5ff9e2e4c5e775b3996fc883cc491c5257eca6", size = 262907, upload-time = "2026-09-11T19:04:07.882Z" }, + { url = "https://files.pythonhosted.org/packages/19/37/c9aa45e47819dc15a38fc5c81a2fb987fde55e9d3b991fbde514e3b6b5f5/contourpy-1.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:fc9feef8f1f001c5b87decadc67c4a5d1eebb62ca39c4763d1237ff62cf2b707", size = 587071, upload-time = "2026-09-11T19:04:09.898Z" }, + { url = "https://files.pythonhosted.org/packages/cc/74/66d4e6fbea3bcb3fd4e5ae21c039ba31b8fc408b35884b4bc09b88016dce/contourpy-1.4.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:79b06c60d5e569ce12c5da8f0c51217cdc484386e2349fa717c30fafb56d2871", size = 297358, upload-time = "2026-09-11T19:04:16.718Z" }, + { url = "https://files.pythonhosted.org/packages/2e/8d/8f7f25e71d73f15d7859943189900d2d348e740388c9ef52a0180d284762/contourpy-1.4.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:6f963ea9f0d68d2b6a02d861e3c0aae09ae25ba21f243fcf281e9fed468b078d", size = 283732, upload-time = "2026-09-11T19:04:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/f0/90/957549e3b03c407c670e3e191db63f4aef60dab6605bc967af3a806b543e/contourpy-1.4.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5545ff38229c15d11d822fc6f7415b932da9f4975f53e305b7b96ebfb01f889c", size = 357820, upload-time = "2026-09-11T19:04:20.077Z" }, + { url = "https://files.pythonhosted.org/packages/56/4c/fa8de87d907b41b05d03f4945a51675cd67319650d01b4c927d209ffa6ee/contourpy-1.4.0-cp315-cp315-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:630d32f06cedf37b7f1dd2b6a12e4492826bd477a4c9c7b2e2fee6ce3a2cea76", size = 407804, upload-time = "2026-09-11T19:04:21.781Z" }, + { url = "https://files.pythonhosted.org/packages/04/e7/96bd4f4a4ae285727befbdb4b332d53a2654cc5da4585d2525b47a063e1f/contourpy-1.4.0-cp315-cp315-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:be85d160e7c795113c2a93254dde2fc7e86b375322570eee78b420969426973c", size = 408559, upload-time = "2026-09-11T19:04:23.432Z" }, + { url = "https://files.pythonhosted.org/packages/ae/94/39660e8dc309f96bf7971eb4ec5659f272f84e42b34c9990a96ecce8442c/contourpy-1.4.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:018227e134b73090b06f911e773a526c77c9af426be29065500ce096a5accd4c", size = 384861, upload-time = "2026-09-11T19:04:25.198Z" }, + { url = "https://files.pythonhosted.org/packages/ab/7b/411dccbf73d5d19da49bf7735786b3baf4ddb1456412d48ae4d4ab1fc761/contourpy-1.4.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:4bffcb2e8cc5c0e837631acab59dd04265fdac376550e7c3e310523877c68cb7", size = 1357612, upload-time = "2026-09-11T19:04:27.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/39/bf2442130e7d5aae75a4de4504f0c8aca3ef3da3feac3940ee27ca985d83/contourpy-1.4.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:cc87f2ffa84a49a77d76cb792f28a48ff3b05a222aa0b2bddbd839ba78e1d5ca", size = 1427345, upload-time = "2026-09-11T19:04:29.646Z" }, + { url = "https://files.pythonhosted.org/packages/96/60/e5d9196dd83ccd7dd103762982b10ef19a4f72e8ef67ae7157699b9be0bb/contourpy-1.4.0-cp315-cp315-pyemscripten_2026_5_wasm32.whl", hash = "sha256:c8be3392b84cf43373a488874dc1ebf46f60784a70977f92586e18019d71c7ed", size = 118157, upload-time = "2026-09-11T19:04:31.091Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b2/ae3d90f08ba2ed82189d93b55ffbd41e559760e89af4f9ef54d51869f41d/contourpy-1.4.0-cp315-cp315-win32.whl", hash = "sha256:618137ec5778fb76d494c9ec854b104a377fddba0d128bef7136cce2c3bf0df8", size = 356982, upload-time = "2026-09-11T19:04:52.913Z" }, + { url = "https://files.pythonhosted.org/packages/02/a0/36648fff407dcf8b8482985d33367ffc0fe90be72383869312cd0bd00a1b/contourpy-1.4.0-cp315-cp315-win_amd64.whl", hash = "sha256:ea09dc704029930cbd097f75cb0cc1db9852adbcf1a151fac7e9559f7bcbfd19", size = 240101, upload-time = "2026-09-11T19:04:54.587Z" }, + { url = "https://files.pythonhosted.org/packages/07/09/49e987a96706b8f877596cee00d558d7880793a833addc6b33f80805e5dc/contourpy-1.4.0-cp315-cp315-win_arm64.whl", hash = "sha256:a5e2bb871b90cd7a52bdee63bf80ef7acb46398d27efc66d7679240016efc5aa", size = 576375, upload-time = "2026-09-11T19:04:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/e3/18/820ba24a070fe2a834af73e52245c501960746f5c1777ebc64ec0c0dec12/contourpy-1.4.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:432e89f835cf01f8d2123a130a3126b17ee6e0348e4d62c0973872b30aa873bf", size = 313543, upload-time = "2026-09-11T19:04:32.582Z" }, + { url = "https://files.pythonhosted.org/packages/d3/4c/f61a63d8107e0c1c3fa47d30ce45abad90b2ad48a1a9a4510332db7e0176/contourpy-1.4.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:3e0a2392533e5e2abdf277c951047516acc8d2f3c42b2dd9dc34c907c9ebabf2", size = 302702, upload-time = "2026-09-11T19:04:34.257Z" }, + { url = "https://files.pythonhosted.org/packages/9d/93/5af95cb5113ecc6e780ca0c6c79756a2cea8833f971bbae112dd4ad73ded/contourpy-1.4.0-cp315-cp315t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:758e7496cec3195fc28a28945eab3ceef348c47fb95c7afc2eca2f3901209c8c", size = 354370, upload-time = "2026-09-11T19:04:36.158Z" }, + { url = "https://files.pythonhosted.org/packages/47/75/5a9942446647202beb7b4d150891bfcb78fb112c73862484bbe4cc031092/contourpy-1.4.0-cp315-cp315t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bee6ff96653e0807cd0f8eaef00174a031e3a2effa5c20f49a5a8d574b05af23", size = 402340, upload-time = "2026-09-11T19:04:37.914Z" }, + { url = "https://files.pythonhosted.org/packages/c3/4f/bfdb0c67775a584f957211936661289789c4d0ec3e988bca2c8c02f8090e/contourpy-1.4.0-cp315-cp315t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a58b5f130afec61a093d743cdda435cc4047748b6791627e34a68f41ec3a9b07", size = 410721, upload-time = "2026-09-11T19:04:39.925Z" }, + { url = "https://files.pythonhosted.org/packages/65/d3/dddf13d6bb26e145c99debd1f2695018b5f3e24452dd9bfc9904c9d2ec89/contourpy-1.4.0-cp315-cp315t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9dc493e7924e5aa32d89d0b8e50986280f3d4b284968a792787bd7bcffd3cad", size = 382604, upload-time = "2026-09-11T19:04:41.793Z" }, + { url = "https://files.pythonhosted.org/packages/37/b4/89f0a5f6c6ccd322eae2704c7e933c82a4e594a61773933b4b0a18646866/contourpy-1.4.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:c927ec747633e68c9920bcaad48b0bcefe648812b822f18c34e2d0e2270a3d2a", size = 1354996, upload-time = "2026-09-11T19:04:43.856Z" }, + { url = "https://files.pythonhosted.org/packages/5d/29/fc91cc1ac6f3b591a269f4357b656d6ed0c39eb17c148f41f6da2f9729b9/contourpy-1.4.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:80c7fc8e7ac217777ce7ba2db3cf8478652b5a4b335283111012ff9eaac9d842", size = 1425030, upload-time = "2026-09-11T19:04:45.981Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b8/bb129f524210c5d3eb8616876e02af280fba8b5554e0ac1afad80b51e06b/contourpy-1.4.0-cp315-cp315t-win32.whl", hash = "sha256:90feb8da006803a95ba573fddc9536357d0c3faddc3a4c9e22816ca49af52878", size = 371854, upload-time = "2026-09-11T19:04:48.106Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b1/bc774d9d200cfc4f073bba78b1bb1cb3b55bf1c8c345eae41fc2db510459/contourpy-1.4.0-cp315-cp315t-win_amd64.whl", hash = "sha256:de503609fdb71f597634ca64fb4bd2f13d27c97f140e912b1e8ed93544840df0", size = 262450, upload-time = "2026-09-11T19:04:49.502Z" }, + { url = "https://files.pythonhosted.org/packages/54/bf/eb4ff492e1c3d027617b5a20e4e6d63a035b41b8cf77a95950159556a3a5/contourpy-1.4.0-cp315-cp315t-win_arm64.whl", hash = "sha256:78ed5c5f962b3e156109f0531b174a65ba80d13cc681a70227b12524c162e184", size = 587064, upload-time = "2026-09-11T19:04:51.148Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] [[package]] @@ -502,107 +610,194 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/7b/f8e0211e9380f7195ba3f3d40c292594fd81ba8ec4629e3854c353aaca45/fastapi-0.135.1.tar.gz", hash = "sha256:d04115b508d936d254cea545b7312ecaa58a7b3a0f84952535b4c9afae7668cd", size = 394962 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/7b/f8e0211e9380f7195ba3f3d40c292594fd81ba8ec4629e3854c353aaca45/fastapi-0.135.1.tar.gz", hash = "sha256:d04115b508d936d254cea545b7312ecaa58a7b3a0f84952535b4c9afae7668cd", size = 394962, upload-time = "2026-03-01T18:18:29.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/72/42e900510195b23a56bde950d26a51f8b723846bfcaa0286e90287f0422b/fastapi-0.135.1-py3-none-any.whl", hash = "sha256:46e2fc5745924b7c840f71ddd277382af29ce1cdb7d5eab5bf697e3fb9999c9e", size = 116999, upload-time = "2026-03-01T18:18:30.831Z" }, +] + +[[package]] +name = "filelock" +version = "4.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/c8/1d457d9150ff948f2ce6ada7715e0eeebbe5d3b58a45271a1e222474bcd3/filelock-4.1.1.tar.gz", hash = "sha256:7ba0927482c5a814b0a7f391d029ccdb8010f576f0a74c0dcde1811e8bc4c1b6", size = 563430, upload-time = "2026-10-11T16:11:54.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/8b/f837f52905395ba4510fe61f753c24833fb0a9c76e21267bb9f828b664a9/filelock-4.1.1-py3-none-any.whl", hash = "sha256:3f4a557945a7b0f95efeb1f432267affe5d45ac8ddde2aed1b97ebb62382c089", size = 132460, upload-time = "2026-10-11T16:11:52.753Z" }, +] + +[[package]] +name = "fonttools" +version = "4.66.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/b6/126c659ab7e0e03e01a5f5d223abf7b2c0691ae92718085a212a3924a2a3/fonttools-4.66.1.tar.gz", hash = "sha256:64967c6ddb0d4c610dfd8cb1485981b2d27972ddfb7d4bbbd9e199d2a089c450", size = 3694174, upload-time = "2026-09-29T16:11:53.706Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/72/42e900510195b23a56bde950d26a51f8b723846bfcaa0286e90287f0422b/fastapi-0.135.1-py3-none-any.whl", hash = "sha256:46e2fc5745924b7c840f71ddd277382af29ce1cdb7d5eab5bf697e3fb9999c9e", size = 116999 }, + { url = "https://files.pythonhosted.org/packages/06/1b/fcb22638f2f5918c855abfbab203701e4b03739953d26a59f3e6e59b8f30/fonttools-4.66.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8526b2b7ec4db6b81efb83438be52b1264eda9a4994d867163cfe8c65581ce8d", size = 3097433, upload-time = "2026-09-29T16:10:07.869Z" }, + { url = "https://files.pythonhosted.org/packages/7f/0d/f51141407f9a64efc9fb39b94b0194c4a99c1ffff50834e7ca7a3f1cdd53/fonttools-4.66.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6946fe7bfb28590a1fd4061a17609c9a843952deb65dcf30d1fe725070c3e7a4", size = 2587566, upload-time = "2026-09-29T16:10:10.099Z" }, + { url = "https://files.pythonhosted.org/packages/75/c0/5810d73f9102eb1a08f26b8f7a6c22498622b43e05e684cd5ec602be8ffd/fonttools-4.66.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09ae73bd219e1245debd8376077a0fa6e03175e255c4f51bae5f6a271bfe384a", size = 5416460, upload-time = "2026-09-29T16:10:12.182Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6e/babde908b879a3b51ffc230919d06a804912559dd4cf8c94f3fa2af69fec/fonttools-4.66.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7b8ff9e0edbcee2fbf7dff0c41b9041c1901c26acf64e23adb67495012df11de", size = 5397326, upload-time = "2026-09-29T16:10:14.133Z" }, + { url = "https://files.pythonhosted.org/packages/e6/98/8522cc7a5e5ad64a2b2b6e9598489809ed4956c532b887c65b131b8500b7/fonttools-4.66.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:38ce8f5fbd5c17dd2153d47d7c8d4108f3deda3f2b4a79b60ddc470a58faded3", size = 5353857, upload-time = "2026-09-29T16:10:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/f9/ab87d67c23178886e57f24397b3113b4ac35297f086467c2c4d4231671a8/fonttools-4.66.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8aed2bbcd6216253ef1b015763593365ee8084f621dfa53bb957c19d5e05f7cd", size = 5517604, upload-time = "2026-09-29T16:10:18.791Z" }, + { url = "https://files.pythonhosted.org/packages/d4/20/e126062610aea31919310b0b3de4d0bbe73ccbdcb3d0409cc52027db93ee/fonttools-4.66.1-cp312-cp312-win32.whl", hash = "sha256:9ea6c93091cbf83161a544388746a0911550bd98cb911faca3591cf5ead166ac", size = 2435084, upload-time = "2026-09-29T16:10:21.145Z" }, + { url = "https://files.pythonhosted.org/packages/f0/af/5c245a0587e5b7b3dd209f640b9f70d8e63404ad8dc93819ba578d685985/fonttools-4.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:261d8dc95845e751f975fe8d6075600593ee253470d46d1b84801688051b09f6", size = 2486987, upload-time = "2026-09-29T16:10:22.924Z" }, + { url = "https://files.pythonhosted.org/packages/cb/f4/e410b8c913da5b3fdbb4d16db0f2d2a0952f59c4db8d52dcf2d421d82044/fonttools-4.66.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:53e5854ea8003efec34adc0863c18ce91da923018354d27366f7fee7db928d7a", size = 3095249, upload-time = "2026-09-29T16:10:25.261Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6a/275108baf41d9f2f4d1d77cf5f1e22200fe47efd5099dafabc3eba0b6197/fonttools-4.66.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:60f5ea17aed4262630afa43f26997ceabd6417fa05dcedf54c665f5a29193e18", size = 2587288, upload-time = "2026-09-29T16:10:27.101Z" }, + { url = "https://files.pythonhosted.org/packages/db/e7/11e5e6beb7e336d80f0ca870ae080033a91ebfe34fd5390dbcf78f8df56f/fonttools-4.66.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1801fdad5600118327171e0e8aa79f7cc48831dd55ab36998c9de03bd5ffe6cd", size = 5389836, upload-time = "2026-09-29T16:10:28.988Z" }, + { url = "https://files.pythonhosted.org/packages/4c/1c/6ec22372362b03350fe3da7bf33491a07cc9a553a36dd2383b76ec1741eb/fonttools-4.66.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:83572afe48733bad7a4a9c11721d3a726c2e976d82b063fc9bdd049d76955abd", size = 5372059, upload-time = "2026-09-29T16:10:31.011Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4a/cb7971f1c0f40f891028ee8c46dadc6897ef61e44aa925a23fba2ef06e2a/fonttools-4.66.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:08d8956e3ec990c75230d92f1630b215e8f3738c83a003421c22b31ebfd0ce15", size = 5332824, upload-time = "2026-09-29T16:10:33.563Z" }, + { url = "https://files.pythonhosted.org/packages/e0/86/563e671f1d43fa8ffb2518d7fe16630fb16c7faf0420cc39f8e80181f486/fonttools-4.66.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fdf4afd75c643e60ef4a96fe64fc8a9def27d2a542112332371a9e5066885f9a", size = 5490659, upload-time = "2026-09-29T16:10:35.788Z" }, + { url = "https://files.pythonhosted.org/packages/79/f7/2573ddfd256be6503458f8523e2893443e66257fc17f6055d7e0f0e721b7/fonttools-4.66.1-cp313-cp313-win32.whl", hash = "sha256:dbb7b950f8c02deaffb6968994691e8589d671b7ef8396bc9d5b5c0dfbb7292f", size = 2433450, upload-time = "2026-09-29T16:10:37.738Z" }, + { url = "https://files.pythonhosted.org/packages/d1/86/68bc2be04b83535607fbb70ebb2ba02380bf4286d79597c4515b7d247187/fonttools-4.66.1-cp313-cp313-win_amd64.whl", hash = "sha256:43d1284c1964666ee833f2badd3017dc138f53d4889043ffca66c5ce4188f188", size = 2485146, upload-time = "2026-09-29T16:10:39.772Z" }, + { url = "https://files.pythonhosted.org/packages/12/83/c745b210ec49379ebfe627e166b527f44671a1f6ec5e1e219d91caa8964d/fonttools-4.66.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b18803cbdef248e7ee1be59cb277fbbe1da1faaa6f726fa5d3557904e6a3d967", size = 3099264, upload-time = "2026-09-29T16:10:41.998Z" }, + { url = "https://files.pythonhosted.org/packages/35/af/dd698f10bf0f743873077259e8a6fce075861dde3bb01eb22b2c4f7aefe8/fonttools-4.66.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f08ab7f8461c37ecfdd29ad97fb0c0780b50501bd664bb0f46b6e83ed2b9d2a7", size = 2588769, upload-time = "2026-09-29T16:10:43.933Z" }, + { url = "https://files.pythonhosted.org/packages/c5/65/10b5caa2aa779e62411b67949bda9741d4d7532ba0b6dea647b715131260/fonttools-4.66.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cf4f996f9b1cb549bff9ea4c50813988a26ec922c95cfa85c7e4f1270447e06", size = 5374278, upload-time = "2026-09-29T16:10:45.727Z" }, + { url = "https://files.pythonhosted.org/packages/6a/db/9ac5c6773feec1b40e57eac106d869886f66a1e44082d343ac1e1e1fb773/fonttools-4.66.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9261ef507f2dd74203443a472b65b5a26429eb378f975016dec7dc7305b24898", size = 5317826, upload-time = "2026-09-29T16:10:48.056Z" }, + { url = "https://files.pythonhosted.org/packages/04/0a/69beb11f6b714ac90ee73ad4600ac91d7dd4e1ce361d087c8425bb8472de/fonttools-4.66.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e1cde50b3ec84ca6fe63ca815de183dbecb88e8adf8ada82d8ea130ef12b2b43", size = 5316239, upload-time = "2026-09-29T16:10:50.201Z" }, + { url = "https://files.pythonhosted.org/packages/33/a8/7a77359e469d3a638df91d3e225cef4a3c1184c20e98381238042f7835fa/fonttools-4.66.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f0a8f16c4f3a5a87ca971de2631792d8cb4d570951f2000acf712f157d40db", size = 5449423, upload-time = "2026-09-29T16:10:52.337Z" }, + { url = "https://files.pythonhosted.org/packages/93/cf/ea0b2f1ef90431b1879d6e6c680a7fde497129cf511ab995ade0ff8e19a7/fonttools-4.66.1-cp314-cp314-win32.whl", hash = "sha256:b878c78b2af11b879bd4f26bb0d8bda2a4c64543fdd3f28efe2c80f97f043885", size = 2437673, upload-time = "2026-09-29T16:10:54.281Z" }, + { url = "https://files.pythonhosted.org/packages/b2/53/629dbb4a40c4a7b3de61442c6b4430d36ab6e0e8cf941c547f4fd66f3337/fonttools-4.66.1-cp314-cp314-win_amd64.whl", hash = "sha256:05aeb146451f37289f782c3c861f3d0f4b86c2dd2e4620b46683544c7406640e", size = 2489763, upload-time = "2026-09-29T16:10:56.262Z" }, + { url = "https://files.pythonhosted.org/packages/0e/59/342e5fce9438f88882524128d1feb0311d4014cb6f8bdeb4607fcc00713f/fonttools-4.66.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:66fad3b7874062c2a2692f0ae6dea56d24f01b778c7f191950ca3ff997e25a88", size = 3172931, upload-time = "2026-09-29T16:10:58.563Z" }, + { url = "https://files.pythonhosted.org/packages/50/92/96196ebfd02676f28fa9b3776d85e18281bca0c8450d7e214c40e346bf92/fonttools-4.66.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eef76d5796e604f9d6753fa6d323c4eb9f4e0e43f1dcca553f3e6914f1667b64", size = 2621937, upload-time = "2026-09-29T16:11:00.845Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c3/3f4b761037ebc2e5597c52c218a9e95dbc4a2cab572828654f6004f422f5/fonttools-4.66.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c47299bca4b5acaaeb32100f77b944feea151de9ef1773365a410dc3d49b945b", size = 5546932, upload-time = "2026-09-29T16:11:03.126Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d1/3f506cc79608becbc287785db8c44eb3f93079b49752266eb9f57700ecc4/fonttools-4.66.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dfba62cc93199ba62c376f90f2a9147d92730d301e44f88e013e50ff5edf6193", size = 5353546, upload-time = "2026-09-29T16:11:05.394Z" }, + { url = "https://files.pythonhosted.org/packages/6d/27/6534d84430ba1641185f8a0c9e2c7ecd395b15ff98f96967e3fb3c728b09/fonttools-4.66.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2c7340497cf53490293e0c2b61011e0191633022ede0a0a964a68157a98b0fb4", size = 5414313, upload-time = "2026-09-29T16:11:07.618Z" }, + { url = "https://files.pythonhosted.org/packages/27/17/831ceca06d78855b11dc203b0e3ba5e6fd8a63a71ee0343ea8bd367fda55/fonttools-4.66.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c666fefdd5613a0e99aa4516e6ff4ef87aa86cf1c7ba12a73550f4770e46b750", size = 5449661, upload-time = "2026-09-29T16:11:09.997Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e4/21dc18bcbc8d0354814f6ea58af3d76d3bcd9b0d7246df454cb9e00c1740/fonttools-4.66.1-cp314-cp314t-win32.whl", hash = "sha256:2ce4c93160535761f22c80b2afbc96cabc09855363a5d1a5554265b8a4c85901", size = 2471431, upload-time = "2026-09-29T16:11:12.237Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f4/eb0489e7d58ac0d3387584afc7f3e505f60f60fe4b4f5a0274f013d444a2/fonttools-4.66.1-cp314-cp314t-win_amd64.whl", hash = "sha256:b13c8c541ce0b794add3211b3641cc0e113d707f73e06235e6fe9731bd7c45a9", size = 2521288, upload-time = "2026-09-29T16:11:14.52Z" }, + { url = "https://files.pythonhosted.org/packages/eb/95/235679d5fe4265c251418cd02321de069281a700415389e14c4cce442e3d/fonttools-4.66.1-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:2d637468dac23aac0e223bd52e66f8faa3b0dfcef57435460fa2107e830226cd", size = 3093646, upload-time = "2026-09-29T16:11:16.809Z" }, + { url = "https://files.pythonhosted.org/packages/ad/2b/7bcd4046b3b5644c563059cce6421b488fe57f65c59171ef01ed11b66d3a/fonttools-4.66.1-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:90de3477394c73481d27d2b86091c1c736053ee13ff52c42f0e151948e8578c6", size = 2587335, upload-time = "2026-09-29T16:11:18.721Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b6/05a093ec04fa2ad449ecc67638aad0f8d60df380df2471b68b549fe2a4b2/fonttools-4.66.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d84ac0bf776b68396185bd919dd29e633d94300660335efc40b55b294b886903", size = 5371509, upload-time = "2026-09-29T16:11:20.742Z" }, + { url = "https://files.pythonhosted.org/packages/65/a9/55effa83e64b9ff4f379d9186236d50d03f6d4770d8346805c1b6620c370/fonttools-4.66.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0dc6fd99cb8c30941036308b148da9432640442a6f26f36d71dad9be24cbd0e9", size = 5334853, upload-time = "2026-09-29T16:11:22.928Z" }, + { url = "https://files.pythonhosted.org/packages/af/a8/44bb4021c585b76f8e480116e1f3fca62eb7d88fe5794e2ec84c10d2da76/fonttools-4.66.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:d3b5403e82d0c7659ff1d9f956e29a3a68d094f043e9f5bc0442796fc3a4fb58", size = 5311704, upload-time = "2026-09-29T16:11:25.393Z" }, + { url = "https://files.pythonhosted.org/packages/63/dd/dd482902fb7fd8b71d3b6508431a57938b5e41b29bf6fb252ed3cfce065f/fonttools-4.66.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:b8b71db96d605784e2c5ebf0788a406018ea8fdd80338491f4c83613d5cd1fec", size = 5459477, upload-time = "2026-09-29T16:11:27.536Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a5/07611ba4d4b298b90908cb15005a6d730c334e25548f5175a09907b2eea6/fonttools-4.66.1-cp315-cp315-win32.whl", hash = "sha256:668f092bc0de8902167df6a0d5c5aedc3b4f9e43cf88eea92e9b46a2bd3968f5", size = 2436532, upload-time = "2026-09-29T16:11:29.653Z" }, + { url = "https://files.pythonhosted.org/packages/42/a5/5c39a05bf7c518743c6072cd75b63cd27285c58a70b1086e923fc071fb84/fonttools-4.66.1-cp315-cp315-win_amd64.whl", hash = "sha256:7f49f2834f5d006fe0f3bb10fec73b261806c50941f0cfbc08294074ffc32210", size = 2488769, upload-time = "2026-09-29T16:11:31.967Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a6/1205f7a7dd746581498457e55bfbcdfbea87105a454a7b3465259816bb79/fonttools-4.66.1-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:71c7ca1b5f46f5dd549f56b47d47c0b709217675c23d3a7bc6aa1a69b6d9bbae", size = 3164459, upload-time = "2026-09-29T16:11:33.897Z" }, + { url = "https://files.pythonhosted.org/packages/33/42/915ff8f3c5d3bc9877007e708774e52f7ec431f9e59f607a86e50fe1864c/fonttools-4.66.1-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:2d320483928c7831f0139ecb361954a26b2e2a8995681200155835dd8cd4a7d5", size = 2618183, upload-time = "2026-09-29T16:11:36.067Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c6/cae2f6ebe38f8927a8d0978a349b202047268016344991a14ae978c2aee3/fonttools-4.66.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2aeb745f2664eb811026997c95628071137a777ea2ad296deec9cb393f0b23cf", size = 5524861, upload-time = "2026-09-29T16:11:38.099Z" }, + { url = "https://files.pythonhosted.org/packages/f2/14/1941629956b526d6fb46ee764cf0942221f0238581adb94de0ac229fe67f/fonttools-4.66.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3087a430722aba8de429c2539fd2a58a9cf05238cdfefd8626460001052ca878", size = 5346561, upload-time = "2026-09-29T16:11:40.366Z" }, + { url = "https://files.pythonhosted.org/packages/62/1f/b7e7f4757dcae74285f4ecd8453d870d63c7ba38a3d46bd9175a124c350b/fonttools-4.66.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:058cd823b80bac59e64dfad9e3b6fcd677852f9a3804971bbf6b48cc611e785c", size = 5392826, upload-time = "2026-09-29T16:11:42.653Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/76db3cbdcfac0e9b3ba26e1e6e8740040cfe5f7b5199dfb9b854bc8da2c3/fonttools-4.66.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:56d41d650cb8fc6cfe1d85ed7c62a0a56cbeed07bc65ca795475b914d401312a", size = 5439233, upload-time = "2026-09-29T16:11:45.088Z" }, + { url = "https://files.pythonhosted.org/packages/10/37/cdc6b213c9fbabdf36e9169f845e8596b419c7e0cceba48e5594b952d2cf/fonttools-4.66.1-cp315-cp315t-win32.whl", hash = "sha256:c258eba62260beb33c110b03a6912cefa3635239c4ab5615b7225fb6f7b85238", size = 2468614, upload-time = "2026-09-29T16:11:47.363Z" }, + { url = "https://files.pythonhosted.org/packages/fb/35/e2247e7e29e8da213e02691a6ada7a30592c7bc0d1db8d2786ebb9bea138/fonttools-4.66.1-cp315-cp315t-win_amd64.whl", hash = "sha256:5de5d80fbc0e50ff794c244e8fb7afd3eadfe0fa232ba8b162b8c551df22fcb4", size = 2516977, upload-time = "2026-09-29T16:11:49.425Z" }, + { url = "https://files.pythonhosted.org/packages/f6/10/d45b74135d5d642cb3a4fb0a957c1613ef93de4c8548671dfc3a5bf38299/fonttools-4.66.1-py3-none-any.whl", hash = "sha256:7234ae9e28db64273fbbfa72caebd0a97e3bdba6b05064114741b9539ef339d0", size = 1202222, upload-time = "2026-09-29T16:11:51.678Z" }, ] [[package]] name = "frozenlist" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782 }, - { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594 }, - { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448 }, - { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411 }, - { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014 }, - { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909 }, - { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049 }, - { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485 }, - { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619 }, - { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320 }, - { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820 }, - { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518 }, - { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096 }, - { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985 }, - { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591 }, - { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102 }, - { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717 }, - { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417 }, - { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391 }, - { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048 }, - { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549 }, - { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833 }, - { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363 }, - { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314 }, - { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365 }, - { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763 }, - { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110 }, - { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717 }, - { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628 }, - { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882 }, - { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676 }, - { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235 }, - { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742 }, - { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725 }, - { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506 }, - { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161 }, - { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676 }, - { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638 }, - { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067 }, - { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101 }, - { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901 }, - { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395 }, - { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659 }, - { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492 }, - { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034 }, - { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749 }, - { url = "https://files.pythonhosted.org/packages/f1/c8/85da824b7e7b9b6e7f7705b2ecaf9591ba6f79c1177f324c2735e41d36a2/frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", size = 86127 }, - { url = "https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", size = 49698 }, - { url = "https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", size = 49749 }, - { url = "https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", size = 231298 }, - { url = "https://files.pythonhosted.org/packages/3a/3b/d9b1e0b0eed36e70477ffb8360c49c85c8ca8ef9700a4e6711f39a6e8b45/frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", size = 232015 }, - { url = "https://files.pythonhosted.org/packages/dc/94/be719d2766c1138148564a3960fc2c06eb688da592bdc25adcf856101be7/frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", size = 225038 }, - { url = "https://files.pythonhosted.org/packages/e4/09/6712b6c5465f083f52f50cf74167b92d4ea2f50e46a9eea0523d658454ae/frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", size = 240130 }, - { url = "https://files.pythonhosted.org/packages/f8/d4/cd065cdcf21550b54f3ce6a22e143ac9e4836ca42a0de1022da8498eac89/frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", size = 242845 }, - { url = "https://files.pythonhosted.org/packages/62/c3/f57a5c8c70cd1ead3d5d5f776f89d33110b1addae0ab010ad774d9a44fb9/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", size = 229131 }, - { url = "https://files.pythonhosted.org/packages/6c/52/232476fe9cb64f0742f3fde2b7d26c1dac18b6d62071c74d4ded55e0ef94/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", size = 240542 }, - { url = "https://files.pythonhosted.org/packages/5f/85/07bf3f5d0fb5414aee5f47d33c6f5c77bfe49aac680bfece33d4fdf6a246/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", size = 237308 }, - { url = "https://files.pythonhosted.org/packages/11/99/ae3a33d5befd41ac0ca2cc7fd3aa707c9c324de2e89db0e0f45db9a64c26/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", size = 238210 }, - { url = "https://files.pythonhosted.org/packages/b2/60/b1d2da22f4970e7a155f0adde9b1435712ece01b3cd45ba63702aea33938/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", size = 231972 }, - { url = "https://files.pythonhosted.org/packages/3f/ab/945b2f32de889993b9c9133216c068b7fcf257d8595a0ac420ac8677cab0/frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", size = 40536 }, - { url = "https://files.pythonhosted.org/packages/59/ad/9caa9b9c836d9ad6f067157a531ac48b7d36499f5036d4141ce78c230b1b/frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", size = 44330 }, - { url = "https://files.pythonhosted.org/packages/82/13/e6950121764f2676f43534c555249f57030150260aee9dcf7d64efda11dd/frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", size = 40627 }, - { url = "https://files.pythonhosted.org/packages/c0/c7/43200656ecc4e02d3f8bc248df68256cd9572b3f0017f0a0c4e93440ae23/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", size = 89238 }, - { url = "https://files.pythonhosted.org/packages/d1/29/55c5f0689b9c0fb765055629f472c0de484dcaf0acee2f7707266ae3583c/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", size = 50738 }, - { url = "https://files.pythonhosted.org/packages/ba/7d/b7282a445956506fa11da8c2db7d276adcbf2b17d8bb8407a47685263f90/frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", size = 51739 }, - { url = "https://files.pythonhosted.org/packages/62/1c/3d8622e60d0b767a5510d1d3cf21065b9db874696a51ea6d7a43180a259c/frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", size = 284186 }, - { url = "https://files.pythonhosted.org/packages/2d/14/aa36d5f85a89679a85a1d44cd7a6657e0b1c75f61e7cad987b203d2daca8/frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", size = 292196 }, - { url = "https://files.pythonhosted.org/packages/05/23/6bde59eb55abd407d34f77d39a5126fb7b4f109a3f611d3929f14b700c66/frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", size = 273830 }, - { url = "https://files.pythonhosted.org/packages/d2/3f/22cff331bfad7a8afa616289000ba793347fcd7bc275f3b28ecea2a27909/frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", size = 294289 }, - { url = "https://files.pythonhosted.org/packages/a4/89/5b057c799de4838b6c69aa82b79705f2027615e01be996d2486a69ca99c4/frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", size = 300318 }, - { url = "https://files.pythonhosted.org/packages/30/de/2c22ab3eb2a8af6d69dc799e48455813bab3690c760de58e1bf43b36da3e/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", size = 282814 }, - { url = "https://files.pythonhosted.org/packages/59/f7/970141a6a8dbd7f556d94977858cfb36fa9b66e0892c6dd780d2219d8cd8/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", size = 291762 }, - { url = "https://files.pythonhosted.org/packages/c1/15/ca1adae83a719f82df9116d66f5bb28bb95557b3951903d39135620ef157/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", size = 289470 }, - { url = "https://files.pythonhosted.org/packages/ac/83/dca6dc53bf657d371fbc88ddeb21b79891e747189c5de990b9dfff2ccba1/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", size = 289042 }, - { url = "https://files.pythonhosted.org/packages/96/52/abddd34ca99be142f354398700536c5bd315880ed0a213812bc491cff5e4/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", size = 283148 }, - { url = "https://files.pythonhosted.org/packages/af/d3/76bd4ed4317e7119c2b7f57c3f6934aba26d277acc6309f873341640e21f/frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", size = 44676 }, - { url = "https://files.pythonhosted.org/packages/89/76/c615883b7b521ead2944bb3480398cbb07e12b7b4e4d073d3752eb721558/frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", size = 49451 }, - { url = "https://files.pythonhosted.org/packages/e0/a3/5982da14e113d07b325230f95060e2169f5311b1017ea8af2a29b374c289/frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", size = 42507 }, - { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409 }, +sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, + { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, + { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, + { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, + { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, + { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload-time = "2025-10-06T05:36:31.301Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload-time = "2025-10-06T05:36:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload-time = "2025-10-06T05:36:33.706Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload-time = "2025-10-06T05:36:34.947Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload-time = "2025-10-06T05:36:36.534Z" }, + { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload-time = "2025-10-06T05:36:38.582Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload-time = "2025-10-06T05:36:40.152Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload-time = "2025-10-06T05:36:41.355Z" }, + { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload-time = "2025-10-06T05:36:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload-time = "2025-10-06T05:36:44.251Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload-time = "2025-10-06T05:36:45.423Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload-time = "2025-10-06T05:36:46.796Z" }, + { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload-time = "2025-10-06T05:36:47.8Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload-time = "2025-10-06T05:36:48.78Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload-time = "2025-10-06T05:36:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload-time = "2025-10-06T05:36:50.851Z" }, + { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload-time = "2025-10-06T05:36:51.898Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload-time = "2025-10-06T05:36:53.101Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload-time = "2025-10-06T05:36:54.309Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload-time = "2025-10-06T05:36:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload-time = "2025-10-06T05:36:56.758Z" }, + { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload-time = "2025-10-06T05:36:57.965Z" }, + { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload-time = "2025-10-06T05:36:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload-time = "2025-10-06T05:37:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload-time = "2025-10-06T05:37:02.115Z" }, + { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload-time = "2025-10-06T05:37:03.711Z" }, + { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload-time = "2025-10-06T05:37:04.915Z" }, + { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload-time = "2025-10-06T05:37:06.343Z" }, + { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload-time = "2025-10-06T05:37:07.431Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/85da824b7e7b9b6e7f7705b2ecaf9591ba6f79c1177f324c2735e41d36a2/frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", size = 86127, upload-time = "2025-10-06T05:37:08.438Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", size = 49698, upload-time = "2025-10-06T05:37:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", size = 49749, upload-time = "2025-10-06T05:37:10.569Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", size = 231298, upload-time = "2025-10-06T05:37:11.993Z" }, + { url = "https://files.pythonhosted.org/packages/3a/3b/d9b1e0b0eed36e70477ffb8360c49c85c8ca8ef9700a4e6711f39a6e8b45/frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", size = 232015, upload-time = "2025-10-06T05:37:13.194Z" }, + { url = "https://files.pythonhosted.org/packages/dc/94/be719d2766c1138148564a3960fc2c06eb688da592bdc25adcf856101be7/frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", size = 225038, upload-time = "2025-10-06T05:37:14.577Z" }, + { url = "https://files.pythonhosted.org/packages/e4/09/6712b6c5465f083f52f50cf74167b92d4ea2f50e46a9eea0523d658454ae/frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", size = 240130, upload-time = "2025-10-06T05:37:15.781Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d4/cd065cdcf21550b54f3ce6a22e143ac9e4836ca42a0de1022da8498eac89/frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", size = 242845, upload-time = "2025-10-06T05:37:17.037Z" }, + { url = "https://files.pythonhosted.org/packages/62/c3/f57a5c8c70cd1ead3d5d5f776f89d33110b1addae0ab010ad774d9a44fb9/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", size = 229131, upload-time = "2025-10-06T05:37:18.221Z" }, + { url = "https://files.pythonhosted.org/packages/6c/52/232476fe9cb64f0742f3fde2b7d26c1dac18b6d62071c74d4ded55e0ef94/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", size = 240542, upload-time = "2025-10-06T05:37:19.771Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/07bf3f5d0fb5414aee5f47d33c6f5c77bfe49aac680bfece33d4fdf6a246/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", size = 237308, upload-time = "2025-10-06T05:37:20.969Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/ae3a33d5befd41ac0ca2cc7fd3aa707c9c324de2e89db0e0f45db9a64c26/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", size = 238210, upload-time = "2025-10-06T05:37:22.252Z" }, + { url = "https://files.pythonhosted.org/packages/b2/60/b1d2da22f4970e7a155f0adde9b1435712ece01b3cd45ba63702aea33938/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", size = 231972, upload-time = "2025-10-06T05:37:23.5Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ab/945b2f32de889993b9c9133216c068b7fcf257d8595a0ac420ac8677cab0/frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", size = 40536, upload-time = "2025-10-06T05:37:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/59/ad/9caa9b9c836d9ad6f067157a531ac48b7d36499f5036d4141ce78c230b1b/frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", size = 44330, upload-time = "2025-10-06T05:37:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/e6950121764f2676f43534c555249f57030150260aee9dcf7d64efda11dd/frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", size = 40627, upload-time = "2025-10-06T05:37:28.075Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c7/43200656ecc4e02d3f8bc248df68256cd9572b3f0017f0a0c4e93440ae23/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", size = 89238, upload-time = "2025-10-06T05:37:29.373Z" }, + { url = "https://files.pythonhosted.org/packages/d1/29/55c5f0689b9c0fb765055629f472c0de484dcaf0acee2f7707266ae3583c/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", size = 50738, upload-time = "2025-10-06T05:37:30.792Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7d/b7282a445956506fa11da8c2db7d276adcbf2b17d8bb8407a47685263f90/frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", size = 51739, upload-time = "2025-10-06T05:37:32.127Z" }, + { url = "https://files.pythonhosted.org/packages/62/1c/3d8622e60d0b767a5510d1d3cf21065b9db874696a51ea6d7a43180a259c/frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", size = 284186, upload-time = "2025-10-06T05:37:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/2d/14/aa36d5f85a89679a85a1d44cd7a6657e0b1c75f61e7cad987b203d2daca8/frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", size = 292196, upload-time = "2025-10-06T05:37:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/05/23/6bde59eb55abd407d34f77d39a5126fb7b4f109a3f611d3929f14b700c66/frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", size = 273830, upload-time = "2025-10-06T05:37:37.663Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3f/22cff331bfad7a8afa616289000ba793347fcd7bc275f3b28ecea2a27909/frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", size = 294289, upload-time = "2025-10-06T05:37:39.261Z" }, + { url = "https://files.pythonhosted.org/packages/a4/89/5b057c799de4838b6c69aa82b79705f2027615e01be996d2486a69ca99c4/frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", size = 300318, upload-time = "2025-10-06T05:37:43.213Z" }, + { url = "https://files.pythonhosted.org/packages/30/de/2c22ab3eb2a8af6d69dc799e48455813bab3690c760de58e1bf43b36da3e/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", size = 282814, upload-time = "2025-10-06T05:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/59/f7/970141a6a8dbd7f556d94977858cfb36fa9b66e0892c6dd780d2219d8cd8/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", size = 291762, upload-time = "2025-10-06T05:37:46.657Z" }, + { url = "https://files.pythonhosted.org/packages/c1/15/ca1adae83a719f82df9116d66f5bb28bb95557b3951903d39135620ef157/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", size = 289470, upload-time = "2025-10-06T05:37:47.946Z" }, + { url = "https://files.pythonhosted.org/packages/ac/83/dca6dc53bf657d371fbc88ddeb21b79891e747189c5de990b9dfff2ccba1/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", size = 289042, upload-time = "2025-10-06T05:37:49.499Z" }, + { url = "https://files.pythonhosted.org/packages/96/52/abddd34ca99be142f354398700536c5bd315880ed0a213812bc491cff5e4/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", size = 283148, upload-time = "2025-10-06T05:37:50.745Z" }, + { url = "https://files.pythonhosted.org/packages/af/d3/76bd4ed4317e7119c2b7f57c3f6934aba26d277acc6309f873341640e21f/frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", size = 44676, upload-time = "2025-10-06T05:37:52.222Z" }, + { url = "https://files.pythonhosted.org/packages/89/76/c615883b7b521ead2944bb3480398cbb07e12b7b4e4d073d3752eb721558/frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", size = 49451, upload-time = "2025-10-06T05:37:53.425Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a3/5982da14e113d07b325230f95060e2169f5311b1017ea8af2a29b374c289/frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", size = 42507, upload-time = "2025-10-06T05:37:54.513Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/cd/9be253869fc42e764de7f3dedd6969af7d44ff9c3375214a3442a6f3fc08/fsspec-2026.9.0.tar.gz", hash = "sha256:0f08147951c8cb31d844c3547d631053b127863b60be04cf06e121333ee0e2fe", size = 333545, upload-time = "2026-09-18T17:50:42.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/c0/a98505f18594f1bce828bb159cec0fcf9860562f1a2c85913409fc8f3d9e/fsspec-2026.9.0-py3-none-any.whl", hash = "sha256:8dd6e646e99ea382bd85f97a45e6b526a442d79423a7dc673f1e2756d05fcb5f", size = 221738, upload-time = "2026-09-18T17:50:41.341Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "holidays" +version = "0.106" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a4/85/30fadb3b2014177299eea883bfd74d7e893d495fb4b37adc3f4968004d87/holidays-0.106.tar.gz", hash = "sha256:2e635a59102acb47e79a751c37fb04eff5ac77069a3b33d58cbfad66d243ffb3", size = 1048446, upload-time = "2026-10-05T19:23:13.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f6/59f817df052a81e39bbc23cb10795cf721d14b36a4cf0d897bfe11648a22/holidays-0.106-py3-none-any.whl", hash = "sha256:4be3fb5be6a88a232e92f96825e4fab9b80710caabde90b7c476e57ba0ed9f5d", size = 1656690, upload-time = "2026-10-05T19:23:11.32Z" }, ] [[package]] @@ -613,9 +808,9 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] [[package]] @@ -628,27 +823,167 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] [[package]] name = "idna" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582 } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008 }, + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] [[package]] name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503 } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/07/bd78e6a8fae171ea041ef5bba3ed21a003522fa088834b069b1909981f30/kiwisolver-1.5.1.tar.gz", hash = "sha256:f1303ef2eec81262a4b708c3e858afe58d7c75ad91c1c05266eda7673369859a", size = 104395, upload-time = "2026-08-28T10:28:27.153Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484 }, + { url = "https://files.pythonhosted.org/packages/6b/9b/65b302742389c6f96f2956bef5decf26011309feb2fc5d79613af18adea4/kiwisolver-1.5.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63fb7294b768f444eb4b068965f2662f28c2fd4161e23bd60fcf3ff27b74c046", size = 123876, upload-time = "2026-08-28T10:25:27.44Z" }, + { url = "https://files.pythonhosted.org/packages/71/74/c21f339956f6f691b2ed7e31d5f3ae767304df6c460192739fc830853051/kiwisolver-1.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ebdef3eae5336568147c39a55be6a2036ffde53faa9ca2d978989ae7c2da12c", size = 66487, upload-time = "2026-08-28T10:25:28.728Z" }, + { url = "https://files.pythonhosted.org/packages/84/e5/bdb34e21523e01dceda064d63713f3bdec91388af24fba1eca7ea5e85864/kiwisolver-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1798e83840c3f627246104c4d8a9639c60fa068adf9ce92b61791781fa8a68c1", size = 64660, upload-time = "2026-08-28T10:25:30.071Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f4/dadfec469313c7f428efa7e84b4aba9732f813c13ea7131a24b7b008ef57/kiwisolver-1.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:34633ecf50d16187ab8e5528b7a2530f2feb4e23f300db4672538b51cfc5cd38", size = 1477929, upload-time = "2026-08-28T10:25:31.495Z" }, + { url = "https://files.pythonhosted.org/packages/6f/35/09c58daac34e6f6ea5c6dee0094b422118e5a7c265586008a95fd135ac5f/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d27c2123977cb9269c30a49ba45f03a4323017ef693e19db4ec9dbe1299a3002", size = 1278499, upload-time = "2026-08-28T10:25:33.375Z" }, + { url = "https://files.pythonhosted.org/packages/19/32/739765e24fbad29d13f83e546ea4abc215a78cea9d677ca09025b027724d/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6a797a1cefc8b9c93170db580337e1fe3d011ad18b1299943231279406342048", size = 1296677, upload-time = "2026-08-28T10:25:35.059Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/03304d1010e2cc45e5b3b52cef7e43fed3a2a5cd6c87a89b4a88e1d85b5d/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2551cf9917af48ee7c4b29cc82320489508cf96fd26a51f6fc124de661cd44c7", size = 1346037, upload-time = "2026-08-28T10:25:36.705Z" }, + { url = "https://files.pythonhosted.org/packages/3e/57/4c49377bfd274450dd72ecaa13eaac32ea804a03363e4d1db0c5aa999ceb/kiwisolver-1.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:38f6e0deb4d0a4615efe0c4efc5990b06ae450ab50a0b321c0b078b6d238c083", size = 988248, upload-time = "2026-08-28T10:25:38.299Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c3/38df144a08b6c5d75ca4504e5cc3141bb3bfef64c04f4ef48204f42711b6/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bfd1de989b3330420e29de39352f5c049905c9e3ee67233a50d550e3d652c148", size = 2228722, upload-time = "2026-08-28T10:25:40.038Z" }, + { url = "https://files.pythonhosted.org/packages/e7/11/3221838a89cd64d9b386353e000cd8a296069a20fbe3584507fdfd5bebae/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1209042a623ddfda5497e4066c7b77651dde8e1d3a9dd97599dc7e97f3b9b78c", size = 2325216, upload-time = "2026-08-28T10:25:41.699Z" }, + { url = "https://files.pythonhosted.org/packages/83/d4/075c219230697bb5db910d37262b9bacf880f92b4811a02ab81ed073a253/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:26e8268480be5061d509e29669d59103c067a26377a56491630ece11762e3858", size = 1977689, upload-time = "2026-08-28T10:25:43.559Z" }, + { url = "https://files.pythonhosted.org/packages/bb/08/1d219c3c2dd960983d0d4da623d916e9de6385df2b0bab3d1af0e9b8fccc/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d79308fa689fac89cbcfbd4dbfc80b5f95c54c5a7fd4d194be221f9d33d026e6", size = 2491443, upload-time = "2026-08-28T10:25:45.242Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d3/024208ec1079d273f1047468d1bdffbf38bb75b7b268090fd3a0301b9d9a/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b03af77d77e50edba2030fd5f7c352ff209314b09030a3cba7c14edf9a09a444", size = 2295200, upload-time = "2026-08-28T10:25:46.984Z" }, + { url = "https://files.pythonhosted.org/packages/6e/7c/7b210498f9f92e1cd7855f260fa69ef056881087b199ee20c208f0e4189a/kiwisolver-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:06a6917674de9e0fe3f66f5430787f59a9f2ddb64af9b714eaec547e29ef5c19", size = 70748, upload-time = "2026-08-28T10:25:48.444Z" }, + { url = "https://files.pythonhosted.org/packages/94/61/ef0daa157c8bb23672f7423e0d14c39db1dc6ef8ed47e6bc54c9c1bef3bf/kiwisolver-1.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:ad8b9671348d7c8716715652ae11f85ed0eb99e265a2df2ca490577d69860b2c", size = 68324, upload-time = "2026-08-28T10:25:49.81Z" }, + { url = "https://files.pythonhosted.org/packages/08/c1/88018321d976f53c421e379c43bc6993e70ce0c8a3ec5edc4bfe102257f6/kiwisolver-1.5.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:b6ae6a0328f0bc035741820fdeecdcd67bf4694eee03972e843663107122f450", size = 62272, upload-time = "2026-08-28T10:25:51.02Z" }, + { url = "https://files.pythonhosted.org/packages/85/d2/712bc17ea4f1d216034928069d612defbc6c95a471c55a7203a39faecb1a/kiwisolver-1.5.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:886fc26012f0e8b5f69d1cfe6d711f6b11f194621539bf8e6bb1c25c5dc82724", size = 64481, upload-time = "2026-08-28T10:25:52.22Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e6/6c5380d676f43b6d918033962ea5e72360ca69e5a404154bc496b598ffdb/kiwisolver-1.5.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:aefe930d113798330e9462f7874542977869c0613cba3262e2de3a8d5dee8f3a", size = 66260, upload-time = "2026-08-28T10:25:53.387Z" }, + { url = "https://files.pythonhosted.org/packages/92/6a/7087f5822cc8bb272679641404b1966a42504dac9ee74e2b33840475a0aa/kiwisolver-1.5.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5ca5aebae78a0bc13c1943af4af615d4966c5b650b05d5aa83b50e427196fee", size = 123876, upload-time = "2026-08-28T10:25:54.644Z" }, + { url = "https://files.pythonhosted.org/packages/5c/4b/9f385087ca09ee5ab9c09c6832561a7d2f7c78d3e5661d511e669f70e439/kiwisolver-1.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1ed0f5e49d0ceff8b72190824d9e59c062fbbc02c231b853112c78474b3f5ec2", size = 66487, upload-time = "2026-08-28T10:25:55.899Z" }, + { url = "https://files.pythonhosted.org/packages/47/8b/40d33ffd2f378094ed462e9a9a0907e59d4de9845e65a59561272da350d4/kiwisolver-1.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:77a4c8187a5948d7f8795adb765a3c7b553d07d86d88e43038fc32fc1fb9a3f3", size = 64673, upload-time = "2026-08-28T10:25:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/ab/43/86aacc027959108b4c66eeae8b73cedb057dfa6eb3a335d05ad65197081c/kiwisolver-1.5.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:74ad5c3dad54a4641b4c28cd15ded70899d04459c6c7aeacafea716be97cce6d", size = 1477992, upload-time = "2026-08-28T10:25:58.479Z" }, + { url = "https://files.pythonhosted.org/packages/ed/40/b1d0369048c79733a32c8abb0f2718532e6630641368e33a81384246e844/kiwisolver-1.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21e46b23a2da695c364124817bc01d970effd5483147f8d66a6a7167e3f6b851", size = 1278821, upload-time = "2026-08-28T10:26:00.121Z" }, + { url = "https://files.pythonhosted.org/packages/61/a1/fa71c1792272ff9461432715ae60ffb7e11a4d7ac3bf68961b9cab6c60cf/kiwisolver-1.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75d9b1cf8258462dbdc1eeda718c96ea7f079324c09067f6daabfcf37712b7fe", size = 1296805, upload-time = "2026-08-28T10:26:01.868Z" }, + { url = "https://files.pythonhosted.org/packages/a3/49/3f0bd94af8e06ecc47eb834b195a06f05d48711ceb2352c56d6835160f0e/kiwisolver-1.5.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fca690b00c4c48f6c2a547b0160ed511357093a4e4c9b47e0fadf3128066d89", size = 1346109, upload-time = "2026-08-28T10:26:03.59Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/3afe6ef9cf06d61220953a8963e94eca978491be1d9547cb01d82a1efa08/kiwisolver-1.5.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:876bbfd276473d3daffe30e8c975df4ed9429967b41a6cb362dbb5155b6f13ad", size = 988252, upload-time = "2026-08-28T10:26:05.306Z" }, + { url = "https://files.pythonhosted.org/packages/e4/30/a12bd7a7285a211e1747c3eec77b8c614dbfcc1dad942f7611a1a6921ae5/kiwisolver-1.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f942903fde7363d1d879057ec5de01310efda2597161784d752fa9953a01a71a", size = 2228846, upload-time = "2026-08-28T10:26:07.312Z" }, + { url = "https://files.pythonhosted.org/packages/a1/6b/233e2958abf0dab7b18d07e52f286e02e519d7651bfbbe97af9347564109/kiwisolver-1.5.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c90d3022d8a94778939cda8638c6c8da8fa757b8958dad7ec868ce29c87681b8", size = 2325583, upload-time = "2026-08-28T10:26:09.093Z" }, + { url = "https://files.pythonhosted.org/packages/42/8e/7673060a27b01405b580058510adef34687069d229800239f5e44682d4d0/kiwisolver-1.5.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:8a34616dc2521cc8dc1d7d081734da63539f021ac0450ce950908340c6e7aa2f", size = 1978221, upload-time = "2026-08-28T10:26:11.127Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7b/1b882fc1a8b4a0bb8084e7d1d85004116d08c92c0705d31f2928dec607f2/kiwisolver-1.5.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:8bf4df63592c2a66b4f8edc5df2544998c288aa02f96ce0acd880cd1de8c8127", size = 2491819, upload-time = "2026-08-28T10:26:13.348Z" }, + { url = "https://files.pythonhosted.org/packages/39/9c/426deb49e62c5f69464b64bbeca064d3b758a7506b8913d986ef34f4619c/kiwisolver-1.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d09037ca068d784ebc4aec290ef952ca27ac15dd9c0b5801a88c6e1096b83e6b", size = 2295520, upload-time = "2026-08-28T10:26:15.042Z" }, + { url = "https://files.pythonhosted.org/packages/f5/22/deabbb3ad6d918d74b7831b2d8ae7151b09d21c87974e5ee8a456f58c94c/kiwisolver-1.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:dc23390afe9f4ef9ac3bcc72a03a56eebbde03f4c571a32cb38f859cff9a6524", size = 70758, upload-time = "2026-08-28T10:26:16.504Z" }, + { url = "https://files.pythonhosted.org/packages/b9/71/02fa5c2fd92068bb8952847e70ee6c5cb280e7febe11653d17812acc53dd/kiwisolver-1.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:186884a58486651e3c217b6acea0a53eaa9498fdd472057c46f2f0fb5c25aad5", size = 68329, upload-time = "2026-08-28T10:26:17.658Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/2d5dfad0daf17dcc18d98c48ed2332fc3f051cf599e60be6182a30dd4cf1/kiwisolver-1.5.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0324cd2567259b7a095f6cf18a52b0ffc6f3de9e69528ff1bc0e7a37bd43ff1a", size = 62337, upload-time = "2026-08-28T10:26:18.778Z" }, + { url = "https://files.pythonhosted.org/packages/08/c8/83e1624f15d6262b470dbcc80b09979fd4d5b2ea3ddfc6b6e3327e235726/kiwisolver-1.5.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:74ea337e0ec3f6f342a36a4f1b5cd94dd9affddcd28ba9aae2905af932ee8c6b", size = 64513, upload-time = "2026-08-28T10:26:19.909Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2d/827ec30eb07f528c08d8459ffb318ae91a56d793ee8acbea8b491f0ff906/kiwisolver-1.5.1-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:ee9df1f0d77b9c6e94f4ac0fec533fbddd5ea3a327807f18d7b069ae019ded80", size = 66287, upload-time = "2026-08-28T10:26:21.078Z" }, + { url = "https://files.pythonhosted.org/packages/53/11/5c43a562529dad8def4b81e5e1877c612a7e0298105a5939b3b409d2079c/kiwisolver-1.5.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fc271a6f0a2126958f4090e5507b9da5848927dae331f8f763bd4aa642b3d2cd", size = 123940, upload-time = "2026-08-28T10:26:22.475Z" }, + { url = "https://files.pythonhosted.org/packages/64/db/9bd6c505c95128c258a55236bfbb3a7a3fb6023f863316b6d7d9f3c69052/kiwisolver-1.5.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9b3092d8992a1d69b7a59c3e39f35e1b9be327a17f68a7c35fc17329e337d6f2", size = 66493, upload-time = "2026-08-28T10:26:23.743Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f4/b3007a3ed5c9be73f81161140684cf7d9bdb9c4b632f5f484d2a1c713fb9/kiwisolver-1.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c2306e8bb53601979fcb3fa09cc65e031876d9ae01eff2fcbcd7a84ef94d5bc1", size = 64720, upload-time = "2026-08-28T10:26:24.95Z" }, + { url = "https://files.pythonhosted.org/packages/a1/13/08188f0cafa3a800403e4ff62b9aad4e7a17f9c4c7e080dc8f18c64794cf/kiwisolver-1.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:18a0cfb124546a4c2e6087c5f3029c7f44b37c85b142e0ced71f73a7599ac208", size = 1475867, upload-time = "2026-08-28T10:26:26.393Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3e/053bdc3c9abdb8f2606225eda398adca25c0c91ab90add8222a69db65ee0/kiwisolver-1.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34ec467940442c9943016fb2d4c81d1ba84351eeca2f1a78f8bc87f1ba0d414c", size = 1282865, upload-time = "2026-08-28T10:26:28.118Z" }, + { url = "https://files.pythonhosted.org/packages/5e/64/a44c341b36b610588cc2f1e89b3cae072a3119aa8be578e90987cd640751/kiwisolver-1.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a83ee7107df13abe42a54a6654670eef9bb39425cf2e27f65e0007465e1286ab", size = 1300865, upload-time = "2026-08-28T10:26:30.125Z" }, + { url = "https://files.pythonhosted.org/packages/60/5e/7e7d716dca38c714478b741257a5b4a321d9932b8d851551a136dcaf3984/kiwisolver-1.5.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bebb89489b279b2f5661bbbb2abcc87bcd4a46607bb4a5c966f04f1db6b8df9a", size = 1348071, upload-time = "2026-08-28T10:26:31.829Z" }, + { url = "https://files.pythonhosted.org/packages/10/1a/2b98fdda8bf45b7be317e48ed12393d44334394d315c74b81f4a14c0e31b/kiwisolver-1.5.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:509735237ae0d849e8a843551d423d2500d2e0a9ac1611a145658b29c0fb9f85", size = 992191, upload-time = "2026-08-28T10:26:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/b6/55/d893f5ede0e50f9e3fcf01f6015f42ec7d9cd221e26772701fe4a98745f9/kiwisolver-1.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:824c3d763a05ea9e9003610145186b0e9848c7584a5575c79bac5a8e7cd80bad", size = 2233854, upload-time = "2026-08-28T10:26:35.282Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/f85f6279555a6ee1639fef7bfe83adb037a03e11a6fc9eaa54b8d0380339/kiwisolver-1.5.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:1fff05e239575b1481b6ed1a782f6fad616efbf1f0b1f44e6e85c4dfe426e483", size = 2330621, upload-time = "2026-08-28T10:26:36.9Z" }, + { url = "https://files.pythonhosted.org/packages/56/31/e11aea078f66fc2fffcc179d38ca90d9da97652a241b64519169742ba46a/kiwisolver-1.5.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0627b9bceb9c3cdcf12b8a18655eedfed2692b038df27423383c120d0b7dc2d6", size = 1982848, upload-time = "2026-08-28T10:26:39.01Z" }, + { url = "https://files.pythonhosted.org/packages/af/ea/2956b63bf5140ca46aa2c2818e6aa03e2d5754dd2fa41db1c6b28922940c/kiwisolver-1.5.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:8a708a47ade1fe19e8371d5da076bac0dd4b0a5a7985ad6c637f7f7e361b6baa", size = 2494850, upload-time = "2026-08-28T10:26:40.837Z" }, + { url = "https://files.pythonhosted.org/packages/11/d1/3829542258d8b3fc0898d221e7ef0e2c83eca0d348709bb8dbe54f3d4005/kiwisolver-1.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:007a5553dfc4f4e8d184f588a0200e2cd4b63a59cc8796df3c39909e679dc7a0", size = 2298067, upload-time = "2026-08-28T10:26:42.803Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0e/49522e1ab5788cbaf63a26fbd3b851f9028616828c961b8a31b35cb96df8/kiwisolver-1.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:f4167e87b397f273dc2356fcf1eaf50a6bac51e6105f45103ef7129c8efb0255", size = 72282, upload-time = "2026-08-28T10:26:44.268Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b6/22e7ca5315d363e6f81c9f37c9472e12e7b298731e77c0428e6a911a2c39/kiwisolver-1.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:5c490db2168a508088f59140dd392556a54b8bd1048fc6383c8baff13c359673", size = 69855, upload-time = "2026-08-28T10:26:45.725Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/03a9cfbe871964c8758a816eb03ac96c806da2795a9a7cd9bf9648bfb594/kiwisolver-1.5.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:4d4ca09bf13cff792b1884f64b98ee6c2467930d632233be25c56b442d99f10e", size = 126289, upload-time = "2026-08-28T10:26:47.023Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/14ce3041ca79dff9c9d884ca00c7bf32374e76028a865a9ecd99b4f5a517/kiwisolver-1.5.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:44b8faef94f1857e77fa0238f3390ff1ac51d2ea20a487e2e452a59fd2b5f5ca", size = 67709, upload-time = "2026-08-28T10:26:48.268Z" }, + { url = "https://files.pythonhosted.org/packages/af/c4/45030471a66ec8ef042e9f96ffe1d522c9ab12da180186a0898966fc1385/kiwisolver-1.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2ae70bc59790d2af72a3f76f24b272403e135070340281108b447cb77ea70819", size = 65909, upload-time = "2026-08-28T10:26:49.523Z" }, + { url = "https://files.pythonhosted.org/packages/42/73/17dce073a6ae259bb32cf9d686c4079d2e538868bc45967462bf33df914a/kiwisolver-1.5.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:43844c1a7ad6d723d5b5b4c4fc7f5bd399c40e288120d16257c7c9e8765c6e85", size = 1584907, upload-time = "2026-08-28T10:26:50.933Z" }, + { url = "https://files.pythonhosted.org/packages/8c/84/ae3c75909f507283cbfcc7e916c7e822579ef962020b97e6882b27b4478f/kiwisolver-1.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22d5e5aaad6be121f2515765e3b1c444352cb8eb4c86510801db8f2e50757316", size = 1392474, upload-time = "2026-08-28T10:26:52.638Z" }, + { url = "https://files.pythonhosted.org/packages/34/31/8bcc83caad5bce8fa4577152389848bf6bc110e51e573a2b4e7c2aa34c89/kiwisolver-1.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3fa5855898f6d3d01b72ccd48a2d65cbdee301251603fefe34e2025bddba219c", size = 1405246, upload-time = "2026-08-28T10:26:54.248Z" }, + { url = "https://files.pythonhosted.org/packages/55/72/220345537d790cf4ae54f8acfff4b5cc2468e0702a384d651cf7a771c63e/kiwisolver-1.5.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d66a64dd5dec136040ec2ae94aa026a912ee60fdd45bc28d3db30037fd809e88", size = 1456099, upload-time = "2026-08-28T10:26:56.042Z" }, + { url = "https://files.pythonhosted.org/packages/cd/10/3725fd2398f66d18c34b4e0f81a8d03764cd4f4f089f58a527f0b4428086/kiwisolver-1.5.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:9e51c119992ea8820706871c30a4642ec76de20ae82f9b50b9a45517d8e9f810", size = 1073695, upload-time = "2026-08-28T10:26:57.658Z" }, + { url = "https://files.pythonhosted.org/packages/86/cb/28d6e09e66b93e4588b2e6b7d84d020ccefea09e2f4de788510a07efeab7/kiwisolver-1.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:70ed9a45c7484d2b30cdacf60d220f494a1763b9fec1ad03285c6553fa0889f2", size = 2335355, upload-time = "2026-08-28T10:26:59.202Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b3/a0f31d5e4e40af7dc97c36b8a74fdd3a36cf3c8bbd098da9a23466ff6a94/kiwisolver-1.5.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:98b208a7cc42c803445ef551d6753cc42a5ea13e9cab1ee66cd8b9cb70195330", size = 2426524, upload-time = "2026-08-28T10:27:01.181Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c9/728f63bd58c72cafdc79fc306abeeac7391bec03b757a48dadeb30906521/kiwisolver-1.5.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c6834b92dd2428e2dd85ef3d85f723d3c12f20aaf43a2ddd4f944ca25d833408", size = 2063430, upload-time = "2026-08-28T10:27:03.06Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/ce188b96f92f9a2c958231da140768918cba53c9713dc887b82f85462118/kiwisolver-1.5.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:5d142e352eb13facc7dd047489aebdff6ba78576c239f1ea04931979caaf0567", size = 2597513, upload-time = "2026-08-28T10:27:05.072Z" }, + { url = "https://files.pythonhosted.org/packages/69/d6/76947c8203768968382e5bd74d9cc95654746703a61ea53015f2c74a2e06/kiwisolver-1.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9b1c4900736e489a812c529100de4b8fb617d4db075e931e213c57424b83d9b", size = 2394488, upload-time = "2026-08-28T10:27:07.423Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d4/14b21e4eb203c4d15425e8b6a2c625a320b4a1f2f7557eead63ffc30ffb7/kiwisolver-1.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:5978c3340f16a35c30f8ab2fa7bcf559973c55f1a5ef6970e1f621acf3c4db13", size = 75404, upload-time = "2026-08-28T10:27:08.892Z" }, + { url = "https://files.pythonhosted.org/packages/cb/f5/53157899fc7f45f76421b77b99eb1639dd0f83f26ff9d76300c96bb4a3b0/kiwisolver-1.5.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ca307d6c259e5c98d3cb9ade55342b47a6839762caf2536f3d7b46ee660cc82e", size = 72946, upload-time = "2026-08-28T10:27:10.944Z" }, + { url = "https://files.pythonhosted.org/packages/75/62/f786c3a27f181fa339d851a77e266d208e776b9883cabc40a5b041a31b5a/kiwisolver-1.5.1-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:bb7c99f0673c03017a3ee01e54a5c2617a05468b11eabe513b0080e063ed95b1", size = 62420, upload-time = "2026-08-28T10:27:12.308Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/58a91ed25fbad0facdf503297b03768efab04bdf3141e5e3b49a34be7443/kiwisolver-1.5.1-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:0d8924877ce22e17326a99a418c3c82037da078df3c6a260b13eca677444e6e7", size = 64577, upload-time = "2026-08-28T10:27:13.502Z" }, + { url = "https://files.pythonhosted.org/packages/f6/5c/d501ef5a0958b226eac28306d24d5e5f114be0ace50e19cabae7b6b3b197/kiwisolver-1.5.1-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:534f02c1abb31ed6dbd3515545285c330b2f12d00fdb1fdb71658b9ca5a13a6a", size = 66284, upload-time = "2026-08-28T10:27:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a6/8fbecaf4fc18c02f31f05e47a84c010a80e3ec391ed2f0bdade1d62b5954/kiwisolver-1.5.1-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:cea20da04494e662b83c872683bf4ff2345206043d036315ed0e924b652e7294", size = 124031, upload-time = "2026-08-28T10:27:16.193Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c6/bf3090d2983b4204347cbdbe952116e7c3b2abf62b4e33e50167a13e75ee/kiwisolver-1.5.1-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:7fd82debf43c6acd0a94359d232f6bb516ee13f269a7993736a9ac9f988bb5d9", size = 66489, upload-time = "2026-08-28T10:27:17.506Z" }, + { url = "https://files.pythonhosted.org/packages/85/de/562dddef55fdd7c291da8626d6619e72b5fc0870e6ccca0e149a5731e7f3/kiwisolver-1.5.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:18170a77ddfecf40ec60d0928268dc95880c881864e015a8f34094ed18b9b9ad", size = 64806, upload-time = "2026-08-28T10:27:18.673Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/ba7b9c0164ce1cf62bf2872db63b8483289cf0f3110d6f9390eb09e409ed/kiwisolver-1.5.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ca7f6fe0f37ca978a1e5eb7a3a68e6413f417e78e838324947ffd420202b198b", size = 1482211, upload-time = "2026-08-28T10:27:20.039Z" }, + { url = "https://files.pythonhosted.org/packages/13/dc/34da54efb4976616d45c20aae32d70e89d6e7395ed908029154d1609ef22/kiwisolver-1.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b973887ff782cfd6b67c9904ad8ca542e0bc5e4961503408b423b5a688b4d38", size = 1283739, upload-time = "2026-08-28T10:27:21.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/3a/30ffb62bee646e266e98a1b5cd276d9c75b6116fbfcb87c1190838c1b6df/kiwisolver-1.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f76fc85bd054c806960f917ec0f329e24e436f1712267d90588e4c39890caa63", size = 1301681, upload-time = "2026-08-28T10:27:23.876Z" }, + { url = "https://files.pythonhosted.org/packages/a9/8d/13c70be22a8506880b35fdc38dca36629613bc493405c79f4037f2cd2bb9/kiwisolver-1.5.1-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:828f75af2b0080c8a972e75f649ab46af008e92c6104a57a759157200b835b75", size = 1349159, upload-time = "2026-08-28T10:27:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/82/0e/993972b8ec6767f47cd69818fb3a5ff14510557d29f7d1a839be7574fa1b/kiwisolver-1.5.1-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:431dc224a1a92a5c8f582d96e505196a3b5997a7271076678da2dfde67b77e9a", size = 997613, upload-time = "2026-08-28T10:27:27.507Z" }, + { url = "https://files.pythonhosted.org/packages/36/82/ca26eddd2eda2420dfc56693449c1f821f78b485da9cbde9904c03af3f93/kiwisolver-1.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:61e9a64c7635095a6bfe483e2ff055d437c59bd45f3617a228b37277f0185d62", size = 2235109, upload-time = "2026-08-28T10:27:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c7/84/97d920881e10840b8d7c7185620298e3e4c88820b05514e3a15a258b08a6/kiwisolver-1.5.1-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:3c24cd69455e1b00ddf770c13b6e2c33e07d6dc3f2d34add0bf9277c5c6bbd46", size = 2331207, upload-time = "2026-08-28T10:27:32.795Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ce/34d74b8f25acc58800f4c09268371e8d6159cf0f1206f1e4dc7835629b48/kiwisolver-1.5.1-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:27add358abe374ebaa3b8763ef380bc99051b5a4b18d94878366a9e4f59efef0", size = 1986696, upload-time = "2026-08-28T10:27:34.628Z" }, + { url = "https://files.pythonhosted.org/packages/0e/01/f892644014612527aef7031d3306a2ffc60b3cb044f802c1561f8e5e14f3/kiwisolver-1.5.1-cp315-cp315-musllinux_1_2_s390x.whl", hash = "sha256:255605693a483db7bd5c79f60437f7bf658f7f520d61aa42722e32257c941951", size = 2496400, upload-time = "2026-08-28T10:27:36.818Z" }, + { url = "https://files.pythonhosted.org/packages/32/6d/d8284e66e697026536e5f418b9cfe56567bffd3c775e3ecfbae373605854/kiwisolver-1.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:7d38b0c279c3032e8c9cc013b405c6df8e1668dbf15465779aa7f15f61201812", size = 2302967, upload-time = "2026-08-28T10:27:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/46/0a/69a355e27f32ba50d5b6369949b6a1702e122f5277c89bc76d452b81c1c4/kiwisolver-1.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:958254518717542d02d0688d0d20cbf771da5e415e6f49543f92481c850a4540", size = 72283, upload-time = "2026-08-28T10:27:40.491Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d8/7a95be90c33dcdd52204d4aa6384d731443225b887283bbd8b61e7931f6c/kiwisolver-1.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:da3275833be0edbaf4830fae08bae3dc7219f40ce0c37eaa6c25825957e06612", size = 69860, upload-time = "2026-08-28T10:27:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/31/f8/9bc493e7f5707788ba7f621902c68f82dc3a7ba03c78fbd337b026cef1ed/kiwisolver-1.5.1-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:470d420f98d368d6f010633a20659b544c5fdfa5329e6b70219f2ef08fd4a7ef", size = 126336, upload-time = "2026-08-28T10:27:43.379Z" }, + { url = "https://files.pythonhosted.org/packages/d1/82/3aea86b3f99712db825e9ac5631bf99571e818a8b8961ff98cebd798413e/kiwisolver-1.5.1-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:83f78128fa28705fa85d01c59771c72fe81c11bd0e6155edbb9f818983a7d761", size = 67698, upload-time = "2026-08-28T10:27:44.613Z" }, + { url = "https://files.pythonhosted.org/packages/84/7d/8daafc5d2e7f9c47a4f78f8865d86d2a9cf399c2a85f86c44a993594410c/kiwisolver-1.5.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:9506e892bcc3b409831d363c6f53e5985e1c8d1f6f6b0256d00358684ff85378", size = 65945, upload-time = "2026-08-28T10:27:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c9/51dc974d9130da70a8c47a96160123443d387ffe1b6b833d6f91d9429339/kiwisolver-1.5.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cea90547bfd93807e0013a004dc76552be44fad3bc1cc2b38610a9e889ed098f", size = 1588030, upload-time = "2026-08-28T10:27:47.678Z" }, + { url = "https://files.pythonhosted.org/packages/e6/86/f3e1a730e7a995149d8d3ff9e313b6d8a17b2cf1d98a8eff139dc30463fb/kiwisolver-1.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8e4d953faaded9ec7ede36824e9814082d22d4c7b1eafbfa079ecba8cd0d076", size = 1390760, upload-time = "2026-08-28T10:27:49.676Z" }, + { url = "https://files.pythonhosted.org/packages/4f/3b/8ba25a2b5a0d2375e046f1b72de5179513f0be95aba6e7b094c89303929f/kiwisolver-1.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7e9c01d3dd7ceba4d1d436cc021d40d592466e40b9bc7f5d83dc4e98a5c9cd8c", size = 1403279, upload-time = "2026-08-28T10:27:51.242Z" }, + { url = "https://files.pythonhosted.org/packages/18/d0/278d5cb8be812740027d5ca0a7eda0c375488a88d6dce0fa60fcc2591ad2/kiwisolver-1.5.1-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37f801b5d7cc0e5a548921308e059fd2b057bb42972b591cfa3049f95423c4ed", size = 1454429, upload-time = "2026-08-28T10:27:53.213Z" }, + { url = "https://files.pythonhosted.org/packages/94/37/bcbab41063ec284c1d200efe5087cf087798c2f8916960aa8a20dd303290/kiwisolver-1.5.1-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:e68e151428b5384f766cd25739bf77c7e4a3dc93b5ded7a12118d9fbfdf78ab6", size = 1073225, upload-time = "2026-08-28T10:27:55.089Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c5/ab79dcdf5ae28909a51210ae0a1c579e97ff997b3466414f0d04c0994583/kiwisolver-1.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:8f8fddb8e323bd6eee4e54e69a39243beab22689070f4c66b472c4cc88bb89d8", size = 2334335, upload-time = "2026-08-28T10:27:56.78Z" }, + { url = "https://files.pythonhosted.org/packages/8d/8e/71d047468a189041d9c93f3b76844b924f9793b188c44bd149fa258912da/kiwisolver-1.5.1-cp315-cp315t-musllinux_1_2_ppc64le.whl", hash = "sha256:3cc210010fd2f438a3ed430b45f1b501fd13a8618bf984dc2c5ce5b69b78752e", size = 2424982, upload-time = "2026-08-28T10:27:58.639Z" }, + { url = "https://files.pythonhosted.org/packages/7d/37/1347461bbea6d0e1f0580b94ef603b18e72c2be5f667fa1653867361a00b/kiwisolver-1.5.1-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:b5664603a253efd3a75716d793d1d3a6a82723b61dc6db767b2460bbbeec4c0f", size = 2062857, upload-time = "2026-08-28T10:28:00.407Z" }, + { url = "https://files.pythonhosted.org/packages/1f/87/c7f0976c9cd0d127643351bc0c9929e0b8899d7f49d4ec238cd909e39c42/kiwisolver-1.5.1-cp315-cp315t-musllinux_1_2_s390x.whl", hash = "sha256:a7b85b2cc6ea45e5f7e8c9a30bc9fabd47cda09106cbb4b967335c3e6c43b69d", size = 2596022, upload-time = "2026-08-28T10:28:02.183Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9a/59a6f6ae6f938c15076be2c21b6cedea973d71bb1349ec84fa485fab82cf/kiwisolver-1.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:ab620eb663952455271ac37f9aaad86b73c969c02f11f53cea405b38e96a4300", size = 2395634, upload-time = "2026-08-28T10:28:03.977Z" }, + { url = "https://files.pythonhosted.org/packages/e9/2d/8982c1fb7926da5bb7ed60318c3665b5c3f941447271ac982960a11b8637/kiwisolver-1.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:cb6fae641357ed2f6e533c0d3c6504a4a5703621a50c89459e46051d56b61140", size = 75379, upload-time = "2026-08-28T10:28:06.307Z" }, + { url = "https://files.pythonhosted.org/packages/07/78/ba7b6dfa1708b82b373ac056928a30c545d5c1a627df9839dcec3c6c1881/kiwisolver-1.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:b390aec180a7c054919c04898835e1c77bced23ea8383eb2c570213bf25d1a86", size = 73011, upload-time = "2026-08-28T10:28:07.578Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c4/1407df7512a5b36cc79840e01710dc575733c461b13ab866cae77eaf87f3/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:482676e5bd48d70ac99d9fc78863469845421e01184fa83f1f9366dc49f7e974", size = 134002, upload-time = "2026-08-28T10:28:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/16/45/c37a21ad5c0ab581a93c55ad544721aaa1f0ae94edb29c6a678a23d013e6/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:072bdb15a3c19a5b5dbc8f8fb1f4e1884bf4f3507eeb4cc6334401274d37a5c0", size = 194292, upload-time = "2026-08-28T10:28:11.06Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c1/69f00d627949580e43d57af0aa465df46868d7c29801c137a55374101294/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:a5a00665d1a0e26763a7338d7e911d4598fbc1d50dd0d6b7919b7dc6c5d6569f", size = 73362, upload-time = "2026-08-28T10:28:12.449Z" }, +] + +[[package]] +name = "lightgbm" +version = "4.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "numpy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/8e/4db5e29290d7e619c307fdb8dab0a0514090af2ce3ec483050e024ec6126/lightgbm-4.7.0.tar.gz", hash = "sha256:f8e20f682c9aabd000bcf4a7ed8aa6f473c1adfecccae34ec24e823d156f4af0", size = 1792896, upload-time = "2026-07-18T21:00:56.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/05/7213965863cba1ed0150ad045bceed6276a1afaaaedbaeff4699ec4f0ccb/lightgbm-4.7.0-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:dfc1cfe8e760387be1e7ba7a214688be21fdff96e4ed9749188f83e1877c2477", size = 1877851, upload-time = "2026-07-18T21:00:35.225Z" }, + { url = "https://files.pythonhosted.org/packages/b2/86/f4fe714f2e0bf3941705a20d7f6849dc476276d71236e82ea6b0d6539b86/lightgbm-4.7.0-py3-none-macosx_12_0_arm64.whl", hash = "sha256:129535462686f274df179133643118c5c5c5667167fe6c3a28d955f0b3c8e868", size = 1498914, upload-time = "2026-07-18T21:00:36.549Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/b29580948b92e8c2f84dea70118ac702ff067dc52ec4ffb5d73c953536a5/lightgbm-4.7.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d4529acec5c6fefe4768302a529707d0ead90f6a6f42df694b856212e09695b8", size = 3349492, upload-time = "2026-07-18T21:00:37.943Z" }, + { url = "https://files.pythonhosted.org/packages/15/eb/837ea3b40cc36e22eeebb9785c01e42b2c255d033eea1d2d9ee8e2540e55/lightgbm-4.7.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d23e922acd891e77212e4d0fbcee9ba973c96dee479491341d05ba595357ebb7", size = 3476028, upload-time = "2026-07-18T21:00:39.331Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0b/c5c17d862b12ce292f24cd85d40f2f8f8981668fbdbd43fdc2625eccbc79/lightgbm-4.7.0-py3-none-win_amd64.whl", hash = "sha256:f42d1e5b32b6f170e606d7c689c6165671da98d7bf37f1addec2623efc8740c9", size = 1360833, upload-time = "2026-07-18T21:00:40.865Z" }, ] [[package]] @@ -658,178 +993,379 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/38/9b/e422a865e1d5d57d0e509b4e0bf1c1a70a7f6382c29a5aa428df994c8bc8/markupsafe-3.0.4.tar.gz", hash = "sha256:2e9ad7dd851bf45fab9f75cbff4cb493fee9979e8d8c7c9c3ee119022518edd6", size = 153777, upload-time = "2026-10-02T23:07:22.29Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/09/4c59d56b8461ae8eb0d8ba34bb25b7e618547044679d58a82ef9b2479fc1/markupsafe-3.0.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61631e08084be9e21a8967ec3139c7616ed7c5e9368e05c86d1b39562c8a57b6", size = 11658, upload-time = "2026-10-02T23:04:51.876Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f0/d6613774d86fbf6d145751d43c59875e47a6f9f17daee0aef173bd36d90e/markupsafe-3.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0930db9bdc62d22944e10b066448bb65dc9abe9112880c7cab8da54db4284d5f", size = 12050, upload-time = "2026-10-02T23:04:52.931Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f2/8f18e0b806eb13c1f8d07d917a720831ead54253a6dec011fbc78098a6f8/markupsafe-3.0.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a45c3d514f2436064db00d7fc8778d888f0236ebfed649b53d13a59e69ad51b", size = 24363, upload-time = "2026-10-02T23:04:53.895Z" }, + { url = "https://files.pythonhosted.org/packages/60/ce/fa07dbe8a5675558fa36dea033e19995bc783de2dec5f540ccb9030b06aa/markupsafe-3.0.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1e1451fab512d1bcc3dc26988ec1edb0b82c2db909132872cd9356070a6b63df", size = 28525, upload-time = "2026-10-02T23:04:54.905Z" }, + { url = "https://files.pythonhosted.org/packages/85/40/be87c01f3868ec217f8a2015089d71c22c8c5a75324822e5ed1cdd87210d/markupsafe-3.0.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bd3ce56ae2cbae3ba82b683bc425cd7e48d2ed8b10f3e818186b6f5646d9271c", size = 24733, upload-time = "2026-10-02T23:04:56.229Z" }, + { url = "https://files.pythonhosted.org/packages/4f/a7/aeedb5140afa41fc74c225e9184ab96723a6e873b6ee1c9fede7283456d8/markupsafe-3.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e124f974786f831d6043728e38296969d3579db8896fe004682f5758e613581", size = 22985, upload-time = "2026-10-02T23:04:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/c3/fc/e91352bb08c6a59da3ef0909d457bf95a5f5908fbf151b30a06d9dbcfbb4/markupsafe-3.0.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c02e8f18bdedba082cef725942ac823b9b60656db07f7e265cb31618dfd00d77", size = 22001, upload-time = "2026-10-02T23:04:58.597Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f8/bffee5e7d2a3deb59748a797650a48af7e672025cf641a79344a771ad106/markupsafe-3.0.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f098115c247e11d138ab83a28fa0323c77015007ea2df73ba5fd714dfefd67c", size = 23793, upload-time = "2026-10-02T23:04:59.686Z" }, + { url = "https://files.pythonhosted.org/packages/ed/59/b853d6628ecb4d658e1d637224846d5e9bb4adf4f8df97f3be9f29dce2ec/markupsafe-3.0.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d5f93ebbeb8032d47e349328ec8662d973d9b05a70b3c35df1f91fe419b84749", size = 22640, upload-time = "2026-10-02T23:05:00.768Z" }, + { url = "https://files.pythonhosted.org/packages/09/b2/1506df394f0f075797c418d0301498f49e43be194e3ffcb49e6fe6ccf022/markupsafe-3.0.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:64511c54db4e4987aef4c41923235927428729e8174c5dba488429be70a998ed", size = 24074, upload-time = "2026-10-02T23:05:01.813Z" }, + { url = "https://files.pythonhosted.org/packages/c7/81/5ed69cda630ac69ef60d06c09ba5a7f84ff66a2e28cf986fd5614ab3c6e6/markupsafe-3.0.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e1a622f13970d81f95d0c72f9dc090dce9085fccfa4c9f2174377ee32bd15786", size = 21563, upload-time = "2026-10-02T23:05:03.239Z" }, + { url = "https://files.pythonhosted.org/packages/0c/fe/fb1e79be0fea60aa32602ebefc9c35a82bb42b4df157285ab7dfec12341a/markupsafe-3.0.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9a7f43c0b202b334cc9184af09bb8f21d3a209e038efaf106936fb69e6b026e", size = 23048, upload-time = "2026-10-02T23:05:04.479Z" }, + { url = "https://files.pythonhosted.org/packages/c8/52/7632a53360671a9b750cdbabaf9cdd89f18b42248b8e4cb42c0b0296e459/markupsafe-3.0.4-cp312-cp312-win32.whl", hash = "sha256:f0ec3b750b59375eab5b0fb2b9254810c00a3375be6d789899f1055a1d556237", size = 14108, upload-time = "2026-10-02T23:05:05.513Z" }, + { url = "https://files.pythonhosted.org/packages/3f/bf/62495e180b7000aaf30000fff849e933f74264638057176cf46852500adc/markupsafe-3.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:11935df9bf455ed0c04eb87bcd720f02b1fe5e02128a9430f23aed6f93336fc7", size = 14303, upload-time = "2026-10-02T23:05:06.538Z" }, + { url = "https://files.pythonhosted.org/packages/c5/8e/4c24208776a65878d656996945aacfbfe010d3720d1a98fc0eb8491fc03b/markupsafe-3.0.4-cp312-cp312-win_arm64.whl", hash = "sha256:a4bbd2d87dd233b9fc5812160c3d0ffbe42edc22a26ce0469f58479ede633fe9", size = 14174, upload-time = "2026-10-02T23:05:07.617Z" }, + { url = "https://files.pythonhosted.org/packages/6d/18/4bc5ba32499e87bb2b0ef5b3a9bb9c00a131fa961ddf0be548cb550f548b/markupsafe-3.0.4-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:de8b364c423ef0a4bad9069657d617f9a5d2b2062457a89b1fa16ee199c399c1", size = 12786, upload-time = "2026-10-02T23:05:08.709Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6f/17f0c099bf25f3e31e63cc19244d9f6af861a9a4ab778c203997903cfdd0/markupsafe-3.0.4-cp313-cp313-android_24_x86_64.whl", hash = "sha256:34bdde374c5932765d7dc685c4a1d191a3207852d67e8e0a9eb6ea85156181f1", size = 12510, upload-time = "2026-10-02T23:05:09.93Z" }, + { url = "https://files.pythonhosted.org/packages/11/af/1a141081b905036ee904ec4bd945e1f70b4e1b32d33c4e59e8cf1d58b247/markupsafe-3.0.4-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:6bd9e1788e15bfcf6a9082de42e30387e7b85d211ab21e57a939bb8cfaaf8d96", size = 11583, upload-time = "2026-10-02T23:05:10.884Z" }, + { url = "https://files.pythonhosted.org/packages/e7/0a/a89385ae590232622a03e091805cff12f24fabe6c11e0e8bae096cece81c/markupsafe-3.0.4-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:5066b244f576f91afc8ee3ba029a89f99d39c79b1853fe9d39bea9f0afbec148", size = 11801, upload-time = "2026-10-02T23:05:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/ed/85/ea548dc013962eb73653124bc595635fbf9e0fa41d1f181a967ccb784dfb/markupsafe-3.0.4-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7a83aa6e4805df46fed18e989d3d16f86ef60cb50bbc8d9ce3a6be89165fbf6e", size = 11443, upload-time = "2026-10-02T23:05:12.887Z" }, + { url = "https://files.pythonhosted.org/packages/cc/72/15f2e5ec9cf2eb00d5cdfe968d94e4156a7bd7303832c3f3b2c403a36839/markupsafe-3.0.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d1b7d9308288661f56672b1b157d75fc536714d3638487bbea17b6318a78248", size = 11665, upload-time = "2026-10-02T23:05:13.829Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e0/4030bea613677e333c8a2c901fd405055f657f9d06acba5b7357984b6ef7/markupsafe-3.0.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73e77980c7207854f00fc4e71fb1626868d5740ab4012623d55c7a99ad122a72", size = 12061, upload-time = "2026-10-02T23:05:14.807Z" }, + { url = "https://files.pythonhosted.org/packages/f3/a5/28b76a7449eb702966b88bef599e2360b411fbb3afeee8fe560939be06ec/markupsafe-3.0.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7018d4af1cd272e847aa5917983ab5e83e4f6579f9dbfecd4a79c0ca80b144c2", size = 24395, upload-time = "2026-10-02T23:05:15.909Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/21232811afc3a063b5e934b1ae2efda52f46154ec382f585149c020e61fe/markupsafe-3.0.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c90d5b3d4e944e065a301d741b3c1d784f6bd1f503aa68b4967e32b2ba313d85", size = 27183, upload-time = "2026-10-02T23:05:16.976Z" }, + { url = "https://files.pythonhosted.org/packages/14/38/6ccdfa5b59049cb36fb80cbc80aee9cf1fc9bb77d1335ad435f2070b08cf/markupsafe-3.0.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:18a801868a884f216e784d7d14db2a4077143ce7610440aee2ce8f734e7cfcde", size = 24772, upload-time = "2026-10-02T23:05:18.209Z" }, + { url = "https://files.pythonhosted.org/packages/63/e0/cec6865dfe88cb48fedd4b20aed6af5158e41092adcbf3e028bcc6ec2108/markupsafe-3.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434139499bb20b502ed3baa1f169e618f924a97e7a777fea1a49446d80106cf6", size = 23017, upload-time = "2026-10-02T23:05:19.286Z" }, + { url = "https://files.pythonhosted.org/packages/ee/76/6ed4940bb7648a9aac457c14f870cfdd5105f139a0fb1f29cd61fafa47d1/markupsafe-3.0.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9e227f3dbe6bde7491cf0a9965d00b88c6b1a4a95d11480ddf88bb96d397c19f", size = 22036, upload-time = "2026-10-02T23:05:20.352Z" }, + { url = "https://files.pythonhosted.org/packages/a1/4f/ed476226d4fe46a09090a36025bf319296810028df55eb12f1253b540f3a/markupsafe-3.0.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b8cd1f918b26fd7b1832ece557cc18f2d8747309ff8b3f0ef9d4250c5ad67a39", size = 23786, upload-time = "2026-10-02T23:05:21.576Z" }, + { url = "https://files.pythonhosted.org/packages/9a/35/66ff30450e35ef5fba9ebc930c9411747e537fd9447b65e44f5007e2b84d/markupsafe-3.0.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a5fcffb37e602b0b3c1638a97746b9b96125caa9bcf6fa41d337a9261de231ee", size = 22672, upload-time = "2026-10-02T23:05:22.922Z" }, + { url = "https://files.pythonhosted.org/packages/32/0b/72f45ce4b4efcbca4b80cf1b06703eff0be8d37e82abb78f66c85a7ead1e/markupsafe-3.0.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5989cb26b2e1efc6a42216a9f6b5ee495ce5ace2e5b352a9af489976b32d1ee2", size = 24107, upload-time = "2026-10-02T23:05:24.175Z" }, + { url = "https://files.pythonhosted.org/packages/d2/03/71776e5fdcba04614b384cc102e8a4198208579d896fd1394cb7cb9aa900/markupsafe-3.0.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:add96447a86d205ab616665d53b2950ee81083757f56e6ea833c8b2917646b46", size = 21615, upload-time = "2026-10-02T23:05:25.215Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5f/801ce02a02e7aee0f784b1ec7843026178f6adeb9c93ac67eb1992a9a84d/markupsafe-3.0.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2628d3a8cb648ecebb3c5d6b0a1052d400e4d8b7ac0fb786be8d285b50040d17", size = 23076, upload-time = "2026-10-02T23:05:26.423Z" }, + { url = "https://files.pythonhosted.org/packages/4a/85/c43776625428f3bb4a61e8633940400e3efe6409e3c6f5bff26de5e45618/markupsafe-3.0.4-cp313-cp313-win32.whl", hash = "sha256:672d207103e6b16ca098611b0f9efad6bc00afd47c03d6ef62186495ca677dc0", size = 14118, upload-time = "2026-10-02T23:05:27.716Z" }, + { url = "https://files.pythonhosted.org/packages/6f/36/163da64de88a13db79214ef75fa041be7fa13bdb42261cf5b7484de14bfb/markupsafe-3.0.4-cp313-cp313-win_amd64.whl", hash = "sha256:1f1f9477e174582b0a1b583d60b66e1f2cf5d3fe12cee985e4aedf44766600e5", size = 14313, upload-time = "2026-10-02T23:05:28.749Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a8/9b662783ffaa1149221432a923cee562f78b9cbbb8baa3df9b3753e63e1e/markupsafe-3.0.4-cp313-cp313-win_arm64.whl", hash = "sha256:06de8ef6331f6e822c28d577dc8bf43fe398800477c49498f38fc38b67ff33fc", size = 14189, upload-time = "2026-10-02T23:05:29.917Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c3/a944f3b0df22bd129e96915b9f4e98d2eeca6516687d7618304a966c3c74/markupsafe-3.0.4-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:4ed644d75aa94a2baf7ec3a96eaa160ea58c742eb9d27c6506053c5c40fc84ed", size = 12787, upload-time = "2026-10-02T23:05:30.971Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d6/a44863f69d88b6c7e27889108f70d47aed259edf89d5df3c5fca1eac87d6/markupsafe-3.0.4-cp314-cp314-android_24_x86_64.whl", hash = "sha256:6d2a9efe686f9de00d0d1ea32a4a5a86d558a2277501bd78d964214eab625e59", size = 12525, upload-time = "2026-10-02T23:05:32.263Z" }, + { url = "https://files.pythonhosted.org/packages/17/8f/168ba80e532dd6a93f96f8f706f1ad41d7990b6e1aeedc1cc0d211a33497/markupsafe-3.0.4-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8781a792a070cf2bd1b86d3aa943894115faaba6e88122a7bf32d62072742453", size = 11589, upload-time = "2026-10-02T23:05:33.251Z" }, + { url = "https://files.pythonhosted.org/packages/32/b3/aa2c95a574d3af39403a469b295886eb9b6d448da568cbebb5a2cbfdc2e5/markupsafe-3.0.4-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:971a3bbb75d97ae4e2e8f7d4834236f86f85f0c85e04ab2e191db1123b04f80b", size = 11801, upload-time = "2026-10-02T23:05:34.315Z" }, + { url = "https://files.pythonhosted.org/packages/60/d0/34b810107d83840e768bf485de795893ebbae35b26ab061b487adfa0a692/markupsafe-3.0.4-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:8909c2f1c6dd65e054ac4b573a91c8384d1492281e55d82d159d653f7a13adf6", size = 11447, upload-time = "2026-10-02T23:05:35.302Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ab/2f8488f0f817a39fca068d2b17daf446bf5cdb3eae28c3720af534d873b4/markupsafe-3.0.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:4cf3468d5ec187ffffcaca8e61929a37448f215dafc1386a12c750a72fe53634", size = 11722, upload-time = "2026-10-02T23:05:36.363Z" }, + { url = "https://files.pythonhosted.org/packages/ad/40/e2d117b048d47282ade906fbfd92814cbee5647afc13fda88a3406039372/markupsafe-3.0.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:52704c5d36eb6dda8866493decd61111fff86244c9b1ad225ca01b9e91e5970f", size = 12061, upload-time = "2026-10-02T23:05:37.397Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a8/73a81135e85ba66217f5af7facb03bbb386807e1a729ab64532e4c802652/markupsafe-3.0.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1caa2fa5a6184fb233153b35f654e6687bd555476f6170f29d8ee9be1a8b0af9", size = 24434, upload-time = "2026-10-02T23:05:38.407Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ca/fa9216dd01efee2dfdacafe7df32b4d0170fbac694b0c258a193d6e53999/markupsafe-3.0.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:387d8cd30e69b3f0a72877b9ae717033396404e19095b17fe89753a981fda44f", size = 27183, upload-time = "2026-10-02T23:05:39.581Z" }, + { url = "https://files.pythonhosted.org/packages/fa/4e/a469509e538d37af51103b17b073126973f2b1cbf197ff32c7ddf025cfe5/markupsafe-3.0.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:051417f74bcaaefa316276e0ff723f541616ca51043d070da00249d9bddd3e3c", size = 24813, upload-time = "2026-10-02T23:05:40.671Z" }, + { url = "https://files.pythonhosted.org/packages/8f/db/d7282caf7ab03af44d5d6fdbaa019b35c7d7f1c90588b839c07cba640d6a/markupsafe-3.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8e9f292fcda89b324f2f5c91d13f1424a153e40fc2756f38ee23b15835ff300", size = 23049, upload-time = "2026-10-02T23:05:41.864Z" }, + { url = "https://files.pythonhosted.org/packages/30/f3/b6a425206e6964efda6acee544d0eb01d1501784d0b8e2dcc74986f33b17/markupsafe-3.0.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:df1ae86ff54725a01fa1a0510b914ca53a161b7050be74f6204e24aded5971d0", size = 22088, upload-time = "2026-10-02T23:05:43.014Z" }, + { url = "https://files.pythonhosted.org/packages/ea/8a/84d3582fc1f0d5bd466cdf2eebf175e172158a6e70701aacec1de1b35430/markupsafe-3.0.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8965520ac587c94a4ac48b729be3d8b8de00af39699b17585dfb599babe77977", size = 23846, upload-time = "2026-10-02T23:05:44.098Z" }, + { url = "https://files.pythonhosted.org/packages/1c/65/db101cce51b7ba4864ac491a9859d297dd1adf0e55b103fee9db9c47c527/markupsafe-3.0.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:340cbb1957ba99929cbf19a75626d36ba1ae21d1730b287d1cf7f824a20c4fc7", size = 22674, upload-time = "2026-10-02T23:05:45.23Z" }, + { url = "https://files.pythonhosted.org/packages/e0/49/ddee9813d71db0c7a5c9d97c832125e6758a0c844777f1cf076569bb0e22/markupsafe-3.0.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:3a93d9616ddecfb393727a0041a562cf0b15a244e20f2bd25efc7949be4c4f17", size = 24104, upload-time = "2026-10-02T23:05:46.398Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0e/7d8518d726726870a2399d69fd30d0fa36c5e57a2132c336b58d7c491073/markupsafe-3.0.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d2e56fd3b00222722abfb3f5f0759ddbae4b90811b5ad4343c64030ad1bde70c", size = 21637, upload-time = "2026-10-02T23:05:47.48Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/b505e8a361ba557dbf3b3aa7331ea39b00d2022a26e925ff8463b9714bb3/markupsafe-3.0.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0d9c47709875fdb321452056622e930c52afbc07a7d780762fbb8b4d91ce6fa4", size = 23081, upload-time = "2026-10-02T23:05:48.611Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ea/9cc3cea873f980c75cbdb6f4277ce30ee955de38be0b3d02f14c108e0698/markupsafe-3.0.4-cp314-cp314-win32.whl", hash = "sha256:38fc55594dab834470b6733dead2ee9e3f657fb0608c769dcafa0ba5ab52f45c", size = 14272, upload-time = "2026-10-02T23:05:49.707Z" }, + { url = "https://files.pythonhosted.org/packages/80/f0/5792ff768a410f93ee3f84fc19345295ffc352d2c936b424cb37e514714c/markupsafe-3.0.4-cp314-cp314-win_amd64.whl", hash = "sha256:c1bc67752d5f21013cfe430df4062441714eab79f65a6a05e01505957e9c35fe", size = 14501, upload-time = "2026-10-02T23:05:50.788Z" }, + { url = "https://files.pythonhosted.org/packages/5f/cf/3d074a8edffcc6899355232ff2543ae8d929733239596423b7db79698bc9/markupsafe-3.0.4-cp314-cp314-win_arm64.whl", hash = "sha256:7e1636da3d8dfc220b6dd10264db5f2b165e4888c4518594898fbe381049af8a", size = 14364, upload-time = "2026-10-02T23:05:51.857Z" }, + { url = "https://files.pythonhosted.org/packages/d9/31/87ce42159aae2163cf3bbbd0c44bc87780510eecab1ea3859099aed95dcb/markupsafe-3.0.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:805c8b84534fa10891890f0e4be39f3a99e94615d93e8836bf9fa1fdca2feeb2", size = 11759, upload-time = "2026-10-02T23:05:52.951Z" }, + { url = "https://files.pythonhosted.org/packages/5f/53/b047207eeb7752e960aca3eb1df5fb7eefa7dd4c62ac49bb156456c8a702/markupsafe-3.0.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fa95848c929b6a75f6848d3c9793e59db365ee436776e57db835cdbfa79ba977", size = 12096, upload-time = "2026-10-02T23:05:54.066Z" }, + { url = "https://files.pythonhosted.org/packages/ee/51/4326c88a13c7b755657d44b4bb986f8c3d9843ecba7e22d98661d87f9a57/markupsafe-3.0.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e916035e3e9930cbdfdd10abf48861340221857f45509565898e012263f7b289", size = 25699, upload-time = "2026-10-02T23:05:55.15Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bb/990581b7474bfcf2cf34bed6ba5ea23bd87adb9d671213d68e88620e7a6b/markupsafe-3.0.4-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b4d12837e0203bbace818ff4a7461afdcd78bcd782351cea148139180d7bcffe", size = 27804, upload-time = "2026-10-02T23:05:56.29Z" }, + { url = "https://files.pythonhosted.org/packages/6b/89/89491878c28e8291f5aa2fffe2c2d57230d10ae366d55dd810b840513d78/markupsafe-3.0.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5086f9975abb1ab531ee6afca1761e4b59a19b446f3f6522ed776963228cfe5a", size = 25912, upload-time = "2026-10-02T23:05:57.416Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/680998b54efdea06fc114565cd739b6d059f826a0279219b218dfa750d29/markupsafe-3.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4a635a0487774f841cb1fb62e907e7195cc95bc761e053184b8acc3ceb20733", size = 23623, upload-time = "2026-10-02T23:05:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/ae/75/2709f5ac5de9467b40b10e2bb8f89cc63dfb74582e09aa734b1124a217de/markupsafe-3.0.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb96e6e088d6cf71c1ea977510948320234824cf226e32f6f6e044f7a9c82b34", size = 23301, upload-time = "2026-10-02T23:05:59.94Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c8/39eadc6c5b14c9c7679bfb98f4d4c6a97863b5beb91839aca4d2d6e16e55/markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8b5d563170ff8ba3181caa967c99a3c804d1dedb702c7cb93a6a7c32247da978", size = 24950, upload-time = "2026-10-02T23:06:01.289Z" }, + { url = "https://files.pythonhosted.org/packages/1a/5e/01037f8a43e8ccb0bffb4fbdc5212db05bf080fdd7286cd392332d58128a/markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:396ec4e65cc889f69786b3b89478b471cee5a3bcf468b9d9bb03e1a30fb291fc", size = 23330, upload-time = "2026-10-02T23:06:02.441Z" }, + { url = "https://files.pythonhosted.org/packages/d4/f4/23e83ce0596bb0cbe670502d31df8f757bbd01a392aa486fa3b40d1ed399/markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:15ba9e28640feef770374b116a6f019c21f52404aeabe516aa7f800587b98cfc", size = 25239, upload-time = "2026-10-02T23:06:03.579Z" }, + { url = "https://files.pythonhosted.org/packages/88/5b/3708897368073cc683d524750474f41a77d2986152c380dcc55b20fdf340/markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d920abdfa61279ba1a2ef9484aab07bf03331f8c08a10120fa332353d06e6932", size = 22767, upload-time = "2026-10-02T23:06:04.699Z" }, + { url = "https://files.pythonhosted.org/packages/c6/61/ebda1307864b409e6b3115757a3d4a09cca46cfb6cc65191b5de226b424b/markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a9f54054101545a9a9cccefddf54316aa6e4491611fcbef9e91b3b6bebec04f6", size = 23668, upload-time = "2026-10-02T23:06:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/09/15/98075cceac3b5ba0dbb8e4762a847be967d2befc349a2cf2d0ac77f62c9d/markupsafe-3.0.4-cp314-cp314t-win32.whl", hash = "sha256:12a606a492de952afcb43b59a14aaaaad120e708d3663dd0fdf2d738d427a691", size = 14301, upload-time = "2026-10-02T23:06:07.109Z" }, + { url = "https://files.pythonhosted.org/packages/0b/a3/768b560fcc4156685cb563d922b217810cfa7bc135773367f62f1f9d2078/markupsafe-3.0.4-cp314-cp314t-win_amd64.whl", hash = "sha256:a18f38cafc329bac5e3c2b96c765b4c96d3d103421ed22ab7988c1e3fce27464", size = 14526, upload-time = "2026-10-02T23:06:08.276Z" }, + { url = "https://files.pythonhosted.org/packages/93/63/da554b4c97a6b0ea3229ca7fe8cbfb620be81613d517f482e85958550537/markupsafe-3.0.4-cp314-cp314t-win_arm64.whl", hash = "sha256:eba154571c16e032112afac0dc2dfe9e63c2ceb7aedd07bb7eecf2ce26d4dd4c", size = 14421, upload-time = "2026-10-02T23:06:09.402Z" }, + { url = "https://files.pythonhosted.org/packages/a9/30/54d11c8ca027114898cab97421fb39e4ffd9ddf47cdbc44df2ec76722da9/markupsafe-3.0.4-cp315-cp315-android_24_arm64_v8a.whl", hash = "sha256:737c9c3981998eba27f11786f84fddcbabc74068b72a4a1f454ea02094b57b65", size = 12791, upload-time = "2026-10-02T23:06:10.485Z" }, + { url = "https://files.pythonhosted.org/packages/10/6d/97c913e253a14bd3cd0e15a5c56d13203b823fa7ee32498342896a072dc4/markupsafe-3.0.4-cp315-cp315-android_24_x86_64.whl", hash = "sha256:489505b03f692c3f376394e49194fa7a7f9e8558d6e293a7056a0032b0c38163", size = 12527, upload-time = "2026-10-02T23:06:11.834Z" }, + { url = "https://files.pythonhosted.org/packages/26/f9/b86d032042a4d597d9e1997f0e5f63a3eedaf11258e0a05760b0a0a826ea/markupsafe-3.0.4-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:077293e425f28ec737dbcad442a71752e28f8ae27cde3d68acd1fb212091cd92", size = 11602, upload-time = "2026-10-02T23:06:13.122Z" }, + { url = "https://files.pythonhosted.org/packages/f2/dc/73c14c1eedf0ac5fa3292ba43435e6c49d2c2050f33cebde541f8f4807f1/markupsafe-3.0.4-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:9348cbb300d224fe3b89793262cb093504d4ae927004468463f745188a193e4a", size = 11817, upload-time = "2026-10-02T23:06:14.227Z" }, + { url = "https://files.pythonhosted.org/packages/8f/69/2c2fcaa5fcee22d72c7819c0d536fd181c74a688e6143845419579cd2863/markupsafe-3.0.4-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:b807e598953730f82e4eae3bd30f6a122cf6b31c398c6b504c0e04c13c170429", size = 11446, upload-time = "2026-10-02T23:06:15.574Z" }, + { url = "https://files.pythonhosted.org/packages/88/54/9e5ec76c62e6e2834d5a93623018c943e8b3bb41d663e3fd4c03303b9b85/markupsafe-3.0.4-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:799c39bdf5e2f1292fedd3009f7b3c9e760f10b2420cb9638d56920840ff6db8", size = 11719, upload-time = "2026-10-02T23:06:16.701Z" }, + { url = "https://files.pythonhosted.org/packages/96/24/3ec292b44064c16229e064d770b2625bd8ea941aa61f44905a9fa44942c0/markupsafe-3.0.4-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:ae9dcb8fbe244cb82f8a6458b455b927a03685e383d9bacf1ea5ce180b96dc97", size = 12075, upload-time = "2026-10-02T23:06:17.855Z" }, + { url = "https://files.pythonhosted.org/packages/aa/85/b64fdb1f304848518742136983c24e96d967bfb59a0ea160e92736901ab0/markupsafe-3.0.4-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bced6e2a6dba6a28f7dd3c6ce14df1b2dd495923f16ea484cad03decd463b2b", size = 24656, upload-time = "2026-10-02T23:06:18.963Z" }, + { url = "https://files.pythonhosted.org/packages/9c/18/23997d4c65b355da6390d61cd56e0ab3befd6ba8dda25cb40c602bd0fa6b/markupsafe-3.0.4-cp315-cp315-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3882fb412298575bae3b9c46868251f15cc69307359f87bb1b382e53d6e5a2c9", size = 27737, upload-time = "2026-10-02T23:06:20.117Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/35998dead3c6af88c38265a56e58100211f036234ab88eb2283fd4cbce44/markupsafe-3.0.4-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:04e7902ba80ee4bac1d50a549606527a1dcf0476cd81403db41099d3b60ec653", size = 25003, upload-time = "2026-10-02T23:06:21.284Z" }, + { url = "https://files.pythonhosted.org/packages/82/96/ef49135ce260db4ca4a12b119ed468449cd248db6b1468e2112b546d7a2e/markupsafe-3.0.4-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:925f929d6b59a8b3f8b8c6ac363cd0af7eecc81efb3071770b3c6717c450a369", size = 23111, upload-time = "2026-10-02T23:06:22.524Z" }, + { url = "https://files.pythonhosted.org/packages/50/7d/83126e338bd88c17a220668235368ad719fd4638e426739858cbb8508f77/markupsafe-3.0.4-cp315-cp315-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f68edfc67aabac33708941f26f22a7b8e9f81429bc0cf249fcf7d66b23af8d19", size = 22403, upload-time = "2026-10-02T23:06:23.785Z" }, + { url = "https://files.pythonhosted.org/packages/83/dd/daf7e420de23c8206c365204e7b85e1251d8e19d34196a56336f316e5ed2/markupsafe-3.0.4-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:e5c802729725bd07e2bc3ab7b76dc7e0bbfc53129d8f1eb1c002c24cf774717e", size = 24083, upload-time = "2026-10-02T23:06:25.037Z" }, + { url = "https://files.pythonhosted.org/packages/19/3c/11eecdc06bc44ad5570350085b572ebf049e8f9a38d1ece6d76640b739cd/markupsafe-3.0.4-cp315-cp315-musllinux_1_2_armv7l.whl", hash = "sha256:55ffd6ce583d97dc71dc92e930324c8c0d25aea7e3ade6ae54ef77cedb096811", size = 22931, upload-time = "2026-10-02T23:06:26.328Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9e/ac0fd77f2a726e56ecc3ca0235d095feace1358d1b822406c2a2ef26a4dc/markupsafe-3.0.4-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:2cb3dd71fc6be918ad4264346a8ed69485f9b7ed7bf35495d8e22807cd6b8bea", size = 24299, upload-time = "2026-10-02T23:06:27.742Z" }, + { url = "https://files.pythonhosted.org/packages/d7/09/c6bd842ad58ff5b3bc76eeed7e9a42a6f11adc5d090ec697b72c9672731e/markupsafe-3.0.4-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:94f5407f7bc64fa6463906b896f9904beeeb7dd8dc116ee8e9056c8714ff9916", size = 21948, upload-time = "2026-10-02T23:06:29.274Z" }, + { url = "https://files.pythonhosted.org/packages/a3/46/82f586711fed61e86faa1ee1bc317d68cd45a10c8bdbe3f7d1fdf9026ad8/markupsafe-3.0.4-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:2dad610540cb2e6272855c178f08ae9a1c7ac258a7fb71660553a5f104b42741", size = 23150, upload-time = "2026-10-02T23:06:30.583Z" }, + { url = "https://files.pythonhosted.org/packages/19/2d/2dfdce99318abbfa26925195fbc17db188c46a1ec6457be121b6f9cfeb42/markupsafe-3.0.4-cp315-cp315-win32.whl", hash = "sha256:03470d1a8268e692ecf79ecd565593e59d44219377a7ead61f1f1b94c1f7ff6b", size = 14269, upload-time = "2026-10-02T23:06:31.949Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ec/6000fd82e8791e58fcd0456ec20f098957e2b03d5ed02eb73241a577c0ba/markupsafe-3.0.4-cp315-cp315-win_amd64.whl", hash = "sha256:d882a373d8093c2941e01291b7ced96e9cbe4781da9a7751ca7e6c70385e5214", size = 14496, upload-time = "2026-10-02T23:06:33.258Z" }, + { url = "https://files.pythonhosted.org/packages/bc/66/e73bd5016421d5d6e2fb6de7dd609f9de020942ac8c626526bd8c6eeaf82/markupsafe-3.0.4-cp315-cp315-win_arm64.whl", hash = "sha256:353bd63081912ab8cfa6a0c7d185934cdf8426f04c618bba6bc4b394f2069b67", size = 14361, upload-time = "2026-10-02T23:06:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/90/df/cb8c3dc98d313a951df2f8968f44e4cb5643df6d3cab749a530ce2f7d972/markupsafe-3.0.4-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:c61750fadcd119d0825bcb7d7d675dd264dcc89cc05292aab5be68ebdbb374ad", size = 11760, upload-time = "2026-10-02T23:06:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bb/4af9b3ca0753d654ac75f9531d5bd741bb77ca6e696f36807c475ffc099a/markupsafe-3.0.4-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:1c0df495a977d10460a94941799c72d5b5ab03d3858d949b55b5a66c8f371c99", size = 12108, upload-time = "2026-10-02T23:06:37.089Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d4/b56429313aee5fd59b079c3df5615299959e25e7113eb6d8caadbdd7d38a/markupsafe-3.0.4-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02fa4acbc6a3fc5c693c34d4dd8c1130b7fe99cc915181b0ddd6f72aeb296002", size = 25762, upload-time = "2026-10-02T23:06:38.419Z" }, + { url = "https://files.pythonhosted.org/packages/65/f5/34c181e891aa4f7d59c918584672e0c5eb7fffe76c1387d1246008bf4081/markupsafe-3.0.4-cp315-cp315t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:05295589e619b9bed252a86b532b8e27350abc372d18ba89b59375325e91ec1e", size = 28400, upload-time = "2026-10-02T23:06:39.819Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b5/ad14694fd0ac9a5ce30bc6498f2999378f418583dd1679cca5a1b512957e/markupsafe-3.0.4-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:be6cb0c799abb0e2ba3e618e6d28ddddf7e485f6c2ce938dfa237daf3905072c", size = 25946, upload-time = "2026-10-02T23:06:41.381Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a8/26b606445387d0ceb1eb1f21840094b84e4e3c3c3983d80d10b89823b490/markupsafe-3.0.4-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e9867520db70d37f7fb421a7f0d8adb40171011fb84ce869afa1a83370dfa8", size = 23634, upload-time = "2026-10-02T23:06:42.748Z" }, + { url = "https://files.pythonhosted.org/packages/39/a2/b8814de672f1f0094d498bf646f2fec9d6356b503d28ef500b71c5095377/markupsafe-3.0.4-cp315-cp315t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f03460ff076f70ab595bb45a0205ccea1971443575b6920c52e755dec2b3fbfe", size = 23488, upload-time = "2026-10-02T23:06:44.176Z" }, + { url = "https://files.pythonhosted.org/packages/db/c7/287223376fb73335a3cc5d6eb22c6ab01358cf33945a9c39c06b9dac3f4b/markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:436e3ffc6310d3c41878c601db29098102fe5d8a467c49da4a4125254e0980f2", size = 25037, upload-time = "2026-10-02T23:06:45.646Z" }, + { url = "https://files.pythonhosted.org/packages/f9/29/4df8355e313426d19e62ba33e0253c009ca12a0894ee77d67fa67255361c/markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_armv7l.whl", hash = "sha256:4e2c4809c14559aa7ef426f27fb35afbb38104c349a903bf8f3600456764bb38", size = 23543, upload-time = "2026-10-02T23:06:47.264Z" }, + { url = "https://files.pythonhosted.org/packages/71/e5/8377731e8495668dcc768f645e717df18318c841edaf023a99395f6da9b4/markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_ppc64le.whl", hash = "sha256:da2af0d7aebfc2074080d72efa6ab8317c62481ef1f896f65d9999c1c01f4494", size = 25282, upload-time = "2026-10-02T23:06:48.795Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5f/373456e37ceb1478d657d6fe769cbe0a39f0a8dfc1548eeb19c471eefdd9/markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:aa2c838cc024642cc04c6854232f32b43e5e22833dd11119c1766c7873b8370d", size = 22993, upload-time = "2026-10-02T23:06:50.31Z" }, + { url = "https://files.pythonhosted.org/packages/d7/93/2cbd5628435afb6f541bbaced4bce0c2edac4b09a142e6e928b8b0da9858/markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:b91cc9d336957239ff200f30097e6fea2dc6d6fb3c81e853eaa09eac904fd894", size = 23712, upload-time = "2026-10-02T23:06:51.759Z" }, + { url = "https://files.pythonhosted.org/packages/81/99/157e10966b033b363aeda5263e82596ee232a0b1d082fdbf90aa417ff083/markupsafe-3.0.4-cp315-cp315t-win32.whl", hash = "sha256:e49fb0d1ce92cfa0cb198cc5b1b11cdf9d0638658e2a2db2687e39db7c87fc78", size = 14300, upload-time = "2026-10-02T23:06:53.241Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/55884815414c9706a23deca150b72c25a62109e65b0b6ce232077802c719/markupsafe-3.0.4-cp315-cp315t-win_amd64.whl", hash = "sha256:4f6e0852a0283b1b1fd776eeb7b766a5f440b3e2bd31ab51af3b400585f3965c", size = 14522, upload-time = "2026-10-02T23:06:54.729Z" }, + { url = "https://files.pythonhosted.org/packages/92/f9/ecbde7149e95b8a0f18e16d5d747f7dc06049d5da2e4f77f6f5e4a1f46a8/markupsafe-3.0.4-cp315-cp315t-win_arm64.whl", hash = "sha256:39dbacefc411633db5b4378b066a9aca70a3d7e2922c9e578d825f844026eeba", size = 14417, upload-time = "2026-10-02T23:06:56.246Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.11.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/c8/9aa712a0afb882649424dd8de8ad9aa6235e796e84c6052e8f6dc1598d0d/matplotlib-3.11.2.tar.gz", hash = "sha256:cec596316640f2b394b8f0daa0ea61a8eae82d017b620b9f202befb972a59ea4", size = 32660610, upload-time = "2026-09-11T19:05:31.214Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321 }, + { url = "https://files.pythonhosted.org/packages/cb/ce/1bfcc4873b121597791ad74032943b123218c0613af0b97e8dd05e916fb1/matplotlib-3.11.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef752769cd962f39ea0b6ffc82d1ea43a0012c5a6157c7a075212fa509cfcff2", size = 9476466, upload-time = "2026-09-11T19:03:19.45Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c4/7f5f3601ee69baf072c0c7d3ce60c03e0618621c5a56c34a62a460e29d11/matplotlib-3.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ef31985c4dedb5f1424e1aec6849a47dd37689cb7fa3c20b1b82187f26806261", size = 9305583, upload-time = "2026-09-11T19:03:22.39Z" }, + { url = "https://files.pythonhosted.org/packages/b8/90/2b3fd67ee273163faeda6d514be70b5596eaa0fd77b60ffc294ad0b34f5f/matplotlib-3.11.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df4f7784aca81a94f254c0a2767d592ee25f407e488f5fa7203e51093fb6ca27", size = 9860353, upload-time = "2026-09-11T19:03:25.049Z" }, + { url = "https://files.pythonhosted.org/packages/f4/84/32549e7a462dc311aed2ab62e5d2538028840b5c53a8be0195c789937c3d/matplotlib-3.11.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b9a7ad579856284135e401ecc918c5f8a017ee30539298862a109f51b971710", size = 10670348, upload-time = "2026-09-11T19:03:28.108Z" }, + { url = "https://files.pythonhosted.org/packages/84/39/02e21b74f7439bd643d717ea846006d46e309e6d29b632b57751265311d6/matplotlib-3.11.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3aa4b8516fd26659e4363abbf317c703d9116496c5db2e9d0609a2866dd39dd2", size = 10810580, upload-time = "2026-09-11T19:03:31.402Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/0d239bde12b308262265c2d98909b2f0ecad2b5deeae96241642e822e9c7/matplotlib-3.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:c5c1c68ee401fc98271263410f0e5ce88285abacf7627132914e8adf3d70ff43", size = 9349409, upload-time = "2026-09-11T19:03:34.195Z" }, + { url = "https://files.pythonhosted.org/packages/49/a8/06baf901c02246c8a222b655cc4540ef9c15e1549a04e07927f9cde716c3/matplotlib-3.11.2-cp312-cp312-win_arm64.whl", hash = "sha256:643ff850d8e0f5b8319337f87ed3cb59506afb3df3cc48de777d85871233be7b", size = 9028084, upload-time = "2026-09-11T19:03:37.032Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/fc58855a3d17f6cb8a87b6f9ccd100f65432a3a7ffed57309cbf14c78987/matplotlib-3.11.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7d43ff8cebb50840648cb6429b2228621dbd709010f3117b3740abb20abf21c0", size = 9476987, upload-time = "2026-09-11T19:03:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/a9/29/2a47b700545aca050e0ed73c89ba21e08407e11f5f42a567421b220de6c1/matplotlib-3.11.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2a8285cea8ef4d92aa041d1c33788bcae82248503300f93f1ca2136b9049452f", size = 9306050, upload-time = "2026-09-11T19:03:43.103Z" }, + { url = "https://files.pythonhosted.org/packages/a9/df/e7c10292f348cf55178a5b3c0092a38ea68891a3945f199ae8b7b8ac9dc1/matplotlib-3.11.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1944895967f87c84c9b4bad29a707b31f5b36df4a3a2339ea1f8ea3ce5105539", size = 9861060, upload-time = "2026-09-11T19:03:46.044Z" }, + { url = "https://files.pythonhosted.org/packages/e4/b9/b978de6d43d47f1d4d8e653fac32c16d8d2e5f46bbbb822e26d7cb1adece/matplotlib-3.11.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af2661f6ac6bbd1d081996f54fdd9385715c625ace8cec0869055c0cfbf38981", size = 10670885, upload-time = "2026-09-11T19:03:48.942Z" }, + { url = "https://files.pythonhosted.org/packages/a3/80/d72f61bb2631ac15d17fada1f17e0f99fecba69d8376d34f17cf93b7eddd/matplotlib-3.11.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7e5a90f8a707ebb6004a713b1cff091a40cc5df4c7c1cb165e5a505ebc11c292", size = 10811222, upload-time = "2026-09-11T19:03:51.665Z" }, + { url = "https://files.pythonhosted.org/packages/94/2e/6d1d33f242c705b5c6c6fb3f0fc141add51cb1abb62912e59de0835d28c4/matplotlib-3.11.2-cp313-cp313-win_amd64.whl", hash = "sha256:bc067c462a86f0e57bf52fc6e058d90171a5420007dac00c46e90153050c69a7", size = 9349539, upload-time = "2026-09-11T19:03:54.534Z" }, + { url = "https://files.pythonhosted.org/packages/bb/bb/c0aa86a7f4c0e62f1c3c0711e361f6f23f87eb9018732a5e11994bd1b7ec/matplotlib-3.11.2-cp313-cp313-win_arm64.whl", hash = "sha256:3e8576f7c47e02fd4f21f44171302d2d1d58d4471d46da3d71fe8899d19539d9", size = 9028295, upload-time = "2026-09-11T19:03:57.261Z" }, + { url = "https://files.pythonhosted.org/packages/54/b4/4facdb700bc236e4c676495ca3798d8134ab8668cbfe0f6b2e9ebf962a38/matplotlib-3.11.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c9721f81275499da1feeb36a2cf8192ea086283b3bd16b7dc4c9d7aedb7396d6", size = 9478976, upload-time = "2026-09-11T19:04:00.12Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a0/bba05f0a25bfeb0475c2f2a87958b31103aa6b7a5386017afb1a96212825/matplotlib-3.11.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1a3040b209f3968b4e84161df7b174f07a9fad33b0f2d7e48ea3bbd3075e2863", size = 9307932, upload-time = "2026-09-11T19:04:02.976Z" }, + { url = "https://files.pythonhosted.org/packages/d4/42/81d5cba4bb39b41b0998efc880e129f2d7cdb94256ca49678fdcd9c21be5/matplotlib-3.11.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf3fe71fbfb8ec0e310e0bc8537c3405a01f38f25f9394ed2135e6202fed542b", size = 10674370, upload-time = "2026-09-11T19:04:06.912Z" }, + { url = "https://files.pythonhosted.org/packages/29/5e/52f56f93d5b20815ee0ae352f7a38eff25580edb180b4fa7df87cfeba68f/matplotlib-3.11.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c8255de28f986d935a64c9ca71c0ec2d2f41d355691f5ea684725dc91413f71", size = 10954597, upload-time = "2026-09-11T19:04:09.948Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ae/f8918a1b564db49c53cd603eb3c8748c5767e4ce0fb2cf1d7c38653e4c5d/matplotlib-3.11.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a8756cc73d9af9a7fe0deb54ea2e75ef73b01d9e575877e72acad5458e660943", size = 10812583, upload-time = "2026-09-11T19:04:12.887Z" }, + { url = "https://files.pythonhosted.org/packages/ea/61/4315ef0d63937fe56f451887b4a0be3b8e8b22cf1d92a8d157caac54570d/matplotlib-3.11.2-cp314-cp314-win_amd64.whl", hash = "sha256:ecea603dd2fbf8242fd31a305a8b12a4ece2de28096870c65fdd0d1e35b8d9a6", size = 9505972, upload-time = "2026-09-11T19:04:15.788Z" }, + { url = "https://files.pythonhosted.org/packages/d5/00/02398b0a1a62ef73d9af0a957fe1773363eec9a6ca7e433c72ae2790fbce/matplotlib-3.11.2-cp314-cp314-win_arm64.whl", hash = "sha256:01dc8eaaab5a9fce9ff615eca82345728f289e4715b186ee10c6d85272fc26bb", size = 9184534, upload-time = "2026-09-11T19:04:18.691Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c5/1e6ca10baa7e04f113c37856aadb4adc3dbb1c55fc7da6dc830bba1292d7/matplotlib-3.11.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:79a258f58253dfa025af80a9e9bb228d75fced007f0e93ae7423fefbde81a74d", size = 9526415, upload-time = "2026-09-11T19:04:21.39Z" }, + { url = "https://files.pythonhosted.org/packages/e0/93/7561727af07ccc84747953c6a33eee3981cc436d04f465032e707ca0e429/matplotlib-3.11.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c0b83f044ce10a98027b105b3931548719a6e8c7ef986b4362651e0b5367c8dc", size = 9361064, upload-time = "2026-09-11T19:04:24.107Z" }, + { url = "https://files.pythonhosted.org/packages/c1/40/ce270ef2a6794d94a409fe28b8dabedffc07c07f9e5dbb89e0f605bd157d/matplotlib-3.11.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e43b188f0a5b75447bcc197728258166aa64365770ed1caa36595a5e1ca4bbba", size = 10684626, upload-time = "2026-09-11T19:04:27.201Z" }, + { url = "https://files.pythonhosted.org/packages/45/46/396e0307dbf1c1f2d0a3654caa6dbc780dd5379f5f11257369cf8d21d9fe/matplotlib-3.11.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3304eb5a59442a8867f6920d484591c0fa09ffc29e9260be2feec3351e25869", size = 10960602, upload-time = "2026-09-11T19:04:30.254Z" }, + { url = "https://files.pythonhosted.org/packages/1c/97/4defb84695477340aa88b27c9482cc1ca4de11f36f66b6c8c0ddd685def1/matplotlib-3.11.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:02329432ae5c6af87cf208ee575b701d698bdf0b1a3bb28cc6d53c36e967e575", size = 10822603, upload-time = "2026-09-11T19:04:32.964Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e7/eab54551c1ec6b72dcd678a078b6c6da8d4c85ec1ff0016e81fe52866304/matplotlib-3.11.2-cp314-cp314t-win_amd64.whl", hash = "sha256:f2ac30cf5eb5dff1b584627ae0b0e1186551a4f69ae3c75073911da497a29170", size = 9551206, upload-time = "2026-09-11T19:04:35.811Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0e/04698032cb4d8fb1e30d8ffec5ded20f6f582b03c8c58b2385c95245f158/matplotlib-3.11.2-cp314-cp314t-win_arm64.whl", hash = "sha256:cf41ecd1b0c0b6f7177ed965a54c2afbe888715c7cf6054dc12d53bc1494002c", size = 9234977, upload-time = "2026-09-11T19:04:38.972Z" }, + { url = "https://files.pythonhosted.org/packages/44/a9/ca827c184b87364378964e36e7c0ae23651d146fdbc4000635205490cf82/matplotlib-3.11.2-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:894a9cbbecbe30ae6787d464df2e8fc7a8d475cfc68f87c3029f7c11152899b3", size = 9478997, upload-time = "2026-09-11T19:04:41.914Z" }, + { url = "https://files.pythonhosted.org/packages/48/60/01aaafc9c3159f3fae9a65bbcddaa4a6d4d72b0aeffdd636d7f6d00a5c8d/matplotlib-3.11.2-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:bbf1062991d826ed27e2144f3afa4461afbb8ff56e8f703043e191a8163b1ee9", size = 9307947, upload-time = "2026-09-11T19:04:44.834Z" }, + { url = "https://files.pythonhosted.org/packages/1e/a0/6aa72c7cd7cf4dfac652744d7a3310007cec3ce8e5ab9be607bec7096471/matplotlib-3.11.2-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:399fef672f7046ef7d6a57572b2a6f9845f3f5afcff04e7b2df7a363a9f42190", size = 10674370, upload-time = "2026-09-11T19:04:47.745Z" }, + { url = "https://files.pythonhosted.org/packages/a1/97/d7e90225ac145046787a2ee0fa4cdc7e4d5cb6772ea232130b10f8a4095a/matplotlib-3.11.2-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cc82dde2a0d3e3ad472edce04897ad7146b8d8bfd1df8a32992eebb81af18fdc", size = 10954581, upload-time = "2026-09-11T19:04:50.712Z" }, + { url = "https://files.pythonhosted.org/packages/58/18/89cf056a9d2cae01f4b8baf01c7e809d613244fcdfa2a2acf28c1e0d79fa/matplotlib-3.11.2-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:930efb28f59fda124e39265d177bab302625297bb147d2910de725a2fc2aef54", size = 10812605, upload-time = "2026-09-11T19:04:53.552Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4d/c61b9f4c34af802d4d84e58803e009013d626b5f468bafe1416131863b5b/matplotlib-3.11.2-cp315-cp315-win_amd64.whl", hash = "sha256:3da3bc0cbf7245e7db72cc6d29d12c5abef72cb73059c73b945f14e3545f3eb2", size = 9506068, upload-time = "2026-09-11T19:04:56.519Z" }, + { url = "https://files.pythonhosted.org/packages/03/7b/047f2fa8708d47430d8e7fa45e9fffb0aee5d4e300f978e087be2ee11fbc/matplotlib-3.11.2-cp315-cp315-win_arm64.whl", hash = "sha256:f25446b2981717dca9786bac841cb3fd7efb568e3e3c755dd980481c5cb9228d", size = 9184576, upload-time = "2026-09-11T19:04:59.318Z" }, + { url = "https://files.pythonhosted.org/packages/03/6e/ad9c5989950785a98642667df265a47c6637e924cb69b5dcf68c3299ae7c/matplotlib-3.11.2-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:fea03cf56568cc1cba08b470be6a0559e71c3a5b688d54b7179bb35ba23d0821", size = 9525988, upload-time = "2026-09-11T19:05:02.304Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c3/25c61701fb655dd412428b15eee2591ce554cdd593e39a045a153373f428/matplotlib-3.11.2-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:254d4ddb2fa8df3b4c689c0c306063aee10521df82cfb438185e499c75fe37c1", size = 9360774, upload-time = "2026-09-11T19:05:05.092Z" }, + { url = "https://files.pythonhosted.org/packages/58/5a/4552878fce8f9d249a5e264c16f5c267c27eac08fb039fa3e207a06feff5/matplotlib-3.11.2-cp315-cp315t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e60cf3047a51edecdc4535a9196bbd6a732936b8e9f8184aabf4d16165884aaf", size = 10685892, upload-time = "2026-09-11T19:05:07.686Z" }, + { url = "https://files.pythonhosted.org/packages/af/dd/b3b19ec0124fc4aafd8a4b3bae859c562a7ff0fd8ae3b2099947f78bde19/matplotlib-3.11.2-cp315-cp315t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb3712dc9b464793de0a4e42a7313d50293c751f94bddaf7332a1bc71bccdda9", size = 10964946, upload-time = "2026-09-11T19:05:10.943Z" }, + { url = "https://files.pythonhosted.org/packages/7b/30/687ccce22f66a57fed85942450e88062773bcbf1a42914e70c7148ec71dc/matplotlib-3.11.2-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:75b6d88402770e181b5d06a67dda4129c31da7d05004d63a21c310ec78d1b83c", size = 10824960, upload-time = "2026-09-11T19:05:13.9Z" }, + { url = "https://files.pythonhosted.org/packages/d3/34/117fe35a8d05054b4b34d2d29287099927c24c3841d36e06d9fa2f20c1cf/matplotlib-3.11.2-cp315-cp315t-win_amd64.whl", hash = "sha256:a6939df7567114b6bac7f4c5e06c84a67f197c1b2f2e4b234d4eecb3bfec9482", size = 9551204, upload-time = "2026-09-11T19:05:16.48Z" }, + { url = "https://files.pythonhosted.org/packages/63/5a/9f440e7bec8b80d0af2a65d1165b2f4e718982dad785531f62255d9ff19b/matplotlib-3.11.2-cp315-cp315t-win_arm64.whl", hash = "sha256:d480038c83691532ed52ff3147db51fa902fc78cb2d8349993a1cdb684435bff", size = 9233946, upload-time = "2026-09-11T19:05:19.063Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, ] [[package]] name = "multidict" version = "6.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893 }, - { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456 }, - { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872 }, - { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018 }, - { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883 }, - { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413 }, - { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404 }, - { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456 }, - { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322 }, - { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955 }, - { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254 }, - { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059 }, - { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588 }, - { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642 }, - { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377 }, - { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887 }, - { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053 }, - { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307 }, - { url = "https://files.pythonhosted.org/packages/f2/22/929c141d6c0dba87d3e1d38fbdf1ba8baba86b7776469f2bc2d3227a1e67/multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23", size = 76174 }, - { url = "https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2", size = 45116 }, - { url = "https://files.pythonhosted.org/packages/79/76/55cd7186f498ed080a18440c9013011eb548f77ae1b297206d030eb1180a/multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445", size = 43524 }, - { url = "https://files.pythonhosted.org/packages/e9/3c/414842ef8d5a1628d68edee29ba0e5bcf235dbfb3ccd3ea303a7fe8c72ff/multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177", size = 249368 }, - { url = "https://files.pythonhosted.org/packages/f6/32/befed7f74c458b4a525e60519fe8d87eef72bb1e99924fa2b0f9d97a221e/multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23", size = 256952 }, - { url = "https://files.pythonhosted.org/packages/03/d6/c878a44ba877f366630c860fdf74bfb203c33778f12b6ac274936853c451/multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060", size = 240317 }, - { url = "https://files.pythonhosted.org/packages/68/49/57421b4d7ad2e9e60e25922b08ceb37e077b90444bde6ead629095327a6f/multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d", size = 267132 }, - { url = "https://files.pythonhosted.org/packages/b7/fe/ec0edd52ddbcea2a2e89e174f0206444a61440b40f39704e64dc807a70bd/multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed", size = 268140 }, - { url = "https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429", size = 254277 }, - { url = "https://files.pythonhosted.org/packages/6a/b2/5fb8c124d7561a4974c342bc8c778b471ebbeb3cc17df696f034a7e9afe7/multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6", size = 252291 }, - { url = "https://files.pythonhosted.org/packages/5a/96/51d4e4e06bcce92577fcd488e22600bd38e4fd59c20cb49434d054903bd2/multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9", size = 250156 }, - { url = "https://files.pythonhosted.org/packages/db/6b/420e173eec5fba721a50e2a9f89eda89d9c98fded1124f8d5c675f7a0c0f/multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c", size = 249742 }, - { url = "https://files.pythonhosted.org/packages/44/a3/ec5b5bd98f306bc2aa297b8c6f11a46714a56b1e6ef5ebda50a4f5d7c5fb/multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84", size = 262221 }, - { url = "https://files.pythonhosted.org/packages/cd/f7/e8c0d0da0cd1e28d10e624604e1a36bcc3353aaebdfdc3a43c72bc683a12/multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d", size = 258664 }, - { url = "https://files.pythonhosted.org/packages/52/da/151a44e8016dd33feed44f730bd856a66257c1ee7aed4f44b649fb7edeb3/multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33", size = 249490 }, - { url = "https://files.pythonhosted.org/packages/87/af/a3b86bf9630b732897f6fc3f4c4714b90aa4361983ccbdcd6c0339b21b0c/multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3", size = 41695 }, - { url = "https://files.pythonhosted.org/packages/b2/35/e994121b0e90e46134673422dd564623f93304614f5d11886b1b3e06f503/multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5", size = 45884 }, - { url = "https://files.pythonhosted.org/packages/ca/61/42d3e5dbf661242a69c97ea363f2d7b46c567da8eadef8890022be6e2ab0/multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df", size = 43122 }, - { url = "https://files.pythonhosted.org/packages/6d/b3/e6b21c6c4f314bb956016b0b3ef2162590a529b84cb831c257519e7fde44/multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1", size = 83175 }, - { url = "https://files.pythonhosted.org/packages/fb/76/23ecd2abfe0957b234f6c960f4ade497f55f2c16aeb684d4ecdbf1c95791/multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963", size = 48460 }, - { url = "https://files.pythonhosted.org/packages/c4/57/a0ed92b23f3a042c36bc4227b72b97eca803f5f1801c1ab77c8a212d455e/multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34", size = 46930 }, - { url = "https://files.pythonhosted.org/packages/b5/66/02ec7ace29162e447f6382c495dc95826bf931d3818799bbef11e8f7df1a/multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65", size = 242582 }, - { url = "https://files.pythonhosted.org/packages/58/18/64f5a795e7677670e872673aca234162514696274597b3708b2c0d276cce/multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292", size = 250031 }, - { url = "https://files.pythonhosted.org/packages/c8/ed/e192291dbbe51a8290c5686f482084d31bcd9d09af24f63358c3d42fd284/multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43", size = 228596 }, - { url = "https://files.pythonhosted.org/packages/1e/7e/3562a15a60cf747397e7f2180b0a11dc0c38d9175a650e75fa1b4d325e15/multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca", size = 257492 }, - { url = "https://files.pythonhosted.org/packages/24/02/7d0f9eae92b5249bb50ac1595b295f10e263dd0078ebb55115c31e0eaccd/multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd", size = 255899 }, - { url = "https://files.pythonhosted.org/packages/00/e3/9b60ed9e23e64c73a5cde95269ef1330678e9c6e34dd4eb6b431b85b5a10/multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7", size = 247970 }, - { url = "https://files.pythonhosted.org/packages/3e/06/538e58a63ed5cfb0bd4517e346b91da32fde409d839720f664e9a4ae4f9d/multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3", size = 245060 }, - { url = "https://files.pythonhosted.org/packages/b2/2f/d743a3045a97c895d401e9bd29aaa09b94f5cbdf1bd561609e5a6c431c70/multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4", size = 235888 }, - { url = "https://files.pythonhosted.org/packages/38/83/5a325cac191ab28b63c52f14f1131f3b0a55ba3b9aa65a6d0bf2a9b921a0/multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8", size = 243554 }, - { url = "https://files.pythonhosted.org/packages/20/1f/9d2327086bd15da2725ef6aae624208e2ef828ed99892b17f60c344e57ed/multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c", size = 252341 }, - { url = "https://files.pythonhosted.org/packages/e8/2c/2a1aa0280cf579d0f6eed8ee5211c4f1730bd7e06c636ba2ee6aafda302e/multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52", size = 246391 }, - { url = "https://files.pythonhosted.org/packages/e5/03/7ca022ffc36c5a3f6e03b179a5ceb829be9da5783e6fe395f347c0794680/multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108", size = 243422 }, - { url = "https://files.pythonhosted.org/packages/dc/1d/b31650eab6c5778aceed46ba735bd97f7c7d2f54b319fa916c0f96e7805b/multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32", size = 47770 }, - { url = "https://files.pythonhosted.org/packages/ac/5b/2d2d1d522e51285bd61b1e20df8f47ae1a9d80839db0b24ea783b3832832/multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8", size = 53109 }, - { url = "https://files.pythonhosted.org/packages/3d/a3/cc409ba012c83ca024a308516703cf339bdc4b696195644a7215a5164a24/multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118", size = 45573 }, - { url = "https://files.pythonhosted.org/packages/91/cc/db74228a8be41884a567e88a62fd589a913708fcf180d029898c17a9a371/multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee", size = 75190 }, - { url = "https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2", size = 44486 }, - { url = "https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1", size = 43219 }, - { url = "https://files.pythonhosted.org/packages/24/bb/2c0c2287963f4259c85e8bcbba9182ced8d7fca65c780c38e99e61629d11/multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d", size = 245132 }, - { url = "https://files.pythonhosted.org/packages/a7/f9/44d4b3064c65079d2467888794dea218d1601898ac50222ab8a9a8094460/multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31", size = 252420 }, - { url = "https://files.pythonhosted.org/packages/8b/13/78f7275e73fa17b24c9a51b0bd9d73ba64bb32d0ed51b02a746eb876abe7/multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048", size = 233510 }, - { url = "https://files.pythonhosted.org/packages/4b/25/8167187f62ae3cbd52da7893f58cb036b47ea3fb67138787c76800158982/multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362", size = 264094 }, - { url = "https://files.pythonhosted.org/packages/a1/e7/69a3a83b7b030cf283fb06ce074a05a02322359783424d7edf0f15fe5022/multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37", size = 260786 }, - { url = "https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709", size = 248483 }, - { url = "https://files.pythonhosted.org/packages/48/5a/d5a99e3acbca0e29c5d9cba8f92ceb15dce78bab963b308ae692981e3a5d/multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0", size = 248403 }, - { url = "https://files.pythonhosted.org/packages/35/48/e58cd31f6c7d5102f2a4bf89f96b9cf7e00b6c6f3d04ecc44417c00a5a3c/multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb", size = 240315 }, - { url = "https://files.pythonhosted.org/packages/94/33/1cd210229559cb90b6786c30676bb0c58249ff42f942765f88793b41fdce/multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd", size = 245528 }, - { url = "https://files.pythonhosted.org/packages/64/f2/6e1107d226278c876c783056b7db43d800bb64c6131cec9c8dfb6903698e/multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601", size = 258784 }, - { url = "https://files.pythonhosted.org/packages/4d/c1/11f664f14d525e4a1b5327a82d4de61a1db604ab34c6603bb3c2cc63ad34/multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1", size = 251980 }, - { url = "https://files.pythonhosted.org/packages/e1/9f/75a9ac888121d0c5bbd4ecf4eead45668b1766f6baabfb3b7f66a410e231/multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b", size = 243602 }, - { url = "https://files.pythonhosted.org/packages/9a/e7/50bf7b004cc8525d80dbbbedfdc7aed3e4c323810890be4413e589074032/multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d", size = 40930 }, - { url = "https://files.pythonhosted.org/packages/e0/bf/52f25716bbe93745595800f36fb17b73711f14da59ed0bb2eba141bc9f0f/multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f", size = 45074 }, - { url = "https://files.pythonhosted.org/packages/97/ab/22803b03285fa3a525f48217963da3a65ae40f6a1b6f6cf2768879e208f9/multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5", size = 42471 }, - { url = "https://files.pythonhosted.org/packages/e0/6d/f9293baa6146ba9507e360ea0292b6422b016907c393e2f63fc40ab7b7b5/multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581", size = 82401 }, - { url = "https://files.pythonhosted.org/packages/7a/68/53b5494738d83558d87c3c71a486504d8373421c3e0dbb6d0db48ad42ee0/multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a", size = 48143 }, - { url = "https://files.pythonhosted.org/packages/37/e8/5284c53310dcdc99ce5d66563f6e5773531a9b9fe9ec7a615e9bc306b05f/multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c", size = 46507 }, - { url = "https://files.pythonhosted.org/packages/e4/fc/6800d0e5b3875568b4083ecf5f310dcf91d86d52573160834fb4bfcf5e4f/multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262", size = 239358 }, - { url = "https://files.pythonhosted.org/packages/41/75/4ad0973179361cdf3a113905e6e088173198349131be2b390f9fa4da5fc6/multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59", size = 246884 }, - { url = "https://files.pythonhosted.org/packages/c3/9c/095bb28b5da139bd41fb9a5d5caff412584f377914bd8787c2aa98717130/multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889", size = 225878 }, - { url = "https://files.pythonhosted.org/packages/07/d0/c0a72000243756e8f5a277b6b514fa005f2c73d481b7d9e47cd4568aa2e4/multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4", size = 253542 }, - { url = "https://files.pythonhosted.org/packages/c0/6b/f69da15289e384ecf2a68837ec8b5ad8c33e973aa18b266f50fe55f24b8c/multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d", size = 252403 }, - { url = "https://files.pythonhosted.org/packages/a2/76/b9669547afa5a1a25cd93eaca91c0da1c095b06b6d2d8ec25b713588d3a1/multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609", size = 244889 }, - { url = "https://files.pythonhosted.org/packages/7e/a9/a50d2669e506dad33cfc45b5d574a205587b7b8a5f426f2fbb2e90882588/multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489", size = 241982 }, - { url = "https://files.pythonhosted.org/packages/c5/bb/1609558ad8b456b4827d3c5a5b775c93b87878fd3117ed3db3423dfbce1b/multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c", size = 232415 }, - { url = "https://files.pythonhosted.org/packages/d8/59/6f61039d2aa9261871e03ab9dc058a550d240f25859b05b67fd70f80d4b3/multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e", size = 240337 }, - { url = "https://files.pythonhosted.org/packages/a1/29/fdc6a43c203890dc2ae9249971ecd0c41deaedfe00d25cb6564b2edd99eb/multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c", size = 248788 }, - { url = "https://files.pythonhosted.org/packages/a9/14/a153a06101323e4cf086ecee3faadba52ff71633d471f9685c42e3736163/multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9", size = 242842 }, - { url = "https://files.pythonhosted.org/packages/41/5f/604ae839e64a4a6efc80db94465348d3b328ee955e37acb24badbcd24d83/multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2", size = 240237 }, - { url = "https://files.pythonhosted.org/packages/5f/60/c3a5187bf66f6fb546ff4ab8fb5a077cbdd832d7b1908d4365c7f74a1917/multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7", size = 48008 }, - { url = "https://files.pythonhosted.org/packages/0c/f7/addf1087b860ac60e6f382240f64fb99f8bfb532bb06f7c542b83c29ca61/multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5", size = 53542 }, - { url = "https://files.pythonhosted.org/packages/4c/81/4629d0aa32302ef7b2ec65c75a728cc5ff4fa410c50096174c1632e70b3e/multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2", size = 44719 }, - { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319 }, +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload-time = "2026-01-26T02:43:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018, upload-time = "2026-01-26T02:43:56.198Z" }, + { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883, upload-time = "2026-01-26T02:43:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413, upload-time = "2026-01-26T02:43:58.755Z" }, + { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404, upload-time = "2026-01-26T02:44:00.216Z" }, + { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456, upload-time = "2026-01-26T02:44:02.202Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322, upload-time = "2026-01-26T02:44:03.56Z" }, + { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955, upload-time = "2026-01-26T02:44:04.845Z" }, + { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254, upload-time = "2026-01-26T02:44:06.133Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059, upload-time = "2026-01-26T02:44:07.518Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588, upload-time = "2026-01-26T02:44:09.382Z" }, + { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642, upload-time = "2026-01-26T02:44:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377, upload-time = "2026-01-26T02:44:12.042Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887, upload-time = "2026-01-26T02:44:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053, upload-time = "2026-01-26T02:44:15.371Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307, upload-time = "2026-01-26T02:44:16.852Z" }, + { url = "https://files.pythonhosted.org/packages/f2/22/929c141d6c0dba87d3e1d38fbdf1ba8baba86b7776469f2bc2d3227a1e67/multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23", size = 76174, upload-time = "2026-01-26T02:44:18.509Z" }, + { url = "https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2", size = 45116, upload-time = "2026-01-26T02:44:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/76/55cd7186f498ed080a18440c9013011eb548f77ae1b297206d030eb1180a/multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445", size = 43524, upload-time = "2026-01-26T02:44:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3c/414842ef8d5a1628d68edee29ba0e5bcf235dbfb3ccd3ea303a7fe8c72ff/multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177", size = 249368, upload-time = "2026-01-26T02:44:22.803Z" }, + { url = "https://files.pythonhosted.org/packages/f6/32/befed7f74c458b4a525e60519fe8d87eef72bb1e99924fa2b0f9d97a221e/multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23", size = 256952, upload-time = "2026-01-26T02:44:24.306Z" }, + { url = "https://files.pythonhosted.org/packages/03/d6/c878a44ba877f366630c860fdf74bfb203c33778f12b6ac274936853c451/multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060", size = 240317, upload-time = "2026-01-26T02:44:25.772Z" }, + { url = "https://files.pythonhosted.org/packages/68/49/57421b4d7ad2e9e60e25922b08ceb37e077b90444bde6ead629095327a6f/multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d", size = 267132, upload-time = "2026-01-26T02:44:27.648Z" }, + { url = "https://files.pythonhosted.org/packages/b7/fe/ec0edd52ddbcea2a2e89e174f0206444a61440b40f39704e64dc807a70bd/multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed", size = 268140, upload-time = "2026-01-26T02:44:29.588Z" }, + { url = "https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429", size = 254277, upload-time = "2026-01-26T02:44:30.902Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b2/5fb8c124d7561a4974c342bc8c778b471ebbeb3cc17df696f034a7e9afe7/multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6", size = 252291, upload-time = "2026-01-26T02:44:32.31Z" }, + { url = "https://files.pythonhosted.org/packages/5a/96/51d4e4e06bcce92577fcd488e22600bd38e4fd59c20cb49434d054903bd2/multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9", size = 250156, upload-time = "2026-01-26T02:44:33.734Z" }, + { url = "https://files.pythonhosted.org/packages/db/6b/420e173eec5fba721a50e2a9f89eda89d9c98fded1124f8d5c675f7a0c0f/multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c", size = 249742, upload-time = "2026-01-26T02:44:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/44/a3/ec5b5bd98f306bc2aa297b8c6f11a46714a56b1e6ef5ebda50a4f5d7c5fb/multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84", size = 262221, upload-time = "2026-01-26T02:44:36.604Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/e8c0d0da0cd1e28d10e624604e1a36bcc3353aaebdfdc3a43c72bc683a12/multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d", size = 258664, upload-time = "2026-01-26T02:44:38.008Z" }, + { url = "https://files.pythonhosted.org/packages/52/da/151a44e8016dd33feed44f730bd856a66257c1ee7aed4f44b649fb7edeb3/multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33", size = 249490, upload-time = "2026-01-26T02:44:39.386Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/a3b86bf9630b732897f6fc3f4c4714b90aa4361983ccbdcd6c0339b21b0c/multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3", size = 41695, upload-time = "2026-01-26T02:44:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/b2/35/e994121b0e90e46134673422dd564623f93304614f5d11886b1b3e06f503/multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5", size = 45884, upload-time = "2026-01-26T02:44:42.488Z" }, + { url = "https://files.pythonhosted.org/packages/ca/61/42d3e5dbf661242a69c97ea363f2d7b46c567da8eadef8890022be6e2ab0/multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df", size = 43122, upload-time = "2026-01-26T02:44:43.664Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b3/e6b21c6c4f314bb956016b0b3ef2162590a529b84cb831c257519e7fde44/multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1", size = 83175, upload-time = "2026-01-26T02:44:44.894Z" }, + { url = "https://files.pythonhosted.org/packages/fb/76/23ecd2abfe0957b234f6c960f4ade497f55f2c16aeb684d4ecdbf1c95791/multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963", size = 48460, upload-time = "2026-01-26T02:44:46.106Z" }, + { url = "https://files.pythonhosted.org/packages/c4/57/a0ed92b23f3a042c36bc4227b72b97eca803f5f1801c1ab77c8a212d455e/multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34", size = 46930, upload-time = "2026-01-26T02:44:47.278Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/02ec7ace29162e447f6382c495dc95826bf931d3818799bbef11e8f7df1a/multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65", size = 242582, upload-time = "2026-01-26T02:44:48.604Z" }, + { url = "https://files.pythonhosted.org/packages/58/18/64f5a795e7677670e872673aca234162514696274597b3708b2c0d276cce/multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292", size = 250031, upload-time = "2026-01-26T02:44:50.544Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/e192291dbbe51a8290c5686f482084d31bcd9d09af24f63358c3d42fd284/multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43", size = 228596, upload-time = "2026-01-26T02:44:51.951Z" }, + { url = "https://files.pythonhosted.org/packages/1e/7e/3562a15a60cf747397e7f2180b0a11dc0c38d9175a650e75fa1b4d325e15/multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca", size = 257492, upload-time = "2026-01-26T02:44:53.902Z" }, + { url = "https://files.pythonhosted.org/packages/24/02/7d0f9eae92b5249bb50ac1595b295f10e263dd0078ebb55115c31e0eaccd/multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd", size = 255899, upload-time = "2026-01-26T02:44:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/00/e3/9b60ed9e23e64c73a5cde95269ef1330678e9c6e34dd4eb6b431b85b5a10/multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7", size = 247970, upload-time = "2026-01-26T02:44:56.783Z" }, + { url = "https://files.pythonhosted.org/packages/3e/06/538e58a63ed5cfb0bd4517e346b91da32fde409d839720f664e9a4ae4f9d/multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3", size = 245060, upload-time = "2026-01-26T02:44:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2f/d743a3045a97c895d401e9bd29aaa09b94f5cbdf1bd561609e5a6c431c70/multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4", size = 235888, upload-time = "2026-01-26T02:44:59.57Z" }, + { url = "https://files.pythonhosted.org/packages/38/83/5a325cac191ab28b63c52f14f1131f3b0a55ba3b9aa65a6d0bf2a9b921a0/multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8", size = 243554, upload-time = "2026-01-26T02:45:01.054Z" }, + { url = "https://files.pythonhosted.org/packages/20/1f/9d2327086bd15da2725ef6aae624208e2ef828ed99892b17f60c344e57ed/multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c", size = 252341, upload-time = "2026-01-26T02:45:02.484Z" }, + { url = "https://files.pythonhosted.org/packages/e8/2c/2a1aa0280cf579d0f6eed8ee5211c4f1730bd7e06c636ba2ee6aafda302e/multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52", size = 246391, upload-time = "2026-01-26T02:45:03.862Z" }, + { url = "https://files.pythonhosted.org/packages/e5/03/7ca022ffc36c5a3f6e03b179a5ceb829be9da5783e6fe395f347c0794680/multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108", size = 243422, upload-time = "2026-01-26T02:45:05.296Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1d/b31650eab6c5778aceed46ba735bd97f7c7d2f54b319fa916c0f96e7805b/multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32", size = 47770, upload-time = "2026-01-26T02:45:06.754Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/2d2d1d522e51285bd61b1e20df8f47ae1a9d80839db0b24ea783b3832832/multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8", size = 53109, upload-time = "2026-01-26T02:45:08.044Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a3/cc409ba012c83ca024a308516703cf339bdc4b696195644a7215a5164a24/multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118", size = 45573, upload-time = "2026-01-26T02:45:09.349Z" }, + { url = "https://files.pythonhosted.org/packages/91/cc/db74228a8be41884a567e88a62fd589a913708fcf180d029898c17a9a371/multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee", size = 75190, upload-time = "2026-01-26T02:45:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2", size = 44486, upload-time = "2026-01-26T02:45:11.938Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1", size = 43219, upload-time = "2026-01-26T02:45:14.346Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/2c0c2287963f4259c85e8bcbba9182ced8d7fca65c780c38e99e61629d11/multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d", size = 245132, upload-time = "2026-01-26T02:45:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f9/44d4b3064c65079d2467888794dea218d1601898ac50222ab8a9a8094460/multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31", size = 252420, upload-time = "2026-01-26T02:45:17.293Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/78f7275e73fa17b24c9a51b0bd9d73ba64bb32d0ed51b02a746eb876abe7/multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048", size = 233510, upload-time = "2026-01-26T02:45:19.356Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/8167187f62ae3cbd52da7893f58cb036b47ea3fb67138787c76800158982/multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362", size = 264094, upload-time = "2026-01-26T02:45:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/69a3a83b7b030cf283fb06ce074a05a02322359783424d7edf0f15fe5022/multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37", size = 260786, upload-time = "2026-01-26T02:45:22.818Z" }, + { url = "https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709", size = 248483, upload-time = "2026-01-26T02:45:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/48/5a/d5a99e3acbca0e29c5d9cba8f92ceb15dce78bab963b308ae692981e3a5d/multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0", size = 248403, upload-time = "2026-01-26T02:45:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/e58cd31f6c7d5102f2a4bf89f96b9cf7e00b6c6f3d04ecc44417c00a5a3c/multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb", size = 240315, upload-time = "2026-01-26T02:45:27.487Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/1cd210229559cb90b6786c30676bb0c58249ff42f942765f88793b41fdce/multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd", size = 245528, upload-time = "2026-01-26T02:45:28.991Z" }, + { url = "https://files.pythonhosted.org/packages/64/f2/6e1107d226278c876c783056b7db43d800bb64c6131cec9c8dfb6903698e/multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601", size = 258784, upload-time = "2026-01-26T02:45:30.503Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c1/11f664f14d525e4a1b5327a82d4de61a1db604ab34c6603bb3c2cc63ad34/multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1", size = 251980, upload-time = "2026-01-26T02:45:32.603Z" }, + { url = "https://files.pythonhosted.org/packages/e1/9f/75a9ac888121d0c5bbd4ecf4eead45668b1766f6baabfb3b7f66a410e231/multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b", size = 243602, upload-time = "2026-01-26T02:45:34.043Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e7/50bf7b004cc8525d80dbbbedfdc7aed3e4c323810890be4413e589074032/multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d", size = 40930, upload-time = "2026-01-26T02:45:36.278Z" }, + { url = "https://files.pythonhosted.org/packages/e0/bf/52f25716bbe93745595800f36fb17b73711f14da59ed0bb2eba141bc9f0f/multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f", size = 45074, upload-time = "2026-01-26T02:45:37.546Z" }, + { url = "https://files.pythonhosted.org/packages/97/ab/22803b03285fa3a525f48217963da3a65ae40f6a1b6f6cf2768879e208f9/multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5", size = 42471, upload-time = "2026-01-26T02:45:38.889Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6d/f9293baa6146ba9507e360ea0292b6422b016907c393e2f63fc40ab7b7b5/multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581", size = 82401, upload-time = "2026-01-26T02:45:40.254Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/53b5494738d83558d87c3c71a486504d8373421c3e0dbb6d0db48ad42ee0/multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a", size = 48143, upload-time = "2026-01-26T02:45:41.635Z" }, + { url = "https://files.pythonhosted.org/packages/37/e8/5284c53310dcdc99ce5d66563f6e5773531a9b9fe9ec7a615e9bc306b05f/multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c", size = 46507, upload-time = "2026-01-26T02:45:42.99Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fc/6800d0e5b3875568b4083ecf5f310dcf91d86d52573160834fb4bfcf5e4f/multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262", size = 239358, upload-time = "2026-01-26T02:45:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/41/75/4ad0973179361cdf3a113905e6e088173198349131be2b390f9fa4da5fc6/multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59", size = 246884, upload-time = "2026-01-26T02:45:47.167Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9c/095bb28b5da139bd41fb9a5d5caff412584f377914bd8787c2aa98717130/multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889", size = 225878, upload-time = "2026-01-26T02:45:48.698Z" }, + { url = "https://files.pythonhosted.org/packages/07/d0/c0a72000243756e8f5a277b6b514fa005f2c73d481b7d9e47cd4568aa2e4/multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4", size = 253542, upload-time = "2026-01-26T02:45:50.164Z" }, + { url = "https://files.pythonhosted.org/packages/c0/6b/f69da15289e384ecf2a68837ec8b5ad8c33e973aa18b266f50fe55f24b8c/multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d", size = 252403, upload-time = "2026-01-26T02:45:51.779Z" }, + { url = "https://files.pythonhosted.org/packages/a2/76/b9669547afa5a1a25cd93eaca91c0da1c095b06b6d2d8ec25b713588d3a1/multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609", size = 244889, upload-time = "2026-01-26T02:45:53.27Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a9/a50d2669e506dad33cfc45b5d574a205587b7b8a5f426f2fbb2e90882588/multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489", size = 241982, upload-time = "2026-01-26T02:45:54.919Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bb/1609558ad8b456b4827d3c5a5b775c93b87878fd3117ed3db3423dfbce1b/multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c", size = 232415, upload-time = "2026-01-26T02:45:56.981Z" }, + { url = "https://files.pythonhosted.org/packages/d8/59/6f61039d2aa9261871e03ab9dc058a550d240f25859b05b67fd70f80d4b3/multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e", size = 240337, upload-time = "2026-01-26T02:45:58.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/29/fdc6a43c203890dc2ae9249971ecd0c41deaedfe00d25cb6564b2edd99eb/multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c", size = 248788, upload-time = "2026-01-26T02:46:00.862Z" }, + { url = "https://files.pythonhosted.org/packages/a9/14/a153a06101323e4cf086ecee3faadba52ff71633d471f9685c42e3736163/multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9", size = 242842, upload-time = "2026-01-26T02:46:02.824Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/604ae839e64a4a6efc80db94465348d3b328ee955e37acb24badbcd24d83/multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2", size = 240237, upload-time = "2026-01-26T02:46:05.898Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/c3a5187bf66f6fb546ff4ab8fb5a077cbdd832d7b1908d4365c7f74a1917/multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7", size = 48008, upload-time = "2026-01-26T02:46:07.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f7/addf1087b860ac60e6f382240f64fb99f8bfb532bb06f7c542b83c29ca61/multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5", size = 53542, upload-time = "2026-01-26T02:46:08.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/81/4629d0aa32302ef7b2ec65c75a728cc5ff4fa410c50096174c1632e70b3e/multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2", size = 44719, upload-time = "2026-01-26T02:46:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, +] + +[[package]] +name = "narwhals" +version = "2.27.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/21/f64d6b2dbea7bf3f8c38cdc786dcc6ef012ca3d173ad208c782c9a7bedf6/narwhals-2.27.1.tar.gz", hash = "sha256:aed93076a3ea42d9c32c88e4eb5ea422a21937011cbe1f480f9572a523c82094", size = 735013, upload-time = "2026-10-10T06:52:18.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/89/5d4c86da1130d9059681e5b6cd7645df5c10279a6a079c5c37dcb2cc6f3f/narwhals-2.27.1-py3-none-any.whl", hash = "sha256:d057df13f5852b8e157596e82eb5e955fad267425df5e420e0ee9863da483b31", size = 483211, upload-time = "2026-10-10T06:52:16.32Z" }, +] + +[[package]] +name = "networkx" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/76/3af777226b63a5e64a6b36b1ec5855c14e2b94a37096d4760e595fc43511/networkx-3.7.tar.gz", hash = "sha256:fd77a511bd90f39f3d016351345b52cf5319b813bdca01de3f755d3cca62e96a", size = 1866482, upload-time = "2026-09-21T16:45:16.974Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/cd/fe58041e9011f307c490e3e17dd48cc516448f7c698a3f2d9d9d65d7e6a8/networkx-3.7-py3-none-any.whl", hash = "sha256:e3fd2c13a7814cee3746340d8d7f8598a67f16a58bf47fb7f8793fab6efca1b0", size = 2142205, upload-time = "2026-09-21T16:45:14.609Z" }, ] [[package]] name = "numpy" version = "2.4.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/10/8b/c265f4823726ab832de836cdd184d0986dcf94480f81e8739692a7ac7af2/numpy-2.4.3.tar.gz", hash = "sha256:483a201202b73495f00dbc83796c6ae63137a9bdade074f7648b3e32613412dd", size = 20727743 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/ed/6388632536f9788cea23a3a1b629f25b43eaacd7d7377e5d6bc7b9deb69b/numpy-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61b0cbabbb6126c8df63b9a3a0c4b1f44ebca5e12ff6997b80fcf267fb3150ef", size = 16669628 }, - { url = "https://files.pythonhosted.org/packages/74/1b/ee2abfc68e1ce728b2958b6ba831d65c62e1b13ce3017c13943f8f9b5b2e/numpy-2.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7395e69ff32526710748f92cd8c9849b361830968ea3e24a676f272653e8983e", size = 14696872 }, - { url = "https://files.pythonhosted.org/packages/ba/d1/780400e915ff5638166f11ca9dc2c5815189f3d7cf6f8759a1685e586413/numpy-2.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:abdce0f71dcb4a00e4e77f3faf05e4616ceccfe72ccaa07f47ee79cda3b7b0f4", size = 5203489 }, - { url = "https://files.pythonhosted.org/packages/0b/bb/baffa907e9da4cc34a6e556d6d90e032f6d7a75ea47968ea92b4858826c4/numpy-2.4.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:48da3a4ee1336454b07497ff7ec83903efa5505792c4e6d9bf83d99dc07a1e18", size = 6550814 }, - { url = "https://files.pythonhosted.org/packages/7b/12/8c9f0c6c95f76aeb20fc4a699c33e9f827fa0d0f857747c73bb7b17af945/numpy-2.4.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e3bef222ad6b052280311d1d60db8e259e4947052c3ae7dd6817451fc8a4c5", size = 15666601 }, - { url = "https://files.pythonhosted.org/packages/bd/79/cc665495e4d57d0aa6fbcc0aa57aa82671dfc78fbf95fe733ed86d98f52a/numpy-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7dd01a46700b1967487141a66ac1a3cf0dd8ebf1f08db37d46389401512ca97", size = 16621358 }, - { url = "https://files.pythonhosted.org/packages/a8/40/b4ecb7224af1065c3539f5ecfff879d090de09608ad1008f02c05c770cb3/numpy-2.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:76f0f283506c28b12bba319c0fab98217e9f9b54e6160e9c79e9f7348ba32e9c", size = 17016135 }, - { url = "https://files.pythonhosted.org/packages/f7/b1/6a88e888052eed951afed7a142dcdf3b149a030ca59b4c71eef085858e43/numpy-2.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737f630a337364665aba3b5a77e56a68cc42d350edd010c345d65a3efa3addcc", size = 18345816 }, - { url = "https://files.pythonhosted.org/packages/f3/8f/103a60c5f8c3d7fc678c19cd7b2476110da689ccb80bc18050efbaeae183/numpy-2.4.3-cp312-cp312-win32.whl", hash = "sha256:26952e18d82a1dbbc2f008d402021baa8d6fc8e84347a2072a25e08b46d698b9", size = 5960132 }, - { url = "https://files.pythonhosted.org/packages/d7/7c/f5ee1bf6ed888494978046a809df2882aad35d414b622893322df7286879/numpy-2.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:65f3c2455188f09678355f5cae1f959a06b778bc66d535da07bf2ef20cd319d5", size = 12316144 }, - { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364 }, - { url = "https://files.pythonhosted.org/packages/b6/d0/1fe47a98ce0df229238b77611340aff92d52691bcbc10583303181abf7fc/numpy-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b346845443716c8e542d54112966383b448f4a3ba5c66409771b8c0889485dd3", size = 16665297 }, - { url = "https://files.pythonhosted.org/packages/27/d9/4e7c3f0e68dfa91f21c6fb6cf839bc829ec920688b1ce7ec722b1a6202fb/numpy-2.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2629289168f4897a3c4e23dc98d6f1731f0fc0fe52fb9db19f974041e4cc12b9", size = 14691853 }, - { url = "https://files.pythonhosted.org/packages/3a/66/bd096b13a87549683812b53ab211e6d413497f84e794fb3c39191948da97/numpy-2.4.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bb2e3cf95854233799013779216c57e153c1ee67a0bf92138acca0e429aefaee", size = 5198435 }, - { url = "https://files.pythonhosted.org/packages/a2/2f/687722910b5a5601de2135c891108f51dfc873d8e43c8ed9f4ebb440b4a2/numpy-2.4.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:7f3408ff897f8ab07a07fbe2823d7aee6ff644c097cc1f90382511fe982f647f", size = 6546347 }, - { url = "https://files.pythonhosted.org/packages/bf/ec/7971c4e98d86c564750393fab8d7d83d0a9432a9d78bb8a163a6dc59967a/numpy-2.4.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:decb0eb8a53c3b009b0962378065589685d66b23467ef5dac16cbe818afde27f", size = 15664626 }, - { url = "https://files.pythonhosted.org/packages/7e/eb/7daecbea84ec935b7fc732e18f532073064a3816f0932a40a17f3349185f/numpy-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5f51900414fc9204a0e0da158ba2ac52b75656e7dce7e77fb9f84bfa343b4cc", size = 16608916 }, - { url = "https://files.pythonhosted.org/packages/df/58/2a2b4a817ffd7472dca4421d9f0776898b364154e30c95f42195041dc03b/numpy-2.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6bd06731541f89cdc01b261ba2c9e037f1543df7472517836b78dfb15bd6e476", size = 17015824 }, - { url = "https://files.pythonhosted.org/packages/4a/ca/627a828d44e78a418c55f82dd4caea8ea4a8ef24e5144d9e71016e52fb40/numpy-2.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22654fe6be0e5206f553a9250762c653d3698e46686eee53b399ab90da59bd92", size = 18334581 }, - { url = "https://files.pythonhosted.org/packages/cd/c0/76f93962fc79955fcba30a429b62304332345f22d4daec1cb33653425643/numpy-2.4.3-cp313-cp313-win32.whl", hash = "sha256:d71e379452a2f670ccb689ec801b1218cd3983e253105d6e83780967e899d687", size = 5958618 }, - { url = "https://files.pythonhosted.org/packages/b1/3c/88af0040119209b9b5cb59485fa48b76f372c73068dbf9254784b975ac53/numpy-2.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:0a60e17a14d640f49146cb38e3f105f571318db7826d9b6fef7e4dce758faecd", size = 12312824 }, - { url = "https://files.pythonhosted.org/packages/58/ce/3d07743aced3d173f877c3ef6a454c2174ba42b584ab0b7e6d99374f51ed/numpy-2.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:c9619741e9da2059cd9c3f206110b97583c7152c1dc9f8aafd4beb450ac1c89d", size = 10221218 }, - { url = "https://files.pythonhosted.org/packages/62/09/d96b02a91d09e9d97862f4fc8bfebf5400f567d8eb1fe4b0cc4795679c15/numpy-2.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7aa4e54f6469300ebca1d9eb80acd5253cdfa36f2c03d79a35883687da430875", size = 14819570 }, - { url = "https://files.pythonhosted.org/packages/b5/ca/0b1aba3905fdfa3373d523b2b15b19029f4f3031c87f4066bd9d20ef6c6b/numpy-2.4.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d1b90d840b25874cf5cd20c219af10bac3667db3876d9a495609273ebe679070", size = 5326113 }, - { url = "https://files.pythonhosted.org/packages/c0/63/406e0fd32fcaeb94180fd6a4c41e55736d676c54346b7efbce548b94a914/numpy-2.4.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a749547700de0a20a6718293396ec237bb38218049cfce788e08fcb716e8cf73", size = 6646370 }, - { url = "https://files.pythonhosted.org/packages/b6/d0/10f7dc157d4b37af92720a196be6f54f889e90dcd30dce9dc657ed92c257/numpy-2.4.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f3c4a151a2e529adf49c1d54f0f57ff8f9b233ee4d44af623a81553ab86368", size = 15723499 }, - { url = "https://files.pythonhosted.org/packages/66/f1/d1c2bf1161396629701bc284d958dc1efa3a5a542aab83cf11ee6eb4cba5/numpy-2.4.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22c31dc07025123aedf7f2db9e91783df13f1776dc52c6b22c620870dc0fab22", size = 16657164 }, - { url = "https://files.pythonhosted.org/packages/1a/be/cca19230b740af199ac47331a21c71e7a3d0ba59661350483c1600d28c37/numpy-2.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:148d59127ac95979d6f07e4d460f934ebdd6eed641db9c0db6c73026f2b2101a", size = 17081544 }, - { url = "https://files.pythonhosted.org/packages/b9/c5/9602b0cbb703a0936fb40f8a95407e8171935b15846de2f0776e08af04c7/numpy-2.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a97cbf7e905c435865c2d939af3d93f99d18eaaa3cabe4256f4304fb51604349", size = 18380290 }, - { url = "https://files.pythonhosted.org/packages/ed/81/9f24708953cd30be9ee36ec4778f4b112b45165812f2ada4cc5ea1c1f254/numpy-2.4.3-cp313-cp313t-win32.whl", hash = "sha256:be3b8487d725a77acccc9924f65fd8bce9af7fac8c9820df1049424a2115af6c", size = 6082814 }, - { url = "https://files.pythonhosted.org/packages/e2/9e/52f6eaa13e1a799f0ab79066c17f7016a4a8ae0c1aefa58c82b4dab690b4/numpy-2.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1ec84fd7c8e652b0f4aaaf2e6e9cc8eaa9b1b80a537e06b2e3a2fb176eedcb26", size = 12452673 }, - { url = "https://files.pythonhosted.org/packages/c4/04/b8cece6ead0b30c9fbd99bb835ad7ea0112ac5f39f069788c5558e3b1ab2/numpy-2.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:120df8c0a81ebbf5b9020c91439fccd85f5e018a927a39f624845be194a2be02", size = 10290907 }, - { url = "https://files.pythonhosted.org/packages/70/ae/3936f79adebf8caf81bd7a599b90a561334a658be4dcc7b6329ebf4ee8de/numpy-2.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5884ce5c7acfae1e4e1b6fde43797d10aa506074d25b531b4f54bde33c0c31d4", size = 16664563 }, - { url = "https://files.pythonhosted.org/packages/9b/62/760f2b55866b496bb1fa7da2a6db076bef908110e568b02fcfc1422e2a3a/numpy-2.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:297837823f5bc572c5f9379b0c9f3a3365f08492cbdc33bcc3af174372ebb168", size = 14702161 }, - { url = "https://files.pythonhosted.org/packages/32/af/a7a39464e2c0a21526fb4fb76e346fb172ebc92f6d1c7a07c2c139cc17b1/numpy-2.4.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a111698b4a3f8dcbe54c64a7708f049355abd603e619013c346553c1fd4ca90b", size = 5208738 }, - { url = "https://files.pythonhosted.org/packages/29/8c/2a0cf86a59558fa078d83805589c2de490f29ed4fb336c14313a161d358a/numpy-2.4.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:4bd4741a6a676770e0e97fe9ab2e51de01183df3dcbcec591d26d331a40de950", size = 6543618 }, - { url = "https://files.pythonhosted.org/packages/aa/b8/612ce010c0728b1c363fa4ea3aa4c22fe1c5da1de008486f8c2f5cb92fae/numpy-2.4.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:54f29b877279d51e210e0c80709ee14ccbbad647810e8f3d375561c45ef613dd", size = 15680676 }, - { url = "https://files.pythonhosted.org/packages/a9/7e/4f120ecc54ba26ddf3dc348eeb9eb063f421de65c05fc961941798feea18/numpy-2.4.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:679f2a834bae9020f81534671c56fd0cc76dd7e5182f57131478e23d0dc59e24", size = 16613492 }, - { url = "https://files.pythonhosted.org/packages/2c/86/1b6020db73be330c4b45d5c6ee4295d59cfeef0e3ea323959d053e5a6909/numpy-2.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d84f0f881cb2225c2dfd7f78a10a5645d487a496c6668d6cc39f0f114164f3d0", size = 17031789 }, - { url = "https://files.pythonhosted.org/packages/07/3a/3b90463bf41ebc21d1b7e06079f03070334374208c0f9a1f05e4ae8455e7/numpy-2.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d213c7e6e8d211888cc359bab7199670a00f5b82c0978b9d1c75baf1eddbeac0", size = 18339941 }, - { url = "https://files.pythonhosted.org/packages/a8/74/6d736c4cd962259fd8bae9be27363eb4883a2f9069763747347544c2a487/numpy-2.4.3-cp314-cp314-win32.whl", hash = "sha256:52077feedeff7c76ed7c9f1a0428558e50825347b7545bbb8523da2cd55c547a", size = 6007503 }, - { url = "https://files.pythonhosted.org/packages/48/39/c56ef87af669364356bb011922ef0734fc49dad51964568634c72a009488/numpy-2.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:0448e7f9caefb34b4b7dd2b77f21e8906e5d6f0365ad525f9f4f530b13df2afc", size = 12444915 }, - { url = "https://files.pythonhosted.org/packages/9d/1f/ab8528e38d295fd349310807496fabb7cf9fe2e1f70b97bc20a483ea9d4a/numpy-2.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:b44fd60341c4d9783039598efadd03617fa28d041fc37d22b62d08f2027fa0e7", size = 10494875 }, - { url = "https://files.pythonhosted.org/packages/e6/ef/b7c35e4d5ef141b836658ab21a66d1a573e15b335b1d111d31f26c8ef80f/numpy-2.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a195f4216be9305a73c0e91c9b026a35f2161237cf1c6de9b681637772ea657", size = 14822225 }, - { url = "https://files.pythonhosted.org/packages/cd/8d/7730fa9278cf6648639946cc816e7cc89f0d891602584697923375f801ed/numpy-2.4.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:cd32fbacb9fd1bf041bf8e89e4576b6f00b895f06d00914820ae06a616bdfef7", size = 5328769 }, - { url = "https://files.pythonhosted.org/packages/47/01/d2a137317c958b074d338807c1b6a383406cdf8b8e53b075d804cc3d211d/numpy-2.4.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:2e03c05abaee1f672e9d67bc858f300b5ccba1c21397211e8d77d98350972093", size = 6649461 }, - { url = "https://files.pythonhosted.org/packages/5c/34/812ce12bc0f00272a4b0ec0d713cd237cb390666eb6206323d1cc9cedbb2/numpy-2.4.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d1ce23cce91fcea443320a9d0ece9b9305d4368875bab09538f7a5b4131938a", size = 15725809 }, - { url = "https://files.pythonhosted.org/packages/25/c0/2aed473a4823e905e765fee3dc2cbf504bd3e68ccb1150fbdabd5c39f527/numpy-2.4.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c59020932feb24ed49ffd03704fbab89f22aa9c0d4b180ff45542fe8918f5611", size = 16655242 }, - { url = "https://files.pythonhosted.org/packages/f2/c8/7e052b2fc87aa0e86de23f20e2c42bd261c624748aa8efd2c78f7bb8d8c6/numpy-2.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9684823a78a6cd6ad7511fc5e25b07947d1d5b5e2812c93fe99d7d4195130720", size = 17080660 }, - { url = "https://files.pythonhosted.org/packages/f3/3d/0876746044db2adcb11549f214d104f2e1be00f07a67edbb4e2812094847/numpy-2.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0200b25c687033316fb39f0ff4e3e690e8957a2c3c8d22499891ec58c37a3eb5", size = 18380384 }, - { url = "https://files.pythonhosted.org/packages/07/12/8160bea39da3335737b10308df4f484235fd297f556745f13092aa039d3b/numpy-2.4.3-cp314-cp314t-win32.whl", hash = "sha256:5e10da9e93247e554bb1d22f8edc51847ddd7dde52d85ce31024c1b4312bfba0", size = 6154547 }, - { url = "https://files.pythonhosted.org/packages/42/f3/76534f61f80d74cc9cdf2e570d3d4eeb92c2280a27c39b0aaf471eda7b48/numpy-2.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:45f003dbdffb997a03da2d1d0cb41fbd24a87507fb41605c0420a3db5bd4667b", size = 12633645 }, - { url = "https://files.pythonhosted.org/packages/1f/b6/7c0d4334c15983cec7f92a69e8ce9b1e6f31857e5ee3a413ac424e6bd63d/numpy-2.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:4d382735cecd7bcf090172489a525cd7d4087bc331f7df9f60ddc9a296cf208e", size = 10565454 }, +sdist = { url = "https://files.pythonhosted.org/packages/10/8b/c265f4823726ab832de836cdd184d0986dcf94480f81e8739692a7ac7af2/numpy-2.4.3.tar.gz", hash = "sha256:483a201202b73495f00dbc83796c6ae63137a9bdade074f7648b3e32613412dd", size = 20727743, upload-time = "2026-03-09T07:58:53.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/ed/6388632536f9788cea23a3a1b629f25b43eaacd7d7377e5d6bc7b9deb69b/numpy-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61b0cbabbb6126c8df63b9a3a0c4b1f44ebca5e12ff6997b80fcf267fb3150ef", size = 16669628, upload-time = "2026-03-09T07:56:24.252Z" }, + { url = "https://files.pythonhosted.org/packages/74/1b/ee2abfc68e1ce728b2958b6ba831d65c62e1b13ce3017c13943f8f9b5b2e/numpy-2.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7395e69ff32526710748f92cd8c9849b361830968ea3e24a676f272653e8983e", size = 14696872, upload-time = "2026-03-09T07:56:26.991Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d1/780400e915ff5638166f11ca9dc2c5815189f3d7cf6f8759a1685e586413/numpy-2.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:abdce0f71dcb4a00e4e77f3faf05e4616ceccfe72ccaa07f47ee79cda3b7b0f4", size = 5203489, upload-time = "2026-03-09T07:56:29.414Z" }, + { url = "https://files.pythonhosted.org/packages/0b/bb/baffa907e9da4cc34a6e556d6d90e032f6d7a75ea47968ea92b4858826c4/numpy-2.4.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:48da3a4ee1336454b07497ff7ec83903efa5505792c4e6d9bf83d99dc07a1e18", size = 6550814, upload-time = "2026-03-09T07:56:32.225Z" }, + { url = "https://files.pythonhosted.org/packages/7b/12/8c9f0c6c95f76aeb20fc4a699c33e9f827fa0d0f857747c73bb7b17af945/numpy-2.4.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e3bef222ad6b052280311d1d60db8e259e4947052c3ae7dd6817451fc8a4c5", size = 15666601, upload-time = "2026-03-09T07:56:34.461Z" }, + { url = "https://files.pythonhosted.org/packages/bd/79/cc665495e4d57d0aa6fbcc0aa57aa82671dfc78fbf95fe733ed86d98f52a/numpy-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7dd01a46700b1967487141a66ac1a3cf0dd8ebf1f08db37d46389401512ca97", size = 16621358, upload-time = "2026-03-09T07:56:36.852Z" }, + { url = "https://files.pythonhosted.org/packages/a8/40/b4ecb7224af1065c3539f5ecfff879d090de09608ad1008f02c05c770cb3/numpy-2.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:76f0f283506c28b12bba319c0fab98217e9f9b54e6160e9c79e9f7348ba32e9c", size = 17016135, upload-time = "2026-03-09T07:56:39.337Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/6a88e888052eed951afed7a142dcdf3b149a030ca59b4c71eef085858e43/numpy-2.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737f630a337364665aba3b5a77e56a68cc42d350edd010c345d65a3efa3addcc", size = 18345816, upload-time = "2026-03-09T07:56:42.31Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8f/103a60c5f8c3d7fc678c19cd7b2476110da689ccb80bc18050efbaeae183/numpy-2.4.3-cp312-cp312-win32.whl", hash = "sha256:26952e18d82a1dbbc2f008d402021baa8d6fc8e84347a2072a25e08b46d698b9", size = 5960132, upload-time = "2026-03-09T07:56:44.851Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7c/f5ee1bf6ed888494978046a809df2882aad35d414b622893322df7286879/numpy-2.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:65f3c2455188f09678355f5cae1f959a06b778bc66d535da07bf2ef20cd319d5", size = 12316144, upload-time = "2026-03-09T07:56:47.057Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364, upload-time = "2026-03-09T07:56:49.849Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/1fe47a98ce0df229238b77611340aff92d52691bcbc10583303181abf7fc/numpy-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b346845443716c8e542d54112966383b448f4a3ba5c66409771b8c0889485dd3", size = 16665297, upload-time = "2026-03-09T07:56:52.296Z" }, + { url = "https://files.pythonhosted.org/packages/27/d9/4e7c3f0e68dfa91f21c6fb6cf839bc829ec920688b1ce7ec722b1a6202fb/numpy-2.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2629289168f4897a3c4e23dc98d6f1731f0fc0fe52fb9db19f974041e4cc12b9", size = 14691853, upload-time = "2026-03-09T07:56:54.992Z" }, + { url = "https://files.pythonhosted.org/packages/3a/66/bd096b13a87549683812b53ab211e6d413497f84e794fb3c39191948da97/numpy-2.4.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bb2e3cf95854233799013779216c57e153c1ee67a0bf92138acca0e429aefaee", size = 5198435, upload-time = "2026-03-09T07:56:57.184Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/687722910b5a5601de2135c891108f51dfc873d8e43c8ed9f4ebb440b4a2/numpy-2.4.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:7f3408ff897f8ab07a07fbe2823d7aee6ff644c097cc1f90382511fe982f647f", size = 6546347, upload-time = "2026-03-09T07:56:59.531Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ec/7971c4e98d86c564750393fab8d7d83d0a9432a9d78bb8a163a6dc59967a/numpy-2.4.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:decb0eb8a53c3b009b0962378065589685d66b23467ef5dac16cbe818afde27f", size = 15664626, upload-time = "2026-03-09T07:57:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/7daecbea84ec935b7fc732e18f532073064a3816f0932a40a17f3349185f/numpy-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5f51900414fc9204a0e0da158ba2ac52b75656e7dce7e77fb9f84bfa343b4cc", size = 16608916, upload-time = "2026-03-09T07:57:04.008Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/2a2b4a817ffd7472dca4421d9f0776898b364154e30c95f42195041dc03b/numpy-2.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6bd06731541f89cdc01b261ba2c9e037f1543df7472517836b78dfb15bd6e476", size = 17015824, upload-time = "2026-03-09T07:57:06.347Z" }, + { url = "https://files.pythonhosted.org/packages/4a/ca/627a828d44e78a418c55f82dd4caea8ea4a8ef24e5144d9e71016e52fb40/numpy-2.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22654fe6be0e5206f553a9250762c653d3698e46686eee53b399ab90da59bd92", size = 18334581, upload-time = "2026-03-09T07:57:09.114Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c0/76f93962fc79955fcba30a429b62304332345f22d4daec1cb33653425643/numpy-2.4.3-cp313-cp313-win32.whl", hash = "sha256:d71e379452a2f670ccb689ec801b1218cd3983e253105d6e83780967e899d687", size = 5958618, upload-time = "2026-03-09T07:57:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3c/88af0040119209b9b5cb59485fa48b76f372c73068dbf9254784b975ac53/numpy-2.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:0a60e17a14d640f49146cb38e3f105f571318db7826d9b6fef7e4dce758faecd", size = 12312824, upload-time = "2026-03-09T07:57:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/58/ce/3d07743aced3d173f877c3ef6a454c2174ba42b584ab0b7e6d99374f51ed/numpy-2.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:c9619741e9da2059cd9c3f206110b97583c7152c1dc9f8aafd4beb450ac1c89d", size = 10221218, upload-time = "2026-03-09T07:57:16.183Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/d96b02a91d09e9d97862f4fc8bfebf5400f567d8eb1fe4b0cc4795679c15/numpy-2.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7aa4e54f6469300ebca1d9eb80acd5253cdfa36f2c03d79a35883687da430875", size = 14819570, upload-time = "2026-03-09T07:57:18.564Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/0b1aba3905fdfa3373d523b2b15b19029f4f3031c87f4066bd9d20ef6c6b/numpy-2.4.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d1b90d840b25874cf5cd20c219af10bac3667db3876d9a495609273ebe679070", size = 5326113, upload-time = "2026-03-09T07:57:21.052Z" }, + { url = "https://files.pythonhosted.org/packages/c0/63/406e0fd32fcaeb94180fd6a4c41e55736d676c54346b7efbce548b94a914/numpy-2.4.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a749547700de0a20a6718293396ec237bb38218049cfce788e08fcb716e8cf73", size = 6646370, upload-time = "2026-03-09T07:57:22.804Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/10f7dc157d4b37af92720a196be6f54f889e90dcd30dce9dc657ed92c257/numpy-2.4.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f3c4a151a2e529adf49c1d54f0f57ff8f9b233ee4d44af623a81553ab86368", size = 15723499, upload-time = "2026-03-09T07:57:24.693Z" }, + { url = "https://files.pythonhosted.org/packages/66/f1/d1c2bf1161396629701bc284d958dc1efa3a5a542aab83cf11ee6eb4cba5/numpy-2.4.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22c31dc07025123aedf7f2db9e91783df13f1776dc52c6b22c620870dc0fab22", size = 16657164, upload-time = "2026-03-09T07:57:27.676Z" }, + { url = "https://files.pythonhosted.org/packages/1a/be/cca19230b740af199ac47331a21c71e7a3d0ba59661350483c1600d28c37/numpy-2.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:148d59127ac95979d6f07e4d460f934ebdd6eed641db9c0db6c73026f2b2101a", size = 17081544, upload-time = "2026-03-09T07:57:30.664Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c5/9602b0cbb703a0936fb40f8a95407e8171935b15846de2f0776e08af04c7/numpy-2.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a97cbf7e905c435865c2d939af3d93f99d18eaaa3cabe4256f4304fb51604349", size = 18380290, upload-time = "2026-03-09T07:57:33.763Z" }, + { url = "https://files.pythonhosted.org/packages/ed/81/9f24708953cd30be9ee36ec4778f4b112b45165812f2ada4cc5ea1c1f254/numpy-2.4.3-cp313-cp313t-win32.whl", hash = "sha256:be3b8487d725a77acccc9924f65fd8bce9af7fac8c9820df1049424a2115af6c", size = 6082814, upload-time = "2026-03-09T07:57:36.491Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9e/52f6eaa13e1a799f0ab79066c17f7016a4a8ae0c1aefa58c82b4dab690b4/numpy-2.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1ec84fd7c8e652b0f4aaaf2e6e9cc8eaa9b1b80a537e06b2e3a2fb176eedcb26", size = 12452673, upload-time = "2026-03-09T07:57:38.281Z" }, + { url = "https://files.pythonhosted.org/packages/c4/04/b8cece6ead0b30c9fbd99bb835ad7ea0112ac5f39f069788c5558e3b1ab2/numpy-2.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:120df8c0a81ebbf5b9020c91439fccd85f5e018a927a39f624845be194a2be02", size = 10290907, upload-time = "2026-03-09T07:57:40.747Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/3936f79adebf8caf81bd7a599b90a561334a658be4dcc7b6329ebf4ee8de/numpy-2.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5884ce5c7acfae1e4e1b6fde43797d10aa506074d25b531b4f54bde33c0c31d4", size = 16664563, upload-time = "2026-03-09T07:57:43.817Z" }, + { url = "https://files.pythonhosted.org/packages/9b/62/760f2b55866b496bb1fa7da2a6db076bef908110e568b02fcfc1422e2a3a/numpy-2.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:297837823f5bc572c5f9379b0c9f3a3365f08492cbdc33bcc3af174372ebb168", size = 14702161, upload-time = "2026-03-09T07:57:46.169Z" }, + { url = "https://files.pythonhosted.org/packages/32/af/a7a39464e2c0a21526fb4fb76e346fb172ebc92f6d1c7a07c2c139cc17b1/numpy-2.4.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a111698b4a3f8dcbe54c64a7708f049355abd603e619013c346553c1fd4ca90b", size = 5208738, upload-time = "2026-03-09T07:57:48.506Z" }, + { url = "https://files.pythonhosted.org/packages/29/8c/2a0cf86a59558fa078d83805589c2de490f29ed4fb336c14313a161d358a/numpy-2.4.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:4bd4741a6a676770e0e97fe9ab2e51de01183df3dcbcec591d26d331a40de950", size = 6543618, upload-time = "2026-03-09T07:57:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b8/612ce010c0728b1c363fa4ea3aa4c22fe1c5da1de008486f8c2f5cb92fae/numpy-2.4.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:54f29b877279d51e210e0c80709ee14ccbbad647810e8f3d375561c45ef613dd", size = 15680676, upload-time = "2026-03-09T07:57:52.34Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7e/4f120ecc54ba26ddf3dc348eeb9eb063f421de65c05fc961941798feea18/numpy-2.4.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:679f2a834bae9020f81534671c56fd0cc76dd7e5182f57131478e23d0dc59e24", size = 16613492, upload-time = "2026-03-09T07:57:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/2c/86/1b6020db73be330c4b45d5c6ee4295d59cfeef0e3ea323959d053e5a6909/numpy-2.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d84f0f881cb2225c2dfd7f78a10a5645d487a496c6668d6cc39f0f114164f3d0", size = 17031789, upload-time = "2026-03-09T07:57:57.641Z" }, + { url = "https://files.pythonhosted.org/packages/07/3a/3b90463bf41ebc21d1b7e06079f03070334374208c0f9a1f05e4ae8455e7/numpy-2.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d213c7e6e8d211888cc359bab7199670a00f5b82c0978b9d1c75baf1eddbeac0", size = 18339941, upload-time = "2026-03-09T07:58:00.577Z" }, + { url = "https://files.pythonhosted.org/packages/a8/74/6d736c4cd962259fd8bae9be27363eb4883a2f9069763747347544c2a487/numpy-2.4.3-cp314-cp314-win32.whl", hash = "sha256:52077feedeff7c76ed7c9f1a0428558e50825347b7545bbb8523da2cd55c547a", size = 6007503, upload-time = "2026-03-09T07:58:03.331Z" }, + { url = "https://files.pythonhosted.org/packages/48/39/c56ef87af669364356bb011922ef0734fc49dad51964568634c72a009488/numpy-2.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:0448e7f9caefb34b4b7dd2b77f21e8906e5d6f0365ad525f9f4f530b13df2afc", size = 12444915, upload-time = "2026-03-09T07:58:06.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1f/ab8528e38d295fd349310807496fabb7cf9fe2e1f70b97bc20a483ea9d4a/numpy-2.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:b44fd60341c4d9783039598efadd03617fa28d041fc37d22b62d08f2027fa0e7", size = 10494875, upload-time = "2026-03-09T07:58:08.734Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ef/b7c35e4d5ef141b836658ab21a66d1a573e15b335b1d111d31f26c8ef80f/numpy-2.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a195f4216be9305a73c0e91c9b026a35f2161237cf1c6de9b681637772ea657", size = 14822225, upload-time = "2026-03-09T07:58:11.034Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8d/7730fa9278cf6648639946cc816e7cc89f0d891602584697923375f801ed/numpy-2.4.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:cd32fbacb9fd1bf041bf8e89e4576b6f00b895f06d00914820ae06a616bdfef7", size = 5328769, upload-time = "2026-03-09T07:58:13.67Z" }, + { url = "https://files.pythonhosted.org/packages/47/01/d2a137317c958b074d338807c1b6a383406cdf8b8e53b075d804cc3d211d/numpy-2.4.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:2e03c05abaee1f672e9d67bc858f300b5ccba1c21397211e8d77d98350972093", size = 6649461, upload-time = "2026-03-09T07:58:15.912Z" }, + { url = "https://files.pythonhosted.org/packages/5c/34/812ce12bc0f00272a4b0ec0d713cd237cb390666eb6206323d1cc9cedbb2/numpy-2.4.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d1ce23cce91fcea443320a9d0ece9b9305d4368875bab09538f7a5b4131938a", size = 15725809, upload-time = "2026-03-09T07:58:17.787Z" }, + { url = "https://files.pythonhosted.org/packages/25/c0/2aed473a4823e905e765fee3dc2cbf504bd3e68ccb1150fbdabd5c39f527/numpy-2.4.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c59020932feb24ed49ffd03704fbab89f22aa9c0d4b180ff45542fe8918f5611", size = 16655242, upload-time = "2026-03-09T07:58:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c8/7e052b2fc87aa0e86de23f20e2c42bd261c624748aa8efd2c78f7bb8d8c6/numpy-2.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9684823a78a6cd6ad7511fc5e25b07947d1d5b5e2812c93fe99d7d4195130720", size = 17080660, upload-time = "2026-03-09T07:58:23.067Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3d/0876746044db2adcb11549f214d104f2e1be00f07a67edbb4e2812094847/numpy-2.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0200b25c687033316fb39f0ff4e3e690e8957a2c3c8d22499891ec58c37a3eb5", size = 18380384, upload-time = "2026-03-09T07:58:25.839Z" }, + { url = "https://files.pythonhosted.org/packages/07/12/8160bea39da3335737b10308df4f484235fd297f556745f13092aa039d3b/numpy-2.4.3-cp314-cp314t-win32.whl", hash = "sha256:5e10da9e93247e554bb1d22f8edc51847ddd7dde52d85ce31024c1b4312bfba0", size = 6154547, upload-time = "2026-03-09T07:58:28.289Z" }, + { url = "https://files.pythonhosted.org/packages/42/f3/76534f61f80d74cc9cdf2e570d3d4eeb92c2280a27c39b0aaf471eda7b48/numpy-2.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:45f003dbdffb997a03da2d1d0cb41fbd24a87507fb41605c0420a3db5bd4667b", size = 12633645, upload-time = "2026-03-09T07:58:30.384Z" }, + { url = "https://files.pythonhosted.org/packages/1f/b6/7c0d4334c15983cec7f92a69e8ce9b1e6f31857e5ee3a413ac424e6bd63d/numpy-2.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:4d382735cecd7bcf090172489a525cd7d4087bc331f7df9f60ddc9a296cf208e", size = 10565454, upload-time = "2026-03-09T07:58:33.031Z" }, ] [[package]] @@ -841,9 +1377,9 @@ dependencies = [ { name = "pydantic" }, { name = "pydantic-settings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/0f/da2d4a15b6f4e358e77b4b0dad48f6248d08bd9a1e3fc88b4e66496c104c/openelectricity-0.9.2.tar.gz", hash = "sha256:44938f6e7cfc0f383416ffd81ad337b982061bb8ca2def66fa9f53a99811fcbb", size = 194998 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/0f/da2d4a15b6f4e358e77b4b0dad48f6248d08bd9a1e3fc88b4e66496c104c/openelectricity-0.9.2.tar.gz", hash = "sha256:44938f6e7cfc0f383416ffd81ad337b982061bb8ca2def66fa9f53a99811fcbb", size = 194998, upload-time = "2025-09-24T04:59:57.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/60/e30ac1279727e24919fa10f9bf8633e4965243a313c4186ef7c38784ba6b/openelectricity-0.9.2-py3-none-any.whl", hash = "sha256:e22a59dd744a924e0831f0ec6c96f733fab6415a58c3c01fb900199e701422a2", size = 19735 }, + { url = "https://files.pythonhosted.org/packages/57/60/e30ac1279727e24919fa10f9bf8633e4965243a313c4186ef7c38784ba6b/openelectricity-0.9.2-py3-none-any.whl", hash = "sha256:e22a59dd744a924e0831f0ec6c96f733fab6415a58c3c01fb900199e701422a2", size = 19735, upload-time = "2025-09-24T04:59:56.221Z" }, ] [package.optional-dependencies] @@ -857,9 +1393,9 @@ analysis = [ name = "packaging" version = "26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416 } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366 }, + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] @@ -871,56 +1407,127 @@ dependencies = [ { name = "python-dateutil" }, { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/0c/b28ed414f080ee0ad153f848586d61d1878f91689950f037f976ce15f6c8/pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8", size = 4641901 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/51/b467209c08dae2c624873d7491ea47d2b47336e5403309d433ea79c38571/pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d", size = 10344357 }, - { url = "https://files.pythonhosted.org/packages/7c/f1/e2567ffc8951ab371db2e40b2fe068e36b81d8cf3260f06ae508700e5504/pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955", size = 9884543 }, - { url = "https://files.pythonhosted.org/packages/d7/39/327802e0b6d693182403c144edacbc27eb82907b57062f23ef5a4c4a5ea7/pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b", size = 10396030 }, - { url = "https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4", size = 10876435 }, - { url = "https://files.pythonhosted.org/packages/b5/a6/2a75320849dd154a793f69c951db759aedb8d1dd3939eeacda9bdcfa1629/pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1", size = 11405133 }, - { url = "https://files.pythonhosted.org/packages/58/53/1d68fafb2e02d7881df66aa53be4cd748d25cbe311f3b3c85c93ea5d30ca/pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821", size = 11932065 }, - { url = "https://files.pythonhosted.org/packages/75/08/67cc404b3a966b6df27b38370ddd96b3b023030b572283d035181854aac5/pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43", size = 9741627 }, - { url = "https://files.pythonhosted.org/packages/86/4f/caf9952948fb00d23795f09b893d11f1cacb384e666854d87249530f7cbe/pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7", size = 9052483 }, - { url = "https://files.pythonhosted.org/packages/0b/48/aad6ec4f8d007534c091e9a7172b3ec1b1ee6d99a9cbb936b5eab6c6cf58/pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262", size = 10317509 }, - { url = "https://files.pythonhosted.org/packages/a8/14/5990826f779f79148ae9d3a2c39593dc04d61d5d90541e71b5749f35af95/pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56", size = 9860561 }, - { url = "https://files.pythonhosted.org/packages/fa/80/f01ff54664b6d70fed71475543d108a9b7c888e923ad210795bef04ffb7d/pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e", size = 10365506 }, - { url = "https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791", size = 10873196 }, - { url = "https://files.pythonhosted.org/packages/48/a9/9301c83d0b47c23ac5deab91c6b39fd98d5b5db4d93b25df8d381451828f/pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a", size = 11370859 }, - { url = "https://files.pythonhosted.org/packages/59/fe/0c1fc5bd2d29c7db2ab372330063ad555fb83e08422829c785f5ec2176ca/pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8", size = 11924584 }, - { url = "https://files.pythonhosted.org/packages/d6/7d/216a1588b65a7aa5f4535570418a599d943c85afb1d95b0876fc00aa1468/pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25", size = 9742769 }, - { url = "https://files.pythonhosted.org/packages/c4/cb/810a22a6af9a4e97c8ab1c946b47f3489c5bca5adc483ce0ffc84c9cc768/pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59", size = 9043855 }, - { url = "https://files.pythonhosted.org/packages/92/fa/423c89086cca1f039cf1253c3ff5b90f157b5b3757314aa635f6bf3e30aa/pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06", size = 10752673 }, - { url = "https://files.pythonhosted.org/packages/22/23/b5a08ec1f40020397f0faba72f1e2c11f7596a6169c7b3e800abff0e433f/pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f", size = 10404967 }, - { url = "https://files.pythonhosted.org/packages/5c/81/94841f1bb4afdc2b52a99daa895ac2c61600bb72e26525ecc9543d453ebc/pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324", size = 10320575 }, - { url = "https://files.pythonhosted.org/packages/0a/8b/2ae37d66a5342a83adadfd0cb0b4bf9c3c7925424dd5f40d15d6cfaa35ee/pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9", size = 10710921 }, - { url = "https://files.pythonhosted.org/packages/a2/61/772b2e2757855e232b7ccf7cb8079a5711becb3a97f291c953def15a833f/pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76", size = 11334191 }, - { url = "https://files.pythonhosted.org/packages/1b/08/b16c6df3ef555d8495d1d265a7963b65be166785d28f06a350913a4fac78/pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098", size = 11782256 }, - { url = "https://files.pythonhosted.org/packages/55/80/178af0594890dee17e239fca96d3d8670ba0f5ff59b7d0439850924a9c09/pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35", size = 10485047 }, - { url = "https://files.pythonhosted.org/packages/bb/8b/4bb774a998b97e6c2fd62a9e6cfdaae133b636fd1c468f92afb4ae9a447a/pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a", size = 10322465 }, - { url = "https://files.pythonhosted.org/packages/72/3a/5b39b51c64159f470f1ca3b1c2a87da290657ca022f7cd11442606f607d1/pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f", size = 9910632 }, - { url = "https://files.pythonhosted.org/packages/4e/f7/b449ffb3f68c11da12fc06fbf6d2fa3a41c41e17d0284d23a79e1c13a7e4/pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749", size = 10440535 }, - { url = "https://files.pythonhosted.org/packages/55/77/6ea82043db22cb0f2bbfe7198da3544000ddaadb12d26be36e19b03a2dc5/pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249", size = 10893940 }, - { url = "https://files.pythonhosted.org/packages/03/30/f1b502a72468c89412c1b882a08f6eed8a4ee9dc033f35f65d0663df6081/pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee", size = 11442711 }, - { url = "https://files.pythonhosted.org/packages/0d/f0/ebb6ddd8fc049e98cabac5c2924d14d1dda26a20adb70d41ea2e428d3ec4/pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c", size = 11963918 }, - { url = "https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66", size = 9862099 }, - { url = "https://files.pythonhosted.org/packages/e6/b7/6af9aac41ef2456b768ef0ae60acf8abcebb450a52043d030a65b4b7c9bd/pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132", size = 9185333 }, - { url = "https://files.pythonhosted.org/packages/66/fc/848bb6710bc6061cb0c5badd65b92ff75c81302e0e31e496d00029fe4953/pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32", size = 10772664 }, - { url = "https://files.pythonhosted.org/packages/69/5c/866a9bbd0f79263b4b0db6ec1a341be13a1473323f05c122388e0f15b21d/pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87", size = 10421286 }, - { url = "https://files.pythonhosted.org/packages/51/a4/2058fb84fb1cfbfb2d4a6d485e1940bb4ad5716e539d779852494479c580/pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988", size = 10342050 }, - { url = "https://files.pythonhosted.org/packages/22/1b/674e89996cc4be74db3c4eb09240c4bb549865c9c3f5d9b086ff8fcfbf00/pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221", size = 10740055 }, - { url = "https://files.pythonhosted.org/packages/d0/f8/e954b750764298c22fa4614376531fe63c521ef517e7059a51f062b87dca/pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff", size = 11357632 }, - { url = "https://files.pythonhosted.org/packages/6d/02/c6e04b694ffd68568297abd03588b6d30295265176a5c01b7459d3bc35a3/pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5", size = 11810974 }, - { url = "https://files.pythonhosted.org/packages/89/41/d7dfb63d2407f12055215070c42fc6ac41b66e90a2946cdc5e759058398b/pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937", size = 10884622 }, - { url = "https://files.pythonhosted.org/packages/68/b0/34937815889fa982613775e4b97fddd13250f11012d769949c5465af2150/pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d", size = 9452085 }, +sdist = { url = "https://files.pythonhosted.org/packages/2e/0c/b28ed414f080ee0ad153f848586d61d1878f91689950f037f976ce15f6c8/pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8", size = 4641901, upload-time = "2026-02-17T22:20:16.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/51/b467209c08dae2c624873d7491ea47d2b47336e5403309d433ea79c38571/pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d", size = 10344357, upload-time = "2026-02-17T22:18:38.262Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f1/e2567ffc8951ab371db2e40b2fe068e36b81d8cf3260f06ae508700e5504/pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955", size = 9884543, upload-time = "2026-02-17T22:18:41.476Z" }, + { url = "https://files.pythonhosted.org/packages/d7/39/327802e0b6d693182403c144edacbc27eb82907b57062f23ef5a4c4a5ea7/pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b", size = 10396030, upload-time = "2026-02-17T22:18:43.822Z" }, + { url = "https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4", size = 10876435, upload-time = "2026-02-17T22:18:45.954Z" }, + { url = "https://files.pythonhosted.org/packages/b5/a6/2a75320849dd154a793f69c951db759aedb8d1dd3939eeacda9bdcfa1629/pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1", size = 11405133, upload-time = "2026-02-17T22:18:48.533Z" }, + { url = "https://files.pythonhosted.org/packages/58/53/1d68fafb2e02d7881df66aa53be4cd748d25cbe311f3b3c85c93ea5d30ca/pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821", size = 11932065, upload-time = "2026-02-17T22:18:50.837Z" }, + { url = "https://files.pythonhosted.org/packages/75/08/67cc404b3a966b6df27b38370ddd96b3b023030b572283d035181854aac5/pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43", size = 9741627, upload-time = "2026-02-17T22:18:53.905Z" }, + { url = "https://files.pythonhosted.org/packages/86/4f/caf9952948fb00d23795f09b893d11f1cacb384e666854d87249530f7cbe/pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7", size = 9052483, upload-time = "2026-02-17T22:18:57.31Z" }, + { url = "https://files.pythonhosted.org/packages/0b/48/aad6ec4f8d007534c091e9a7172b3ec1b1ee6d99a9cbb936b5eab6c6cf58/pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262", size = 10317509, upload-time = "2026-02-17T22:18:59.498Z" }, + { url = "https://files.pythonhosted.org/packages/a8/14/5990826f779f79148ae9d3a2c39593dc04d61d5d90541e71b5749f35af95/pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56", size = 9860561, upload-time = "2026-02-17T22:19:02.265Z" }, + { url = "https://files.pythonhosted.org/packages/fa/80/f01ff54664b6d70fed71475543d108a9b7c888e923ad210795bef04ffb7d/pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e", size = 10365506, upload-time = "2026-02-17T22:19:05.017Z" }, + { url = "https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791", size = 10873196, upload-time = "2026-02-17T22:19:07.204Z" }, + { url = "https://files.pythonhosted.org/packages/48/a9/9301c83d0b47c23ac5deab91c6b39fd98d5b5db4d93b25df8d381451828f/pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a", size = 11370859, upload-time = "2026-02-17T22:19:09.436Z" }, + { url = "https://files.pythonhosted.org/packages/59/fe/0c1fc5bd2d29c7db2ab372330063ad555fb83e08422829c785f5ec2176ca/pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8", size = 11924584, upload-time = "2026-02-17T22:19:11.562Z" }, + { url = "https://files.pythonhosted.org/packages/d6/7d/216a1588b65a7aa5f4535570418a599d943c85afb1d95b0876fc00aa1468/pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25", size = 9742769, upload-time = "2026-02-17T22:19:13.926Z" }, + { url = "https://files.pythonhosted.org/packages/c4/cb/810a22a6af9a4e97c8ab1c946b47f3489c5bca5adc483ce0ffc84c9cc768/pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59", size = 9043855, upload-time = "2026-02-17T22:19:16.09Z" }, + { url = "https://files.pythonhosted.org/packages/92/fa/423c89086cca1f039cf1253c3ff5b90f157b5b3757314aa635f6bf3e30aa/pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06", size = 10752673, upload-time = "2026-02-17T22:19:18.304Z" }, + { url = "https://files.pythonhosted.org/packages/22/23/b5a08ec1f40020397f0faba72f1e2c11f7596a6169c7b3e800abff0e433f/pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f", size = 10404967, upload-time = "2026-02-17T22:19:20.726Z" }, + { url = "https://files.pythonhosted.org/packages/5c/81/94841f1bb4afdc2b52a99daa895ac2c61600bb72e26525ecc9543d453ebc/pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324", size = 10320575, upload-time = "2026-02-17T22:19:24.919Z" }, + { url = "https://files.pythonhosted.org/packages/0a/8b/2ae37d66a5342a83adadfd0cb0b4bf9c3c7925424dd5f40d15d6cfaa35ee/pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9", size = 10710921, upload-time = "2026-02-17T22:19:27.181Z" }, + { url = "https://files.pythonhosted.org/packages/a2/61/772b2e2757855e232b7ccf7cb8079a5711becb3a97f291c953def15a833f/pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76", size = 11334191, upload-time = "2026-02-17T22:19:29.411Z" }, + { url = "https://files.pythonhosted.org/packages/1b/08/b16c6df3ef555d8495d1d265a7963b65be166785d28f06a350913a4fac78/pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098", size = 11782256, upload-time = "2026-02-17T22:19:32.34Z" }, + { url = "https://files.pythonhosted.org/packages/55/80/178af0594890dee17e239fca96d3d8670ba0f5ff59b7d0439850924a9c09/pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35", size = 10485047, upload-time = "2026-02-17T22:19:34.605Z" }, + { url = "https://files.pythonhosted.org/packages/bb/8b/4bb774a998b97e6c2fd62a9e6cfdaae133b636fd1c468f92afb4ae9a447a/pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a", size = 10322465, upload-time = "2026-02-17T22:19:36.803Z" }, + { url = "https://files.pythonhosted.org/packages/72/3a/5b39b51c64159f470f1ca3b1c2a87da290657ca022f7cd11442606f607d1/pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f", size = 9910632, upload-time = "2026-02-17T22:19:39.001Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f7/b449ffb3f68c11da12fc06fbf6d2fa3a41c41e17d0284d23a79e1c13a7e4/pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749", size = 10440535, upload-time = "2026-02-17T22:19:41.157Z" }, + { url = "https://files.pythonhosted.org/packages/55/77/6ea82043db22cb0f2bbfe7198da3544000ddaadb12d26be36e19b03a2dc5/pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249", size = 10893940, upload-time = "2026-02-17T22:19:43.493Z" }, + { url = "https://files.pythonhosted.org/packages/03/30/f1b502a72468c89412c1b882a08f6eed8a4ee9dc033f35f65d0663df6081/pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee", size = 11442711, upload-time = "2026-02-17T22:19:46.074Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f0/ebb6ddd8fc049e98cabac5c2924d14d1dda26a20adb70d41ea2e428d3ec4/pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c", size = 11963918, upload-time = "2026-02-17T22:19:48.838Z" }, + { url = "https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66", size = 9862099, upload-time = "2026-02-17T22:19:51.081Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b7/6af9aac41ef2456b768ef0ae60acf8abcebb450a52043d030a65b4b7c9bd/pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132", size = 9185333, upload-time = "2026-02-17T22:19:53.266Z" }, + { url = "https://files.pythonhosted.org/packages/66/fc/848bb6710bc6061cb0c5badd65b92ff75c81302e0e31e496d00029fe4953/pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32", size = 10772664, upload-time = "2026-02-17T22:19:55.806Z" }, + { url = "https://files.pythonhosted.org/packages/69/5c/866a9bbd0f79263b4b0db6ec1a341be13a1473323f05c122388e0f15b21d/pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87", size = 10421286, upload-time = "2026-02-17T22:19:58.091Z" }, + { url = "https://files.pythonhosted.org/packages/51/a4/2058fb84fb1cfbfb2d4a6d485e1940bb4ad5716e539d779852494479c580/pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988", size = 10342050, upload-time = "2026-02-17T22:20:01.376Z" }, + { url = "https://files.pythonhosted.org/packages/22/1b/674e89996cc4be74db3c4eb09240c4bb549865c9c3f5d9b086ff8fcfbf00/pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221", size = 10740055, upload-time = "2026-02-17T22:20:04.328Z" }, + { url = "https://files.pythonhosted.org/packages/d0/f8/e954b750764298c22fa4614376531fe63c521ef517e7059a51f062b87dca/pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff", size = 11357632, upload-time = "2026-02-17T22:20:06.647Z" }, + { url = "https://files.pythonhosted.org/packages/6d/02/c6e04b694ffd68568297abd03588b6d30295265176a5c01b7459d3bc35a3/pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5", size = 11810974, upload-time = "2026-02-17T22:20:08.946Z" }, + { url = "https://files.pythonhosted.org/packages/89/41/d7dfb63d2407f12055215070c42fc6ac41b66e90a2946cdc5e759058398b/pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937", size = 10884622, upload-time = "2026-02-17T22:20:11.711Z" }, + { url = "https://files.pythonhosted.org/packages/68/b0/34937815889fa982613775e4b97fddd13250f11012d769949c5465af2150/pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d", size = 9452085, upload-time = "2026-02-17T22:20:14.331Z" }, +] + +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ac/31fb64e1e7efb5a4b50cd3d92049ba89ac6e4d8d3bb6a74e15048ca3353e/pillow-12.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:21900ce7ba264168cd50defae43cd75d25c833ad4ad6e73ffc5596d12e25ac89", size = 4161684, upload-time = "2026-07-01T11:54:25.934Z" }, + { url = "https://files.pythonhosted.org/packages/87/b4/9805e23d2b4d77842b468513841fda254ee42f0289d25088340e4ff46e2d/pillow-12.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:4e8c2a84d977f50b9daed6eeaf3baef67d00d5d74d932288f02cb94518ee3ace", size = 4255487, upload-time = "2026-07-01T11:54:27.935Z" }, + { url = "https://files.pythonhosted.org/packages/df/39/ecf519435a200c693fe053a6ee4d835b41cf963a4dfc2551c4e637cb2a71/pillow-12.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:ae26d61dfa7a47befdc7572b521024e8745f3d809bd95ca9505a7bba9ef849ec", size = 3696433, upload-time = "2026-07-01T11:54:29.813Z" }, + { url = "https://files.pythonhosted.org/packages/42/92/2fc3ffad878ae8dd5469ec1bc8eb83b71f48e13efdf68f02709003982a32/pillow-12.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a743ff716f746fc19a9557f60dab1600d4613255f8a7aeb3cdde4db7eb15a66", size = 5345889, upload-time = "2026-07-01T11:54:31.97Z" }, + { url = "https://files.pythonhosted.org/packages/10/76/8803c13605b763d33d156c4678fc77f8443389c0c51c8aef707bb02015f4/pillow-12.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d69141514cc30b774ceea5e3ed3a6635c8d8a96edf664689b890f4089111fb35", size = 4780109, upload-time = "2026-07-01T11:54:34.026Z" }, + { url = "https://files.pythonhosted.org/packages/1f/01/e18aff37cb0b4aac47ac90f016d347a49aca667ef97f190b06ac2aabc928/pillow-12.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f7401aebd7f581d7f83a439d87d474999317ee099218e5ad25d125290990ba65", size = 6263736, upload-time = "2026-07-01T11:54:36.131Z" }, + { url = "https://files.pythonhosted.org/packages/f7/62/de5bdd77d935331f4f802edc11e4d82950f642caad6cb2f949837b8560e2/pillow-12.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0847a763afefb695bc912d7c131e7e0632d4edc1d8698f58ddabec8e46b8b6d3", size = 6937129, upload-time = "2026-07-01T11:54:38.216Z" }, + { url = "https://files.pythonhosted.org/packages/70/4d/105627a13300c5e0df1d174230b32fd1273062c96f7745fd552b945d1e1d/pillow-12.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:571b9fcb07b97ef3a492028fb3d2dc0993ca23a06138b0315286566d29ef718a", size = 6339562, upload-time = "2026-07-01T11:54:40.354Z" }, + { url = "https://files.pythonhosted.org/packages/6b/1d/f13de01a553988ab895ba1c722e06cf3144d4f57656fd5b81b6d881f1179/pillow-12.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:756c768d0c9c2955feb7a56c37ea24aea2e369f8d36a88da270b6a9f19e62b5e", size = 7049439, upload-time = "2026-07-01T11:54:42.489Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f9/066794cca041b969964f779ee5fa66a9498bbf34248ac39c5d7954e4198f/pillow-12.3.0-cp313-cp313-win32.whl", hash = "sha256:a876864214e136f0eb367788dbd7df045f4806801518e2cfe9e13229cfe06d8f", size = 6473287, upload-time = "2026-07-01T11:54:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9b/7a58e61d62be561da3a356fe2384d4059a6345fc130e23ef1c36a5b81d24/pillow-12.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:1cca606cd25738df4ed873d5ad46bbdb3d83b5cbca291f6b4ff13a4df6b0bbe8", size = 7239691, upload-time = "2026-07-01T11:54:47.141Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b0/c4ed4f0ef8f8fa5ee8351537db6650bb8189f7e118842978dd6589065692/pillow-12.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:b629de27fda84b42cde7edef0d85f13b958b47f6e9bbcbba9b673c562a89bd8b", size = 2568185, upload-time = "2026-07-01T11:54:49.137Z" }, + { url = "https://files.pythonhosted.org/packages/dc/01/001f65b68192f0228cc1dbbc8d2530ab5d58b61037ba0587f946fea607cd/pillow-12.3.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:9cf95fe4d0f84c82d282745d9bb08ad9f926efa00be4697e767b814ce40d4330", size = 4161736, upload-time = "2026-07-01T11:54:51.156Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d2/0219746d0fd16fc8a84498e79452375be3797d3ce4044596ce565164b84f/pillow-12.3.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:8728f216dcdb6e6d555cf971cb34076139ad74b31fc2c14da4fafc741c5f6217", size = 4255435, upload-time = "2026-07-01T11:54:53.414Z" }, + { url = "https://files.pythonhosted.org/packages/c8/02/8d0bc62ef0302318c46ff2a512822d2610e81c7aa46c9b3abe6cbaca5ad0/pillow-12.3.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:a45650e8ce7fafffd731db8550230db6b0d306d181a90b67d3e6bca2f1990930", size = 3696262, upload-time = "2026-07-01T11:54:55.739Z" }, + { url = "https://files.pythonhosted.org/packages/85/e2/73c77d218410b14f5f2d565e8a998d5317b7b9c75368d29985139f7a46f0/pillow-12.3.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ba54cfebe86920a559a7c4d6b9050791c20513650a1952ebe3368c7dc70306f8", size = 5350344, upload-time = "2026-07-01T11:54:57.657Z" }, + { url = "https://files.pythonhosted.org/packages/c7/da/32c752228ae345f489e3a42499d817b6c3996da7e8a3bc7a04fc806b243b/pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e158cb00350dc278f3b91551101aa7d12415a66ebf2c91d8d5ac14e56ddd3ad0", size = 4780131, upload-time = "2026-07-01T11:54:59.713Z" }, + { url = "https://files.pythonhosted.org/packages/b1/9d/8b2c807dbef61a5197c047afe99823787eb66f63daf9fb2432f91d6f0462/pillow-12.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9aeb04d6aef139de265b29683e119b638208f88cf73cdd1658aa07221165321", size = 6263757, upload-time = "2026-07-01T11:55:01.778Z" }, + { url = "https://files.pythonhosted.org/packages/5c/44/c85361f65dbe00eea8576ee467c768d25129989efb76e94f205e9ca9bb46/pillow-12.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:251bf95b67017e27b13d82f5b326234ca62d70f9cf4c2b9032de2358a3b12c7b", size = 6936962, upload-time = "2026-07-01T11:55:03.93Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/e483414b35800b86b6f08dbbc7803fb5cd52c4d6f897f47d53ea2c7e6f65/pillow-12.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fe3cca2e4e8a592be0f269a1ca4835c25199d9f3ce815c8491048f785b0a0198", size = 6339171, upload-time = "2026-07-01T11:55:05.989Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f4/68c491844841ede6bed70189546b3ee9731cf9f2cbad396faff5e1ccba45/pillow-12.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:23aceaa007d6172b02c277f0cd359c79492bbb14f7072b4ede9fbcaf20648130", size = 7048116, upload-time = "2026-07-01T11:55:08.131Z" }, + { url = "https://files.pythonhosted.org/packages/a3/34/77f3f793fed8efc7d243f21b33c5a3f0d1c97ee70346d3db855587e155ff/pillow-12.3.0-cp314-cp314-win32.whl", hash = "sha256:af8d94b0db561cf68b88a267c5c44b49e134f525d0dc2cb7ed413a66bc23559a", size = 6467209, upload-time = "2026-07-01T11:55:10.408Z" }, + { url = "https://files.pythonhosted.org/packages/f1/e0/492879f69d94f91f60fc8cd05ba03650e9520afebb2fb7aa12777d7c7f38/pillow-12.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:fdafc9cce40277e0f7a0feabce0ee50dd2fa1800f3b38015e51296b5e814048d", size = 7237707, upload-time = "2026-07-01T11:55:12.745Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ac/6b11f2875f1c2ac040d84e1bbf9cf22a88038f901ca1037898b280b38365/pillow-12.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:e91206ee562682b51b98ef4b26a6ef48fd84e15fd4c4bc5ec768eb641d206838", size = 2565995, upload-time = "2026-07-01T11:55:14.736Z" }, + { url = "https://files.pythonhosted.org/packages/52/69/c2208e56af9bfc1913afb24020297a691eb1d4ef688474c8a04913f65e04/pillow-12.3.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:164b31cd1a0490ab6efae01aa5df49da7061be0af1b30e035b6e9a1bfe34ee6e", size = 5352503, upload-time = "2026-07-01T11:55:17.076Z" }, + { url = "https://files.pythonhosted.org/packages/07/70/e5686d753e898a45d778ff1718dba8516ead6ab6b95d85fc8c4b70650cf2/pillow-12.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5afb51d599ea772b8365ae807ae557f18bccfe46ab261fd1c2a9ed700fc6eb17", size = 4782956, upload-time = "2026-07-01T11:55:19.448Z" }, + { url = "https://files.pythonhosted.org/packages/d5/37/25c6692f06927ee973ff18c8d9ee98ad0b4d84ee67a09610c2dd1447958e/pillow-12.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3edce1d53195db527e0191f84b71d02022de0540bf43a16ed734ed7537b07385", size = 6322855, upload-time = "2026-07-01T11:55:21.613Z" }, + { url = "https://files.pythonhosted.org/packages/cc/91/420637fcb8f1bc11029e403b4538e6694744428d8246118e45719f944556/pillow-12.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf16ba1b4d0b6b7c8e534936632270cf70eb00dbe09005bc345b2677b726855c", size = 6989642, upload-time = "2026-07-01T11:55:24.006Z" }, + { url = "https://files.pythonhosted.org/packages/10/08/b94d7811281ccf0d143a1cf768d1c49e1e54af63e7b708ab2ee3eb87face/pillow-12.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:24870b09b224f7ae3c39ed07d10e819d06f8720bc551847b1d623832b5b0e28d", size = 6391281, upload-time = "2026-07-01T11:55:26.252Z" }, + { url = "https://files.pythonhosted.org/packages/d2/87/24233f785f55474dc02ce3e739c5528a77e3a862e9333d1dd7a25cc31f70/pillow-12.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:30f2aa603c41533cc25c05acd0da21636e84a315768feb631c937177db558931", size = 7096716, upload-time = "2026-07-01T11:55:28.318Z" }, + { url = "https://files.pythonhosted.org/packages/23/26/fcb2f6e37175b04f53570b59937867e2b80ee1685e744023153028fc14f9/pillow-12.3.0-cp314-cp314t-win32.whl", hash = "sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7", size = 6474125, upload-time = "2026-07-01T11:55:30.956Z" }, + { url = "https://files.pythonhosted.org/packages/90/de/3634abee5f1c9e13c56787b7d5517b0ba8d6de51700b95578cf338349c9f/pillow-12.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c", size = 7242939, upload-time = "2026-07-01T11:55:34.044Z" }, + { url = "https://files.pythonhosted.org/packages/ce/2a/fd13f8eb24de5714a6eb444a3d67e2842c6c576e159a43793adf23051351/pillow-12.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45", size = 2567506, upload-time = "2026-07-01T11:55:35.988Z" }, + { url = "https://files.pythonhosted.org/packages/5d/dc/8fdce34ec725a33c81c6ba122b904d6b9024e50ea9ac7bede62fab54506c/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f591e9315a7139", size = 4162063, upload-time = "2026-07-01T11:55:37.941Z" }, + { url = "https://files.pythonhosted.org/packages/76/66/2044b9a63d3b84ff048228dfcb7cd9bf0df983e8470971bf7d4c57b693de/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:9e881fca225083806662a5c43d627d215f258ff43c890f831966c7d7ba9c7402", size = 4255549, upload-time = "2026-07-01T11:55:40.022Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/1f67e6f4ece6b582ee4b539decbcc9f848dc245a93ed8cd7338bafef72f1/pillow-12.3.0-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d760584c9c51d7a5f78c", size = 3696331, upload-time = "2026-07-01T11:55:41.98Z" }, + { url = "https://files.pythonhosted.org/packages/12/40/d306fc2c8e4d45d7f175c77edca7063be7b86fe7fe6e68f4353bf71d808c/pillow-12.3.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a4e4902f", size = 5350370, upload-time = "2026-07-01T11:55:44.028Z" }, + { url = "https://files.pythonhosted.org/packages/dd/44/668fb1437e8ce420f62d6106eb66e44a5971602a4d794615bdf79315d82d/pillow-12.3.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663dd4701", size = 4780147, upload-time = "2026-07-01T11:55:46.073Z" }, + { url = "https://files.pythonhosted.org/packages/0c/08/93fa2e70e30a2d81547e481b6ee2bb9522117221fb1e0ce4b5df70967677/pillow-12.3.0-cp315-cp315-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:28ce87c5ab450a9dd970b52e5aca5fe63ed432d18a2eaddd1979a00a1ba24ace", size = 6273659, upload-time = "2026-07-01T11:55:48.264Z" }, + { url = "https://files.pythonhosted.org/packages/f8/6d/043e96ff814fc31a33077e4cba86082167db520c93632afdf2042febbb0c/pillow-12.3.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b02afb9b97f65fbca5f31db6a2a3ba21aa93030225f150fa3f249717e938fb4", size = 6947439, upload-time = "2026-07-01T11:55:50.503Z" }, + { url = "https://files.pythonhosted.org/packages/af/92/ba71d2ee2ac0edf3fa33bd9d5ee9ee080da70b1766f3ca3934f9938ddac9/pillow-12.3.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:1182d52bc2d5e5d7d0949503aa7e36d12f42205dc287e4883f407b1988820d39", size = 6353577, upload-time = "2026-07-01T11:55:52.697Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ce/e63064e2122923ff687c8ad792d0d736a7b3920a56a46982e81a7fdd25d6/pillow-12.3.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:e795b7eb908249c4e43c7c99fac7c2c75dab0c43566e37db472a355f63693d71", size = 7060394, upload-time = "2026-07-01T11:55:55.149Z" }, + { url = "https://files.pythonhosted.org/packages/54/76/a09cc3ccc8d773a7283d34c38bec1708f9e3cc932093cbc4c5e71ac4060b/pillow-12.3.0-cp315-cp315-win32.whl", hash = "sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827", size = 6467375, upload-time = "2026-07-01T11:55:57.769Z" }, + { url = "https://files.pythonhosted.org/packages/3e/03/1846c49ba3b1d5550392a4bbd06d6fb4578e1cd91a803198b5c90f5f7d53/pillow-12.3.0-cp315-cp315-win_amd64.whl", hash = "sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5", size = 7237048, upload-time = "2026-07-01T11:55:59.975Z" }, + { url = "https://files.pythonhosted.org/packages/fb/bb/89f35dcc79610423f9f195504d7def7f0d1416a711541b42867e25fe3412/pillow-12.3.0-cp315-cp315-win_arm64.whl", hash = "sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658", size = 2566006, upload-time = "2026-07-01T11:56:02.143Z" }, + { url = "https://files.pythonhosted.org/packages/30/88/707027ba09942dfa2c28759b5c222d769290a41c6d20ea60ec250801941f/pillow-12.3.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8da0ecc9cf", size = 5352509, upload-time = "2026-07-01T11:56:04.2Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6d/00352fa25332c2569cd387851f568cc5a4b75a9adbfb37ac4fbce4c02eec/pillow-12.3.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822f93e64", size = 4783167, upload-time = "2026-07-01T11:56:06.631Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/9e049dfa21af7c22427275720e2490267ba8138120add5c4c574deb69782/pillow-12.3.0-cp315-cp315t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:446c34dcc4324b084a53b705127dc15717b22c5e140ae0a3c38349d4efec071e", size = 6329237, upload-time = "2026-07-01T11:56:08.868Z" }, + { url = "https://files.pythonhosted.org/packages/36/16/cf6eeaae8d0fce8dd390a33437cf68c5d5bd73834a2bc6e2f14efda0ab45/pillow-12.3.0-cp315-cp315t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf1845d02ad822a369a49f2bb9345b1614744267682e7a03527dc3bf6eea1777", size = 6997047, upload-time = "2026-07-01T11:56:11.379Z" }, + { url = "https://files.pythonhosted.org/packages/1e/69/dbf769bdd55f48bf5733cac28edc6364ffaa072ec9ba336266e4fe66be55/pillow-12.3.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:186941b6aef820ad110fb01fb06eb925374dc3a21b17e37ec9a53b250c6fe2d1", size = 6400440, upload-time = "2026-07-01T11:56:13.908Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e1/ffc9cfc2eea0d178da8018e18e959301ad9d6bc9f3edb7181e748a474b97/pillow-12.3.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:f13c32a3abd6079a66d9526e18dad9b6d280384d49d7c54040cd57b6424041d9", size = 7105895, upload-time = "2026-07-01T11:56:16.575Z" }, + { url = "https://files.pythonhosted.org/packages/18/f0/a5595c1e8c3ae44b9828cb2f0fa8155e5095ef04d6327b8f61cf44a3df85/pillow-12.3.0-cp315-cp315t-win32.whl", hash = "sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8", size = 6474384, upload-time = "2026-07-01T11:56:18.855Z" }, + { url = "https://files.pythonhosted.org/packages/e4/04/62bcd9f844984c5938d3b05264a61d797a29d3e0812341a8204af70bbdee/pillow-12.3.0-cp315-cp315t-win_amd64.whl", hash = "sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418", size = 7243537, upload-time = "2026-07-01T11:56:21.214Z" }, + { url = "https://files.pythonhosted.org/packages/3d/68/1f3066acedf37673694a7141381d8f811ae97f30d34413d236abe7d489f1/pillow-12.3.0-cp315-cp315t-win_arm64.whl", hash = "sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59", size = 2567491, upload-time = "2026-07-01T11:56:23.506Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] @@ -930,161 +1537,161 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars-runtime-32" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/93/ab/f19e592fce9e000da49c96bf35e77cef67f9cb4b040bfa538a2764c0263e/polars-1.39.3.tar.gz", hash = "sha256:2e016c7f3e8d14fa777ef86fe0477cec6c67023a20ba4c94d6e8431eefe4a63c", size = 728987 } +sdist = { url = "https://files.pythonhosted.org/packages/93/ab/f19e592fce9e000da49c96bf35e77cef67f9cb4b040bfa538a2764c0263e/polars-1.39.3.tar.gz", hash = "sha256:2e016c7f3e8d14fa777ef86fe0477cec6c67023a20ba4c94d6e8431eefe4a63c", size = 728987, upload-time = "2026-03-20T11:16:24.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/db/08f4ca10c5018813e7e0b59e4472302328b3d2ab1512f5a2157a814540e0/polars-1.39.3-py3-none-any.whl", hash = "sha256:c2b955ccc0a08a2bc9259785decf3d5c007b489b523bf2390cf21cec2bb82a56", size = 823985 }, + { url = "https://files.pythonhosted.org/packages/b4/db/08f4ca10c5018813e7e0b59e4472302328b3d2ab1512f5a2157a814540e0/polars-1.39.3-py3-none-any.whl", hash = "sha256:c2b955ccc0a08a2bc9259785decf3d5c007b489b523bf2390cf21cec2bb82a56", size = 823985, upload-time = "2026-03-20T11:14:23.619Z" }, ] [[package]] name = "polars-runtime-32" version = "1.39.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/17/39/c8688696bc22b6c501e3b82ef3be10e543c07a785af5660f30997cd22dd2/polars_runtime_32-1.39.3.tar.gz", hash = "sha256:c728e4f469cafab501947585f36311b8fb222d3e934c6209e83791e0df20b29d", size = 2872335 } +sdist = { url = "https://files.pythonhosted.org/packages/17/39/c8688696bc22b6c501e3b82ef3be10e543c07a785af5660f30997cd22dd2/polars_runtime_32-1.39.3.tar.gz", hash = "sha256:c728e4f469cafab501947585f36311b8fb222d3e934c6209e83791e0df20b29d", size = 2872335, upload-time = "2026-03-20T11:16:26.581Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/74/1b41205f7368c9375ab1dea91178eaa20435fe3eff036390a53a7660b416/polars_runtime_32-1.39.3-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:425c0b220b573fa097b4042edff73114cc6d23432a21dfd2dc41adf329d7d2e9", size = 45273243 }, - { url = "https://files.pythonhosted.org/packages/90/bf/297716b3095fe719be20fcf7af1d2b6ab069c38199bbace2469608a69b3a/polars_runtime_32-1.39.3-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:ef5884711e3c617d7dc93519a7d038e242f5741cfe5fe9afd32d58845d86c562", size = 40842924 }, - { url = "https://files.pythonhosted.org/packages/3d/3e/e65236d9d0d9babfa0ecba593413c06530fca60a8feb8f66243aa5dba92e/polars_runtime_32-1.39.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06b47f535eb1f97a9a1e5b0053ef50db3a4276e241178e37bbb1a38b1fa53b14", size = 43220650 }, - { url = "https://files.pythonhosted.org/packages/b0/15/fc3e43f3fdf3f20b7dfb5abe871ab6162cf8fb4aeabf4cfad822d5dc4c79/polars_runtime_32-1.39.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc9e13dc1d2e828331f2fe8ccbc9757554dc4933a8d3e85e906b988178f95ed", size = 46877498 }, - { url = "https://files.pythonhosted.org/packages/3c/81/bd5f895919e32c6ab0a7786cd0c0ca961cb03152c47c3645808b54383f31/polars_runtime_32-1.39.3-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:363d49e3a3e638fc943e2b9887940300a7d06789930855a178a4727949259dc2", size = 43380176 }, - { url = "https://files.pythonhosted.org/packages/7a/3e/c86433c3b5ec0315bdfc7640d0c15d41f1216c0103a0eab9a9b5147d6c4c/polars_runtime_32-1.39.3-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7c206bdcc7bc62ea038d6adea8e44b02f0e675e0191a54c810703b4895208ea4", size = 46485933 }, - { url = "https://files.pythonhosted.org/packages/54/ce/200b310cf91f98e652eb6ea09fdb3a9718aa0293ebf113dce325797c8572/polars_runtime_32-1.39.3-cp310-abi3-win_amd64.whl", hash = "sha256:d66ca522517554a883446957539c40dc7b75eb0c2220357fb28bc8940d305339", size = 46995458 }, - { url = "https://files.pythonhosted.org/packages/da/76/2d48927e0aa2abbdde08cbf4a2536883b73277d47fbeca95e952de86df34/polars_runtime_32-1.39.3-cp310-abi3-win_arm64.whl", hash = "sha256:f49f51461de63f13e5dd4eb080421c8f23f856945f3f8bd5b2b1f59da52c2860", size = 41857648 }, + { url = "https://files.pythonhosted.org/packages/3b/74/1b41205f7368c9375ab1dea91178eaa20435fe3eff036390a53a7660b416/polars_runtime_32-1.39.3-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:425c0b220b573fa097b4042edff73114cc6d23432a21dfd2dc41adf329d7d2e9", size = 45273243, upload-time = "2026-03-20T11:14:26.691Z" }, + { url = "https://files.pythonhosted.org/packages/90/bf/297716b3095fe719be20fcf7af1d2b6ab069c38199bbace2469608a69b3a/polars_runtime_32-1.39.3-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:ef5884711e3c617d7dc93519a7d038e242f5741cfe5fe9afd32d58845d86c562", size = 40842924, upload-time = "2026-03-20T11:14:31.154Z" }, + { url = "https://files.pythonhosted.org/packages/3d/3e/e65236d9d0d9babfa0ecba593413c06530fca60a8feb8f66243aa5dba92e/polars_runtime_32-1.39.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06b47f535eb1f97a9a1e5b0053ef50db3a4276e241178e37bbb1a38b1fa53b14", size = 43220650, upload-time = "2026-03-20T11:14:35.458Z" }, + { url = "https://files.pythonhosted.org/packages/b0/15/fc3e43f3fdf3f20b7dfb5abe871ab6162cf8fb4aeabf4cfad822d5dc4c79/polars_runtime_32-1.39.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc9e13dc1d2e828331f2fe8ccbc9757554dc4933a8d3e85e906b988178f95ed", size = 46877498, upload-time = "2026-03-20T11:14:40.14Z" }, + { url = "https://files.pythonhosted.org/packages/3c/81/bd5f895919e32c6ab0a7786cd0c0ca961cb03152c47c3645808b54383f31/polars_runtime_32-1.39.3-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:363d49e3a3e638fc943e2b9887940300a7d06789930855a178a4727949259dc2", size = 43380176, upload-time = "2026-03-20T11:14:45.566Z" }, + { url = "https://files.pythonhosted.org/packages/7a/3e/c86433c3b5ec0315bdfc7640d0c15d41f1216c0103a0eab9a9b5147d6c4c/polars_runtime_32-1.39.3-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7c206bdcc7bc62ea038d6adea8e44b02f0e675e0191a54c810703b4895208ea4", size = 46485933, upload-time = "2026-03-20T11:14:51.155Z" }, + { url = "https://files.pythonhosted.org/packages/54/ce/200b310cf91f98e652eb6ea09fdb3a9718aa0293ebf113dce325797c8572/polars_runtime_32-1.39.3-cp310-abi3-win_amd64.whl", hash = "sha256:d66ca522517554a883446957539c40dc7b75eb0c2220357fb28bc8940d305339", size = 46995458, upload-time = "2026-03-20T11:14:56.074Z" }, + { url = "https://files.pythonhosted.org/packages/da/76/2d48927e0aa2abbdde08cbf4a2536883b73277d47fbeca95e952de86df34/polars_runtime_32-1.39.3-cp310-abi3-win_arm64.whl", hash = "sha256:f49f51461de63f13e5dd4eb080421c8f23f856945f3f8bd5b2b1f59da52c2860", size = 41857648, upload-time = "2026-03-20T11:15:01.142Z" }, ] [[package]] name = "propcache" version = "0.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061 }, - { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037 }, - { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324 }, - { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505 }, - { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242 }, - { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474 }, - { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575 }, - { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736 }, - { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019 }, - { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376 }, - { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988 }, - { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615 }, - { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066 }, - { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655 }, - { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789 }, - { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750 }, - { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780 }, - { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308 }, - { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182 }, - { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215 }, - { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112 }, - { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442 }, - { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398 }, - { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920 }, - { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748 }, - { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877 }, - { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437 }, - { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586 }, - { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790 }, - { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158 }, - { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451 }, - { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374 }, - { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396 }, - { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950 }, - { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856 }, - { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420 }, - { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254 }, - { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205 }, - { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873 }, - { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739 }, - { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514 }, - { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781 }, - { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396 }, - { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897 }, - { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789 }, - { url = "https://files.pythonhosted.org/packages/8e/5c/bca52d654a896f831b8256683457ceddd490ec18d9ec50e97dfd8fc726a8/propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12", size = 78152 }, - { url = "https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c", size = 44869 }, - { url = "https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded", size = 46596 }, - { url = "https://files.pythonhosted.org/packages/86/bd/47816020d337f4a746edc42fe8d53669965138f39ee117414c7d7a340cfe/propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641", size = 206981 }, - { url = "https://files.pythonhosted.org/packages/df/f6/c5fa1357cc9748510ee55f37173eb31bfde6d94e98ccd9e6f033f2fc06e1/propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4", size = 211490 }, - { url = "https://files.pythonhosted.org/packages/80/1e/e5889652a7c4a3846683401a48f0f2e5083ce0ec1a8a5221d8058fbd1adf/propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44", size = 215371 }, - { url = "https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d", size = 201424 }, - { url = "https://files.pythonhosted.org/packages/27/73/033d63069b57b0812c8bd19f311faebeceb6ba31b8f32b73432d12a0b826/propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b", size = 197566 }, - { url = "https://files.pythonhosted.org/packages/dc/89/ce24f3dc182630b4e07aa6d15f0ff4b14ed4b9955fae95a0b54c58d66c05/propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e", size = 193130 }, - { url = "https://files.pythonhosted.org/packages/a9/24/ef0d5fd1a811fb5c609278d0209c9f10c35f20581fcc16f818da959fc5b4/propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f", size = 202625 }, - { url = "https://files.pythonhosted.org/packages/f5/02/98ec20ff5546f68d673df2f7a69e8c0d076b5abd05ca882dc7ee3a83653d/propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49", size = 204209 }, - { url = "https://files.pythonhosted.org/packages/a0/87/492694f76759b15f0467a2a93ab68d32859672b646aa8a04ce4864e7932d/propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144", size = 197797 }, - { url = "https://files.pythonhosted.org/packages/ee/36/66367de3575db1d2d3f3d177432bd14ee577a39d3f5d1b3d5df8afe3b6e2/propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f", size = 38140 }, - { url = "https://files.pythonhosted.org/packages/0c/2a/a758b47de253636e1b8aef181c0b4f4f204bf0dd964914fb2af90a95b49b/propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153", size = 41257 }, - { url = "https://files.pythonhosted.org/packages/34/5e/63bd5896c3fec12edcbd6f12508d4890d23c265df28c74b175e1ef9f4f3b/propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992", size = 38097 }, - { url = "https://files.pythonhosted.org/packages/99/85/9ff785d787ccf9bbb3f3106f79884a130951436f58392000231b4c737c80/propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f", size = 81455 }, - { url = "https://files.pythonhosted.org/packages/90/85/2431c10c8e7ddb1445c1f7c4b54d886e8ad20e3c6307e7218f05922cad67/propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393", size = 46372 }, - { url = "https://files.pythonhosted.org/packages/01/20/b0972d902472da9bcb683fa595099911f4d2e86e5683bcc45de60dd05dc3/propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0", size = 48411 }, - { url = "https://files.pythonhosted.org/packages/e2/e3/7dc89f4f21e8f99bad3d5ddb3a3389afcf9da4ac69e3deb2dcdc96e74169/propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a", size = 275712 }, - { url = "https://files.pythonhosted.org/packages/20/67/89800c8352489b21a8047c773067644e3897f02ecbbd610f4d46b7f08612/propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be", size = 273557 }, - { url = "https://files.pythonhosted.org/packages/e2/a1/b52b055c766a54ce6d9c16d9aca0cad8059acd9637cdf8aa0222f4a026ef/propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc", size = 280015 }, - { url = "https://files.pythonhosted.org/packages/48/c8/33cee30bd890672c63743049f3c9e4be087e6780906bfc3ec58528be59c1/propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a", size = 262880 }, - { url = "https://files.pythonhosted.org/packages/0c/b1/8f08a143b204b418285c88b83d00edbd61afbc2c6415ffafc8905da7038b/propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89", size = 260938 }, - { url = "https://files.pythonhosted.org/packages/cf/12/96e4664c82ca2f31e1c8dff86afb867348979eb78d3cb8546a680287a1e9/propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726", size = 247641 }, - { url = "https://files.pythonhosted.org/packages/18/ed/e7a9cfca28133386ba52278136d42209d3125db08d0a6395f0cba0c0285c/propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367", size = 262510 }, - { url = "https://files.pythonhosted.org/packages/f5/76/16d8bf65e8845dd62b4e2b57444ab81f07f40caa5652b8969b87ddcf2ef6/propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36", size = 263161 }, - { url = "https://files.pythonhosted.org/packages/e7/70/c99e9edb5d91d5ad8a49fa3c1e8285ba64f1476782fed10ab251ff413ba1/propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455", size = 257393 }, - { url = "https://files.pythonhosted.org/packages/08/02/87b25304249a35c0915d236575bc3574a323f60b47939a2262b77632a3ee/propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85", size = 42546 }, - { url = "https://files.pythonhosted.org/packages/cb/ef/3c6ecf8b317aa982f309835e8f96987466123c6e596646d4e6a1dfcd080f/propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1", size = 46259 }, - { url = "https://files.pythonhosted.org/packages/c4/2d/346e946d4951f37eca1e4f55be0f0174c52cd70720f84029b02f296f4a38/propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9", size = 40428 }, - { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305 }, +sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, + { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, + { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, + { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload-time = "2025-10-08T19:47:07.648Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload-time = "2025-10-08T19:47:08.851Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload-time = "2025-10-08T19:47:09.982Z" }, + { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182, upload-time = "2025-10-08T19:47:11.319Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215, upload-time = "2025-10-08T19:47:13.146Z" }, + { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112, upload-time = "2025-10-08T19:47:14.913Z" }, + { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442, upload-time = "2025-10-08T19:47:16.277Z" }, + { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398, upload-time = "2025-10-08T19:47:17.962Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920, upload-time = "2025-10-08T19:47:19.355Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748, upload-time = "2025-10-08T19:47:21.338Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877, upload-time = "2025-10-08T19:47:23.059Z" }, + { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437, upload-time = "2025-10-08T19:47:24.445Z" }, + { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586, upload-time = "2025-10-08T19:47:25.736Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790, upload-time = "2025-10-08T19:47:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158, upload-time = "2025-10-08T19:47:27.961Z" }, + { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451, upload-time = "2025-10-08T19:47:29.445Z" }, + { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374, upload-time = "2025-10-08T19:47:30.579Z" }, + { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396, upload-time = "2025-10-08T19:47:31.79Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950, upload-time = "2025-10-08T19:47:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856, upload-time = "2025-10-08T19:47:34.906Z" }, + { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420, upload-time = "2025-10-08T19:47:36.338Z" }, + { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254, upload-time = "2025-10-08T19:47:37.692Z" }, + { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205, upload-time = "2025-10-08T19:47:39.659Z" }, + { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873, upload-time = "2025-10-08T19:47:41.084Z" }, + { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739, upload-time = "2025-10-08T19:47:42.51Z" }, + { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514, upload-time = "2025-10-08T19:47:43.927Z" }, + { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781, upload-time = "2025-10-08T19:47:45.448Z" }, + { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396, upload-time = "2025-10-08T19:47:47.202Z" }, + { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897, upload-time = "2025-10-08T19:47:48.336Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789, upload-time = "2025-10-08T19:47:49.876Z" }, + { url = "https://files.pythonhosted.org/packages/8e/5c/bca52d654a896f831b8256683457ceddd490ec18d9ec50e97dfd8fc726a8/propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12", size = 78152, upload-time = "2025-10-08T19:47:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c", size = 44869, upload-time = "2025-10-08T19:47:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded", size = 46596, upload-time = "2025-10-08T19:47:54.073Z" }, + { url = "https://files.pythonhosted.org/packages/86/bd/47816020d337f4a746edc42fe8d53669965138f39ee117414c7d7a340cfe/propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641", size = 206981, upload-time = "2025-10-08T19:47:55.715Z" }, + { url = "https://files.pythonhosted.org/packages/df/f6/c5fa1357cc9748510ee55f37173eb31bfde6d94e98ccd9e6f033f2fc06e1/propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4", size = 211490, upload-time = "2025-10-08T19:47:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/80/1e/e5889652a7c4a3846683401a48f0f2e5083ce0ec1a8a5221d8058fbd1adf/propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44", size = 215371, upload-time = "2025-10-08T19:47:59.317Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d", size = 201424, upload-time = "2025-10-08T19:48:00.67Z" }, + { url = "https://files.pythonhosted.org/packages/27/73/033d63069b57b0812c8bd19f311faebeceb6ba31b8f32b73432d12a0b826/propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b", size = 197566, upload-time = "2025-10-08T19:48:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/dc/89/ce24f3dc182630b4e07aa6d15f0ff4b14ed4b9955fae95a0b54c58d66c05/propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e", size = 193130, upload-time = "2025-10-08T19:48:04.499Z" }, + { url = "https://files.pythonhosted.org/packages/a9/24/ef0d5fd1a811fb5c609278d0209c9f10c35f20581fcc16f818da959fc5b4/propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f", size = 202625, upload-time = "2025-10-08T19:48:06.213Z" }, + { url = "https://files.pythonhosted.org/packages/f5/02/98ec20ff5546f68d673df2f7a69e8c0d076b5abd05ca882dc7ee3a83653d/propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49", size = 204209, upload-time = "2025-10-08T19:48:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/a0/87/492694f76759b15f0467a2a93ab68d32859672b646aa8a04ce4864e7932d/propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144", size = 197797, upload-time = "2025-10-08T19:48:09.968Z" }, + { url = "https://files.pythonhosted.org/packages/ee/36/66367de3575db1d2d3f3d177432bd14ee577a39d3f5d1b3d5df8afe3b6e2/propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f", size = 38140, upload-time = "2025-10-08T19:48:11.232Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2a/a758b47de253636e1b8aef181c0b4f4f204bf0dd964914fb2af90a95b49b/propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153", size = 41257, upload-time = "2025-10-08T19:48:12.707Z" }, + { url = "https://files.pythonhosted.org/packages/34/5e/63bd5896c3fec12edcbd6f12508d4890d23c265df28c74b175e1ef9f4f3b/propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992", size = 38097, upload-time = "2025-10-08T19:48:13.923Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/9ff785d787ccf9bbb3f3106f79884a130951436f58392000231b4c737c80/propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f", size = 81455, upload-time = "2025-10-08T19:48:15.16Z" }, + { url = "https://files.pythonhosted.org/packages/90/85/2431c10c8e7ddb1445c1f7c4b54d886e8ad20e3c6307e7218f05922cad67/propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393", size = 46372, upload-time = "2025-10-08T19:48:16.424Z" }, + { url = "https://files.pythonhosted.org/packages/01/20/b0972d902472da9bcb683fa595099911f4d2e86e5683bcc45de60dd05dc3/propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0", size = 48411, upload-time = "2025-10-08T19:48:17.577Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e3/7dc89f4f21e8f99bad3d5ddb3a3389afcf9da4ac69e3deb2dcdc96e74169/propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a", size = 275712, upload-time = "2025-10-08T19:48:18.901Z" }, + { url = "https://files.pythonhosted.org/packages/20/67/89800c8352489b21a8047c773067644e3897f02ecbbd610f4d46b7f08612/propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be", size = 273557, upload-time = "2025-10-08T19:48:20.762Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a1/b52b055c766a54ce6d9c16d9aca0cad8059acd9637cdf8aa0222f4a026ef/propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc", size = 280015, upload-time = "2025-10-08T19:48:22.592Z" }, + { url = "https://files.pythonhosted.org/packages/48/c8/33cee30bd890672c63743049f3c9e4be087e6780906bfc3ec58528be59c1/propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a", size = 262880, upload-time = "2025-10-08T19:48:23.947Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/8f08a143b204b418285c88b83d00edbd61afbc2c6415ffafc8905da7038b/propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89", size = 260938, upload-time = "2025-10-08T19:48:25.656Z" }, + { url = "https://files.pythonhosted.org/packages/cf/12/96e4664c82ca2f31e1c8dff86afb867348979eb78d3cb8546a680287a1e9/propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726", size = 247641, upload-time = "2025-10-08T19:48:27.207Z" }, + { url = "https://files.pythonhosted.org/packages/18/ed/e7a9cfca28133386ba52278136d42209d3125db08d0a6395f0cba0c0285c/propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367", size = 262510, upload-time = "2025-10-08T19:48:28.65Z" }, + { url = "https://files.pythonhosted.org/packages/f5/76/16d8bf65e8845dd62b4e2b57444ab81f07f40caa5652b8969b87ddcf2ef6/propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36", size = 263161, upload-time = "2025-10-08T19:48:30.133Z" }, + { url = "https://files.pythonhosted.org/packages/e7/70/c99e9edb5d91d5ad8a49fa3c1e8285ba64f1476782fed10ab251ff413ba1/propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455", size = 257393, upload-time = "2025-10-08T19:48:31.567Z" }, + { url = "https://files.pythonhosted.org/packages/08/02/87b25304249a35c0915d236575bc3574a323f60b47939a2262b77632a3ee/propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85", size = 42546, upload-time = "2025-10-08T19:48:32.872Z" }, + { url = "https://files.pythonhosted.org/packages/cb/ef/3c6ecf8b317aa982f309835e8f96987466123c6e596646d4e6a1dfcd080f/propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1", size = 46259, upload-time = "2025-10-08T19:48:34.226Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2d/346e946d4951f37eca1e4f55be0f0174c52cd70720f84029b02f296f4a38/propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9", size = 40428, upload-time = "2025-10-08T19:48:35.441Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, ] [[package]] name = "pulp" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/1c/d880b739b841a8aa81143091c9bdda5e72e226a660aa13178cb312d4b27f/pulp-3.3.0.tar.gz", hash = "sha256:7eb99b9ce7beeb8bbb7ea9d1c919f02f003ab7867e0d1e322f2f2c26dd31c8ba", size = 16301847 } +sdist = { url = "https://files.pythonhosted.org/packages/16/1c/d880b739b841a8aa81143091c9bdda5e72e226a660aa13178cb312d4b27f/pulp-3.3.0.tar.gz", hash = "sha256:7eb99b9ce7beeb8bbb7ea9d1c919f02f003ab7867e0d1e322f2f2c26dd31c8ba", size = 16301847, upload-time = "2025-09-18T08:14:57.552Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/6c/64cafaceea3f99927e84b38a362ec6a8f24f33061c90bda77dfe1cd4c3c6/pulp-3.3.0-py3-none-any.whl", hash = "sha256:dd6ad2d63f196d1254eddf9dcff5cd224912c1f046120cb7c143c5b0eda63fae", size = 16387700 }, + { url = "https://files.pythonhosted.org/packages/99/6c/64cafaceea3f99927e84b38a362ec6a8f24f33061c90bda77dfe1cd4c3c6/pulp-3.3.0-py3-none-any.whl", hash = "sha256:dd6ad2d63f196d1254eddf9dcff5cd224912c1f046120cb7c143c5b0eda63fae", size = 16387700, upload-time = "2025-09-18T08:14:53.368Z" }, ] [[package]] name = "pyarrow" version = "23.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/22/134986a4cc224d593c1afde5494d18ff629393d74cc2eddb176669f234a4/pyarrow-23.0.1.tar.gz", hash = "sha256:b8c5873e33440b2bc2f4a79d2b47017a89c5a24116c055625e6f2ee50523f019", size = 1167336 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/4b/4166bb5abbfe6f750fc60ad337c43ecf61340fa52ab386da6e8dbf9e63c4/pyarrow-23.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f4b0dbfa124c0bb161f8b5ebb40f1a680b70279aa0c9901d44a2b5a20806039f", size = 34214575 }, - { url = "https://files.pythonhosted.org/packages/e1/da/3f941e3734ac8088ea588b53e860baeddac8323ea40ce22e3d0baa865cc9/pyarrow-23.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7707d2b6673f7de054e2e83d59f9e805939038eebe1763fe811ee8fa5c0cd1a7", size = 35832540 }, - { url = "https://files.pythonhosted.org/packages/88/7c/3d841c366620e906d54430817531b877ba646310296df42ef697308c2705/pyarrow-23.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:86ff03fb9f1a320266e0de855dee4b17da6794c595d207f89bba40d16b5c78b9", size = 44470940 }, - { url = "https://files.pythonhosted.org/packages/2c/a5/da83046273d990f256cb79796a190bbf7ec999269705ddc609403f8c6b06/pyarrow-23.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:813d99f31275919c383aab17f0f455a04f5a429c261cc411b1e9a8f5e4aaaa05", size = 47586063 }, - { url = "https://files.pythonhosted.org/packages/5b/3c/b7d2ebcff47a514f47f9da1e74b7949138c58cfeb108cdd4ee62f43f0cf3/pyarrow-23.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bf5842f960cddd2ef757d486041d57c96483efc295a8c4a0e20e704cbbf39c67", size = 48173045 }, - { url = "https://files.pythonhosted.org/packages/43/b2/b40961262213beaba6acfc88698eb773dfce32ecdf34d19291db94c2bd73/pyarrow-23.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564baf97c858ecc03ec01a41062e8f4698abc3e6e2acd79c01c2e97880a19730", size = 50621741 }, - { url = "https://files.pythonhosted.org/packages/f6/70/1fdda42d65b28b078e93d75d371b2185a61da89dda4def8ba6ba41ebdeb4/pyarrow-23.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:07deae7783782ac7250989a7b2ecde9b3c343a643f82e8a4df03d93b633006f0", size = 27620678 }, - { url = "https://files.pythonhosted.org/packages/47/10/2cbe4c6f0fb83d2de37249567373d64327a5e4d8db72f486db42875b08f6/pyarrow-23.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:6b8fda694640b00e8af3c824f99f789e836720aa8c9379fb435d4c4953a756b8", size = 34210066 }, - { url = "https://files.pythonhosted.org/packages/cb/4f/679fa7e84dadbaca7a65f7cdba8d6c83febbd93ca12fa4adf40ba3b6362b/pyarrow-23.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:8ff51b1addc469b9444b7c6f3548e19dc931b172ab234e995a60aea9f6e6025f", size = 35825526 }, - { url = "https://files.pythonhosted.org/packages/f9/63/d2747d930882c9d661e9398eefc54f15696547b8983aaaf11d4a2e8b5426/pyarrow-23.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:71c5be5cbf1e1cb6169d2a0980850bccb558ddc9b747b6206435313c47c37677", size = 44473279 }, - { url = "https://files.pythonhosted.org/packages/b3/93/10a48b5e238de6d562a411af6467e71e7aedbc9b87f8d3a35f1560ae30fb/pyarrow-23.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9b6f4f17b43bc39d56fec96e53fe89d94bac3eb134137964371b45352d40d0c2", size = 47585798 }, - { url = "https://files.pythonhosted.org/packages/5c/20/476943001c54ef078dbf9542280e22741219a184a0632862bca4feccd666/pyarrow-23.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fc13fc6c403d1337acab46a2c4346ca6c9dec5780c3c697cf8abfd5e19b6b37", size = 48179446 }, - { url = "https://files.pythonhosted.org/packages/4b/b6/5dd0c47b335fcd8edba9bfab78ad961bd0fd55ebe53468cc393f45e0be60/pyarrow-23.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5c16ed4f53247fa3ffb12a14d236de4213a4415d127fe9cebed33d51671113e2", size = 50623972 }, - { url = "https://files.pythonhosted.org/packages/d5/09/a532297c9591a727d67760e2e756b83905dd89adb365a7f6e9c72578bcc1/pyarrow-23.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:cecfb12ef629cf6be0b1887f9f86463b0dd3dc3195ae6224e74006be4736035a", size = 27540749 }, - { url = "https://files.pythonhosted.org/packages/a5/8e/38749c4b1303e6ae76b3c80618f84861ae0c55dd3c2273842ea6f8258233/pyarrow-23.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:29f7f7419a0e30264ea261fdc0e5fe63ce5a6095003db2945d7cd78df391a7e1", size = 34471544 }, - { url = "https://files.pythonhosted.org/packages/a3/73/f237b2bc8c669212f842bcfd842b04fc8d936bfc9d471630569132dc920d/pyarrow-23.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:33d648dc25b51fd8055c19e4261e813dfc4d2427f068bcecc8b53d01b81b0500", size = 35949911 }, - { url = "https://files.pythonhosted.org/packages/0c/86/b912195eee0903b5611bf596833def7d146ab2d301afeb4b722c57ffc966/pyarrow-23.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd395abf8f91c673dd3589cadc8cc1ee4e8674fa61b2e923c8dd215d9c7d1f41", size = 44520337 }, - { url = "https://files.pythonhosted.org/packages/69/c2/f2a717fb824f62d0be952ea724b4f6f9372a17eed6f704b5c9526f12f2f1/pyarrow-23.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:00be9576d970c31defb5c32eb72ef585bf600ef6d0a82d5eccaae96639cf9d07", size = 47548944 }, - { url = "https://files.pythonhosted.org/packages/84/a7/90007d476b9f0dc308e3bc57b832d004f848fd6c0da601375d20d92d1519/pyarrow-23.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c2139549494445609f35a5cda4eb94e2c9e4d704ce60a095b342f82460c73a83", size = 48236269 }, - { url = "https://files.pythonhosted.org/packages/b0/3f/b16fab3e77709856eb6ac328ce35f57a6d4a18462c7ca5186ef31b45e0e0/pyarrow-23.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7044b442f184d84e2351e5084600f0d7343d6117aabcbc1ac78eb1ae11eb4125", size = 50604794 }, - { url = "https://files.pythonhosted.org/packages/e9/a1/22df0620a9fac31d68397a75465c344e83c3dfe521f7612aea33e27ab6c0/pyarrow-23.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a35581e856a2fafa12f3f54fce4331862b1cfb0bef5758347a858a4aa9d6bae8", size = 27660642 }, - { url = "https://files.pythonhosted.org/packages/8d/1b/6da9a89583ce7b23ac611f183ae4843cd3a6cf54f079549b0e8c14031e73/pyarrow-23.0.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:5df1161da23636a70838099d4aaa65142777185cc0cdba4037a18cee7d8db9ca", size = 34238755 }, - { url = "https://files.pythonhosted.org/packages/ae/b5/d58a241fbe324dbaeb8df07be6af8752c846192d78d2272e551098f74e88/pyarrow-23.0.1-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:fa8e51cb04b9f8c9c5ace6bab63af9a1f88d35c0d6cbf53e8c17c098552285e1", size = 35847826 }, - { url = "https://files.pythonhosted.org/packages/54/a5/8cbc83f04aba433ca7b331b38f39e000efd9f0c7ce47128670e737542996/pyarrow-23.0.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:0b95a3994f015be13c63148fef8832e8a23938128c185ee951c98908a696e0eb", size = 44536859 }, - { url = "https://files.pythonhosted.org/packages/36/2e/c0f017c405fcdc252dbccafbe05e36b0d0eb1ea9a958f081e01c6972927f/pyarrow-23.0.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:4982d71350b1a6e5cfe1af742c53dfb759b11ce14141870d05d9e540d13bc5d1", size = 47614443 }, - { url = "https://files.pythonhosted.org/packages/af/6b/2314a78057912f5627afa13ba43809d9d653e6630859618b0fd81a4e0759/pyarrow-23.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c250248f1fe266db627921c89b47b7c06fee0489ad95b04d50353537d74d6886", size = 48232991 }, - { url = "https://files.pythonhosted.org/packages/40/f2/1bcb1d3be3460832ef3370d621142216e15a2c7c62602a4ea19ec240dd64/pyarrow-23.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5f4763b83c11c16e5f4c15601ba6dfa849e20723b46aa2617cb4bffe8768479f", size = 50645077 }, - { url = "https://files.pythonhosted.org/packages/eb/3f/b1da7b61cd66566a4d4c8383d376c606d1c34a906c3f1cb35c479f59d1aa/pyarrow-23.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:3a4c85ef66c134161987c17b147d6bffdca4566f9a4c1d81a0a01cdf08414ea5", size = 28234271 }, - { url = "https://files.pythonhosted.org/packages/b5/78/07f67434e910a0f7323269be7bfbf58699bd0c1d080b18a1ab49ba943fe8/pyarrow-23.0.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:17cd28e906c18af486a499422740298c52d7c6795344ea5002a7720b4eadf16d", size = 34488692 }, - { url = "https://files.pythonhosted.org/packages/50/76/34cf7ae93ece1f740a04910d9f7e80ba166b9b4ab9596a953e9e62b90fe1/pyarrow-23.0.1-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:76e823d0e86b4fb5e1cf4a58d293036e678b5a4b03539be933d3b31f9406859f", size = 35964383 }, - { url = "https://files.pythonhosted.org/packages/46/90/459b827238936d4244214be7c684e1b366a63f8c78c380807ae25ed92199/pyarrow-23.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:a62e1899e3078bf65943078b3ad2a6ddcacf2373bc06379aac61b1e548a75814", size = 44538119 }, - { url = "https://files.pythonhosted.org/packages/28/a1/93a71ae5881e99d1f9de1d4554a87be37da11cd6b152239fb5bd924fdc64/pyarrow-23.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:df088e8f640c9fae3b1f495b3c64755c4e719091caf250f3a74d095ddf3c836d", size = 47571199 }, - { url = "https://files.pythonhosted.org/packages/88/a3/d2c462d4ef313521eaf2eff04d204ac60775263f1fb08c374b543f79f610/pyarrow-23.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:46718a220d64677c93bc243af1d44b55998255427588e400677d7192671845c7", size = 48259435 }, - { url = "https://files.pythonhosted.org/packages/cc/f1/11a544b8c3d38a759eb3fbb022039117fd633e9a7b19e4841cc3da091915/pyarrow-23.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a09f3876e87f48bc2f13583ab551f0379e5dfb83210391e68ace404181a20690", size = 50629149 }, - { url = "https://files.pythonhosted.org/packages/50/f2/c0e76a0b451ffdf0cf788932e182758eb7558953f4f27f1aff8e2518b653/pyarrow-23.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:527e8d899f14bd15b740cd5a54ad56b7f98044955373a17179d5956ddb93d9ce", size = 28365807 }, +sdist = { url = "https://files.pythonhosted.org/packages/88/22/134986a4cc224d593c1afde5494d18ff629393d74cc2eddb176669f234a4/pyarrow-23.0.1.tar.gz", hash = "sha256:b8c5873e33440b2bc2f4a79d2b47017a89c5a24116c055625e6f2ee50523f019", size = 1167336, upload-time = "2026-02-16T10:14:12.39Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/4b/4166bb5abbfe6f750fc60ad337c43ecf61340fa52ab386da6e8dbf9e63c4/pyarrow-23.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f4b0dbfa124c0bb161f8b5ebb40f1a680b70279aa0c9901d44a2b5a20806039f", size = 34214575, upload-time = "2026-02-16T10:09:56.225Z" }, + { url = "https://files.pythonhosted.org/packages/e1/da/3f941e3734ac8088ea588b53e860baeddac8323ea40ce22e3d0baa865cc9/pyarrow-23.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7707d2b6673f7de054e2e83d59f9e805939038eebe1763fe811ee8fa5c0cd1a7", size = 35832540, upload-time = "2026-02-16T10:10:03.428Z" }, + { url = "https://files.pythonhosted.org/packages/88/7c/3d841c366620e906d54430817531b877ba646310296df42ef697308c2705/pyarrow-23.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:86ff03fb9f1a320266e0de855dee4b17da6794c595d207f89bba40d16b5c78b9", size = 44470940, upload-time = "2026-02-16T10:10:10.704Z" }, + { url = "https://files.pythonhosted.org/packages/2c/a5/da83046273d990f256cb79796a190bbf7ec999269705ddc609403f8c6b06/pyarrow-23.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:813d99f31275919c383aab17f0f455a04f5a429c261cc411b1e9a8f5e4aaaa05", size = 47586063, upload-time = "2026-02-16T10:10:17.95Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/b7d2ebcff47a514f47f9da1e74b7949138c58cfeb108cdd4ee62f43f0cf3/pyarrow-23.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bf5842f960cddd2ef757d486041d57c96483efc295a8c4a0e20e704cbbf39c67", size = 48173045, upload-time = "2026-02-16T10:10:25.363Z" }, + { url = "https://files.pythonhosted.org/packages/43/b2/b40961262213beaba6acfc88698eb773dfce32ecdf34d19291db94c2bd73/pyarrow-23.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564baf97c858ecc03ec01a41062e8f4698abc3e6e2acd79c01c2e97880a19730", size = 50621741, upload-time = "2026-02-16T10:10:33.477Z" }, + { url = "https://files.pythonhosted.org/packages/f6/70/1fdda42d65b28b078e93d75d371b2185a61da89dda4def8ba6ba41ebdeb4/pyarrow-23.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:07deae7783782ac7250989a7b2ecde9b3c343a643f82e8a4df03d93b633006f0", size = 27620678, upload-time = "2026-02-16T10:10:39.31Z" }, + { url = "https://files.pythonhosted.org/packages/47/10/2cbe4c6f0fb83d2de37249567373d64327a5e4d8db72f486db42875b08f6/pyarrow-23.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:6b8fda694640b00e8af3c824f99f789e836720aa8c9379fb435d4c4953a756b8", size = 34210066, upload-time = "2026-02-16T10:10:45.487Z" }, + { url = "https://files.pythonhosted.org/packages/cb/4f/679fa7e84dadbaca7a65f7cdba8d6c83febbd93ca12fa4adf40ba3b6362b/pyarrow-23.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:8ff51b1addc469b9444b7c6f3548e19dc931b172ab234e995a60aea9f6e6025f", size = 35825526, upload-time = "2026-02-16T10:10:52.266Z" }, + { url = "https://files.pythonhosted.org/packages/f9/63/d2747d930882c9d661e9398eefc54f15696547b8983aaaf11d4a2e8b5426/pyarrow-23.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:71c5be5cbf1e1cb6169d2a0980850bccb558ddc9b747b6206435313c47c37677", size = 44473279, upload-time = "2026-02-16T10:11:01.557Z" }, + { url = "https://files.pythonhosted.org/packages/b3/93/10a48b5e238de6d562a411af6467e71e7aedbc9b87f8d3a35f1560ae30fb/pyarrow-23.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9b6f4f17b43bc39d56fec96e53fe89d94bac3eb134137964371b45352d40d0c2", size = 47585798, upload-time = "2026-02-16T10:11:09.401Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/476943001c54ef078dbf9542280e22741219a184a0632862bca4feccd666/pyarrow-23.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fc13fc6c403d1337acab46a2c4346ca6c9dec5780c3c697cf8abfd5e19b6b37", size = 48179446, upload-time = "2026-02-16T10:11:17.781Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b6/5dd0c47b335fcd8edba9bfab78ad961bd0fd55ebe53468cc393f45e0be60/pyarrow-23.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5c16ed4f53247fa3ffb12a14d236de4213a4415d127fe9cebed33d51671113e2", size = 50623972, upload-time = "2026-02-16T10:11:26.185Z" }, + { url = "https://files.pythonhosted.org/packages/d5/09/a532297c9591a727d67760e2e756b83905dd89adb365a7f6e9c72578bcc1/pyarrow-23.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:cecfb12ef629cf6be0b1887f9f86463b0dd3dc3195ae6224e74006be4736035a", size = 27540749, upload-time = "2026-02-16T10:12:23.297Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8e/38749c4b1303e6ae76b3c80618f84861ae0c55dd3c2273842ea6f8258233/pyarrow-23.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:29f7f7419a0e30264ea261fdc0e5fe63ce5a6095003db2945d7cd78df391a7e1", size = 34471544, upload-time = "2026-02-16T10:11:32.535Z" }, + { url = "https://files.pythonhosted.org/packages/a3/73/f237b2bc8c669212f842bcfd842b04fc8d936bfc9d471630569132dc920d/pyarrow-23.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:33d648dc25b51fd8055c19e4261e813dfc4d2427f068bcecc8b53d01b81b0500", size = 35949911, upload-time = "2026-02-16T10:11:39.813Z" }, + { url = "https://files.pythonhosted.org/packages/0c/86/b912195eee0903b5611bf596833def7d146ab2d301afeb4b722c57ffc966/pyarrow-23.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd395abf8f91c673dd3589cadc8cc1ee4e8674fa61b2e923c8dd215d9c7d1f41", size = 44520337, upload-time = "2026-02-16T10:11:47.764Z" }, + { url = "https://files.pythonhosted.org/packages/69/c2/f2a717fb824f62d0be952ea724b4f6f9372a17eed6f704b5c9526f12f2f1/pyarrow-23.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:00be9576d970c31defb5c32eb72ef585bf600ef6d0a82d5eccaae96639cf9d07", size = 47548944, upload-time = "2026-02-16T10:11:56.607Z" }, + { url = "https://files.pythonhosted.org/packages/84/a7/90007d476b9f0dc308e3bc57b832d004f848fd6c0da601375d20d92d1519/pyarrow-23.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c2139549494445609f35a5cda4eb94e2c9e4d704ce60a095b342f82460c73a83", size = 48236269, upload-time = "2026-02-16T10:12:04.47Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3f/b16fab3e77709856eb6ac328ce35f57a6d4a18462c7ca5186ef31b45e0e0/pyarrow-23.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7044b442f184d84e2351e5084600f0d7343d6117aabcbc1ac78eb1ae11eb4125", size = 50604794, upload-time = "2026-02-16T10:12:11.797Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a1/22df0620a9fac31d68397a75465c344e83c3dfe521f7612aea33e27ab6c0/pyarrow-23.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a35581e856a2fafa12f3f54fce4331862b1cfb0bef5758347a858a4aa9d6bae8", size = 27660642, upload-time = "2026-02-16T10:12:17.746Z" }, + { url = "https://files.pythonhosted.org/packages/8d/1b/6da9a89583ce7b23ac611f183ae4843cd3a6cf54f079549b0e8c14031e73/pyarrow-23.0.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:5df1161da23636a70838099d4aaa65142777185cc0cdba4037a18cee7d8db9ca", size = 34238755, upload-time = "2026-02-16T10:12:32.819Z" }, + { url = "https://files.pythonhosted.org/packages/ae/b5/d58a241fbe324dbaeb8df07be6af8752c846192d78d2272e551098f74e88/pyarrow-23.0.1-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:fa8e51cb04b9f8c9c5ace6bab63af9a1f88d35c0d6cbf53e8c17c098552285e1", size = 35847826, upload-time = "2026-02-16T10:12:38.949Z" }, + { url = "https://files.pythonhosted.org/packages/54/a5/8cbc83f04aba433ca7b331b38f39e000efd9f0c7ce47128670e737542996/pyarrow-23.0.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:0b95a3994f015be13c63148fef8832e8a23938128c185ee951c98908a696e0eb", size = 44536859, upload-time = "2026-02-16T10:12:45.467Z" }, + { url = "https://files.pythonhosted.org/packages/36/2e/c0f017c405fcdc252dbccafbe05e36b0d0eb1ea9a958f081e01c6972927f/pyarrow-23.0.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:4982d71350b1a6e5cfe1af742c53dfb759b11ce14141870d05d9e540d13bc5d1", size = 47614443, upload-time = "2026-02-16T10:12:55.525Z" }, + { url = "https://files.pythonhosted.org/packages/af/6b/2314a78057912f5627afa13ba43809d9d653e6630859618b0fd81a4e0759/pyarrow-23.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c250248f1fe266db627921c89b47b7c06fee0489ad95b04d50353537d74d6886", size = 48232991, upload-time = "2026-02-16T10:13:04.729Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/1bcb1d3be3460832ef3370d621142216e15a2c7c62602a4ea19ec240dd64/pyarrow-23.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5f4763b83c11c16e5f4c15601ba6dfa849e20723b46aa2617cb4bffe8768479f", size = 50645077, upload-time = "2026-02-16T10:13:14.147Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3f/b1da7b61cd66566a4d4c8383d376c606d1c34a906c3f1cb35c479f59d1aa/pyarrow-23.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:3a4c85ef66c134161987c17b147d6bffdca4566f9a4c1d81a0a01cdf08414ea5", size = 28234271, upload-time = "2026-02-16T10:14:09.397Z" }, + { url = "https://files.pythonhosted.org/packages/b5/78/07f67434e910a0f7323269be7bfbf58699bd0c1d080b18a1ab49ba943fe8/pyarrow-23.0.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:17cd28e906c18af486a499422740298c52d7c6795344ea5002a7720b4eadf16d", size = 34488692, upload-time = "2026-02-16T10:13:21.541Z" }, + { url = "https://files.pythonhosted.org/packages/50/76/34cf7ae93ece1f740a04910d9f7e80ba166b9b4ab9596a953e9e62b90fe1/pyarrow-23.0.1-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:76e823d0e86b4fb5e1cf4a58d293036e678b5a4b03539be933d3b31f9406859f", size = 35964383, upload-time = "2026-02-16T10:13:28.63Z" }, + { url = "https://files.pythonhosted.org/packages/46/90/459b827238936d4244214be7c684e1b366a63f8c78c380807ae25ed92199/pyarrow-23.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:a62e1899e3078bf65943078b3ad2a6ddcacf2373bc06379aac61b1e548a75814", size = 44538119, upload-time = "2026-02-16T10:13:35.506Z" }, + { url = "https://files.pythonhosted.org/packages/28/a1/93a71ae5881e99d1f9de1d4554a87be37da11cd6b152239fb5bd924fdc64/pyarrow-23.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:df088e8f640c9fae3b1f495b3c64755c4e719091caf250f3a74d095ddf3c836d", size = 47571199, upload-time = "2026-02-16T10:13:42.504Z" }, + { url = "https://files.pythonhosted.org/packages/88/a3/d2c462d4ef313521eaf2eff04d204ac60775263f1fb08c374b543f79f610/pyarrow-23.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:46718a220d64677c93bc243af1d44b55998255427588e400677d7192671845c7", size = 48259435, upload-time = "2026-02-16T10:13:49.226Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f1/11a544b8c3d38a759eb3fbb022039117fd633e9a7b19e4841cc3da091915/pyarrow-23.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a09f3876e87f48bc2f13583ab551f0379e5dfb83210391e68ace404181a20690", size = 50629149, upload-time = "2026-02-16T10:13:57.238Z" }, + { url = "https://files.pythonhosted.org/packages/50/f2/c0e76a0b451ffdf0cf788932e182758eb7558953f4f27f1aff8e2518b653/pyarrow-23.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:527e8d899f14bd15b740cd5a54ad56b7f98044955373a17179d5956ddb93d9ce", size = 28365807, upload-time = "2026-02-16T10:14:03.892Z" }, ] [[package]] @@ -1094,65 +1701,65 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/a0/9c823651872e6a0face3f0311de2a40c8bbcb9c8dcb15680bd019ac56ac7/pycares-5.0.1.tar.gz", hash = "sha256:5a3c249c830432631439815f9a818463416f2a8cbdb1e988e78757de9ae75081", size = 652222 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/75/67/e84ba11d3fec3bf1322c3b302c4df13c85e0a1bc48f16d65cd0f59ad9853/pycares-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ee551be4f3f3ac814ac8547586c464c9035e914f5122a534d25de147fa745e1", size = 136241 }, - { url = "https://files.pythonhosted.org/packages/ce/ae/50fbb3b4e52b9f1d16a36ffabd051ef8b2106b3f0a0d1c1113904d187a9d/pycares-5.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:252d4e5a52a68f825eaa90e16b595f9baee22c760f51e286ab612c6829b96de3", size = 131069 }, - { url = "https://files.pythonhosted.org/packages/0e/ea/f431599f1ac42149ea4768e516db7cdae3a503a6646319ae63ab66da1486/pycares-5.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c1aa549b8c2f2e224215c793d660270778dcba9abc3b85abbc7c41eabe4f1e5", size = 221120 }, - { url = "https://files.pythonhosted.org/packages/6e/4f/0a7a6c8b3a64ee5149e935c167cd8ba5d1fdd766ec03e273dbc7502f7bea/pycares-5.0.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:db7c9c9f16e8311998667a7488e817f8cbeedec2447bac827c71804663f1437e", size = 252228 }, - { url = "https://files.pythonhosted.org/packages/49/3d/7f9fd20e97ee30c4b959f87ab26e47ddcef666e5e7717e45f2245fe9d70a/pycares-5.0.1-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b9c4c8bb69bab863f677fa166653bb872bfa5d5a742f1f30bebc2d53b6e71db", size = 239473 }, - { url = "https://files.pythonhosted.org/packages/a4/d0/c67967a10abd89529cb9aded9d73f43e5de00cf21243638ef529f6757262/pycares-5.0.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09ef90da8da3026fcba4ed223bd71e8057608d5b3fec4f5990b52ae1e8c855cc", size = 223831 }, - { url = "https://files.pythonhosted.org/packages/4f/9a/94aacaf22a20b7d342c8f18bf006be57967beef6319adc668d4d86b627be/pycares-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ce193ebd54f4c74538b751ebb0923a9208c234ff180589d4d3cec134c001840e", size = 223963 }, - { url = "https://files.pythonhosted.org/packages/e6/e1/3666aab6fc5e7d0c669b981fe0407e6a4b67e4e6a37ac429d440274663d5/pycares-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:36b9ff18ef231277f99a846feade50b417187a96f742689a9d08b9594e386de4", size = 251813 }, - { url = "https://files.pythonhosted.org/packages/94/44/ddab5fbc16ad0084a827167ae8628f54c7a55ce6b743585e6f47a5dd527e/pycares-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5e40ea4a0ef0c01a02ef7f7390a58c62d237d5ad48d36bc3245e9c2ac181cc22", size = 238181 }, - { url = "https://files.pythonhosted.org/packages/66/27/05467933e0e5c4e712302a2d7499797bc3029bf4d0d8ffbfe737254482b7/pycares-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f323b0ddfd2c7896af6fba4f8851d34d3d13387566aa573d93330fb01cb1038", size = 223552 }, - { url = "https://files.pythonhosted.org/packages/3e/e2/14f3837e943d46ee12441fe6aaa418fdb2f698d42e179f368eaa9829744b/pycares-5.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:bdc6bcafb72a97b3cdd529fc87210e59e67feb647a7e138110656023599b84da", size = 117478 }, - { url = "https://files.pythonhosted.org/packages/d3/c3/3284061f18188d5085338e1f1fd4f03d9c135657acf16f8020b9dd3be5fc/pycares-5.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:f8ef4c70c1edaf022875a8f9ff6c0c064f82831225acc91aa1b4f4d389e2e03a", size = 108889 }, - { url = "https://files.pythonhosted.org/packages/92/0a/6bd9bdc2d0ee23ff3aabab7747212e2c5323a081b9b745624d62df88f7e9/pycares-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7d1b2c6b152c65f14d0e12d741fabb78a487f0f0d22773eede8d8cfc97af612b", size = 136242 }, - { url = "https://files.pythonhosted.org/packages/18/2a/2e9f888fc076cfe7a3493a3c4113e787cc4b4533f531dfb562ac9b04898f/pycares-5.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8c8ffcc9a48cfc296fe1aefc07d2c8e29a7f97e4bb366ce17effea6a38825f70", size = 131070 }, - { url = "https://files.pythonhosted.org/packages/ec/5b/83b5aaf7b6ed102f63cd768a747b6cb5d4624f2eaecd84868d103b9dbf39/pycares-5.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8efc38c2703e3530b823a4165a7b28d7ce0fdcf41960fb7a4ca834a0f8cfe79", size = 221137 }, - { url = "https://files.pythonhosted.org/packages/33/d3/d77ab0b33fb805d02896c385176c462e3386d94457a5e508245c39f41829/pycares-5.0.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e380bf6eff42c260f829a0a14547e13375e949053a966c23ca204a13647ef265", size = 252252 }, - { url = "https://files.pythonhosted.org/packages/14/32/8afbc798bce26dfcc5bc1f6bf1560d31cdd0af837ff52cbede657bf9262e/pycares-5.0.1-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:35dd5858ee1246bd092a212b5e85a8ef70853f7cfaf16b99569bf4af3ae4695d", size = 239447 }, - { url = "https://files.pythonhosted.org/packages/61/1b/a056393fda383b2eda5dab20bd0dd034fd631bf5ae754aabb20da815bdfe/pycares-5.0.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c257c6e7bf310cdb5823aa9d9a28f1e370fed8c653a968d38a954a8f8e0375ce", size = 223822 }, - { url = "https://files.pythonhosted.org/packages/ca/c7/9817f0fb954ab9926f88403f2b91a3e4984a277e2b7a4563e0118e4e1ffa/pycares-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:07711acb0ef75758f081fb7436acaccc91e8afd5ae34fd35d4edc44297e81f27", size = 223986 }, - { url = "https://files.pythonhosted.org/packages/e1/a9/c0ea15c871c77e8c20bcaab18f56ae83988ea4c302155d106cc6a1bd83a9/pycares-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:30e5db1ae85cffb031dd8bc1b37903cd74c6d37eb737643bbca3ff2cd4bc6ae2", size = 251838 }, - { url = "https://files.pythonhosted.org/packages/be/a4/fe4068abfadf3e06cc22333e87e4730de3c170075572041d5545926062a3/pycares-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:efbe7f89425a14edbc94787042309be77cb3674415eb6079b356e1f9552ba747", size = 238238 }, - { url = "https://files.pythonhosted.org/packages/a7/25/4f140518768d974af4221cfd574a30d99d40b3d5c54c479da2c1553be59e/pycares-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5de9e7ce52d638d78723c24704eb032e60b96fbb6fe90c6b3110882987251377", size = 223574 }, - { url = "https://files.pythonhosted.org/packages/1e/0a/6e4afa4a2baffd1eba6c18a90cda17681d4838d3cab5a485e471386e04dc/pycares-5.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:0e99af0a1ce015ab6cc6bd85ce158d95ed89fb3b654515f1d0989d1afcf11026", size = 117472 }, - { url = "https://files.pythonhosted.org/packages/57/d0/a99f97e9aa8c8404fc899540cf30be63cda0df5150e3c0837423917c7e4c/pycares-5.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:2a511c9f3b11b7ce9f159c956ea1b8f2de7f419d7ca9fa24528d582cb015dbf9", size = 108889 }, - { url = "https://files.pythonhosted.org/packages/38/b2/4af99ff17acb81377c971831520540d1859bf401dc85712eb4abc2e6751f/pycares-5.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e330e3561be259ad7a1b7b0ce282c872938625f76587fae7ac8d6bc5af1d0c3d", size = 136635 }, - { url = "https://files.pythonhosted.org/packages/42/da/e2e1683811c427492ee0e86e8fae8d55eb5cca032220438599991fdad866/pycares-5.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82bd37fec2a3fa62add30d4a3854720f7b051386e2f18e6e8f4ee94b89b5a7b0", size = 131093 }, - { url = "https://files.pythonhosted.org/packages/cd/2a/9cf2120cafc19e5c589d5252a9ddd3108cc87e9db09938d16317807de03b/pycares-5.0.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:258c38aaa82ad1d565b4591cdb93d2c191be8e0a2c70926999c8e0b717a01f2a", size = 221096 }, - { url = "https://files.pythonhosted.org/packages/2c/cc/c5fbf6377e2d6b1f1618f147ad898e5d8ae1585fc726d6301f07aeda6cac/pycares-5.0.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ccc1b2df8a09ca20eefbe20b9f7a484d376525c0fb173cfadd692320013c6bc5", size = 252330 }, - { url = "https://files.pythonhosted.org/packages/3b/df/17a7c518c45bb994f76d9064d2519674e2a3950f895abbe6af123ead04ac/pycares-5.0.1-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3c4dfc80cc8b43dc79e02a15486c58eead5cae0a40906d6be64e2522285b5b39", size = 239799 }, - { url = "https://files.pythonhosted.org/packages/3f/6c/d79c94809742b56b9180a9a9ec2937607db0b8eb34b8ca75d86d3114d6dd/pycares-5.0.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f498a6606247bfe896c2a4d837db711eb7b0ba23e409e16e4b23def4bada4b9d", size = 223501 }, - { url = "https://files.pythonhosted.org/packages/69/08/83084b67cbce08f44fd803b88816fc80d2fe2fb3d483d5432925df44371b/pycares-5.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a7d197835cdb4b202a3b12562b32799e27bb132262d4aa1ac3ee9d440e8ec22c", size = 223708 }, - { url = "https://files.pythonhosted.org/packages/15/57/63a6e9ef356c5149b8ec72a694e02207fd8ae643895aeb78a9f0c07f1502/pycares-5.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f78ab823732b050d658eb735d553726663c9bccdeeee0653247533a23eb2e255", size = 251816 }, - { url = "https://files.pythonhosted.org/packages/43/1c/1c85c6355cf7bc3ae86a1024d60f9cabdc12af63306a5f59370ac8718a41/pycares-5.0.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f444ab7f318e9b2c209b45496fb07bff5e7ada606e15d5253a162964aa078527", size = 238259 }, - { url = "https://files.pythonhosted.org/packages/5d/7f/bd5ff5a460e50433f993560e4e5d229559a8bf271dbdf6be832faf1973b5/pycares-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9de80997de7538619b7dd28ec4371e5172e3f9480e4fc648726d3d5ba661ca05", size = 223732 }, - { url = "https://files.pythonhosted.org/packages/b5/fe/e77738366e00dc0918bbeb0c8fc63579e5d9cec748a2b838e207e548b5d9/pycares-5.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:206ce9f3cb9d51f5065c81b23c22996230fbc2cf58ae22834c623631b2b473aa", size = 120847 }, - { url = "https://files.pythonhosted.org/packages/81/17/758e9af7ee8589ac6deddf7ea56d75b982f155bc2052ef61c45d5f371389/pycares-5.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:45fb3b07231120e8cb5b75be7f15f16115003e9251991dc37a3e5c63733d63b5", size = 112595 }, - { url = "https://files.pythonhosted.org/packages/56/12/4f1d418fed957fc96089c69d9ec82314b3b91c48c7f9463385842acad9c4/pycares-5.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:602f3eac4b880a2527d21f52b2319cb10fde9225d103d338c4d0b2b07f136849", size = 137061 }, - { url = "https://files.pythonhosted.org/packages/29/8c/559cea98a8a5d0f38b50b4b812a07fdbcdb1a961bed9e2e9d5d343e53c6f/pycares-5.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1c3736deef003f0c57bc4e7f94d54270d0824350a8f5ceaba3a20b2ce8fb427", size = 131551 }, - { url = "https://files.pythonhosted.org/packages/34/cd/aee5d8070888d7be509d4f32a348e2821309ec67980498e5a974cd9e4990/pycares-5.0.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e63328df86d37150ce697fb5d9313d1d468dd4dddee1d09342cb2ed241ce6ad9", size = 230409 }, - { url = "https://files.pythonhosted.org/packages/5e/94/15d5cf7d8e7af4b4ce3e19ea117dfe565c08d60d82f043ad23843703a135/pycares-5.0.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:57f6fd696213329d9a69b9664a68b1ff2a71ccbdc1fc928a42c9a92858c1ec5d", size = 261297 }, - { url = "https://files.pythonhosted.org/packages/af/46/24f6ddc7a37ec6eaa1c38f617f39624211d8e7cdca49b644bfc5f467f275/pycares-5.0.1-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d0878edabfbecb48a29e8769284003d8dbc05936122fe361849cd5fa52722e0", size = 248071 }, - { url = "https://files.pythonhosted.org/packages/fa/f0/7eb7fe44f0db55b9083725ab7a084874c2dc02806d9613e07e719838c2ab/pycares-5.0.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50e21f27a91be122e066ddd78c2d0d2769e547561481d8342a9d652a345b89f7", size = 232073 }, - { url = "https://files.pythonhosted.org/packages/1d/cd/993b17e0c049a56b5af4df3fd053acc57b37e17e0dcd709b2d337c22d57d/pycares-5.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:97ceda969f5a5d5c6b15558b658c29e4301b3a2c4615523797b5f9d4ac74772e", size = 232815 }, - { url = "https://files.pythonhosted.org/packages/7a/ff/170177bcc5dff31e735f209f5de63362f513ac18846c83d50e4e68f57866/pycares-5.0.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:4d1713e602ab09882c3e65499b2cc763bff0371117327cad704cf524268c2604", size = 261111 }, - { url = "https://files.pythonhosted.org/packages/4d/4a/4c6497b8ca9279b4038ee8c7e2c49504008d594d06a044e00678b30c10fe/pycares-5.0.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:954a379055d6c66b2e878b52235b382168d1a3230793ff44454019394aecac5e", size = 246311 }, - { url = "https://files.pythonhosted.org/packages/06/19/1603f51f0d73bf34017a9e6967540c2bc138f9541aa7cc1ef38990b3ce9d/pycares-5.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:145d8a20f7fd1d58a2e49b7ef4309ec9bdcab479ac65c2e49480e20d3f890c23", size = 232027 }, - { url = "https://files.pythonhosted.org/packages/7a/de/c000a682757b84688722ac232a24a86b6f195f1f4732432ecf35d0a768a5/pycares-5.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ebc9daba03c7ff3f62616c84c6cb37517445d15df00e1754852d6006039eb4a4", size = 121267 }, - { url = "https://files.pythonhosted.org/packages/b2/c4/8bfffecd08b9b198113fcff5f0ab84bbe696f07dec46dd1ccae0e7b28c23/pycares-5.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:e0a86eff6bf9e91d5dd8876b1b82ee45704f46b1104c24291d3dea2c1fc8ebcb", size = 113043 }, +sdist = { url = "https://files.pythonhosted.org/packages/df/a0/9c823651872e6a0face3f0311de2a40c8bbcb9c8dcb15680bd019ac56ac7/pycares-5.0.1.tar.gz", hash = "sha256:5a3c249c830432631439815f9a818463416f2a8cbdb1e988e78757de9ae75081", size = 652222, upload-time = "2026-01-01T12:37:00.604Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/67/e84ba11d3fec3bf1322c3b302c4df13c85e0a1bc48f16d65cd0f59ad9853/pycares-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ee551be4f3f3ac814ac8547586c464c9035e914f5122a534d25de147fa745e1", size = 136241, upload-time = "2026-01-01T12:35:25.439Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ae/50fbb3b4e52b9f1d16a36ffabd051ef8b2106b3f0a0d1c1113904d187a9d/pycares-5.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:252d4e5a52a68f825eaa90e16b595f9baee22c760f51e286ab612c6829b96de3", size = 131069, upload-time = "2026-01-01T12:35:26.293Z" }, + { url = "https://files.pythonhosted.org/packages/0e/ea/f431599f1ac42149ea4768e516db7cdae3a503a6646319ae63ab66da1486/pycares-5.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c1aa549b8c2f2e224215c793d660270778dcba9abc3b85abbc7c41eabe4f1e5", size = 221120, upload-time = "2026-01-01T12:35:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4f/0a7a6c8b3a64ee5149e935c167cd8ba5d1fdd766ec03e273dbc7502f7bea/pycares-5.0.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:db7c9c9f16e8311998667a7488e817f8cbeedec2447bac827c71804663f1437e", size = 252228, upload-time = "2026-01-01T12:35:28.443Z" }, + { url = "https://files.pythonhosted.org/packages/49/3d/7f9fd20e97ee30c4b959f87ab26e47ddcef666e5e7717e45f2245fe9d70a/pycares-5.0.1-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b9c4c8bb69bab863f677fa166653bb872bfa5d5a742f1f30bebc2d53b6e71db", size = 239473, upload-time = "2026-01-01T12:35:29.794Z" }, + { url = "https://files.pythonhosted.org/packages/a4/d0/c67967a10abd89529cb9aded9d73f43e5de00cf21243638ef529f6757262/pycares-5.0.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09ef90da8da3026fcba4ed223bd71e8057608d5b3fec4f5990b52ae1e8c855cc", size = 223831, upload-time = "2026-01-01T12:35:30.781Z" }, + { url = "https://files.pythonhosted.org/packages/4f/9a/94aacaf22a20b7d342c8f18bf006be57967beef6319adc668d4d86b627be/pycares-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ce193ebd54f4c74538b751ebb0923a9208c234ff180589d4d3cec134c001840e", size = 223963, upload-time = "2026-01-01T12:35:31.691Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e1/3666aab6fc5e7d0c669b981fe0407e6a4b67e4e6a37ac429d440274663d5/pycares-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:36b9ff18ef231277f99a846feade50b417187a96f742689a9d08b9594e386de4", size = 251813, upload-time = "2026-01-01T12:35:32.918Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/ddab5fbc16ad0084a827167ae8628f54c7a55ce6b743585e6f47a5dd527e/pycares-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5e40ea4a0ef0c01a02ef7f7390a58c62d237d5ad48d36bc3245e9c2ac181cc22", size = 238181, upload-time = "2026-01-01T12:35:34.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/27/05467933e0e5c4e712302a2d7499797bc3029bf4d0d8ffbfe737254482b7/pycares-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f323b0ddfd2c7896af6fba4f8851d34d3d13387566aa573d93330fb01cb1038", size = 223552, upload-time = "2026-01-01T12:35:35.076Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e2/14f3837e943d46ee12441fe6aaa418fdb2f698d42e179f368eaa9829744b/pycares-5.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:bdc6bcafb72a97b3cdd529fc87210e59e67feb647a7e138110656023599b84da", size = 117478, upload-time = "2026-01-01T12:35:36.133Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c3/3284061f18188d5085338e1f1fd4f03d9c135657acf16f8020b9dd3be5fc/pycares-5.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:f8ef4c70c1edaf022875a8f9ff6c0c064f82831225acc91aa1b4f4d389e2e03a", size = 108889, upload-time = "2026-01-01T12:35:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/92/0a/6bd9bdc2d0ee23ff3aabab7747212e2c5323a081b9b745624d62df88f7e9/pycares-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7d1b2c6b152c65f14d0e12d741fabb78a487f0f0d22773eede8d8cfc97af612b", size = 136242, upload-time = "2026-01-01T12:35:38.372Z" }, + { url = "https://files.pythonhosted.org/packages/18/2a/2e9f888fc076cfe7a3493a3c4113e787cc4b4533f531dfb562ac9b04898f/pycares-5.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8c8ffcc9a48cfc296fe1aefc07d2c8e29a7f97e4bb366ce17effea6a38825f70", size = 131070, upload-time = "2026-01-01T12:35:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/5b/83b5aaf7b6ed102f63cd768a747b6cb5d4624f2eaecd84868d103b9dbf39/pycares-5.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8efc38c2703e3530b823a4165a7b28d7ce0fdcf41960fb7a4ca834a0f8cfe79", size = 221137, upload-time = "2026-01-01T12:35:40.155Z" }, + { url = "https://files.pythonhosted.org/packages/33/d3/d77ab0b33fb805d02896c385176c462e3386d94457a5e508245c39f41829/pycares-5.0.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e380bf6eff42c260f829a0a14547e13375e949053a966c23ca204a13647ef265", size = 252252, upload-time = "2026-01-01T12:35:41.287Z" }, + { url = "https://files.pythonhosted.org/packages/14/32/8afbc798bce26dfcc5bc1f6bf1560d31cdd0af837ff52cbede657bf9262e/pycares-5.0.1-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:35dd5858ee1246bd092a212b5e85a8ef70853f7cfaf16b99569bf4af3ae4695d", size = 239447, upload-time = "2026-01-01T12:35:42.614Z" }, + { url = "https://files.pythonhosted.org/packages/61/1b/a056393fda383b2eda5dab20bd0dd034fd631bf5ae754aabb20da815bdfe/pycares-5.0.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c257c6e7bf310cdb5823aa9d9a28f1e370fed8c653a968d38a954a8f8e0375ce", size = 223822, upload-time = "2026-01-01T12:35:43.594Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c7/9817f0fb954ab9926f88403f2b91a3e4984a277e2b7a4563e0118e4e1ffa/pycares-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:07711acb0ef75758f081fb7436acaccc91e8afd5ae34fd35d4edc44297e81f27", size = 223986, upload-time = "2026-01-01T12:35:44.893Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a9/c0ea15c871c77e8c20bcaab18f56ae83988ea4c302155d106cc6a1bd83a9/pycares-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:30e5db1ae85cffb031dd8bc1b37903cd74c6d37eb737643bbca3ff2cd4bc6ae2", size = 251838, upload-time = "2026-01-01T12:35:46.271Z" }, + { url = "https://files.pythonhosted.org/packages/be/a4/fe4068abfadf3e06cc22333e87e4730de3c170075572041d5545926062a3/pycares-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:efbe7f89425a14edbc94787042309be77cb3674415eb6079b356e1f9552ba747", size = 238238, upload-time = "2026-01-01T12:35:47.196Z" }, + { url = "https://files.pythonhosted.org/packages/a7/25/4f140518768d974af4221cfd574a30d99d40b3d5c54c479da2c1553be59e/pycares-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5de9e7ce52d638d78723c24704eb032e60b96fbb6fe90c6b3110882987251377", size = 223574, upload-time = "2026-01-01T12:35:48.191Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0a/6e4afa4a2baffd1eba6c18a90cda17681d4838d3cab5a485e471386e04dc/pycares-5.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:0e99af0a1ce015ab6cc6bd85ce158d95ed89fb3b654515f1d0989d1afcf11026", size = 117472, upload-time = "2026-01-01T12:35:50.674Z" }, + { url = "https://files.pythonhosted.org/packages/57/d0/a99f97e9aa8c8404fc899540cf30be63cda0df5150e3c0837423917c7e4c/pycares-5.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:2a511c9f3b11b7ce9f159c956ea1b8f2de7f419d7ca9fa24528d582cb015dbf9", size = 108889, upload-time = "2026-01-01T12:35:51.902Z" }, + { url = "https://files.pythonhosted.org/packages/38/b2/4af99ff17acb81377c971831520540d1859bf401dc85712eb4abc2e6751f/pycares-5.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e330e3561be259ad7a1b7b0ce282c872938625f76587fae7ac8d6bc5af1d0c3d", size = 136635, upload-time = "2026-01-01T12:35:53.365Z" }, + { url = "https://files.pythonhosted.org/packages/42/da/e2e1683811c427492ee0e86e8fae8d55eb5cca032220438599991fdad866/pycares-5.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82bd37fec2a3fa62add30d4a3854720f7b051386e2f18e6e8f4ee94b89b5a7b0", size = 131093, upload-time = "2026-01-01T12:35:54.28Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2a/9cf2120cafc19e5c589d5252a9ddd3108cc87e9db09938d16317807de03b/pycares-5.0.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:258c38aaa82ad1d565b4591cdb93d2c191be8e0a2c70926999c8e0b717a01f2a", size = 221096, upload-time = "2026-01-01T12:35:57.096Z" }, + { url = "https://files.pythonhosted.org/packages/2c/cc/c5fbf6377e2d6b1f1618f147ad898e5d8ae1585fc726d6301f07aeda6cac/pycares-5.0.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ccc1b2df8a09ca20eefbe20b9f7a484d376525c0fb173cfadd692320013c6bc5", size = 252330, upload-time = "2026-01-01T12:35:58.182Z" }, + { url = "https://files.pythonhosted.org/packages/3b/df/17a7c518c45bb994f76d9064d2519674e2a3950f895abbe6af123ead04ac/pycares-5.0.1-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3c4dfc80cc8b43dc79e02a15486c58eead5cae0a40906d6be64e2522285b5b39", size = 239799, upload-time = "2026-01-01T12:36:00.378Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6c/d79c94809742b56b9180a9a9ec2937607db0b8eb34b8ca75d86d3114d6dd/pycares-5.0.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f498a6606247bfe896c2a4d837db711eb7b0ba23e409e16e4b23def4bada4b9d", size = 223501, upload-time = "2026-01-01T12:36:02.695Z" }, + { url = "https://files.pythonhosted.org/packages/69/08/83084b67cbce08f44fd803b88816fc80d2fe2fb3d483d5432925df44371b/pycares-5.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a7d197835cdb4b202a3b12562b32799e27bb132262d4aa1ac3ee9d440e8ec22c", size = 223708, upload-time = "2026-01-01T12:36:04.357Z" }, + { url = "https://files.pythonhosted.org/packages/15/57/63a6e9ef356c5149b8ec72a694e02207fd8ae643895aeb78a9f0c07f1502/pycares-5.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f78ab823732b050d658eb735d553726663c9bccdeeee0653247533a23eb2e255", size = 251816, upload-time = "2026-01-01T12:36:05.618Z" }, + { url = "https://files.pythonhosted.org/packages/43/1c/1c85c6355cf7bc3ae86a1024d60f9cabdc12af63306a5f59370ac8718a41/pycares-5.0.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f444ab7f318e9b2c209b45496fb07bff5e7ada606e15d5253a162964aa078527", size = 238259, upload-time = "2026-01-01T12:36:07.609Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7f/bd5ff5a460e50433f993560e4e5d229559a8bf271dbdf6be832faf1973b5/pycares-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9de80997de7538619b7dd28ec4371e5172e3f9480e4fc648726d3d5ba661ca05", size = 223732, upload-time = "2026-01-01T12:36:09.893Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/e77738366e00dc0918bbeb0c8fc63579e5d9cec748a2b838e207e548b5d9/pycares-5.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:206ce9f3cb9d51f5065c81b23c22996230fbc2cf58ae22834c623631b2b473aa", size = 120847, upload-time = "2026-01-01T12:36:11.494Z" }, + { url = "https://files.pythonhosted.org/packages/81/17/758e9af7ee8589ac6deddf7ea56d75b982f155bc2052ef61c45d5f371389/pycares-5.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:45fb3b07231120e8cb5b75be7f15f16115003e9251991dc37a3e5c63733d63b5", size = 112595, upload-time = "2026-01-01T12:36:12.973Z" }, + { url = "https://files.pythonhosted.org/packages/56/12/4f1d418fed957fc96089c69d9ec82314b3b91c48c7f9463385842acad9c4/pycares-5.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:602f3eac4b880a2527d21f52b2319cb10fde9225d103d338c4d0b2b07f136849", size = 137061, upload-time = "2026-01-01T12:36:15.027Z" }, + { url = "https://files.pythonhosted.org/packages/29/8c/559cea98a8a5d0f38b50b4b812a07fdbcdb1a961bed9e2e9d5d343e53c6f/pycares-5.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1c3736deef003f0c57bc4e7f94d54270d0824350a8f5ceaba3a20b2ce8fb427", size = 131551, upload-time = "2026-01-01T12:36:16.74Z" }, + { url = "https://files.pythonhosted.org/packages/34/cd/aee5d8070888d7be509d4f32a348e2821309ec67980498e5a974cd9e4990/pycares-5.0.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e63328df86d37150ce697fb5d9313d1d468dd4dddee1d09342cb2ed241ce6ad9", size = 230409, upload-time = "2026-01-01T12:36:18.909Z" }, + { url = "https://files.pythonhosted.org/packages/5e/94/15d5cf7d8e7af4b4ce3e19ea117dfe565c08d60d82f043ad23843703a135/pycares-5.0.1-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:57f6fd696213329d9a69b9664a68b1ff2a71ccbdc1fc928a42c9a92858c1ec5d", size = 261297, upload-time = "2026-01-01T12:36:20.771Z" }, + { url = "https://files.pythonhosted.org/packages/af/46/24f6ddc7a37ec6eaa1c38f617f39624211d8e7cdca49b644bfc5f467f275/pycares-5.0.1-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d0878edabfbecb48a29e8769284003d8dbc05936122fe361849cd5fa52722e0", size = 248071, upload-time = "2026-01-01T12:36:22.925Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/7eb7fe44f0db55b9083725ab7a084874c2dc02806d9613e07e719838c2ab/pycares-5.0.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50e21f27a91be122e066ddd78c2d0d2769e547561481d8342a9d652a345b89f7", size = 232073, upload-time = "2026-01-01T12:36:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/1d/cd/993b17e0c049a56b5af4df3fd053acc57b37e17e0dcd709b2d337c22d57d/pycares-5.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:97ceda969f5a5d5c6b15558b658c29e4301b3a2c4615523797b5f9d4ac74772e", size = 232815, upload-time = "2026-01-01T12:36:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ff/170177bcc5dff31e735f209f5de63362f513ac18846c83d50e4e68f57866/pycares-5.0.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:4d1713e602ab09882c3e65499b2cc763bff0371117327cad704cf524268c2604", size = 261111, upload-time = "2026-01-01T12:36:29.94Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4a/4c6497b8ca9279b4038ee8c7e2c49504008d594d06a044e00678b30c10fe/pycares-5.0.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:954a379055d6c66b2e878b52235b382168d1a3230793ff44454019394aecac5e", size = 246311, upload-time = "2026-01-01T12:36:31.352Z" }, + { url = "https://files.pythonhosted.org/packages/06/19/1603f51f0d73bf34017a9e6967540c2bc138f9541aa7cc1ef38990b3ce9d/pycares-5.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:145d8a20f7fd1d58a2e49b7ef4309ec9bdcab479ac65c2e49480e20d3f890c23", size = 232027, upload-time = "2026-01-01T12:36:34.374Z" }, + { url = "https://files.pythonhosted.org/packages/7a/de/c000a682757b84688722ac232a24a86b6f195f1f4732432ecf35d0a768a5/pycares-5.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ebc9daba03c7ff3f62616c84c6cb37517445d15df00e1754852d6006039eb4a4", size = 121267, upload-time = "2026-01-01T12:36:35.741Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c4/8bfffecd08b9b198113fcff5f0ab84bbe696f07dec46dd1ccae0e7b28c23/pycares-5.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:e0a86eff6bf9e91d5dd8876b1b82ee45704f46b1104c24291d3dea2c1fc8ebcb", size = 113043, upload-time = "2026-01-01T12:36:37.895Z" }, ] [[package]] name = "pycparser" version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492 } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172 }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] @@ -1165,9 +1772,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591 } +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580 }, + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, ] [[package]] @@ -1177,68 +1784,68 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990 }, - { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003 }, - { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200 }, - { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578 }, - { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504 }, - { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816 }, - { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366 }, - { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698 }, - { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603 }, - { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591 }, - { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068 }, - { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908 }, - { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145 }, - { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179 }, - { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403 }, - { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206 }, - { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307 }, - { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258 }, - { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917 }, - { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186 }, - { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164 }, - { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146 }, - { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788 }, - { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133 }, - { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852 }, - { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679 }, - { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766 }, - { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005 }, - { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622 }, - { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725 }, - { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040 }, - { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691 }, - { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897 }, - { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302 }, - { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877 }, - { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680 }, - { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960 }, - { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102 }, - { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039 }, - { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126 }, - { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489 }, - { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288 }, - { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255 }, - { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760 }, - { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092 }, - { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385 }, - { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832 }, - { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585 }, - { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078 }, - { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914 }, - { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560 }, - { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244 }, - { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955 }, - { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906 }, - { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607 }, - { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769 }, - { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495 }, - { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388 }, - { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879 }, - { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017 }, +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, ] [[package]] @@ -1250,18 +1857,27 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/fffca34caecc4a3f97bda81b2098da5e8ab7efc9a66e819074a11955d87e/pydantic_settings-2.13.1.tar.gz", hash = "sha256:b4c11847b15237fb0171e1462bf540e294affb9b86db4d9aa5c01730bdbe4025", size = 223826 } +sdist = { url = "https://files.pythonhosted.org/packages/52/6d/fffca34caecc4a3f97bda81b2098da5e8ab7efc9a66e819074a11955d87e/pydantic_settings-2.13.1.tar.gz", hash = "sha256:b4c11847b15237fb0171e1462bf540e294affb9b86db4d9aa5c01730bdbe4025", size = 223826, upload-time = "2026-02-19T13:45:08.055Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/4b/ccc026168948fec4f7555b9164c724cf4125eac006e176541483d2c959be/pydantic_settings-2.13.1-py3-none-any.whl", hash = "sha256:d56fd801823dbeae7f0975e1f8c8e25c258eb75d278ea7abb5d9cebb01b56237", size = 58929 }, + { url = "https://files.pythonhosted.org/packages/00/4b/ccc026168948fec4f7555b9164c724cf4125eac006e176541483d2c959be/pydantic_settings-2.13.1-py3-none-any.whl", hash = "sha256:d56fd801823dbeae7f0975e1f8c8e25c258eb75d278ea7abb5d9cebb01b56237", size = 58929, upload-time = "2026-02-19T13:45:06.034Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/11/b213bebff182584360cb8d17c72c1677fec5c5c228de439e63bcf8ab1c8f/pyparsing-3.3.3.tar.gz", hash = "sha256:928ae7e20211f3b6f3915a72f06a0cfd29ab9d24279dd6346b6b1a7146397d36", size = 1050487, upload-time = "2026-09-20T20:59:05.609Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, + { url = "https://files.pythonhosted.org/packages/38/bb/d215ee7c73b61497b28a5503f9f53523f294fcc936762b7caf90e0c1c2b5/pyparsing-3.3.3-py3-none-any.whl", hash = "sha256:ece8c00a69cf01b45d0b1dedabb469c90d8caf996d4fda40f147627a122849a4", size = 126420, upload-time = "2026-09-20T20:59:04.025Z" }, ] [[package]] @@ -1275,9 +1891,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901 } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801 }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] @@ -1287,18 +1903,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-dotenv" version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135 } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101 }, + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, ] [[package]] @@ -1311,9 +1927,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] @@ -1324,18 +1940,98 @@ dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/c6/f3b320c27991c46f43ee9d856302c70dc2d0fb2dba4842ff739d5f46b393/rich-14.3.3.tar.gz", hash = "sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b", size = 230582 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/c6/f3b320c27991c46f43ee9d856302c70dc2d0fb2dba4842ff739d5f46b393/rich-14.3.3.tar.gz", hash = "sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b", size = 230582, upload-time = "2026-02-19T17:23:12.474Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458 }, + { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458, upload-time = "2026-02-19T17:23:13.732Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/74/66de6258867beb2ef08f35f9f2ac017a52cacd5081714d239ff1a442d458/scipy-1.18.1.tar.gz", hash = "sha256:52c4b7422442aba924d03ad4019852b08a92e64ea187b933135687bfe2747307", size = 30781235, upload-time = "2026-08-21T23:28:50.599Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/f7/240c110c08693826b4513a52f5717d62ec7c7af72f2920821247c03b17b3/scipy-1.18.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:457fd7a2a8edeb044ab6ffbc0aa03ff6cd18491356e5e0c834d76ce621b916d1", size = 31111061, upload-time = "2026-08-21T23:23:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/05/4a/78c6285577c375e7cf27277ea8ee6961224327f1e1a0c44af5f17f23635c/scipy-1.18.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:e708533e8b2ae2497d65346538a7dcc92814410b25b81432eac66de0f2af8265", size = 28733332, upload-time = "2026-08-21T23:23:50.015Z" }, + { url = "https://files.pythonhosted.org/packages/a5/f6/a5b82f8abbe14d134691b8b903696f701d25a081353a29dc655c364d9e62/scipy-1.18.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7bbf207c4453ce1ad2e00b17313852b33310b83090c2311bdaf97f93c0380d12", size = 20475078, upload-time = "2026-08-21T23:23:54.138Z" }, + { url = "https://files.pythonhosted.org/packages/23/22/0858a0bbd6b3e825ceb8cd9baf9eaf3b2f2b1d77727eb6be40500bcdc92f/scipy-1.18.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:78c0665edead396b1abb4897c41a5c1d9bf090c8a637a4c20a61678e0a264e66", size = 23108904, upload-time = "2026-08-21T23:23:57.824Z" }, + { url = "https://files.pythonhosted.org/packages/75/9a/2e71719f31eaefe0e3a1706c4a1ded94e664bfd95ffca2b219a671faee01/scipy-1.18.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c085faa2cfa879c5141df483f836f4d691045a078224a670fa570fa01612d89", size = 34025113, upload-time = "2026-08-21T23:24:02.209Z" }, + { url = "https://files.pythonhosted.org/packages/df/64/ff35eb9e54894cf471ff4716abd3c81eb0a0626869217ce3e6ba4ccf17d7/scipy-1.18.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f55fa87b6c612ecd6b058f167c53231b1d14e412efe361d3d6e38b3631c73218", size = 35344199, upload-time = "2026-08-21T23:24:07.844Z" }, + { url = "https://files.pythonhosted.org/packages/d3/af/c5538be1792f7034c12c7db6ee67cace58253c7b87b122d68253eaf5de89/scipy-1.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c35d74ce0e193ff740c2f2be2ac913ddc232fe6c1ff40b26cfecb9c670c63314", size = 35639587, upload-time = "2026-08-21T23:24:13.05Z" }, + { url = "https://files.pythonhosted.org/packages/91/4c/075e4f66471bac101141ac739e9e135549be1bae584571bd03a530c056e1/scipy-1.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2924a03db38dc2e848bca2fe9f077dafb891480b91a00a0963a8cf86dfc31c1", size = 37480330, upload-time = "2026-08-21T23:24:19.608Z" }, + { url = "https://files.pythonhosted.org/packages/39/e7/979fd14e75008623df31ba70d6bb144700f68feadcea042021c06a05bf82/scipy-1.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:5e4d44984abc0020154ea81b247adeddcc3ac5527b975ff798bd1ba0adc513c2", size = 36658278, upload-time = "2026-08-21T23:24:25.463Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0b/e1525354ff9d7d5feb6d1b31af6d14072e5c91e9607b421fa1ec889660b3/scipy-1.18.1-cp312-cp312-win_arm64.whl", hash = "sha256:d65d448389b8436493abcf629cc94ad0cf32aecaf06e1acca1de53cc795f2f12", size = 24400588, upload-time = "2026-08-21T23:24:30.579Z" }, + { url = "https://files.pythonhosted.org/packages/b6/55/4540ee0f9c42a9ad7109d0d1a8cc70de54c3572b01c6693a2b1c70e90ceb/scipy-1.18.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:3ab3523da44749156e1f68b464dc56af11ae4cbc5c739a49d05f32b982eca9f3", size = 31089958, upload-time = "2026-08-21T23:24:35.8Z" }, + { url = "https://files.pythonhosted.org/packages/2a/f5/769f36d14922b8071a43e95d24d18b6bdafad10d7f5cf647867e1ac052bc/scipy-1.18.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6fb6a55cc0ba97b59a1f288fb86dc6fce8bdfc0fffcbfd015e3a954bf2a2d93", size = 28715106, upload-time = "2026-08-21T23:24:40.775Z" }, + { url = "https://files.pythonhosted.org/packages/9a/d7/21d890274f75ea37a8209d5519e72da3da90302e3b9fb8397a0918386a62/scipy-1.18.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ea324d9dd34c38bfb9bec8ca4d1b407db97dbb74029f566b8e322b1b6fe56fe6", size = 20456846, upload-time = "2026-08-21T23:24:45.066Z" }, + { url = "https://files.pythonhosted.org/packages/ec/01/798430ecea2e78ec7c02663d5f71c007bb6abeca931080debd40d7fa55ea/scipy-1.18.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b00eb8fb802090aa903f4ea1c7f5a584779f967361e68b7e98e531cc2d7174", size = 23087986, upload-time = "2026-08-21T23:24:49.539Z" }, + { url = "https://files.pythonhosted.org/packages/e6/5f/4634e9d35c68496e4e34cb6946eafab044458e6cedab42b40b6588e475b6/scipy-1.18.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d416b16cccfd70fbf62400e84d0bb2f4e6af519a45557f1692c749b37f14b315", size = 33998146, upload-time = "2026-08-21T23:24:54.714Z" }, + { url = "https://files.pythonhosted.org/packages/41/48/6450ed9243315322bbc19ac57b9b70d66a20bf1d38d124c96bc4bf6af9ea/scipy-1.18.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fdaf5ea890a6183d0565f51a61799d67081bd5b1cf03c5f4b3fd3732108625c9", size = 35312578, upload-time = "2026-08-21T23:25:00.44Z" }, + { url = "https://files.pythonhosted.org/packages/00/bd/bf5a4be6a3525676499f6dff307991739ff6fdcad1481b1aeb6745339f58/scipy-1.18.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c825cef2f49e46753726a7181a8e199804a912b29519ada542c6ebc654951899", size = 35612621, upload-time = "2026-08-21T23:25:06.144Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4e/3c45c33e00a77996c4b1cb707929f833ba7b1d522ee29f882512c330676d/scipy-1.18.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e3b417bf8c2c7c16e8f58ad91db17783ec911ac16e7b50eb6eab6e809b4f5b07", size = 37457323, upload-time = "2026-08-21T23:25:12.483Z" }, + { url = "https://files.pythonhosted.org/packages/93/0e/e0348fbc0dbab65c114cf78957e7dfeb49f8e8b556b4d930cc12ff195e18/scipy-1.18.1-cp313-cp313-win_amd64.whl", hash = "sha256:559ed65f60c1af5a03f3912605a1b5114f522c7c32fb23c3376ae8f03219fe28", size = 36622841, upload-time = "2026-08-21T23:25:18.722Z" }, + { url = "https://files.pythonhosted.org/packages/50/a8/6a77f5f267c555108f0a864b6db714363dab567a8266422a79a385f9232b/scipy-1.18.1-cp313-cp313-win_arm64.whl", hash = "sha256:cd479fc04dd9401e3b4f49e76518768ef99c4f517a98c284eb091fd725719adf", size = 24399315, upload-time = "2026-08-21T23:25:23.458Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/d8eb4e280ddb56a4ab2c6f02ee49b56b23f6e977cf0802fd6d68dbef14f5/scipy-1.18.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:83de5453a7799afc9048b4616bd085cef126e36412f0ea2f6370c36a2a3a51e7", size = 31090936, upload-time = "2026-08-21T23:25:28.686Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/59ea385dc3a62ff498ddf3cfff7c2b41b0f9f9d3c4122b3f1dcb6d6327fe/scipy-1.18.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9554bcc6d715ee87a633a3cc8e7703c6628b100dd29cb8a2efc4c0533c7ff729", size = 28725221, upload-time = "2026-08-21T23:25:33.244Z" }, + { url = "https://files.pythonhosted.org/packages/70/e8/6b0c288c50942d78193696c9f15f9a0874f5178aa0ddf40f83d9924b3e8d/scipy-1.18.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:011413b7426b75012840e35649e00fe0a2c3bae89fed433876e3a99251572efc", size = 20466839, upload-time = "2026-08-21T23:25:37.516Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e0/54fd3793c729e3b936782f181b59cbb1205bf250ab605a16cb1ba61cdd5e/scipy-1.18.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:88f0e784020649f88ea48c9f5ddfa403bf9205820667c0914740b392035afb82", size = 23089121, upload-time = "2026-08-21T23:25:42.019Z" }, + { url = "https://files.pythonhosted.org/packages/0b/56/030af62bea3cf878e0028515dff78c123b01633606a879b63f42d2db99cc/scipy-1.18.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d3ab0e8c69a17dd3559eab8cbb88f258e285c94d572c2719033f90f83290c89", size = 34053851, upload-time = "2026-08-21T23:25:47.998Z" }, + { url = "https://files.pythonhosted.org/packages/6b/89/2a844506d49651e9aa1af6ef95b6bd8031cb1d5a4375edec6155037e04cf/scipy-1.18.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac0333bdf38309aa3dcbe7e3fa7ea29e7a2c37c6ea306a757b700ded8e4596ad", size = 35329183, upload-time = "2026-08-21T23:25:53.522Z" }, + { url = "https://files.pythonhosted.org/packages/eb/56/c7370c3640e92ac9613cbf26cb3f729f9b12ddf1727b55b94b53b24d6f48/scipy-1.18.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:911de823097db8b63f034299d12662db93344e6ffa0b881cbb57748974b70168", size = 35672551, upload-time = "2026-08-21T23:25:59.387Z" }, + { url = "https://files.pythonhosted.org/packages/24/16/ec8536f351421f8bf60a1120930638f83790f4710b8230446aca3d6159d4/scipy-1.18.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:95298364e251be3e60249facbeeca03631d3bb7584f85879516ec55ac717b81f", size = 37469416, upload-time = "2026-08-21T23:26:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/52/94/d73da0d28f16c45bb9b0a5691b91610b0275c5ef0eb5e43c87cf2dc1bf31/scipy-1.18.1-cp314-cp314-win_amd64.whl", hash = "sha256:78a0d7c918e74a232394117160e7e3db503377572a45bcef8826e4ab8a35feba", size = 37362755, upload-time = "2026-08-21T23:26:11.366Z" }, + { url = "https://files.pythonhosted.org/packages/89/25/e996e4dc74e10e227b1e14db5eaf6608bb6dd33884a64851c38f18dd4249/scipy-1.18.1-cp314-cp314-win_arm64.whl", hash = "sha256:cbf38d043c1aa4ab306e1ada6ab6eddacc3322a20b7af1b30bc93254b366fe09", size = 25036090, upload-time = "2026-08-21T23:26:15.887Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c9/c00213f92309d753b48903e6a451b87eb52ff5b7a16e789d1568bbf221c4/scipy-1.18.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:0fcb3c93519f27bb4f0c4b0f7802cdcaca7fcf93267b75edda2e9f4e8a55cbd7", size = 31485550, upload-time = "2026-08-21T23:26:20.776Z" }, + { url = "https://files.pythonhosted.org/packages/74/b2/e3067c487982d4eeab2938928529410370c06fea84a4d3f4925e7d96647d/scipy-1.18.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:ddef79fb382df40104a19bb7151b3b23e57c1778fcf857c71ceecd9bd264513f", size = 29174642, upload-time = "2026-08-21T23:26:25.395Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ab/374c9fe2d1ec014e576c781a4b5d8e1ba340e8f6b4638c16f711d2b194f0/scipy-1.18.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0e82073ecc7acc6436fac4b31674109c7e1d3e596789767eda01258a8c9e8123", size = 20916357, upload-time = "2026-08-21T23:26:30.112Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/223915c88a17317cafbf8ca2a42b11c265a9fb1e804aa665544132b5fe8a/scipy-1.18.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8bcf3c1ba5d6456e2effd30fcbd3459b044d683fcdac79a2e6830f0bdf7de487", size = 23482611, upload-time = "2026-08-21T23:26:34.846Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d1/db0948da8ca57a80b36520ef0a768b967d99f3af65f4b6f1bf6362ad4dd4/scipy-1.18.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cfbf154f2ba187f2ed6cce2639efff7d105f1140573642c0161615b6d91d6a87", size = 34143202, upload-time = "2026-08-21T23:26:40.4Z" }, + { url = "https://files.pythonhosted.org/packages/87/53/39d046cc7574ed6acacb6bd5723e220107ece80bff12faaf3efc4ddeede4/scipy-1.18.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1d33a7836f7ddc1993427966a0823468ec41bcbdb1a9f9942d1d7e57f803ba3", size = 35380876, upload-time = "2026-08-21T23:26:46.1Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/32e0e799d875a85ca57d9bde6c78148afcc0e38276df683d95854eadc8c3/scipy-1.18.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7f4b8bc363b6d65ee2152bec57568e3c52639bb34c46057b09857a307ed5e21d", size = 35770885, upload-time = "2026-08-21T23:26:51.533Z" }, + { url = "https://files.pythonhosted.org/packages/88/2e/f97a666d362fee68b18f41c9c30ed502ca5c98b549749bfcb52a8b74d1eb/scipy-1.18.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:11c423f1049c5755ad4409af52a9ada1cff96fe9b50795d4af3619f292901239", size = 37525424, upload-time = "2026-08-21T23:26:56.751Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d5/a9e765a84654ebba8479a1fd1b059ced1af72b168a3b2a3a46540ea38d20/scipy-1.18.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c24acac1e18912761c4700239bbc1fd32f615af690f1584d49b35859be51324d", size = 37416961, upload-time = "2026-08-21T23:27:01.546Z" }, + { url = "https://files.pythonhosted.org/packages/ee/16/e79e0d1c63ef698879d85439d37e9fb434e3b804e506a6991038d086ebd9/scipy-1.18.1-cp314-cp314t-win_arm64.whl", hash = "sha256:9f2897bf7737392ad0d5213ea7b6add72a4edf5679b3153106aeb88b6507b3b9", size = 25331848, upload-time = "2026-08-21T23:27:05.884Z" }, + { url = "https://files.pythonhosted.org/packages/be/4f/1bd37c883b67163e2ca1f60977a399500e6879c15defecac62831c8d078d/scipy-1.18.1-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:eb0dfcf4e28a99c12c999744a2ff67c9b06200e20401c7c88186e33552a46331", size = 31091484, upload-time = "2026-08-21T23:27:11.051Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c5/ba929d7feb9b2332f96827c12e0e924b61973b59b4dea383b603372c65ce/scipy-1.18.1-cp315-cp315-macosx_12_0_arm64.whl", hash = "sha256:30f464bee641fa8e282577c7dce027308403213c6ca8270bba73285c91024bc5", size = 28725057, upload-time = "2026-08-21T23:27:15.9Z" }, + { url = "https://files.pythonhosted.org/packages/a4/19/68f1c50f609d955d230e66d25d02bd3e1e167ec540232135354fb9a4b9e3/scipy-1.18.1-cp315-cp315-macosx_14_0_arm64.whl", hash = "sha256:1bca3b943fc2567ea49cd02c99abde49da4d5178ec46f624bd8255cda8755beb", size = 20466734, upload-time = "2026-08-21T23:27:20.044Z" }, + { url = "https://files.pythonhosted.org/packages/ef/6d/319fa29b73d1802fa80b32a6eaf3f5be456ef81526da2716a9493bcb5501/scipy-1.18.1-cp315-cp315-macosx_14_0_x86_64.whl", hash = "sha256:c9d18a33309122074ea483dd92dd444189166b8b2ec429fe9ed5ac73c7a0aa23", size = 23089664, upload-time = "2026-08-21T23:27:24.345Z" }, + { url = "https://files.pythonhosted.org/packages/b7/db/30992f9b51a63de671daf3888ffd18378b6cb9ec9f2c972264238ffa7fd6/scipy-1.18.1-cp315-cp315-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82f201b4c878551d48558337aab270d3c6cca5507b8737c8d8a608d234cccde0", size = 34054035, upload-time = "2026-08-21T23:27:29.409Z" }, + { url = "https://files.pythonhosted.org/packages/91/d4/bf3e735dc0b9d5a8ff45079d2540e17d3aff7a2f0048dd8f552ffd031d2b/scipy-1.18.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ac49ea97594532dd44b7136094d35f5440fa06e6d9c6384a74c01764df388c5", size = 35333883, upload-time = "2026-08-21T23:27:34.293Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/12d78ce9f871fe945fca588d32644e6e63f553c2a35c564d73f3b22a3313/scipy-1.18.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:ceb30a00ce7c92d459819443d29ca486d882b83fb6738bdcbb2a1cce94ac5daa", size = 35673124, upload-time = "2026-08-21T23:27:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/70/cd/886219313a1012a48e6ae0ec4f302c837151beb92e1ff0d709ef8fdfc488/scipy-1.18.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:f29633129f9fa7e88a3f0fca835de2d030bfc9643f7799e1a0c46cee24d38fc7", size = 37470753, upload-time = "2026-08-21T23:27:44.435Z" }, + { url = "https://files.pythonhosted.org/packages/17/6c/a776888ce618bee54fbde26172f0f46ac1da70d27b63861797fe78e1904b/scipy-1.18.1-cp315-cp315-win_amd64.whl", hash = "sha256:92c14f5bdbfb6216315ce33e78080474082de8b3830122ba97809bfbe65f75c0", size = 37361483, upload-time = "2026-08-21T23:27:49.334Z" }, + { url = "https://files.pythonhosted.org/packages/ab/09/97b651691322ebee97999b017ffc18a15a0b815103844c97e8da9d469731/scipy-1.18.1-cp315-cp315-win_arm64.whl", hash = "sha256:e402cf31eb68f453dbb2d36fc6d722b33f24a55d68b2ae1d92fa6305ca71c298", size = 25035883, upload-time = "2026-08-21T23:27:53.596Z" }, + { url = "https://files.pythonhosted.org/packages/ed/0f/9ec20467bbabd0d44e2a77d0fd3d124f884b4d67df92af82c91d2d6a486f/scipy-1.18.1-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:2a0b02f9fc46f8520330c23d45e6560db7e3a0d927232139427637f98943e11d", size = 31474926, upload-time = "2026-08-21T23:27:57.993Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/dcb79161e56efbedc50079fcd2f5fe427a0ebb53022eb476aa73c015ad8f/scipy-1.18.1-cp315-cp315t-macosx_12_0_arm64.whl", hash = "sha256:1d73131e358976663dd969e1fb4ed1404b815cd977eaaedc3b3a133ba2d81c35", size = 29164940, upload-time = "2026-08-21T23:28:03.062Z" }, + { url = "https://files.pythonhosted.org/packages/71/d3/1eeea80c817fcb8ef7bd4a05a58824977a0e57a375cfc3d7ea7c911c01ad/scipy-1.18.1-cp315-cp315t-macosx_14_0_arm64.whl", hash = "sha256:bff0b729edd992766136b34e39cc76bc2fad905aa58897ee72a9cd000a6d8443", size = 20906742, upload-time = "2026-08-21T23:28:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/54/46/e59350428b6099301a20128108c995e2eb175a43f383af9a346e38824f9b/scipy-1.18.1-cp315-cp315t-macosx_14_0_x86_64.whl", hash = "sha256:10ac20c69d880f77f375db44c22e3e6a644f9fefa291d4cd2fb9790a89fc99fd", size = 23472183, upload-time = "2026-08-21T23:28:12.109Z" }, + { url = "https://files.pythonhosted.org/packages/89/31/cc91623fa98f0621766a0f0aaaadb2c66de74a7ea7e3837164f6e4354260/scipy-1.18.1-cp315-cp315t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33a834464fdabc0f26a45508df31b3cc5d028e04dbf6c5ed398541418e0a12fe", size = 34130796, upload-time = "2026-08-21T23:28:17.906Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3e/8572ef536957ddb8aa81bb4090d9e25f257e3b4e05d97deb54319deb8a3a/scipy-1.18.1-cp315-cp315t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49023963c193dacee096301452f223ee24d86ec5807f8df93c0f7221d119e305", size = 35374253, upload-time = "2026-08-21T23:28:23.732Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c6/59fdeffb4f1435299f93d9dc8140b43ad2916e6cfc944be6c3041fcec86d/scipy-1.18.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:d84a09d0dad90ba6525d8ac1c2334b33e64bf3ccfe9e841f02feb867a22681e4", size = 35758543, upload-time = "2026-08-21T23:28:29.431Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d9/135be205d9de8783193aff9cc3bf483a03a38e4b29432c954e8cb66ac14e/scipy-1.18.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:179ce34a8d0fe273d8883ba59e17e052247d08973dfcb743ca52bb1cce2d60b0", size = 37521946, upload-time = "2026-08-21T23:28:35.245Z" }, + { url = "https://files.pythonhosted.org/packages/5c/a2/5b7d5270621ab7cfa3f7766067bf95dc360b5efb6394694e8143b4156e2b/scipy-1.18.1-cp315-cp315t-win_amd64.whl", hash = "sha256:5632e3ae3d09197c446310cd5187de63e28448ce22f0f67b2b93d97503c0c230", size = 37408295, upload-time = "2026-08-21T23:28:40.724Z" }, + { url = "https://files.pythonhosted.org/packages/63/ad/741c19fcb66755ff953daf9243af8480e4bf3d7fbe57583c178c7d2b6b51/scipy-1.18.1-cp315-cp315t-win_arm64.whl", hash = "sha256:eda632a7981f69730d6281f451db9c1c370993a2c0d7ddb43e2a809a2862b83a", size = 25319710, upload-time = "2026-08-21T23:28:45.713Z" }, +] + +[[package]] +name = "setuptools" +version = "84.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/44/f5da03a8ef95d369145c5bb53050e7877c9f3d312e128605fd9504829143/setuptools-84.0.0.tar.gz", hash = "sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73", size = 1168449, upload-time = "2026-08-08T18:27:58.365Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/9c/c510029fc6ef33a6275cd2c5d3cecd6613dfd6aa401d57c54f1c18852ccf/setuptools-84.0.0-py3-none-any.whl", hash = "sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670", size = 818216, upload-time = "2026-08-08T18:27:56.719Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] @@ -1346,18 +2042,108 @@ dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272 }, + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "torch" +version = "2.14.1" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version < '3.13' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "sys_platform == 'darwin'" }, + { name = "fsspec", marker = "sys_platform == 'darwin'" }, + { name = "jinja2", marker = "sys_platform == 'darwin'" }, + { name = "networkx", marker = "sys_platform == 'darwin'" }, + { name = "setuptools", marker = "sys_platform == 'darwin'" }, + { name = "sympy", marker = "sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9cf3082d25560efb1eef921871595227c0cf305abb7761ca45b6b988ef6cdd45", upload-time = "2026-09-30T19:50:32Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:82762c7527079f1e17a771684362ed51400e3bc72942df30217e40f27c6816d7", upload-time = "2026-09-30T19:50:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:17b32fd68abe9429d936c643579e24465e7174a06c168bbfcc01395a881bc8af", upload-time = "2026-09-30T19:50:45Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:6fe25964e53113a8a1f5640be1103a982a426c07f8907fba48fcca1be1112202", upload-time = "2026-09-30T19:50:51Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp315-cp315-macosx_14_0_arm64.whl", hash = "sha256:729992e6b581de722989012547b7767ef8ac019bd060e34805f06a52ff9a120e", upload-time = "2026-09-30T19:50:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1-cp315-cp315t-macosx_14_0_arm64.whl", hash = "sha256:3e4d7679866c4cd68258ccda7c51bcda150797eda095813f26fe63c07934cc21", upload-time = "2026-09-30T19:51:02Z" }, +] + +[[package]] +name = "torch" +version = "2.14.1+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version < '3.13' and sys_platform == 'emscripten'", + "python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "filelock", marker = "sys_platform != 'darwin'" }, + { name = "fsspec", marker = "sys_platform != 'darwin'" }, + { name = "jinja2", marker = "sys_platform != 'darwin'" }, + { name = "networkx", marker = "sys_platform != 'darwin'" }, + { name = "setuptools", marker = "sys_platform != 'darwin'" }, + { name = "sympy", marker = "sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:6b06a7f6275c5fdecaf1dbf5546f0820b024a97785575bb99e3d9930d83cd86b", upload-time = "2026-09-30T19:47:30Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:2af649994b36dffc627175c3f306d9e513a309b58d4619ac7107577613336454", upload-time = "2026-09-30T19:47:36Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:5a6363570c753812540a05eb82380e329469cbe668643e88111414c12627711f", upload-time = "2026-09-30T19:47:44Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:c52adc3bd526ff7fc5bdcc58fc4a76e6214d09951b646ffe5256ebd7ba60cef1", upload-time = "2026-09-30T19:47:50Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:2f8162c6b265eaf2b0bdd6bef20e96cece430f308e1477a32d0aef51e472124c", upload-time = "2026-09-30T19:47:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp313-cp313-linux_s390x.whl", hash = "sha256:4b323c71a5ac184485c87d694842157b1eb217c425ad69761dafd379d1590521", upload-time = "2026-09-30T19:47:59Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:783a3dec10d272e40ed3f1a05ec228400300d3229b8f7521a9327645fae88646", upload-time = "2026-09-30T19:48:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:331fa474e26e428e2e6af1143b2fdab19cee492d7d21897b8899ce1c14755662", upload-time = "2026-09-30T19:48:15Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:4eec5a4fadd7a18f9c75b97fdb374fbb579ce4b1604bf66eeb14dc2201d54def", upload-time = "2026-09-30T19:48:22Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp313-cp313-win_arm64.whl", hash = "sha256:a46884e8b38cbdf5af8d4fdd39223a5fa97491419c3417c93f9b3e28749fa356", upload-time = "2026-09-30T19:48:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314-linux_s390x.whl", hash = "sha256:a7a580e3d92467516c9247a22bc805ae4f79c7b1b9a2052f92849f34e89720f5", upload-time = "2026-09-30T19:48:32Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:f56cd23a3bf003bfbed3da0645ba09b3ccc66c0a2f2ac726a9b98f34e0e4926f", upload-time = "2026-09-30T19:48:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:35103e180214793207f95d7e12e100ecba3ace6f5fb37e1fcefbb07e096ed180", upload-time = "2026-09-30T19:48:48Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:a93db7947d53caab62c2436205a60ddf9c3150c2e09eb9b24610c1c3f4cbaf99", upload-time = "2026-09-30T19:48:56Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314t-linux_s390x.whl", hash = "sha256:f67ee1fe9c9f7c6ad3785d150bc3cecda442a5880a6d40816e13fee475d97dd8", upload-time = "2026-09-30T19:49:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:2547c9f32f8fd9c8fced83119269d85519b123d4e8c87eba71660fe3a6996336", upload-time = "2026-09-30T19:49:10Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7d2c35e915793f3ae82e8ee4041a960140bcd0bd35f3ec6eb06e1f1f37a89dba", upload-time = "2026-09-30T19:49:18Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:5c0d1ef51127c9c65ec6394226b82ef1a5f3cd0ab8ffb10f48cc5c08aa72a5cf", upload-time = "2026-09-30T19:49:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:88634fad89f7b953acd011bad0d5c131d269aa71a7de6e0ef2344e3a2c95fabc", upload-time = "2026-09-30T19:49:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:94edee897fbd15a73f91aa38e22e2d2b7b60ac3acf6e8afc6b8dad89229c810c", upload-time = "2026-09-30T19:49:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315-win_amd64.whl", hash = "sha256:e799161f94d97485857ec82424e40a83d7648ab02c03e3d6e71c7838a4d7b89e", upload-time = "2026-09-30T19:49:50Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315t-manylinux_2_28_aarch64.whl", hash = "sha256:930d724490955b822c0b005499128279e54876a318b51fdb9b9da35e0230cc0f", upload-time = "2026-09-30T19:49:57Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315t-manylinux_2_28_x86_64.whl", hash = "sha256:2948f065d848178a0402791baf87493b7ebf067dae48a8e04c498d6668e94895", upload-time = "2026-09-30T19:50:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.14.1%2Bcpu-cp315-cp315t-win_amd64.whl", hash = "sha256:192745b92c9ac392298e73de950cd02d8a7886117923073d890625622d343ede", upload-time = "2026-09-30T19:50:14Z" }, ] [[package]] name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] @@ -1367,27 +2153,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949 } +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611 }, + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, ] [[package]] name = "tzdata" version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521 }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556 } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584 }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] @@ -1398,9 +2184,9 @@ dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e3/ad/4a96c425be6fb67e0621e62d86c402b4a17ab2be7f7c055d9bd2f638b9e2/uvicorn-0.42.0.tar.gz", hash = "sha256:9b1f190ce15a2dd22e7758651d9b6d12df09a13d51ba5bf4fc33c383a48e1775", size = 85393 } +sdist = { url = "https://files.pythonhosted.org/packages/e3/ad/4a96c425be6fb67e0621e62d86c402b4a17ab2be7f7c055d9bd2f638b9e2/uvicorn-0.42.0.tar.gz", hash = "sha256:9b1f190ce15a2dd22e7758651d9b6d12df09a13d51ba5bf4fc33c383a48e1775", size = 85393, upload-time = "2026-03-16T06:19:50.077Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/89/f8827ccff89c1586027a105e5630ff6139a64da2515e24dafe860bd9ae4d/uvicorn-0.42.0-py3-none-any.whl", hash = "sha256:96c30f5c7abe6f74ae8900a70e92b85ad6613b745d4879eb9b16ccad15645359", size = 68830 }, + { url = "https://files.pythonhosted.org/packages/0a/89/f8827ccff89c1586027a105e5630ff6139a64da2515e24dafe860bd9ae4d/uvicorn-0.42.0-py3-none-any.whl", hash = "sha256:96c30f5c7abe6f74ae8900a70e92b85ad6613b745d4879eb9b16ccad15645359", size = 68830, upload-time = "2026-03-16T06:19:48.325Z" }, ] [[package]] @@ -1412,97 +2198,97 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/6e/beb1beec874a72f23815c1434518bfc4ed2175065173fb138c3705f658d4/yarl-1.23.0.tar.gz", hash = "sha256:53b1ea6ca88ebd4420379c330aea57e258408dd0df9af0992e5de2078dc9f5d5", size = 194676 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/8a/94615bc31022f711add374097ad4144d569e95ff3c38d39215d07ac153a0/yarl-1.23.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1932b6b8bba8d0160a9d1078aae5838a66039e8832d41d2992daa9a3a08f7860", size = 124737 }, - { url = "https://files.pythonhosted.org/packages/e3/6f/c6554045d59d64052698add01226bc867b52fe4a12373415d7991fdca95d/yarl-1.23.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:411225bae281f114067578891bc75534cfb3d92a3b4dfef7a6ca78ba354e6069", size = 87029 }, - { url = "https://files.pythonhosted.org/packages/19/2a/725ecc166d53438bc88f76822ed4b1e3b10756e790bafd7b523fe97c322d/yarl-1.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13a563739ae600a631c36ce096615fe307f131344588b0bc0daec108cdb47b25", size = 86310 }, - { url = "https://files.pythonhosted.org/packages/99/30/58260ed98e6ff7f90ba84442c1ddd758c9170d70327394a6227b310cd60f/yarl-1.23.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cbf44c5cb4a7633d078788e1b56387e3d3cf2b8139a3be38040b22d6c3221c8", size = 97587 }, - { url = "https://files.pythonhosted.org/packages/76/0a/8b08aac08b50682e65759f7f8dde98ae8168f72487e7357a5d684c581ef9/yarl-1.23.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53ad387048f6f09a8969631e4de3f1bf70c50e93545d64af4f751b2498755072", size = 92528 }, - { url = "https://files.pythonhosted.org/packages/52/07/0b7179101fe5f8385ec6c6bb5d0cb9f76bd9fb4a769591ab6fb5cdbfc69a/yarl-1.23.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4a59ba56f340334766f3a4442e0efd0af895fae9e2b204741ef885c446b3a1a8", size = 105339 }, - { url = "https://files.pythonhosted.org/packages/d3/8a/36d82869ab5ec829ca8574dfcb92b51286fcfb1e9c7a73659616362dc880/yarl-1.23.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:803a3c3ce4acc62eaf01eaca1208dcf0783025ef27572c3336502b9c232005e7", size = 105061 }, - { url = "https://files.pythonhosted.org/packages/66/3e/868e5c3364b6cee19ff3e1a122194fa4ce51def02c61023970442162859e/yarl-1.23.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3d2bff8f37f8d0f96c7ec554d16945050d54462d6e95414babaa18bfafc7f51", size = 100132 }, - { url = "https://files.pythonhosted.org/packages/cf/26/9c89acf82f08a52cb52d6d39454f8d18af15f9d386a23795389d1d423823/yarl-1.23.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c75eb09e8d55bceb4367e83496ff8ef2bc7ea6960efb38e978e8073ea59ecb67", size = 99289 }, - { url = "https://files.pythonhosted.org/packages/6f/54/5b0db00d2cb056922356104468019c0a132e89c8d3ab67d8ede9f4483d2a/yarl-1.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877b0738624280e34c55680d6054a307aa94f7d52fa0e3034a9cc6e790871da7", size = 96950 }, - { url = "https://files.pythonhosted.org/packages/f6/40/10fa93811fd439341fad7e0718a86aca0de9548023bbb403668d6555acab/yarl-1.23.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b5405bb8f0e783a988172993cfc627e4d9d00432d6bbac65a923041edacf997d", size = 93960 }, - { url = "https://files.pythonhosted.org/packages/bc/d2/8ae2e6cd77d0805f4526e30ec43b6f9a3dfc542d401ac4990d178e4bf0cf/yarl-1.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1c3a3598a832590c5a3ce56ab5576361b5688c12cb1d39429cf5dba30b510760", size = 104703 }, - { url = "https://files.pythonhosted.org/packages/2f/0c/b3ceacf82c3fe21183ce35fa2acf5320af003d52bc1fcf5915077681142e/yarl-1.23.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8419ebd326430d1cbb7efb5292330a2cf39114e82df5cc3d83c9a0d5ebeaf2f2", size = 98325 }, - { url = "https://files.pythonhosted.org/packages/9d/e0/12900edd28bdab91a69bd2554b85ad7b151f64e8b521fe16f9ad2f56477a/yarl-1.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:be61f6fff406ca40e3b1d84716fde398fc08bc63dd96d15f3a14230a0973ed86", size = 105067 }, - { url = "https://files.pythonhosted.org/packages/15/61/74bb1182cf79c9bbe4eb6b1f14a57a22d7a0be5e9cedf8e2d5c2086474c3/yarl-1.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ceb13c5c858d01321b5d9bb65e4cf37a92169ea470b70fec6f236b2c9dd7e34", size = 100285 }, - { url = "https://files.pythonhosted.org/packages/69/7f/cd5ef733f2550de6241bd8bd8c3febc78158b9d75f197d9c7baa113436af/yarl-1.23.0-cp312-cp312-win32.whl", hash = "sha256:fffc45637bcd6538de8b85f51e3df3223e4ad89bccbfca0481c08c7fc8b7ed7d", size = 82359 }, - { url = "https://files.pythonhosted.org/packages/f5/be/25216a49daeeb7af2bec0db22d5e7df08ed1d7c9f65d78b14f3b74fd72fc/yarl-1.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:f69f57305656a4852f2a7203efc661d8c042e6cc67f7acd97d8667fb448a426e", size = 87674 }, - { url = "https://files.pythonhosted.org/packages/d2/35/aeab955d6c425b227d5b7247eafb24f2653fedc32f95373a001af5dfeb9e/yarl-1.23.0-cp312-cp312-win_arm64.whl", hash = "sha256:6e87a6e8735b44816e7db0b2fbc9686932df473c826b0d9743148432e10bb9b9", size = 81879 }, - { url = "https://files.pythonhosted.org/packages/9a/4b/a0a6e5d0ee8a2f3a373ddef8a4097d74ac901ac363eea1440464ccbe0898/yarl-1.23.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:16c6994ac35c3e74fb0ae93323bf8b9c2a9088d55946109489667c510a7d010e", size = 123796 }, - { url = "https://files.pythonhosted.org/packages/67/b6/8925d68af039b835ae876db5838e82e76ec87b9782ecc97e192b809c4831/yarl-1.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a42e651629dafb64fd5b0286a3580613702b5809ad3f24934ea87595804f2c5", size = 86547 }, - { url = "https://files.pythonhosted.org/packages/ae/50/06d511cc4b8e0360d3c94af051a768e84b755c5eb031b12adaaab6dec6e5/yarl-1.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7c6b9461a2a8b47c65eef63bb1c76a4f1c119618ffa99ea79bc5bb1e46c5821b", size = 85854 }, - { url = "https://files.pythonhosted.org/packages/c4/f4/4e30b250927ffdab4db70da08b9b8d2194d7c7b400167b8fbeca1e4701ca/yarl-1.23.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2569b67d616eab450d262ca7cb9f9e19d2f718c70a8b88712859359d0ab17035", size = 98351 }, - { url = "https://files.pythonhosted.org/packages/86/fc/4118c5671ea948208bdb1492d8b76bdf1453d3e73df051f939f563e7dcc5/yarl-1.23.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e9d9a4d06d3481eab79803beb4d9bd6f6a8e781ec078ac70d7ef2dcc29d1bea5", size = 92711 }, - { url = "https://files.pythonhosted.org/packages/56/11/1ed91d42bd9e73c13dc9e7eb0dd92298d75e7ac4dd7f046ad0c472e231cd/yarl-1.23.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f514f6474e04179d3d33175ed3f3e31434d3130d42ec153540d5b157deefd735", size = 106014 }, - { url = "https://files.pythonhosted.org/packages/ce/c9/74e44e056a23fbc33aca71779ef450ca648a5bc472bdad7a82339918f818/yarl-1.23.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fda207c815b253e34f7e1909840fd14299567b1c0eb4908f8c2ce01a41265401", size = 105557 }, - { url = "https://files.pythonhosted.org/packages/66/fe/b1e10b08d287f518994f1e2ff9b6d26f0adeecd8dd7d533b01bab29a3eda/yarl-1.23.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34b6cf500e61c90f305094911f9acc9c86da1a05a7a3f5be9f68817043f486e4", size = 101559 }, - { url = "https://files.pythonhosted.org/packages/72/59/c5b8d94b14e3d3c2a9c20cb100119fd534ab5a14b93673ab4cc4a4141ea5/yarl-1.23.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d7504f2b476d21653e4d143f44a175f7f751cd41233525312696c76aa3dbb23f", size = 100502 }, - { url = "https://files.pythonhosted.org/packages/77/4f/96976cb54cbfc5c9fd73ed4c51804f92f209481d1fb190981c0f8a07a1d7/yarl-1.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:578110dd426f0d209d1509244e6d4a3f1a3e9077655d98c5f22583d63252a08a", size = 98027 }, - { url = "https://files.pythonhosted.org/packages/63/6e/904c4f476471afdbad6b7e5b70362fb5810e35cd7466529a97322b6f5556/yarl-1.23.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:609d3614d78d74ebe35f54953c5bbd2ac647a7ddb9c30a5d877580f5e86b22f2", size = 95369 }, - { url = "https://files.pythonhosted.org/packages/9d/40/acfcdb3b5f9d68ef499e39e04d25e141fe90661f9d54114556cf83be8353/yarl-1.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4966242ec68afc74c122f8459abd597afd7d8a60dc93d695c1334c5fd25f762f", size = 105565 }, - { url = "https://files.pythonhosted.org/packages/5e/c6/31e28f3a6ba2869c43d124f37ea5260cac9c9281df803c354b31f4dd1f3c/yarl-1.23.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e0fd068364a6759bc794459f0a735ab151d11304346332489c7972bacbe9e72b", size = 99813 }, - { url = "https://files.pythonhosted.org/packages/08/1f/6f65f59e72d54aa467119b63fc0b0b1762eff0232db1f4720cd89e2f4a17/yarl-1.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:39004f0ad156da43e86aa71f44e033de68a44e5a31fc53507b36dd253970054a", size = 105632 }, - { url = "https://files.pythonhosted.org/packages/a3/c4/18b178a69935f9e7a338127d5b77d868fdc0f0e49becd286d51b3a18c61d/yarl-1.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e5723c01a56c5028c807c701aa66722916d2747ad737a046853f6c46f4875543", size = 101895 }, - { url = "https://files.pythonhosted.org/packages/8f/54/f5b870b5505663911dba950a8e4776a0dbd51c9c54c0ae88e823e4b874a0/yarl-1.23.0-cp313-cp313-win32.whl", hash = "sha256:1b6b572edd95b4fa8df75de10b04bc81acc87c1c7d16bcdd2035b09d30acc957", size = 82356 }, - { url = "https://files.pythonhosted.org/packages/7a/84/266e8da36879c6edcd37b02b547e2d9ecdfea776be49598e75696e3316e1/yarl-1.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:baaf55442359053c7d62f6f8413a62adba3205119bcb6f49594894d8be47e5e3", size = 87515 }, - { url = "https://files.pythonhosted.org/packages/00/fd/7e1c66efad35e1649114fa13f17485f62881ad58edeeb7f49f8c5e748bf9/yarl-1.23.0-cp313-cp313-win_arm64.whl", hash = "sha256:fb4948814a2a98e3912505f09c9e7493b1506226afb1f881825368d6fb776ee3", size = 81785 }, - { url = "https://files.pythonhosted.org/packages/9c/fc/119dd07004f17ea43bb91e3ece6587759edd7519d6b086d16bfbd3319982/yarl-1.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:aecfed0b41aa72b7881712c65cf764e39ce2ec352324f5e0837c7048d9e6daaa", size = 130719 }, - { url = "https://files.pythonhosted.org/packages/e6/0d/9f2348502fbb3af409e8f47730282cd6bc80dec6630c1e06374d882d6eb2/yarl-1.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a41bcf68efd19073376eb8cf948b8d9be0af26256403e512bb18f3966f1f9120", size = 89690 }, - { url = "https://files.pythonhosted.org/packages/50/93/e88f3c80971b42cfc83f50a51b9d165a1dbf154b97005f2994a79f212a07/yarl-1.23.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cde9a2ecd91668bcb7f077c4966d8ceddb60af01b52e6e3e2680e4cf00ad1a59", size = 89851 }, - { url = "https://files.pythonhosted.org/packages/1c/07/61c9dd8ba8f86473263b4036f70fb594c09e99c0d9737a799dfd8bc85651/yarl-1.23.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5023346c4ee7992febc0068e7593de5fa2bf611848c08404b35ebbb76b1b0512", size = 95874 }, - { url = "https://files.pythonhosted.org/packages/9e/e9/f9ff8ceefba599eac6abddcfb0b3bee9b9e636e96dbf54342a8577252379/yarl-1.23.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1009abedb49ae95b136a8904a3f71b342f849ffeced2d3747bf29caeda218c4", size = 88710 }, - { url = "https://files.pythonhosted.org/packages/eb/78/0231bfcc5d4c8eec220bc2f9ef82cb4566192ea867a7c5b4148f44f6cbcd/yarl-1.23.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a8d00f29b42f534cc8aa3931cfe773b13b23e561e10d2b26f27a8d309b0e82a1", size = 101033 }, - { url = "https://files.pythonhosted.org/packages/cd/9b/30ea5239a61786f18fd25797151a17fbb3be176977187a48d541b5447dd4/yarl-1.23.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:95451e6ce06c3e104556d73b559f5da6c34a069b6b62946d3ad66afcd51642ea", size = 100817 }, - { url = "https://files.pythonhosted.org/packages/62/e2/a4980481071791bc83bce2b7a1a1f7adcabfa366007518b4b845e92eeee3/yarl-1.23.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:531ef597132086b6cf96faa7c6c1dcd0361dd5f1694e5cc30375907b9b7d3ea9", size = 97482 }, - { url = "https://files.pythonhosted.org/packages/e5/1e/304a00cf5f6100414c4b5a01fc7ff9ee724b62158a08df2f8170dfc72a2d/yarl-1.23.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:88f9fb0116fbfcefcab70f85cf4b74a2b6ce5d199c41345296f49d974ddb4123", size = 95949 }, - { url = "https://files.pythonhosted.org/packages/68/03/093f4055ed4cae649ac53bca3d180bd37102e9e11d048588e9ab0c0108d0/yarl-1.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e7b0460976dc75cb87ad9cc1f9899a4b97751e7d4e77ab840fc9b6d377b8fd24", size = 95839 }, - { url = "https://files.pythonhosted.org/packages/b9/28/4c75ebb108f322aa8f917ae10a8ffa4f07cae10a8a627b64e578617df6a0/yarl-1.23.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:115136c4a426f9da976187d238e84139ff6b51a20839aa6e3720cd1026d768de", size = 90696 }, - { url = "https://files.pythonhosted.org/packages/23/9c/42c2e2dd91c1a570402f51bdf066bfdb1241c2240ba001967bad778e77b7/yarl-1.23.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ead11956716a940c1abc816b7df3fa2b84d06eaed8832ca32f5c5e058c65506b", size = 100865 }, - { url = "https://files.pythonhosted.org/packages/74/05/1bcd60a8a0a914d462c305137246b6f9d167628d73568505fce3f1cb2e65/yarl-1.23.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:fe8f8f5e70e6dbdfca9882cd9deaac058729bcf323cf7a58660901e55c9c94f6", size = 96234 }, - { url = "https://files.pythonhosted.org/packages/90/b2/f52381aac396d6778ce516b7bc149c79e65bfc068b5de2857ab69eeea3b7/yarl-1.23.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:a0e317df055958a0c1e79e5d2aa5a5eaa4a6d05a20d4b0c9c3f48918139c9fc6", size = 100295 }, - { url = "https://files.pythonhosted.org/packages/e5/e8/638bae5bbf1113a659b2435d8895474598afe38b4a837103764f603aba56/yarl-1.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f0fd84de0c957b2d280143522c4f91a73aada1923caee763e24a2b3fda9f8a5", size = 97784 }, - { url = "https://files.pythonhosted.org/packages/80/25/a3892b46182c586c202629fc2159aa13975d3741d52ebd7347fd501d48d5/yarl-1.23.0-cp313-cp313t-win32.whl", hash = "sha256:93a784271881035ab4406a172edb0faecb6e7d00f4b53dc2f55919d6c9688595", size = 88313 }, - { url = "https://files.pythonhosted.org/packages/43/68/8c5b36aa5178900b37387937bc2c2fe0e9505537f713495472dcf6f6fccc/yarl-1.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:dd00607bffbf30250fe108065f07453ec124dbf223420f57f5e749b04295e090", size = 94932 }, - { url = "https://files.pythonhosted.org/packages/c6/cc/d79ba8292f51f81f4dc533a8ccfb9fc6992cabf0998ed3245de7589dc07c/yarl-1.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ac09d42f48f80c9ee1635b2fcaa819496a44502737660d3c0f2ade7526d29144", size = 84786 }, - { url = "https://files.pythonhosted.org/packages/90/98/b85a038d65d1b92c3903ab89444f48d3cee490a883477b716d7a24b1a78c/yarl-1.23.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:21d1b7305a71a15b4794b5ff22e8eef96ff4a6d7f9657155e5aa419444b28912", size = 124455 }, - { url = "https://files.pythonhosted.org/packages/39/54/bc2b45559f86543d163b6e294417a107bb87557609007c007ad889afec18/yarl-1.23.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:85610b4f27f69984932a7abbe52703688de3724d9f72bceb1cca667deff27474", size = 86752 }, - { url = "https://files.pythonhosted.org/packages/24/f9/e8242b68362bffe6fb536c8db5076861466fc780f0f1b479fc4ffbebb128/yarl-1.23.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23f371bd662cf44a7630d4d113101eafc0cfa7518a2760d20760b26021454719", size = 86291 }, - { url = "https://files.pythonhosted.org/packages/ea/d8/d1cb2378c81dd729e98c716582b1ccb08357e8488e4c24714658cc6630e8/yarl-1.23.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a80f77dc1acaaa61f0934176fccca7096d9b1ff08c8ba9cddf5ae034a24319", size = 99026 }, - { url = "https://files.pythonhosted.org/packages/0a/ff/7196790538f31debe3341283b5b0707e7feb947620fc5e8236ef28d44f72/yarl-1.23.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:bd654fad46d8d9e823afbb4f87c79160b5a374ed1ff5bde24e542e6ba8f41434", size = 92355 }, - { url = "https://files.pythonhosted.org/packages/c1/56/25d58c3eddde825890a5fe6aa1866228377354a3c39262235234ab5f616b/yarl-1.23.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:682bae25f0a0dd23a056739f23a134db9f52a63e2afd6bfb37ddc76292bbd723", size = 106417 }, - { url = "https://files.pythonhosted.org/packages/51/8a/882c0e7bc8277eb895b31bce0138f51a1ba551fc2e1ec6753ffc1e7c1377/yarl-1.23.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a82836cab5f197a0514235aaf7ffccdc886ccdaa2324bc0aafdd4ae898103039", size = 106422 }, - { url = "https://files.pythonhosted.org/packages/42/2b/fef67d616931055bf3d6764885990a3ac647d68734a2d6a9e1d13de437a2/yarl-1.23.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c57676bdedc94cd3bc37724cf6f8cd2779f02f6aba48de45feca073e714fe52", size = 101915 }, - { url = "https://files.pythonhosted.org/packages/18/6a/530e16aebce27c5937920f3431c628a29a4b6b430fab3fd1c117b26ff3f6/yarl-1.23.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c7f8dc16c498ff06497c015642333219871effba93e4a2e8604a06264aca5c5c", size = 100690 }, - { url = "https://files.pythonhosted.org/packages/88/08/93749219179a45e27b036e03260fda05190b911de8e18225c294ac95bbc9/yarl-1.23.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5ee586fb17ff8f90c91cf73c6108a434b02d69925f44f5f8e0d7f2f260607eae", size = 98750 }, - { url = "https://files.pythonhosted.org/packages/d9/cf/ea424a004969f5d81a362110a6ac1496d79efdc6d50c2c4b2e3ea0fc2519/yarl-1.23.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:17235362f580149742739cc3828b80e24029d08cbb9c4bda0242c7b5bc610a8e", size = 94685 }, - { url = "https://files.pythonhosted.org/packages/e2/b7/14341481fe568e2b0408bcf1484c652accafe06a0ade9387b5d3fd9df446/yarl-1.23.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:0793e2bd0cf14234983bbb371591e6bea9e876ddf6896cdcc93450996b0b5c85", size = 106009 }, - { url = "https://files.pythonhosted.org/packages/0a/e6/5c744a9b54f4e8007ad35bce96fbc9218338e84812d36f3390cea616881a/yarl-1.23.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3650dc2480f94f7116c364096bc84b1d602f44224ef7d5c7208425915c0475dd", size = 100033 }, - { url = "https://files.pythonhosted.org/packages/0c/23/e3bfc188d0b400f025bc49d99793d02c9abe15752138dcc27e4eaf0c4a9e/yarl-1.23.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f40e782d49630ad384db66d4d8b73ff4f1b8955dc12e26b09a3e3af064b3b9d6", size = 106483 }, - { url = "https://files.pythonhosted.org/packages/72/42/f0505f949a90b3f8b7a363d6cbdf398f6e6c58946d85c6d3a3bc70595b26/yarl-1.23.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94f8575fbdf81749008d980c17796097e645574a3b8c28ee313931068dad14fe", size = 102175 }, - { url = "https://files.pythonhosted.org/packages/aa/65/b39290f1d892a9dd671d1c722014ca062a9c35d60885d57e5375db0404b5/yarl-1.23.0-cp314-cp314-win32.whl", hash = "sha256:c8aa34a5c864db1087d911a0b902d60d203ea3607d91f615acd3f3108ac32169", size = 83871 }, - { url = "https://files.pythonhosted.org/packages/a9/5b/9b92f54c784c26e2a422e55a8d2607ab15b7ea3349e28359282f84f01d43/yarl-1.23.0-cp314-cp314-win_amd64.whl", hash = "sha256:63e92247f383c85ab00dd0091e8c3fa331a96e865459f5ee80353c70a4a42d70", size = 89093 }, - { url = "https://files.pythonhosted.org/packages/e0/7d/8a84dc9381fd4412d5e7ff04926f9865f6372b4c2fd91e10092e65d29eb8/yarl-1.23.0-cp314-cp314-win_arm64.whl", hash = "sha256:70efd20be968c76ece7baa8dafe04c5be06abc57f754d6f36f3741f7aa7a208e", size = 83384 }, - { url = "https://files.pythonhosted.org/packages/dd/8d/d2fad34b1c08aa161b74394183daa7d800141aaaee207317e82c790b418d/yarl-1.23.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9a18d6f9359e45722c064c97464ec883eb0e0366d33eda61cb19a244bf222679", size = 131019 }, - { url = "https://files.pythonhosted.org/packages/19/ff/33009a39d3ccf4b94d7d7880dfe17fb5816c5a4fe0096d9b56abceea9ac7/yarl-1.23.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2803ed8b21ca47a43da80a6fd1ed3019d30061f7061daa35ac54f63933409412", size = 89894 }, - { url = "https://files.pythonhosted.org/packages/0c/f1/dab7ac5e7306fb79c0190766a3c00b4cb8d09a1f390ded68c85a5934faf5/yarl-1.23.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:394906945aa8b19fc14a61cf69743a868bb8c465efe85eee687109cc540b98f4", size = 89979 }, - { url = "https://files.pythonhosted.org/packages/aa/b1/08e95f3caee1fad6e65017b9f26c1d79877b502622d60e517de01e72f95d/yarl-1.23.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:71d006bee8397a4a89f469b8deb22469fe7508132d3c17fa6ed871e79832691c", size = 95943 }, - { url = "https://files.pythonhosted.org/packages/c0/cc/6409f9018864a6aa186c61175b977131f373f1988e198e031236916e87e4/yarl-1.23.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:62694e275c93d54f7ccedcfef57d42761b2aad5234b6be1f3e3026cae4001cd4", size = 88786 }, - { url = "https://files.pythonhosted.org/packages/76/40/cc22d1d7714b717fde2006fad2ced5efe5580606cb059ae42117542122f3/yarl-1.23.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31de1613658308efdb21ada98cbc86a97c181aa050ba22a808120bb5be3ab94", size = 101307 }, - { url = "https://files.pythonhosted.org/packages/8f/0d/476c38e85ddb4c6ec6b20b815bdd779aa386a013f3d8b85516feee55c8dc/yarl-1.23.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb1e8b8d66c278b21d13b0a7ca22c41dd757a7c209c6b12c313e445c31dd3b28", size = 100904 }, - { url = "https://files.pythonhosted.org/packages/72/32/0abe4a76d59adf2081dcb0397168553ece4616ada1c54d1c49d8936c74f8/yarl-1.23.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50f9d8d531dfb767c565f348f33dd5139a6c43f5cbdf3f67da40d54241df93f6", size = 97728 }, - { url = "https://files.pythonhosted.org/packages/b7/35/7b30f4810fba112f60f5a43237545867504e15b1c7647a785fbaf588fac2/yarl-1.23.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:575aa4405a656e61a540f4a80eaa5260f2a38fff7bfdc4b5f611840d76e9e277", size = 95964 }, - { url = "https://files.pythonhosted.org/packages/2d/86/ed7a73ab85ef00e8bb70b0cb5421d8a2a625b81a333941a469a6f4022828/yarl-1.23.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:041b1a4cefacf65840b4e295c6985f334ba83c30607441ae3cf206a0eed1a2e4", size = 95882 }, - { url = "https://files.pythonhosted.org/packages/19/90/d56967f61a29d8498efb7afb651e0b2b422a1e9b47b0ab5f4e40a19b699b/yarl-1.23.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:d38c1e8231722c4ce40d7593f28d92b5fc72f3e9774fe73d7e800ec32299f63a", size = 90797 }, - { url = "https://files.pythonhosted.org/packages/72/00/8b8f76909259f56647adb1011d7ed8b321bcf97e464515c65016a47ecdf0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:d53834e23c015ee83a99377db6e5e37d8484f333edb03bd15b4bc312cc7254fb", size = 101023 }, - { url = "https://files.pythonhosted.org/packages/ac/e2/cab11b126fb7d440281b7df8e9ddbe4851e70a4dde47a202b6642586b8d9/yarl-1.23.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2e27c8841126e017dd2a054a95771569e6070b9ee1b133366d8b31beb5018a41", size = 96227 }, - { url = "https://files.pythonhosted.org/packages/c2/9b/2c893e16bfc50e6b2edf76c1a9eb6cb0c744346197e74c65e99ad8d634d0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:76855800ac56f878847a09ce6dba727c93ca2d89c9e9d63002d26b916810b0a2", size = 100302 }, - { url = "https://files.pythonhosted.org/packages/28/ec/5498c4e3a6d5f1003beb23405671c2eb9cdbf3067d1c80f15eeafe301010/yarl-1.23.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e09fd068c2e169a7070d83d3bde728a4d48de0549f975290be3c108c02e499b4", size = 98202 }, - { url = "https://files.pythonhosted.org/packages/fe/c3/cd737e2d45e70717907f83e146f6949f20cc23cd4bf7b2688727763aa458/yarl-1.23.0-cp314-cp314t-win32.whl", hash = "sha256:73309162a6a571d4cbd3b6a1dcc703c7311843ae0d1578df6f09be4e98df38d4", size = 90558 }, - { url = "https://files.pythonhosted.org/packages/e1/19/3774d162f6732d1cfb0b47b4140a942a35ca82bb19b6db1f80e9e7bdc8f8/yarl-1.23.0-cp314-cp314t-win_amd64.whl", hash = "sha256:4503053d296bc6e4cbd1fad61cf3b6e33b939886c4f249ba7c78b602214fabe2", size = 97610 }, - { url = "https://files.pythonhosted.org/packages/51/47/3fa2286c3cb162c71cdb34c4224d5745a1ceceb391b2bd9b19b668a8d724/yarl-1.23.0-cp314-cp314t-win_arm64.whl", hash = "sha256:44bb7bef4ea409384e3f8bc36c063d77ea1b8d4a5b2706956c0d6695f07dcc25", size = 86041 }, - { url = "https://files.pythonhosted.org/packages/69/68/c8739671f5699c7dc470580a4f821ef37c32c4cb0b047ce223a7f115757f/yarl-1.23.0-py3-none-any.whl", hash = "sha256:a2df6afe50dea8ae15fa34c9f824a3ee958d785fd5d089063d960bae1daa0a3f", size = 48288 }, +sdist = { url = "https://files.pythonhosted.org/packages/23/6e/beb1beec874a72f23815c1434518bfc4ed2175065173fb138c3705f658d4/yarl-1.23.0.tar.gz", hash = "sha256:53b1ea6ca88ebd4420379c330aea57e258408dd0df9af0992e5de2078dc9f5d5", size = 194676, upload-time = "2026-03-01T22:07:53.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/8a/94615bc31022f711add374097ad4144d569e95ff3c38d39215d07ac153a0/yarl-1.23.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1932b6b8bba8d0160a9d1078aae5838a66039e8832d41d2992daa9a3a08f7860", size = 124737, upload-time = "2026-03-01T22:05:12.897Z" }, + { url = "https://files.pythonhosted.org/packages/e3/6f/c6554045d59d64052698add01226bc867b52fe4a12373415d7991fdca95d/yarl-1.23.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:411225bae281f114067578891bc75534cfb3d92a3b4dfef7a6ca78ba354e6069", size = 87029, upload-time = "2026-03-01T22:05:14.376Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/725ecc166d53438bc88f76822ed4b1e3b10756e790bafd7b523fe97c322d/yarl-1.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13a563739ae600a631c36ce096615fe307f131344588b0bc0daec108cdb47b25", size = 86310, upload-time = "2026-03-01T22:05:15.71Z" }, + { url = "https://files.pythonhosted.org/packages/99/30/58260ed98e6ff7f90ba84442c1ddd758c9170d70327394a6227b310cd60f/yarl-1.23.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cbf44c5cb4a7633d078788e1b56387e3d3cf2b8139a3be38040b22d6c3221c8", size = 97587, upload-time = "2026-03-01T22:05:17.384Z" }, + { url = "https://files.pythonhosted.org/packages/76/0a/8b08aac08b50682e65759f7f8dde98ae8168f72487e7357a5d684c581ef9/yarl-1.23.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53ad387048f6f09a8969631e4de3f1bf70c50e93545d64af4f751b2498755072", size = 92528, upload-time = "2026-03-01T22:05:18.804Z" }, + { url = "https://files.pythonhosted.org/packages/52/07/0b7179101fe5f8385ec6c6bb5d0cb9f76bd9fb4a769591ab6fb5cdbfc69a/yarl-1.23.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4a59ba56f340334766f3a4442e0efd0af895fae9e2b204741ef885c446b3a1a8", size = 105339, upload-time = "2026-03-01T22:05:20.235Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8a/36d82869ab5ec829ca8574dfcb92b51286fcfb1e9c7a73659616362dc880/yarl-1.23.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:803a3c3ce4acc62eaf01eaca1208dcf0783025ef27572c3336502b9c232005e7", size = 105061, upload-time = "2026-03-01T22:05:22.268Z" }, + { url = "https://files.pythonhosted.org/packages/66/3e/868e5c3364b6cee19ff3e1a122194fa4ce51def02c61023970442162859e/yarl-1.23.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3d2bff8f37f8d0f96c7ec554d16945050d54462d6e95414babaa18bfafc7f51", size = 100132, upload-time = "2026-03-01T22:05:23.638Z" }, + { url = "https://files.pythonhosted.org/packages/cf/26/9c89acf82f08a52cb52d6d39454f8d18af15f9d386a23795389d1d423823/yarl-1.23.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c75eb09e8d55bceb4367e83496ff8ef2bc7ea6960efb38e978e8073ea59ecb67", size = 99289, upload-time = "2026-03-01T22:05:25.749Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/5b0db00d2cb056922356104468019c0a132e89c8d3ab67d8ede9f4483d2a/yarl-1.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877b0738624280e34c55680d6054a307aa94f7d52fa0e3034a9cc6e790871da7", size = 96950, upload-time = "2026-03-01T22:05:27.318Z" }, + { url = "https://files.pythonhosted.org/packages/f6/40/10fa93811fd439341fad7e0718a86aca0de9548023bbb403668d6555acab/yarl-1.23.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b5405bb8f0e783a988172993cfc627e4d9d00432d6bbac65a923041edacf997d", size = 93960, upload-time = "2026-03-01T22:05:28.738Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d2/8ae2e6cd77d0805f4526e30ec43b6f9a3dfc542d401ac4990d178e4bf0cf/yarl-1.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1c3a3598a832590c5a3ce56ab5576361b5688c12cb1d39429cf5dba30b510760", size = 104703, upload-time = "2026-03-01T22:05:30.438Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0c/b3ceacf82c3fe21183ce35fa2acf5320af003d52bc1fcf5915077681142e/yarl-1.23.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8419ebd326430d1cbb7efb5292330a2cf39114e82df5cc3d83c9a0d5ebeaf2f2", size = 98325, upload-time = "2026-03-01T22:05:31.835Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e0/12900edd28bdab91a69bd2554b85ad7b151f64e8b521fe16f9ad2f56477a/yarl-1.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:be61f6fff406ca40e3b1d84716fde398fc08bc63dd96d15f3a14230a0973ed86", size = 105067, upload-time = "2026-03-01T22:05:33.358Z" }, + { url = "https://files.pythonhosted.org/packages/15/61/74bb1182cf79c9bbe4eb6b1f14a57a22d7a0be5e9cedf8e2d5c2086474c3/yarl-1.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ceb13c5c858d01321b5d9bb65e4cf37a92169ea470b70fec6f236b2c9dd7e34", size = 100285, upload-time = "2026-03-01T22:05:35.4Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/cd5ef733f2550de6241bd8bd8c3febc78158b9d75f197d9c7baa113436af/yarl-1.23.0-cp312-cp312-win32.whl", hash = "sha256:fffc45637bcd6538de8b85f51e3df3223e4ad89bccbfca0481c08c7fc8b7ed7d", size = 82359, upload-time = "2026-03-01T22:05:36.811Z" }, + { url = "https://files.pythonhosted.org/packages/f5/be/25216a49daeeb7af2bec0db22d5e7df08ed1d7c9f65d78b14f3b74fd72fc/yarl-1.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:f69f57305656a4852f2a7203efc661d8c042e6cc67f7acd97d8667fb448a426e", size = 87674, upload-time = "2026-03-01T22:05:38.171Z" }, + { url = "https://files.pythonhosted.org/packages/d2/35/aeab955d6c425b227d5b7247eafb24f2653fedc32f95373a001af5dfeb9e/yarl-1.23.0-cp312-cp312-win_arm64.whl", hash = "sha256:6e87a6e8735b44816e7db0b2fbc9686932df473c826b0d9743148432e10bb9b9", size = 81879, upload-time = "2026-03-01T22:05:40.006Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4b/a0a6e5d0ee8a2f3a373ddef8a4097d74ac901ac363eea1440464ccbe0898/yarl-1.23.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:16c6994ac35c3e74fb0ae93323bf8b9c2a9088d55946109489667c510a7d010e", size = 123796, upload-time = "2026-03-01T22:05:41.412Z" }, + { url = "https://files.pythonhosted.org/packages/67/b6/8925d68af039b835ae876db5838e82e76ec87b9782ecc97e192b809c4831/yarl-1.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a42e651629dafb64fd5b0286a3580613702b5809ad3f24934ea87595804f2c5", size = 86547, upload-time = "2026-03-01T22:05:42.841Z" }, + { url = "https://files.pythonhosted.org/packages/ae/50/06d511cc4b8e0360d3c94af051a768e84b755c5eb031b12adaaab6dec6e5/yarl-1.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7c6b9461a2a8b47c65eef63bb1c76a4f1c119618ffa99ea79bc5bb1e46c5821b", size = 85854, upload-time = "2026-03-01T22:05:44.85Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f4/4e30b250927ffdab4db70da08b9b8d2194d7c7b400167b8fbeca1e4701ca/yarl-1.23.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2569b67d616eab450d262ca7cb9f9e19d2f718c70a8b88712859359d0ab17035", size = 98351, upload-time = "2026-03-01T22:05:46.836Z" }, + { url = "https://files.pythonhosted.org/packages/86/fc/4118c5671ea948208bdb1492d8b76bdf1453d3e73df051f939f563e7dcc5/yarl-1.23.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e9d9a4d06d3481eab79803beb4d9bd6f6a8e781ec078ac70d7ef2dcc29d1bea5", size = 92711, upload-time = "2026-03-01T22:05:48.316Z" }, + { url = "https://files.pythonhosted.org/packages/56/11/1ed91d42bd9e73c13dc9e7eb0dd92298d75e7ac4dd7f046ad0c472e231cd/yarl-1.23.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f514f6474e04179d3d33175ed3f3e31434d3130d42ec153540d5b157deefd735", size = 106014, upload-time = "2026-03-01T22:05:50.028Z" }, + { url = "https://files.pythonhosted.org/packages/ce/c9/74e44e056a23fbc33aca71779ef450ca648a5bc472bdad7a82339918f818/yarl-1.23.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fda207c815b253e34f7e1909840fd14299567b1c0eb4908f8c2ce01a41265401", size = 105557, upload-time = "2026-03-01T22:05:51.416Z" }, + { url = "https://files.pythonhosted.org/packages/66/fe/b1e10b08d287f518994f1e2ff9b6d26f0adeecd8dd7d533b01bab29a3eda/yarl-1.23.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34b6cf500e61c90f305094911f9acc9c86da1a05a7a3f5be9f68817043f486e4", size = 101559, upload-time = "2026-03-01T22:05:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/72/59/c5b8d94b14e3d3c2a9c20cb100119fd534ab5a14b93673ab4cc4a4141ea5/yarl-1.23.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d7504f2b476d21653e4d143f44a175f7f751cd41233525312696c76aa3dbb23f", size = 100502, upload-time = "2026-03-01T22:05:54.954Z" }, + { url = "https://files.pythonhosted.org/packages/77/4f/96976cb54cbfc5c9fd73ed4c51804f92f209481d1fb190981c0f8a07a1d7/yarl-1.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:578110dd426f0d209d1509244e6d4a3f1a3e9077655d98c5f22583d63252a08a", size = 98027, upload-time = "2026-03-01T22:05:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/63/6e/904c4f476471afdbad6b7e5b70362fb5810e35cd7466529a97322b6f5556/yarl-1.23.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:609d3614d78d74ebe35f54953c5bbd2ac647a7ddb9c30a5d877580f5e86b22f2", size = 95369, upload-time = "2026-03-01T22:05:58.141Z" }, + { url = "https://files.pythonhosted.org/packages/9d/40/acfcdb3b5f9d68ef499e39e04d25e141fe90661f9d54114556cf83be8353/yarl-1.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4966242ec68afc74c122f8459abd597afd7d8a60dc93d695c1334c5fd25f762f", size = 105565, upload-time = "2026-03-01T22:06:00.286Z" }, + { url = "https://files.pythonhosted.org/packages/5e/c6/31e28f3a6ba2869c43d124f37ea5260cac9c9281df803c354b31f4dd1f3c/yarl-1.23.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e0fd068364a6759bc794459f0a735ab151d11304346332489c7972bacbe9e72b", size = 99813, upload-time = "2026-03-01T22:06:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/08/1f/6f65f59e72d54aa467119b63fc0b0b1762eff0232db1f4720cd89e2f4a17/yarl-1.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:39004f0ad156da43e86aa71f44e033de68a44e5a31fc53507b36dd253970054a", size = 105632, upload-time = "2026-03-01T22:06:03.188Z" }, + { url = "https://files.pythonhosted.org/packages/a3/c4/18b178a69935f9e7a338127d5b77d868fdc0f0e49becd286d51b3a18c61d/yarl-1.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e5723c01a56c5028c807c701aa66722916d2747ad737a046853f6c46f4875543", size = 101895, upload-time = "2026-03-01T22:06:04.651Z" }, + { url = "https://files.pythonhosted.org/packages/8f/54/f5b870b5505663911dba950a8e4776a0dbd51c9c54c0ae88e823e4b874a0/yarl-1.23.0-cp313-cp313-win32.whl", hash = "sha256:1b6b572edd95b4fa8df75de10b04bc81acc87c1c7d16bcdd2035b09d30acc957", size = 82356, upload-time = "2026-03-01T22:06:06.04Z" }, + { url = "https://files.pythonhosted.org/packages/7a/84/266e8da36879c6edcd37b02b547e2d9ecdfea776be49598e75696e3316e1/yarl-1.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:baaf55442359053c7d62f6f8413a62adba3205119bcb6f49594894d8be47e5e3", size = 87515, upload-time = "2026-03-01T22:06:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/00/fd/7e1c66efad35e1649114fa13f17485f62881ad58edeeb7f49f8c5e748bf9/yarl-1.23.0-cp313-cp313-win_arm64.whl", hash = "sha256:fb4948814a2a98e3912505f09c9e7493b1506226afb1f881825368d6fb776ee3", size = 81785, upload-time = "2026-03-01T22:06:10.181Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fc/119dd07004f17ea43bb91e3ece6587759edd7519d6b086d16bfbd3319982/yarl-1.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:aecfed0b41aa72b7881712c65cf764e39ce2ec352324f5e0837c7048d9e6daaa", size = 130719, upload-time = "2026-03-01T22:06:11.708Z" }, + { url = "https://files.pythonhosted.org/packages/e6/0d/9f2348502fbb3af409e8f47730282cd6bc80dec6630c1e06374d882d6eb2/yarl-1.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a41bcf68efd19073376eb8cf948b8d9be0af26256403e512bb18f3966f1f9120", size = 89690, upload-time = "2026-03-01T22:06:13.429Z" }, + { url = "https://files.pythonhosted.org/packages/50/93/e88f3c80971b42cfc83f50a51b9d165a1dbf154b97005f2994a79f212a07/yarl-1.23.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cde9a2ecd91668bcb7f077c4966d8ceddb60af01b52e6e3e2680e4cf00ad1a59", size = 89851, upload-time = "2026-03-01T22:06:15.53Z" }, + { url = "https://files.pythonhosted.org/packages/1c/07/61c9dd8ba8f86473263b4036f70fb594c09e99c0d9737a799dfd8bc85651/yarl-1.23.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5023346c4ee7992febc0068e7593de5fa2bf611848c08404b35ebbb76b1b0512", size = 95874, upload-time = "2026-03-01T22:06:17.553Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e9/f9ff8ceefba599eac6abddcfb0b3bee9b9e636e96dbf54342a8577252379/yarl-1.23.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1009abedb49ae95b136a8904a3f71b342f849ffeced2d3747bf29caeda218c4", size = 88710, upload-time = "2026-03-01T22:06:19.004Z" }, + { url = "https://files.pythonhosted.org/packages/eb/78/0231bfcc5d4c8eec220bc2f9ef82cb4566192ea867a7c5b4148f44f6cbcd/yarl-1.23.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a8d00f29b42f534cc8aa3931cfe773b13b23e561e10d2b26f27a8d309b0e82a1", size = 101033, upload-time = "2026-03-01T22:06:21.203Z" }, + { url = "https://files.pythonhosted.org/packages/cd/9b/30ea5239a61786f18fd25797151a17fbb3be176977187a48d541b5447dd4/yarl-1.23.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:95451e6ce06c3e104556d73b559f5da6c34a069b6b62946d3ad66afcd51642ea", size = 100817, upload-time = "2026-03-01T22:06:22.738Z" }, + { url = "https://files.pythonhosted.org/packages/62/e2/a4980481071791bc83bce2b7a1a1f7adcabfa366007518b4b845e92eeee3/yarl-1.23.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:531ef597132086b6cf96faa7c6c1dcd0361dd5f1694e5cc30375907b9b7d3ea9", size = 97482, upload-time = "2026-03-01T22:06:24.21Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1e/304a00cf5f6100414c4b5a01fc7ff9ee724b62158a08df2f8170dfc72a2d/yarl-1.23.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:88f9fb0116fbfcefcab70f85cf4b74a2b6ce5d199c41345296f49d974ddb4123", size = 95949, upload-time = "2026-03-01T22:06:25.697Z" }, + { url = "https://files.pythonhosted.org/packages/68/03/093f4055ed4cae649ac53bca3d180bd37102e9e11d048588e9ab0c0108d0/yarl-1.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e7b0460976dc75cb87ad9cc1f9899a4b97751e7d4e77ab840fc9b6d377b8fd24", size = 95839, upload-time = "2026-03-01T22:06:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/b9/28/4c75ebb108f322aa8f917ae10a8ffa4f07cae10a8a627b64e578617df6a0/yarl-1.23.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:115136c4a426f9da976187d238e84139ff6b51a20839aa6e3720cd1026d768de", size = 90696, upload-time = "2026-03-01T22:06:29.048Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/42c2e2dd91c1a570402f51bdf066bfdb1241c2240ba001967bad778e77b7/yarl-1.23.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ead11956716a940c1abc816b7df3fa2b84d06eaed8832ca32f5c5e058c65506b", size = 100865, upload-time = "2026-03-01T22:06:30.525Z" }, + { url = "https://files.pythonhosted.org/packages/74/05/1bcd60a8a0a914d462c305137246b6f9d167628d73568505fce3f1cb2e65/yarl-1.23.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:fe8f8f5e70e6dbdfca9882cd9deaac058729bcf323cf7a58660901e55c9c94f6", size = 96234, upload-time = "2026-03-01T22:06:32.692Z" }, + { url = "https://files.pythonhosted.org/packages/90/b2/f52381aac396d6778ce516b7bc149c79e65bfc068b5de2857ab69eeea3b7/yarl-1.23.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:a0e317df055958a0c1e79e5d2aa5a5eaa4a6d05a20d4b0c9c3f48918139c9fc6", size = 100295, upload-time = "2026-03-01T22:06:34.268Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/638bae5bbf1113a659b2435d8895474598afe38b4a837103764f603aba56/yarl-1.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f0fd84de0c957b2d280143522c4f91a73aada1923caee763e24a2b3fda9f8a5", size = 97784, upload-time = "2026-03-01T22:06:35.864Z" }, + { url = "https://files.pythonhosted.org/packages/80/25/a3892b46182c586c202629fc2159aa13975d3741d52ebd7347fd501d48d5/yarl-1.23.0-cp313-cp313t-win32.whl", hash = "sha256:93a784271881035ab4406a172edb0faecb6e7d00f4b53dc2f55919d6c9688595", size = 88313, upload-time = "2026-03-01T22:06:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/43/68/8c5b36aa5178900b37387937bc2c2fe0e9505537f713495472dcf6f6fccc/yarl-1.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:dd00607bffbf30250fe108065f07453ec124dbf223420f57f5e749b04295e090", size = 94932, upload-time = "2026-03-01T22:06:39.579Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cc/d79ba8292f51f81f4dc533a8ccfb9fc6992cabf0998ed3245de7589dc07c/yarl-1.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ac09d42f48f80c9ee1635b2fcaa819496a44502737660d3c0f2ade7526d29144", size = 84786, upload-time = "2026-03-01T22:06:41.988Z" }, + { url = "https://files.pythonhosted.org/packages/90/98/b85a038d65d1b92c3903ab89444f48d3cee490a883477b716d7a24b1a78c/yarl-1.23.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:21d1b7305a71a15b4794b5ff22e8eef96ff4a6d7f9657155e5aa419444b28912", size = 124455, upload-time = "2026-03-01T22:06:43.615Z" }, + { url = "https://files.pythonhosted.org/packages/39/54/bc2b45559f86543d163b6e294417a107bb87557609007c007ad889afec18/yarl-1.23.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:85610b4f27f69984932a7abbe52703688de3724d9f72bceb1cca667deff27474", size = 86752, upload-time = "2026-03-01T22:06:45.425Z" }, + { url = "https://files.pythonhosted.org/packages/24/f9/e8242b68362bffe6fb536c8db5076861466fc780f0f1b479fc4ffbebb128/yarl-1.23.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23f371bd662cf44a7630d4d113101eafc0cfa7518a2760d20760b26021454719", size = 86291, upload-time = "2026-03-01T22:06:46.974Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d8/d1cb2378c81dd729e98c716582b1ccb08357e8488e4c24714658cc6630e8/yarl-1.23.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a80f77dc1acaaa61f0934176fccca7096d9b1ff08c8ba9cddf5ae034a24319", size = 99026, upload-time = "2026-03-01T22:06:48.459Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ff/7196790538f31debe3341283b5b0707e7feb947620fc5e8236ef28d44f72/yarl-1.23.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:bd654fad46d8d9e823afbb4f87c79160b5a374ed1ff5bde24e542e6ba8f41434", size = 92355, upload-time = "2026-03-01T22:06:50.306Z" }, + { url = "https://files.pythonhosted.org/packages/c1/56/25d58c3eddde825890a5fe6aa1866228377354a3c39262235234ab5f616b/yarl-1.23.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:682bae25f0a0dd23a056739f23a134db9f52a63e2afd6bfb37ddc76292bbd723", size = 106417, upload-time = "2026-03-01T22:06:52.1Z" }, + { url = "https://files.pythonhosted.org/packages/51/8a/882c0e7bc8277eb895b31bce0138f51a1ba551fc2e1ec6753ffc1e7c1377/yarl-1.23.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a82836cab5f197a0514235aaf7ffccdc886ccdaa2324bc0aafdd4ae898103039", size = 106422, upload-time = "2026-03-01T22:06:54.424Z" }, + { url = "https://files.pythonhosted.org/packages/42/2b/fef67d616931055bf3d6764885990a3ac647d68734a2d6a9e1d13de437a2/yarl-1.23.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c57676bdedc94cd3bc37724cf6f8cd2779f02f6aba48de45feca073e714fe52", size = 101915, upload-time = "2026-03-01T22:06:55.895Z" }, + { url = "https://files.pythonhosted.org/packages/18/6a/530e16aebce27c5937920f3431c628a29a4b6b430fab3fd1c117b26ff3f6/yarl-1.23.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c7f8dc16c498ff06497c015642333219871effba93e4a2e8604a06264aca5c5c", size = 100690, upload-time = "2026-03-01T22:06:58.21Z" }, + { url = "https://files.pythonhosted.org/packages/88/08/93749219179a45e27b036e03260fda05190b911de8e18225c294ac95bbc9/yarl-1.23.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5ee586fb17ff8f90c91cf73c6108a434b02d69925f44f5f8e0d7f2f260607eae", size = 98750, upload-time = "2026-03-01T22:06:59.794Z" }, + { url = "https://files.pythonhosted.org/packages/d9/cf/ea424a004969f5d81a362110a6ac1496d79efdc6d50c2c4b2e3ea0fc2519/yarl-1.23.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:17235362f580149742739cc3828b80e24029d08cbb9c4bda0242c7b5bc610a8e", size = 94685, upload-time = "2026-03-01T22:07:01.375Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b7/14341481fe568e2b0408bcf1484c652accafe06a0ade9387b5d3fd9df446/yarl-1.23.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:0793e2bd0cf14234983bbb371591e6bea9e876ddf6896cdcc93450996b0b5c85", size = 106009, upload-time = "2026-03-01T22:07:03.151Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e6/5c744a9b54f4e8007ad35bce96fbc9218338e84812d36f3390cea616881a/yarl-1.23.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3650dc2480f94f7116c364096bc84b1d602f44224ef7d5c7208425915c0475dd", size = 100033, upload-time = "2026-03-01T22:07:04.701Z" }, + { url = "https://files.pythonhosted.org/packages/0c/23/e3bfc188d0b400f025bc49d99793d02c9abe15752138dcc27e4eaf0c4a9e/yarl-1.23.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f40e782d49630ad384db66d4d8b73ff4f1b8955dc12e26b09a3e3af064b3b9d6", size = 106483, upload-time = "2026-03-01T22:07:06.231Z" }, + { url = "https://files.pythonhosted.org/packages/72/42/f0505f949a90b3f8b7a363d6cbdf398f6e6c58946d85c6d3a3bc70595b26/yarl-1.23.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94f8575fbdf81749008d980c17796097e645574a3b8c28ee313931068dad14fe", size = 102175, upload-time = "2026-03-01T22:07:08.4Z" }, + { url = "https://files.pythonhosted.org/packages/aa/65/b39290f1d892a9dd671d1c722014ca062a9c35d60885d57e5375db0404b5/yarl-1.23.0-cp314-cp314-win32.whl", hash = "sha256:c8aa34a5c864db1087d911a0b902d60d203ea3607d91f615acd3f3108ac32169", size = 83871, upload-time = "2026-03-01T22:07:09.968Z" }, + { url = "https://files.pythonhosted.org/packages/a9/5b/9b92f54c784c26e2a422e55a8d2607ab15b7ea3349e28359282f84f01d43/yarl-1.23.0-cp314-cp314-win_amd64.whl", hash = "sha256:63e92247f383c85ab00dd0091e8c3fa331a96e865459f5ee80353c70a4a42d70", size = 89093, upload-time = "2026-03-01T22:07:11.501Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7d/8a84dc9381fd4412d5e7ff04926f9865f6372b4c2fd91e10092e65d29eb8/yarl-1.23.0-cp314-cp314-win_arm64.whl", hash = "sha256:70efd20be968c76ece7baa8dafe04c5be06abc57f754d6f36f3741f7aa7a208e", size = 83384, upload-time = "2026-03-01T22:07:13.069Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8d/d2fad34b1c08aa161b74394183daa7d800141aaaee207317e82c790b418d/yarl-1.23.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9a18d6f9359e45722c064c97464ec883eb0e0366d33eda61cb19a244bf222679", size = 131019, upload-time = "2026-03-01T22:07:14.903Z" }, + { url = "https://files.pythonhosted.org/packages/19/ff/33009a39d3ccf4b94d7d7880dfe17fb5816c5a4fe0096d9b56abceea9ac7/yarl-1.23.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2803ed8b21ca47a43da80a6fd1ed3019d30061f7061daa35ac54f63933409412", size = 89894, upload-time = "2026-03-01T22:07:17.372Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f1/dab7ac5e7306fb79c0190766a3c00b4cb8d09a1f390ded68c85a5934faf5/yarl-1.23.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:394906945aa8b19fc14a61cf69743a868bb8c465efe85eee687109cc540b98f4", size = 89979, upload-time = "2026-03-01T22:07:19.361Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b1/08e95f3caee1fad6e65017b9f26c1d79877b502622d60e517de01e72f95d/yarl-1.23.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:71d006bee8397a4a89f469b8deb22469fe7508132d3c17fa6ed871e79832691c", size = 95943, upload-time = "2026-03-01T22:07:21.266Z" }, + { url = "https://files.pythonhosted.org/packages/c0/cc/6409f9018864a6aa186c61175b977131f373f1988e198e031236916e87e4/yarl-1.23.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:62694e275c93d54f7ccedcfef57d42761b2aad5234b6be1f3e3026cae4001cd4", size = 88786, upload-time = "2026-03-01T22:07:23.129Z" }, + { url = "https://files.pythonhosted.org/packages/76/40/cc22d1d7714b717fde2006fad2ced5efe5580606cb059ae42117542122f3/yarl-1.23.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31de1613658308efdb21ada98cbc86a97c181aa050ba22a808120bb5be3ab94", size = 101307, upload-time = "2026-03-01T22:07:24.689Z" }, + { url = "https://files.pythonhosted.org/packages/8f/0d/476c38e85ddb4c6ec6b20b815bdd779aa386a013f3d8b85516feee55c8dc/yarl-1.23.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb1e8b8d66c278b21d13b0a7ca22c41dd757a7c209c6b12c313e445c31dd3b28", size = 100904, upload-time = "2026-03-01T22:07:26.287Z" }, + { url = "https://files.pythonhosted.org/packages/72/32/0abe4a76d59adf2081dcb0397168553ece4616ada1c54d1c49d8936c74f8/yarl-1.23.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50f9d8d531dfb767c565f348f33dd5139a6c43f5cbdf3f67da40d54241df93f6", size = 97728, upload-time = "2026-03-01T22:07:27.906Z" }, + { url = "https://files.pythonhosted.org/packages/b7/35/7b30f4810fba112f60f5a43237545867504e15b1c7647a785fbaf588fac2/yarl-1.23.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:575aa4405a656e61a540f4a80eaa5260f2a38fff7bfdc4b5f611840d76e9e277", size = 95964, upload-time = "2026-03-01T22:07:30.198Z" }, + { url = "https://files.pythonhosted.org/packages/2d/86/ed7a73ab85ef00e8bb70b0cb5421d8a2a625b81a333941a469a6f4022828/yarl-1.23.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:041b1a4cefacf65840b4e295c6985f334ba83c30607441ae3cf206a0eed1a2e4", size = 95882, upload-time = "2026-03-01T22:07:32.132Z" }, + { url = "https://files.pythonhosted.org/packages/19/90/d56967f61a29d8498efb7afb651e0b2b422a1e9b47b0ab5f4e40a19b699b/yarl-1.23.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:d38c1e8231722c4ce40d7593f28d92b5fc72f3e9774fe73d7e800ec32299f63a", size = 90797, upload-time = "2026-03-01T22:07:34.404Z" }, + { url = "https://files.pythonhosted.org/packages/72/00/8b8f76909259f56647adb1011d7ed8b321bcf97e464515c65016a47ecdf0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:d53834e23c015ee83a99377db6e5e37d8484f333edb03bd15b4bc312cc7254fb", size = 101023, upload-time = "2026-03-01T22:07:35.953Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e2/cab11b126fb7d440281b7df8e9ddbe4851e70a4dde47a202b6642586b8d9/yarl-1.23.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2e27c8841126e017dd2a054a95771569e6070b9ee1b133366d8b31beb5018a41", size = 96227, upload-time = "2026-03-01T22:07:37.594Z" }, + { url = "https://files.pythonhosted.org/packages/c2/9b/2c893e16bfc50e6b2edf76c1a9eb6cb0c744346197e74c65e99ad8d634d0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:76855800ac56f878847a09ce6dba727c93ca2d89c9e9d63002d26b916810b0a2", size = 100302, upload-time = "2026-03-01T22:07:39.334Z" }, + { url = "https://files.pythonhosted.org/packages/28/ec/5498c4e3a6d5f1003beb23405671c2eb9cdbf3067d1c80f15eeafe301010/yarl-1.23.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e09fd068c2e169a7070d83d3bde728a4d48de0549f975290be3c108c02e499b4", size = 98202, upload-time = "2026-03-01T22:07:41.717Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c3/cd737e2d45e70717907f83e146f6949f20cc23cd4bf7b2688727763aa458/yarl-1.23.0-cp314-cp314t-win32.whl", hash = "sha256:73309162a6a571d4cbd3b6a1dcc703c7311843ae0d1578df6f09be4e98df38d4", size = 90558, upload-time = "2026-03-01T22:07:43.433Z" }, + { url = "https://files.pythonhosted.org/packages/e1/19/3774d162f6732d1cfb0b47b4140a942a35ca82bb19b6db1f80e9e7bdc8f8/yarl-1.23.0-cp314-cp314t-win_amd64.whl", hash = "sha256:4503053d296bc6e4cbd1fad61cf3b6e33b939886c4f249ba7c78b602214fabe2", size = 97610, upload-time = "2026-03-01T22:07:45.773Z" }, + { url = "https://files.pythonhosted.org/packages/51/47/3fa2286c3cb162c71cdb34c4224d5745a1ceceb391b2bd9b19b668a8d724/yarl-1.23.0-cp314-cp314t-win_arm64.whl", hash = "sha256:44bb7bef4ea409384e3f8bc36c063d77ea1b8d4a5b2706956c0d6695f07dcc25", size = 86041, upload-time = "2026-03-01T22:07:49.026Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/c8739671f5699c7dc470580a4f821ef37c32c4cb0b047ce223a7f115757f/yarl-1.23.0-py3-none-any.whl", hash = "sha256:a2df6afe50dea8ae15fa34c9f824a3ee958d785fd5d089063d960bae1daa0a3f", size = 48288, upload-time = "2026-03-01T22:07:51.388Z" }, ] From 2ceca481f0b9baaaa402bf8b7c5109eed19d8172 Mon Sep 17 00:00:00 2001 From: Tang Piseth Date: Mon, 12 Oct 2026 16:53:38 +1030 Subject: [PATCH 2/2] Improve backtest page navigation and document results in README - Live/Backtest tab switch on both pages; capture-rate chart moved to top so it no longer jumps off-screen - Prev/next day buttons, icon jump buttons, zoom toggle button, red losses, #/backtest/ deep links - README: backtest results table and worst-day (2026-05-18) walkthrough with screenshot --- README.md | 36 ++++++-- demo_script.txt | 149 +++++++++++++++++++++++++++++++ frontend/src/App.tsx | 5 +- frontend/src/Backtest.tsx | 159 ++++++++++++++++++++++------------ frontend/src/NavTabs.tsx | 27 ++++++ images/backtest_worst_day.png | Bin 0 -> 168892 bytes 6 files changed, 313 insertions(+), 63 deletions(-) create mode 100644 demo_script.txt create mode 100644 frontend/src/NavTabs.tsx create mode 100644 images/backtest_worst_day.png diff --git a/README.md b/README.md index bf5e36d..ce87291 100644 --- a/README.md +++ b/README.md @@ -127,11 +127,37 @@ The live optimizer schedules against prices that have already happened (perfect - **Models:** a naive baseline (same half-hour yesterday), LightGBM (lagged prices and calendar features) and a PyTorch LSTM (the past 7 days of prices plus calendar features). Each model forecasts all 48 prices of day D using only data up to the end of D-1. A pytest test checks for leakage. - **Evaluation:** walk-forward. Hyperparameters are chosen on a 3-month validation window. The final 12 months are the test period, with models retrained every 30 days. Each day, the unchanged LP is run on the forecast, and the resulting schedule is scored at actual prices. -| Model | Share of perfect-foresight revenue (365 test days) | -|---|---:| -| Naive (yesterday) | 27% | -| LightGBM | 49% | -| LSTM | 62% | +### Results + +The test period ran from 12 Oct 2025 to 11 Oct 2026 (365 days). The battery was 5 MWh / 2.5 MW / 90% efficiency. With perfect foresight it would have earned **$560,314**. + +| Model | Capture rate | Realised revenue (AUD) | MAE (AUD/MWh) | RMSE (AUD/MWh) | Days with a loss | +|---|---:|---:|---:|---:|---:| +| Naive (yesterday) | 27.2% | 152,353 | 80.0 | 584.1 | 85 | +| LightGBM | 49.5% | 277,312 | 57.8 | 417.2 | 32 | +| **LSTM** | **61.8%** | **346,394** | **51.2** | **413.9** | **28** | + +*Capture rate = total realised revenue ÷ total perfect-foresight revenue over all test days.* + +- **The LSTM won.** It captured 62% of perfect-foresight revenue, against 49% for LightGBM and 27% for the naive baseline. It also had the lowest forecast error. It won every full quarter of the test year (49–68%) and only tied LightGBM in the 11-day partial quarter at the end. +- **Both ML models more than doubled the naive baseline's revenue** and had about a third as many losing days (28–32 vs 85). +- **Revenue depends on timing, not average accuracy.** South Australian revenue is dominated by a few extreme price spikes, so capture rates vary a lot from quarter to quarter. Getting the evening peak right matters far more than being accurate overnight. + +### When forecasts go wrong + +![Backtest page on the worst test day](images/backtest_worst_day.png) + +The Backtest page on the **worst test day, 18 May 2026**: + +- **What happened:** prices were unusually high from morning to early afternoon (averaging $214/MWh from 06:00 to 14:00), then fell to about $105/MWh over the evening. +- **What the models expected:** all three forecasts assumed a normal day, with a cheaper middle of the day and the usual 17:30 evening peak. +- **Result:** every model charged during the expensive daytime and discharged into the cheap evening. + +| | Perfect foresight | Naive | LightGBM | LSTM | +|---|---:|---:|---:|---:| +| Profit on 18 May 2026 | +$391 | −$649 | −$490 | −$360 | + +The LSTM lost the least, but it still lost money. A schedule fixed at the end of the previous day can't react when the day's pattern flips. The fix would be intraday re-optimisation using AEMO pre-dispatch forecasts (see [results/REPORT.md](results/REPORT.md) for the full limitations). To reproduce (results go to `results/`, see [results/REPORT.md](results/REPORT.md)): diff --git a/demo_script.txt b/demo_script.txt new file mode 100644 index 0000000..ae4e920 --- /dev/null +++ b/demo_script.txt @@ -0,0 +1,149 @@ +OptiGrid Demo Script +==================== + +Before you start +---------------- +- Open optigrid.seth-tang.me in a clean browser tab. +- Make sure you are on the live site, not a local screenshot. +- Be ready for the backend to take 5-10 seconds on the first run because the Render service has to wake up. + + +1. Opening pitch (30 seconds) +----------------------------- +Say: +"This is OptiGrid, a battery dispatch optimizer. It takes live wholesale electricity prices from AEMO -- the Australian Energy Market Operator -- and figures out the best times for a battery to charge and discharge to make the most money." + +Say: +"It is a classic energy arbitrage problem: buy electricity when it is cheap, store it, and sell it back when it is expensive." + + +2. Walk through the UI (1 minute) +--------------------------------- +Point to the left sidebar. + +Say: +"On the left we configure the battery. Right now it is set to 5 MWh of capacity and 2.5 MW max power output." + +Explain the two sliders: + +- Battery Capacity (5 MWh): the size of the energy tank. Maximum amount of electricity it can hold. +- Max Power Output (2.5 MW): the size of the pipe. Fastest rate it can charge or discharge. + +Say: +"Think of it like a water tank. Capacity is how big the tank is. Max power is how fast the tap can fill or empty it." + +Then point to the three cards on the right. + +Say: +"These three cards will show us the solver status, projected profit, and how much energy we moved through the battery." + + +3. Run the optimization (1 minute) +---------------------------------- +Click Run Optimization. + +Say: +"When I click this, the frontend sends the battery specs to a FastAPI backend. The backend fetches live AEMO spot prices from the Open Electricity API, resamples them to 30-minute intervals, and runs a linear programming solver to find the optimal schedule." + +Wait for the loading screen to finish. + +Say: +"This takes a few seconds because the backend service is waking up and fetching fresh market data." + +Once it finishes, the cards update: + +- Status: Optimal +- Projected Profit: e.g. $946.75 +- Energy Cycled: e.g. 23.2 MWh + +Say: +"Status Optimal means the solver found a feasible schedule. Projected profit is the total arbitrage profit over the next 24 hours. Energy cycled tells us how much energy we pulled from the grid into the battery." + + +4. Read the chart (2 minutes) +----------------------------- +Point to the chart. + +Say: +"The green line is the spot price in Australian dollars per megawatt-hour. The blue bars are the battery's State of Charge -- how full the battery is at each 30-minute interval." + +Then explain the pattern. + +Say: +"The basic strategy is simple: charge when prices are low or negative, discharge when prices are high." + +Use the 02:00 example. + +Say: +"At 02:00 the price is negative -- about minus fifteen dollars per MWh. That means the market is paying us to take electricity. So the solver charges the battery as fast as it can. That is why the blue bar jumps up." + +Say: +"At 01:30 the price is over a hundred dollars per MWh, so the battery is empty -- it sold everything it had." + +If the employer asks why the chart starts at 02:00: + +Say: +"The chart starts at 02:00 AEST because the Open Electricity API returns a fixed 24-hour window of AEMO data starting at that time. It is not aligned to when I clicked the button. In production I would make the datetime timezone-aware so the window matches the current time." + + +5. Explain the math briefly (1 minute) +-------------------------------------- +If they want to know how it works under the hood. + +Say: +"The optimizer is a linear program built with PuLP. The decision variables are charge, discharge, and state of charge for each 30-minute interval." + +Say: +"The objective is to maximize profit: sum of (discharge minus charge) times price times half an hour." + +Say: +"The constraints are physical: you cannot charge faster than 2.5 MW, you cannot store more than 5 MWh, and the state of charge has to balance from one interval to the next." + + +6. Mention the architecture (1 minute) +-------------------------------------- +Say: +"The stack is React with Tailwind on the frontend, FastAPI on the backend, and PuLP for the optimization. The backend pulls live prices from AEMO via the Open Electricity API. Everything is containerized and deployed through GitHub Actions to Render for the backend and S3 plus CloudFront for the frontend." + + +7. Be honest about limitations (1 minute) +----------------------------------------- +Say: +"A few things to keep in mind. This version assumes perfect foresight of prices, which is fine for a demo but not realistic. In production you would use price forecasts and Model Predictive Control." + +Say: +"It also only optimizes one region, SA1, and ignores things like battery degradation, transmission losses, and FCAS revenue. Those would be the next features to add." + + +8. Clarify what this dashboard is +--------------------------------- +If they ask whether this controls a real battery. + +Say: +"This is a planning and visualization dashboard. The solver produces a recommended dispatch schedule. In a real deployment that schedule would be sent as setpoints to the battery's control system or SCADA. The battery itself, through its inverter and battery management system, would actually execute it." + + +9. Closing line +--------------- +Say: +"So in short: this tool reads live market prices, runs an optimizer, and shows you when to charge and discharge a battery to maximize arbitrage profit." + + +Quick demo checklist +-------------------- +1. Open optigrid.seth-tang.me +2. Introduce the project +3. Explain capacity vs max power +4. Click Run Optimization +5. Explain Status, Profit, Energy Cycled +6. Walk through the chart +7. Mention the stack +8. Mention limitations +9. Clarify dashboard vs real BESS control + + +If something goes wrong +----------------------- +- Chart stays empty: wait a bit, then click Run Optimization again. The backend may still be cold-starting. +- Profit looks weird: prices change every day, so the number will be different each time you run it. +- Chart starts at 02:00: that is expected because of the API timezone handling. Use it as a chance to talk about production improvements. diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index ad6f5fc..5e7d700 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -10,6 +10,7 @@ import { Tooltip, XAxis, YAxis } from 'recharts'; +import NavTabs from './NavTabs'; import type { ScheduleAction } from './types'; // Loading Overlay Component - Similar to Render's cold start page @@ -86,12 +87,14 @@ export default function App() { {/* LEFT SIDEBAR */}
    +
    + +

    Battery Dispatch

    SA1 Region Optimization

    - Forecast backtest →
    diff --git a/frontend/src/Backtest.tsx b/frontend/src/Backtest.tsx index 6f4dfed..0656077 100644 --- a/frontend/src/Backtest.tsx +++ b/frontend/src/Backtest.tsx @@ -1,4 +1,4 @@ -import { Loader2 } from 'lucide-react'; +import { ChevronLeft, ChevronRight, Loader2, TriangleAlert, Trophy, Zap, ZoomIn } from 'lucide-react'; import { useEffect, useMemo, useState } from 'react'; import { Bar, @@ -14,6 +14,7 @@ import { XAxis, YAxis } from 'recharts'; +import NavTabs from './NavTabs'; import type { BacktestDay, BacktestIndex, BacktestMethod, ForecastMethod } from './types'; const BASE_URL = import.meta.env.VITE_API_BASE_URL || "http://127.0.0.1:8000/api/v1"; @@ -106,7 +107,9 @@ export default function Backtest() { .then((r) => (r.ok ? r.json() : Promise.reject(new Error(`HTTP ${r.status}`)))) .then((idx: BacktestIndex) => { setIndex(idx); - setSelected(idx.best_day); + // #/backtest/YYYY-MM-DD opens that day; otherwise start on the best day + const fromUrl = window.location.hash.split("/")[2]; + setSelected(idx.days.some((d) => d.date === fromUrl) ? fromUrl : idx.best_day); }) .catch((e) => setError(`Could not load backtest results (${e.message}).`)); }, []); @@ -159,16 +162,25 @@ export default function Backtest() { if (dates.includes(value)) { setError(""); setSelected(value); + window.history.replaceState(null, "", `#/backtest/${value}`); } }; + const pos = dates.indexOf(selected); + const JUMPS = [ + { key: "best_day", label: "Best day", icon: Trophy, colour: "text-emerald-400", hint: `highest ${LABEL[index?.best_model ?? "lstm"]} capture` }, + { key: "worst_day", label: "Worst day", icon: TriangleAlert, colour: "text-red-400", hint: `lowest ${LABEL[index?.best_model ?? "lstm"]} capture` }, + { key: "biggest_spike_day", label: "Biggest spike", icon: Zap, colour: "text-amber-400", hint: "highest actual price" }, + ] as const; + const navButton = "p-2 rounded-lg border border-zinc-800 text-zinc-300 hover:bg-zinc-800 hover:text-white disabled:opacity-30 disabled:hover:bg-transparent cursor-pointer disabled:cursor-default transition-colors"; + return (
    {/* LEFT SIDEBAR */}
    +
    - ← Live simulation -

    Forecast Backtest

    +

    Forecast Backtest

    SA1 day-ahead forecasts scheduled by the same LP, scored on actual prices

    @@ -182,35 +194,49 @@ export default function Backtest() {

    Battery: {index.summary.battery.capacity_mwh} MWh / {index.summary.battery.max_mw} MW / {index.summary.battery.efficiency * 100}%

    -
    - - pickDate(e.target.value)} - className="w-full bg-zinc-900 border border-zinc-800 rounded-lg px-3 py-2 text-sm text-zinc-100 [color-scheme:dark]" - /> -
    - {([ - ["best_day", "Best day"], - ["worst_day", "Worst day"], - ["biggest_spike_day", "Biggest spike day"], - ] as const).map(([key, label]) => ( +
    + +
    + + pickDate(e.target.value)} + className="flex-1 min-w-0 bg-zinc-900 border border-zinc-700 hover:border-zinc-500 rounded-lg px-3 py-2 text-sm text-zinc-100 cursor-pointer [color-scheme:dark]" + /> + +
    +
    + +
    +

    Jump to

    + {JUMPS.map(({ key, label, icon: Icon, colour, hint }) => { + const active = selected === index[key]; + return ( - ))} -
    + ); + })}
    )} @@ -225,8 +251,45 @@ export default function Backtest() {
    )} + {/* whole-test-period summary first: it is the headline and does not move when a day loads */} + {index && ( +
    +
    +

    Capture rate across all {index.summary.Z_test_days} test days

    +

    + Realised revenue ÷ perfect-foresight revenue ({aud(index.summary.perfect_foresight_aud)}). Dashed line = 100%. +

    +
    + + + + Math.min(0, Math.floor(dataMin)), 100]} stroke="#52525b" fontSize={11} tickFormatter={(v) => `${v}%`} /> + + + + {captureBars.map((b) => )} + `${v}%`} /> + + + +
    + )} + + {index && !day && !error && ( +
    + Loading {selected}... +
    + )} + {day && ( <> +
    +

    + {day.date} · AEST, 30-minute intervals +

    + +
    + {/* per-day KPI cards */}
    {METHODS.map((m) => { @@ -235,7 +298,7 @@ export default function Backtest() { return (

    {LABEL[m]}

    -

    {aud(profit)}

    +

    {aud(profit)}

    {m === "perfect_foresight" ? "upper bound for this day" : pf > 0 ? `${Math.round((100 * profit) / pf)}% of perfect foresight` : "—"}

    @@ -245,41 +308,23 @@ export default function Backtest() {
    -
    -

    {day.date} (AEST, 30-minute intervals)

    - +
    +
    - - `${v}`} height={170} showXAxis={false} domain={index ? [0, index.summary.battery.capacity_mwh] : undefined} /> + `${v}`} height={170} showXAxis={false} domain={[0, index ? index.summary.battery.capacity_mwh : 5]} />
    )} - - {index && ( -
    -

    Capture rate across all {index.summary.Z_test_days} test days

    -

    - Sum of realised revenue ÷ sum of perfect-foresight revenue ({aud(index.summary.perfect_foresight_aud)}). Dashed line = perfect foresight (100%). -

    - - - - Math.min(0, Math.floor(dataMin)), 100]} stroke="#52525b" fontSize={11} tickFormatter={(v) => `${v}%`} /> - - - - {captureBars.map((b) => )} - `${v}%`} /> - - - -
    - )}
    ); diff --git a/frontend/src/NavTabs.tsx b/frontend/src/NavTabs.tsx new file mode 100644 index 0000000..5c78aa8 --- /dev/null +++ b/frontend/src/NavTabs.tsx @@ -0,0 +1,27 @@ +import { Activity, ChartLine } from 'lucide-react'; + +const TABS = [ + { href: '#/', label: 'Live', icon: Activity }, + { href: '#/backtest', label: 'Backtest', icon: ChartLine }, +] as const; + +// page switcher shown at the top of both sidebars +export default function NavTabs({ active }: { active: 'Live' | 'Backtest' }) { + return ( + + ); +} diff --git a/images/backtest_worst_day.png b/images/backtest_worst_day.png new file mode 100644 index 0000000000000000000000000000000000000000..aba8273048b128f26b12337c9c87ee77bc8d2a9b GIT binary patch literal 168892 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 TZqx+&4-38!eV+YP_5J?=;p(O# literal 0 HcmV?d00001
  • t&QUU3ed7ONZnpYb@4p`UR7 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˻rc*x8h8Ija*mX_9Wm377TgZQyohkH)a$l0zm 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 mf5v7M#_Vr#8{?kZ_ui1v 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