Het rekenmodel
Wie getallen publiceert waarop mensen duizenden euro's baseren, hoort te laten zien hoe hij eraan komt. Hieronder staat het volledige model: de bron, de formules, de aannames, en expliciet wat er niet in zit.
1. De data
We gebruiken de kale marktprijs per uur voor de Nederlandse biedzone, opgehaald via de publieke EnergyZero-API. Peildatum van deze pagina: 25 augustus 2026. Momenteel bevat de dataset 31 volledige dagen (26 juli 2026 t/m 25 augustus 2026), samen 744 uurprijzen.
| Gemiddelde marktprijs | € 0,1251 /kWh |
|---|---|
| Laagste uurprijs | € -0,0101 /kWh |
| Hoogste uurprijs | € 0,3389 /kWh |
| Uren met negatieve prijs | 47 van 744 |
Twee keuzes die het resultaat merkbaar beïnvloeden, dus die noemen we expliciet. Eén: we halen de prijzen op zonder btw, omdat die variant van de API op vier decimalen levert; de variant mét btw rondt af op hele centen en toont negatieve prijzen als € 0,00. Over honderden uren loopt dat verschil op. Twee: we gebruiken alleen dagen met precies 24 uurprijzen. Een halve dag zou elk gemiddelde vertekenen.
2. Van marktprijs naar wat jij betaalt
De prijs die je met een dynamisch contract per kWh afrekent:
consumentenprijs = (marktprijs + opslag + energiebelasting) × (1 + btw) | Parameter | Standaard | Status |
|---|---|---|
| Opslag leverancier | € 0,020 /kWh | aanname verschilt per leverancier |
| Energiebelasting 2026 | € 0,09161 /kWh | gecontroleerd schijf 1 en 2 (tot 10.000 kWh) zijn in 2026 gelijk |
| Btw | 21 % | aanname algemeen tarief |
De opslag van de leverancier is de enige parameter hierboven die nog een aanname is: die verschilt per contract en is niet centraal vastgelegd. Daarom staan alle tarieven op de voorpagina als invulveld — vul je eigen contract in en de uitkomst klopt voor jouw situatie.
3. Wat de batterij oplevert
Per dag laden we in de goedkoopste uren en ontladen we in de duurste uren. Hoeveel uren dat zijn, volgt uit de bruikbare capaciteit gedeeld door het laadvermogen:
bruikbaar = capaciteit × bruikbaar deel × cycli per dag
uren = ceil(bruikbaar ÷ laadvermogen)
opbrengst = Σ(duurste uren × kWh × retourrendement) − Σ(goedkoopste uren × kWh) Het retourrendement zit alleen op de ontlaadkant: je haalt er minder uit dan je erin stopt. De jaaropbrengst is de gemiddelde dagopbrengst × 365 — bewust lineair, want we hebben geen volledig jaar gemeten en gaan geen seizoenspatroon simuleren dat we niet kennen.
| Batterij-parameter | Standaard |
|---|---|
| Capaciteit | 10 kWh |
| Laad-/ontlaadvermogen | 3.7 kW |
| Bruikbaar deel | 90 % |
| Retourrendement | 90 % |
| Cycli per dag | 1 |
4. Wat er níét in zit
Dit bepaalt hoe je de uitkomst moet lezen, dus het staat er even prominent bij als de rest.
- Perfecte vooruitblik. Het model kiest achteraf de beste uren. Een echte batterij stuurt vooruit en haalt dit dus niet volledig. De uitkomst is een bovengrens.
- Zonnestroom. Eigen zonnestroom opslaan in plaats van terugleveren telt er juist bíj op. Dit wordt belangrijker zodra de saldering per 1 januari 2027 wegvalt.
- Terugleverkosten. Wat leveranciers rekenen per teruggeleverde kWh staat nu op € 0,00. Dat wordt ná 2027 juist een hoofdfactor; het komt als vergelijker terug op de site.
- Degradatie en levensduur. De batterij wordt minder goed met de jaren. Een terugverdientijd die de levensduur nadert, betekent in de praktijk dat het niet uit kan.
- Netbeheerkosten, aansluiting en installatie. Alleen de aanschafprijs zit in de investering; installatiekosten kun je zelf bij het investeringsbedrag optellen.
- Salderen zelf. Tot en met 31 december 2026 geldt de oude regeling nog.
- De vaste heffingskorting op je energierekening. Die staat los van je verbruik en verandert dus niets aan wat een verplaatste kWh oplevert — hij verlaagt je jaarrekening, niet je terugverdientijd.
5. Narekenen
Het model staat in src/lib/model.mjs en de opgehaalde prijzen in
src/data/prijzen.json, beide in het openbare versiebeheer. Elke wijziging aan een
formule of aanname is daarmee terug te zien in de geschiedenis. Vind je een fout, dan is dat een
aantoonbare fout — geen kwestie van mening.