The economics of a solar+storage system depend not just on how much electricity you use, but on when you use it and what it costs at that time. This chapter explains how residential electricity tariffs are structured, how to read them, and how to calculate the financial value of consuming solar at different times.
A residential electricity bill typically has three cost components:
A monthly or daily fee independent of consumption. Covers infrastructure costs.
Per-kWh charges for electricity consumed. This is where solar savings are realized.
VAT (typically 5–20%) plus sector levies (renewable subsidies, grid maintenance). In France, these are bundled as the TURPE and CSPE components.
The simplest structure: one price per kWh regardless of when you consume.
Example: €0.22/kWh all hours, all days.
For solar assessment: each kWh you self-consume from solar saves €0.22. Each kWh you export earns €0.06–0.10 (typical FIT). The self-consumption premium = €0.12–0.16/kWh.
TOU tariffs charge different rates for different periods of the day. They reward flexibility: shift consumption to off-peak periods and save.
| Period | Hours | Typical price (€/kWh) | % of flat rate |
|---|---|---|---|
| Peak (Heures Pleines) | Mon–Fri 07:00–22:00 | 0.27–0.32 | 130–145% |
| Off-peak (Heures Creuses) | Mon–Fri 22:00–07:00, all weekend | 0.16–0.20 | 80–90% |
Price ratio: peak / off-peak ≈ 1.5:1 to 2:1
| Period | Hours | Price ($/kWh) |
|---|---|---|
| Super-peak | 16:00–21:00 | 0.45–0.60 |
| Peak | 09:00–16:00 | 0.28–0.35 |
| Off-peak | 21:00–09:00 | 0.15–0.22 |
| Super-off-peak (winter) | 09:00–14:00 (winter) | 0.10–0.14 |
Price ratio super-peak / super-off-peak: 3:1 to 4:1
Solar production peaks at midday. Under a standard TOU tariff with peak hours 07:00–22:00, solar production largely falls within the peak period → high self-consumption value.
Evening peak (16:00–21:00) is the most expensive period but solar production is declining or zero. This is exactly the window a battery should discharge into.
Some utilities now offer hourly pricing tied to the day-ahead electricity market (EPEX Spot in Europe, CAISO/PJM in the US). Prices can vary by a factor of 5–20× within a single day.
| Hour | Price | Note |
|---|---|---|
| 00:00 | 0.08 | Night baseload |
| 02:00 | 0.06 | Minimum |
| 06:00 | 0.14 | Morning ramp |
| 08:00 | 0.22 | Morning peak |
| 12:00 | 0.15 | Midday dip (some solar on grid) |
| 17:00 | 0.28 | Evening ramp |
| 19:00 | 0.35 | Evening peak |
| 21:00 | 0.22 | Declining |
| 23:00 | 0.10 | Night |
On occasion, prices go negative (overnight in spring/summer when renewable production exceeds demand). A smart battery can exploit this: charge when prices are negative (paid to consume), discharge when prices are high.
For every kWh of solar you consume instead of buying from the grid:
Self-consumption saving (€) = Grid price at that hour (€/kWh) × kWh consumed
For every kWh you export:
Export revenue (€) = Export price (€/kWh) × kWh exported
The self-consumption premium:
Premium = Grid price − Export price
Typical values: | Country | Avg grid price | Export price | Premium | |———|————–|————-|———| | France | €0.22/kWh | €0.10/kWh | €0.12/kWh | | Germany | €0.32/kWh | €0.08/kWh | €0.24/kWh | | UK | £0.28/kWh | £0.15/kWh (SEG) | £0.13/kWh | | Italy | €0.28/kWh | €0.06/kWh | €0.22/kWh | | California | $0.35/kWh | $0.05/kWh | $0.30/kWh |
The higher the premium, the more valuable each additional kWh of self-consumption becomes — and the stronger the case for battery storage to increase self-consumption.
Some loads can be shifted to improve the economics:
| Load | Shift feasibility | Strategy |
|---|---|---|
| Washing machine | High | Program for noon or low-price hours |
| Dishwasher | High | Delay start to midnight or noon |
| Hot water tank | High | Time controller: heat during solar peak or off-peak |
| EV charging | High | Charge overnight off-peak or midday from solar |
| Tumble dryer | Medium | Run after washer if solar is available |
| Oven | Low | Usage time is typically fixed by meal schedule |
| HVAC pre-conditioning | Medium | Cool/heat house before peak hours using cheap energy |
Hot water tank timing is particularly impactful: a 2,500 W tank shifted from random timing to a 3-hour window at 12:00–15:00 (solar peak) saves roughly 500 kWh/year of grid imports for a family of four.
To calculate the actual bill under a TOU tariff, you need to apply hourly prices to an hourly consumption profile:
Annual bill = Σ over all 8,760 hours of [Grid_import(h) × Price(h)]
+ Annual standing charges
− Export_revenue
The companion code/tariff_engine.py implements this:
from tariff_engine import TariffEngine, TOU_FRANCE
engine = TariffEngine(TOU_FRANCE)
bill = engine.compute_annual_bill(grid_import_profile, grid_export_profile)
print(f"Annual bill: €{bill['total']:.0f}")
print(f" Energy charges: €{bill['energy']:.0f}")
print(f" Standing charges: €{bill['standing']:.0f}")
print(f" Export revenue: €{bill['export']:.0f}")
Given a TOU tariff, the optimal battery operation rule is:
If solar_surplus > 0 and battery_soc < max:
→ charge battery from surplus
If solar_surplus == 0 and current_price > threshold and battery_soc > min:
→ discharge battery to supply load
If current_price < charge_threshold and battery_soc < max:
→ charge battery from grid (arbitrage, only if premium is worth it)
The threshold price level is the key parameter. Chapter 8 covers how to set it optimally.
Navigation: