Skip to content

Enhanced Arbitrage Validation & Overnight Charging

Choose a tag to compare

@michaelkrasa michaelkrasa released this 14 Dec 04:10
· 11 commits to main since this release

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[v2.5.0] - 2025-12-13

Added

  • Discharge validation in arbitrage cycles: Ensures discharge windows are sufficient for charged energy, using SOC gains and average load calculations with 5% buffer.
  • Overnight charging extensions: Automatically extends short overnight valleys (up to 20% above average price) to meet full charging duration requirements.
  • calculate_full_discharge_slots() in BatteryManager: Estimates slots needed to discharge from 95% to 20% SOC, capacity-aware with fallback approximation and 20% buffer.
  • Period formatting helper in ESSClient for concise logging.

Changed

  • Logging in schedule setters: Consolidated to single-line summaries (e.g., "✓ Charging enabled: 00:00→03:00").
  • CLI: Made --dry-run explicit; --date now supports live runs on specific dates.
  • Config: price_multiplier adjusted from 1.2 to 1.18 for more aggressive low-price charging.

Files Changed

  • battery_manager.py: +11 lines (new discharge slots method).
  • config.yaml: price_multiplier 1.2 → 1.18.
  • ess_client.py: +15 lines (period formatting and log cleanup).
  • optimizer.py: +109 lines (validation, extension logic, CLI updates).

This release enhances arbitrage reliability, especially for overnight cycles, while maintaining compatibility.