3 Commits

Author SHA1 Message Date
ae25ee6e88 Fix scenario comparator double-counting and explain it
The scenario comparator and payback donut subtracted full battery wear
(which amortizes to the entire purchase price over the rated life) in the
per-cycle margin, then compared that net figure against the purchase price
again for break-even — double-counting the cost and labelling profitable
cases "niet break-even".

Switch both to a gross cash-flow framing via a new grossPerCycle() helper
(spread x rendement x doorzet, no wear term). Cards now show gross yearly
revenue, payback time (price / gross yearly), net result over lifetime, and
break-even when the price is earned back within the battery's rated life.

Add an on-screen explanation of the comparator's purpose, the formula, and
the simplification (gross arbitrage margin before tax/BTW/feed-in), plus a
heading tooltip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 14:47:52 +02:00
99f08d3f2c Split calculator into tabs and use dynamic spread
Reorganize the single-scroll page into three purpose tabs (Rekenmodel,
Live dag-strategie, Historie) with the Parameters panel as a persistent
sidebar. Tab state is persisted in localStorage and charts are resized on
activation to avoid 0px canvases in hidden panels; print CSS keeps the full
report.

Also replace the legacy fixed EUR 0,15 spread in the scenario comparator and
payback chart with the dynamic market spread (peakPrice - refPrice), matching
the rest of the tool, and make the related labels reflect it live.

Add .claude/launch.json for local static-preview.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 14:19:15 +02:00
3f67c537a8 Initial commit: thuisbatterij arbitrage rekentool met README
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 11:43:59 +02:00