Honest battery payback

Backtest against real 2023-24 EPEX + load data, side-by-side with the cracked thuisbatterijgids.nl formula. Inputs left, results right.

Best honest payback

{% if initial.best %}

{{ initial.best.title }}

Annual savings (year-1)
€{{ '%.0f' % initial.best.lp_year1 }}/yr
Payback
{{ '%.1f' % initial.best.lp_payback }} years
Battery
{{ '%.2f' % initial.best.capacity_kwh }} kWh / {{ '%.1f' % initial.best.power_kw }} kW · €{{ '%.0f' % initial.best.price_eur }}
Store quote
€{{ '%.0f' % initial.best.store_year1 }}/yr ({{ '%.1f' % initial.best.store_payback }} yr) — overstates by {{ '%.2f' % initial.best.overstatement }}×
{% endif %}

Full leaderboard ({{ initial.batteries|length }} batteries · {{ initial.elapsed_seconds }}s · capturable surplus (= grid exports without a battery): {{ '%.0f' % initial.total_surplus_kwh }} kWh/yr)

{# rendered cells start below; legend follows the table. #} {% for r in initial.batteries %} {% endfor %}
# Battery kWh kW LP €/yr LP yr 10-yr net cycles kWh capt % capt % full % sat
{{ loop.index }} {{ r.title }} {{ '%.2f' % r.capacity_kwh }} {{ '%.1f' % r.power_kw }} €{{ '%.0f' % r.price_eur }} €{{ '%.0f' % r.lp_year1 }} {% if r.lp_payback %}{{ '%.1f' % r.lp_payback }}{% else %}—{% endif %} €{{ '%.0f' % r.ten_year_profit_eur }} {{ '%.0f' % r.cycles_per_year }} {{ '%.0f' % r.captured_kwh }} {{ '%.0f' % r.captured_pct }}% {{ '%.0f' % r.pct_hours_battery_full }}% {{ '%.0f' % r.pct_hours_charge_saturated }}%
LP €/yr
Honest year-1 savings from our linear-program oracle (perfect 24h foresight).
LP yr
Years until cumulative savings (with the chosen inflation rate) recoup the battery cost.
10-yr net
Total profit over 10 years: cumulative savings (compounded by inflation) minus the battery cost. Red = doesn't break even within 10 yr.
cycles
Total discharge throughput per year, divided by capacity. Includes both surplus capture and grid arbitrage (charging during cheap hours from the grid even when no surplus is exporting). Useful as a "how busy is the battery" metric.
kWh capt
kWh of capturable surplus (i.e. of grid exports that would happen without a battery) that this battery absorbs.
% capt
That, as a percentage of the scenario's capturable surplus shown in the heading. Note: the denominator is exports, not gross PV — solar that's directly self-consumed during sunny hours never crosses the meter and is invisible to a battery.
% full
Of all surplus hours, the % when the battery was already full and couldn't store more — capacity-bottlenecked.
% sat
Of all surplus hours, the % when charging was pegged at max kW and couldn't keep up — power-bottlenecked.