Methodology: How We Calculate
Our Promise
Every number on this site is derived from public data, physics, and honest math. We show our assumptions. We show our sources. We update when data changes.
We do not take money from installers, manufacturers, or energy companies.
Contents
- Solar Yield Calculation
- Electricity Price Data
- Country Coverage
- Heat Pump Modeling
- Payback Calculation
- Battery Economics
- Equipment Lifespans
- Self-Consumption Model
- Subsidy Tracking
- Comparison to Installer Quotes
- Known Limitations
- Updates & Corrections
- Sources
- License
Solar Yield Calculation
Source: PVGIS (European Commission JRC)
We use the Photovoltaic Geographical Information System (PVGIS) developed by the EU Joint Research Centre. It is the scientific standard for solar yield estimation in Europe.
Quick vocab: A kilowatt-peak (kWp) is how much power a solar panel can produce in perfect midday sun. An 8 kWp system is about 20 panels on a typical roof. A kilowatt-hour (kWh) is the energy you actually use — like running a 1,000-watt heater for one hour. Your electricity bill is in kWh.
Why PVGIS:
- Uses satellite weather data (not ground stations)
- Accounts for temperature, cloud cover, and diffuse light
- Free, open, peer-reviewed
- No commercial interest
What we input:
- Location: Latitude/longitude of your town
- System: Fixed tilt, crystalline silicon
- Tilt: [latitude]° (a common rule of thumb; PVGIS annual optimum is typically latitude − 10° to 15°)
- Azimuth: 0° (facing directly south — like a sundial pointing at the sun's midday position)
- Losses: 14% (default PVGIS value)
What PVGIS outputs:
- Monthly energy production (kWh)
- Annual total (kWh/kWp)
- Daily profiles
What we add:
- Degradation: 0.5%/year (panels slowly lose output, like a phone battery holding less charge over time)
- Soiling: NOT included in the 14% PVGIS default (soiling is site-dependent; we assume clean panels, but real-world output may be 2–8% lower depending on local dust, pollen, and rainfall)
Electricity Price Data
Source: Eurostat, National Regulators
Feed-in tariff: The price the grid pays you for excess solar you export. Think of it as the wholesale price the power company buys your electricity for — usually much lower than what they sell it to you for.
| Country | Source | Update Frequency |
|---|---|---|
| All EU | Eurostat nrg_pc_204 | Semi-annual |
| Hungary | MEKH (Hungarian Energy Authority) | Monthly |
| Poland | URE (Energy Regulatory Office) | Monthly |
| Germany | Bundesnetzagentur | Annual |
| etc. | ... | ... |
What we show:
- Residential price (€/kWh, all taxes included)
- Feed-in tariff (€/kWh)
- Gas price (€/m³, if relevant)
What we don't do:
- Assume future price increases (unless you ask us to)
- Use "avoided cost" accounting tricks
- Blend taxes and subsidies
Country Coverage
Our calculator covers 42 European countries plus an EU Average profile. Data is sourced from Eurostat and national regulators for each market.
Countries
Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Luxembourg, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden.
EU Average
The EU Average is a composite profile using median electricity prices, equipment costs, and solar yields across the EU-27. It is useful for rough estimates when you don't know your exact country, but country-specific data is always more accurate.
What varies by country
| Factor | How it differs |
|---|---|
| Electricity price | €0.08–0.37/kWh (Finland to Ireland) |
| Feed-in tariff | €0.03–0.12/kWh (some countries have none) |
| Solar yield | 750–1,700 kWh/kWp/year (north to south) |
| Equipment cost | €600–1,200/kWp installed |
| VAT / taxes | 0–27% |
| Subsidies | Country-specific grants and tax deductions |
| Net metering rules | Net total, net billing, or per-phase |
Heat Pump Modeling
SCOP = 4.6 (Constant)
We model heat pumps with a constant Seasonal Coefficient of Performance (SCOP) of 4.6. This means 1 kWh of electricity produces 4.6 kWh of heat over the heating season.
SCOP vs COP: COP is an instantaneous measure that changes with outdoor temperature. SCOP is the regulated seasonal average — like EPA miles-per-gallon for a car, it averages across all conditions. A SCOP of 4.6 means you get 4.6 units of heat for every 1 unit of electricity, averaged across the year. A modern condensing gas boiler is ~0.9–0.95; older non-condensing boilers are ~0.8. Electric resistance is 1.0.
Why constant? Real-world performance varies with outdoor temperature (lower in cold weather, higher in mild weather). We use 4.6 as a realistic annual average for modern air-to-air heat pumps in Central European climates. Caveat: Air-to-water heat pumps in Northern Europe (Finland, Sweden) typically achieve SCOP 2.5–3.5. Our model overestimates their performance. A future version will add climate-dependent SCOP curves.
How heating demand is distributed
- You input your total annual heating demand (thermal kWh needed to heat your home)
- We distribute this across the year using a seasonal factor based on day length and a heating-season curve
- Demand is concentrated in October–April, with peaks in January
- The heat pump's electrical demand = thermal demand ÷ 4.6
Why this changes everything
| Without heat pump | With heat pump |
|---|---|
| Annual electricity: ~3,000 kWh | Annual electricity: ~8,000–12,000 kWh |
| Battery charges most days year-round | Battery often charges zero in December–January |
| Self-consumption: 40–60% | Self-consumption: 20–35% |
| Solar covers most of your demand | Solar covers heating first, little left for other uses |
This is why adding a heat pump to an existing solar system often makes the economics look worse — your demand doubled but your solar stayed the same.
Payback Calculation
The Honest Formula
Simple Payback (years) = Total Cost / Annual Savings
What this means: If you spend €7,000 and save €700 per year, you get your money back in 10 years. Simple.
Total Cost includes:
- System cost (panels + inverter + installation)
- Battery cost (if applicable)
- Inverter replacement (at year 12, 50% of original)
- Annual maintenance (€100–200/year)
- Insurance premium increase
Annual Savings includes:
- Self-consumption: kWh × electricity price
- Export: kWh × feed-in tariff
What we DON'T include (because it's dishonest or not yet modeled):
- Property value increase (unmeasurable)
- "Energy independence" value (emotional, not financial)
- Inflation without showing the scenario
- Blended solar+battery payback
- Gas avoided cost (we model gas heating costs separately, but do not currently calculate payback for switching from gas to heat pump)
NPV Calculation
NPV = -Upfront + Σ (Annual Net Benefit / (1 + discount_rate)^year)
Where Annual Net Benefit is:
(Baseline electricity cost − Actual grid import cost + Export revenue − O&M costs)
Baseline electricity cost = (base load + heating capped at heat-pump efficiency) × electricity price
Why we cap heating in the baseline: Without this cap, resistive electric heating (COP 1.0) would inflate NPV by creating 4.6× more electricity demand for solar to offset. This made resistive heating look like a better investment than a heat pump, which is absurd. The baseline uses the minimum of your actual heating electricity and the heat-pump-efficient equivalent (heatingDemand / 4.6). This means:
- Heat pump users: baseline = actual heat pump consumption (no cap needed)
- Resistive heating users: baseline capped at the efficient alternative
- Mixed heating users: baseline = actual electric heating, capped at efficient
NPV honestly reflects whether solar is a good investment — independent of heating efficiency choices.
- Discount rate: 6% (conservative — reflects that €1,000 today is worth more than €1,000 in 20 years, because you could invest it elsewhere)
- Time horizon: 25 years
NPV in plain English: Would you rather have €7,000 in your bank account earning interest, or spend it on solar panels? NPV adds up all your solar savings over 25 years, then subtracts what you could have earned by investing the same money at 6% instead. If the result is positive, solar beats the bank. If negative, keep your money in the bank.
If NPV > 0, the investment is financially justified. If NPV < 0, it loses money.
Battery Economics
How We Model Batteries
Our calculator simulates the battery hour-by-hour within the full year, not as a separate spreadsheet calculation:
- Midday: Solar exceeds demand → excess charges battery (up to max charge rate)
- Evening: Solar drops, demand peaks → battery discharges to cover deficit
- Night: Battery depleted → grid imports resume
- Round-trip efficiency: 85% (2,569 kWh in → 2,181 kWh out = 15% loss, matching real Li-ion batteries)
Battery Utilization Reality
A 10 kWh battery does not cycle 10 kWh every day. We model an effective capacity factor that scales with your solar-to-demand ratio. This is not a cycling metric — it is a capacity adjustment that reflects the reality that an oversized battery relative to available solar excess cannot be filled every day:
- Solar ≈ demand (ratio ≤ 0.5): Battery behaves at full nominal capacity → 100% effective capacity
- Solar = demand (ratio = 1.0): Battery behaves like a 90% capacity unit
- Solar >> demand (ratio = 2.0): Battery behaves like a 62% capacity unit
- Solar vastly exceeds demand (ratio → ∞): Battery asymptotes to 35% effective capacity
This is a simplified proxy for weather variability. A more sophisticated model would simulate individual cloudy days explicitly.
When We Say "Battery Doesn't Pay Back"
In flat-rate countries (Hungary, most of Eastern Europe):
Flat-rate tariff: You pay the same price for electricity whether it's 3 AM or 6 PM.
- Charge value = Feed-in price (~€0.02/kWh)
- Discharge value = Electricity price (~€0.10/kWh)
- Net value per kWh = €0.08
- Realistic annual discharge: 1,500–2,500 kWh (not 3,650)
- Payback: 14–25 years (often worse than battery life)
In time-of-use countries (Netherlands, some UK):
Time-of-use (TOU): Electricity costs different amounts at different times.
- Off-peak charge: €0.15/kWh
- Peak discharge: €0.40/kWh
- Net value per kWh: €0.25
- Payback: 5–10 years (viable, but check your tariff)
Equipment Lifespans
| Component | Lifespan | Source |
|---|---|---|
| Solar panels | 25–30 yr | NREL degradation studies |
| Inverter | 10–15 yr | NREL/PVEL reliability data |
| Battery (LiFePO₄) | 10–15 yr | Calendar aging, not cycles |
| Mounting | 25 yr | Galvanized steel specs |
| Cabling | 25 yr | Insulation degradation |
Replacement cost assumption:
- Inverter: 50% of original cost (prices decline over time)
- Battery: 50% of original cost
Self-Consumption Model
We use a 365-day hourly simulation (8,760 timesteps = 365 days × 24 hours) for the calculator's primary results. Every single day of the year is modeled hour-by-hour.
Engine disclosure: The site actually runs three engines. The inline calculator uses the full 365-day hourly model described here. Some auxiliary comparisons (heating system costs, profile selection) use a simplified monthly 4-band model (48 timesteps/year) for speed. Our detailed guides (solar winter heating, price crisis) use a third object-oriented engine with proper band-by-band (morning/midday/evening/night) matching that accounts for the day-night cycle — the most accurate of the three. The hourly engine is the authoritative one for payback and self-consumption results in the calculator.
Self-consumption: The percentage of your solar energy you use directly in your home instead of exporting to the grid. Higher is better — every kWh you self-consume saves you the full retail price. Every kWh you export only earns the low feed-in tariff.
How it works
- Solar profile: Half-sine curve during daylight hours, scaled to daily PVGIS production. Each of the 365 days has its own daylight duration (January ≈ 8.5h, July ≈ 15.5h) and production level based on the seasonal cycle.
- Base load profile: Hourly shape based on occupancy (see below). Peaks in morning and evening, low during work hours. Scaled to the user's annual base electricity input.
- Heating profile: Distributed across heating-season days using a temperature-driven seasonal factor. Heat pump electricity demand is computed from thermal demand divided by SCOP 4.6. Runs whenever outdoor temperature is below the heating threshold.
- Battery simulation: Hour-by-hour state of charge for all 365 days. Charges from midday excess, discharges in evening/night. Round-trip efficiency: 85%. Battery utilization scales with solar-to-demand ratio (see Battery Economics above).
- Net metering: The engine computes hourly self-consumption, export, and import, then values them at retail price and feed-in tariff. It does not currently model annual netting, virtual offset, or per-phase balancing. Country-specific net metering rules are documented in our data files but not applied in the simulation.
Occupancy profiles
| Profile | Solar-hour demand | Typical user |
|---|---|---|
| Regular (default) | ~36% | Family, some home during day |
| Away all day | ~24% | Commuters, empty house 9–5 |
| Work from home | ~43% | Remote worker, high daytime use |
| Full time occupancy | ~43% | Always someone home |
| Retired | ~43% | Home all day, moderate use |
| Weekend only | ~28% | Holiday home, rarely there |
Winter reality check
With a heat pump in January, a 5 kWp system produces ~3 kWh/day while heating alone demands ~30 kWh/day of thermal output (≈ 6.5 kWh of electricity at SCOP 4.6). The battery often has nothing to charge from — every watt of solar goes straight to heating. Our simulation shows ~47 zero-charge days per year for typical heat-pump households.
Even a 10 kWh battery is usually empty by 4 AM. From 4 AM to 9 AM, all heating comes from the grid — solar hasn't started yet and the battery is depleted. This is why "solar + heat pump + battery" is still heavily grid-dependent in winter.
Why this matters: Most online calculators use monthly averages that smooth over this gap. Our 365-day simulation captures the brutal reality of December week-by-week. See our Self-Consumption Reality guide for why other calculators show 60–90% and we don't.
Subsidy Tracking
We track subsidies by country from official sources:
- National energy agencies
- EU funding programs
- Regional programs
Status codes:
- Active: Currently accepting applications
- Capped: Still open but limited funds
- Suspended: Program paused
- Ended: Program closed
We update when programs change. We do NOT estimate future subsidies.
Comparison to Installer Quotes
Why Installers Show Better Numbers
| Tactic | What They Do | What We Do |
|---|---|---|
| Optimistic yield | Assume 1,200 kWh/kWp in Hungary | Use PVGIS: ~1,050 |
| Ignore degradation | Assume 100% output forever | Apply 0.5%/year |
| Ignore inverter | No replacement cost | Include inverter replacement at year 12 |
| Blended payback | Solar+battery together | Separate calculation |
| Price growth | Assume 5–10%/year | Show flat AND growth scenarios |
| Maintenance | Not mentioned | €100–200/year |
| Self-consumption | Assume 70–80% | Model hourly, profile-specific 20–70% |
| Heat pumps | Ignored or "add 2,000 kWh" | Full hourly heating demand simulation |
How to Check an Installer's Quote
- Ask for their solar yield assumption → Check against PVGIS
- Ask if inverter replacement is included → Should be
- Ask if battery payback is separate → Should be
- Ask what electricity growth rate they use → Should show sensitivity
- Ask for reference customers → Call them
Known Limitations
No model is perfect. Here are the limitations we know about:
- Shading: We assume zero shading. Real roofs have chimneys, trees, and neighboring buildings.
- DC:AC ratio / inverter clipping: We assume no inverter clipping. Oversized arrays (common practice) may clip peak output.
- Inter-annual weather variability: PVGIS yields vary ±5–10% year-to-year. We present a single deterministic number.
- Temperature-dependent SCOP: We use a constant 4.6. Real heat pumps perform worse in cold weather (SCOP may drop to 2.5–3.5 at -10°C).
- Soiling: We assume clean panels. Dust, pollen, and bird droppings can reduce output 2–8%.
- Net metering rules: Country-specific rules (annual netting, per-phase balancing) are documented but not simulated.
- H-tarifa penalty (Hungary): Installing solar cancels the discounted heat-pump tariff. The engine models this as a one-time annual loss, which is a simplification.
- Gas boiler comparison: We use 0.8 efficiency (old non-condensing fleet average). Modern condensing boilers are 90–95% efficient, making heat pumps look slightly better than they are.
- Simple payback formula: We use upfront cost ÷ first-year net benefit. This is the standard engineering definition. Some methodologies include future replacement costs, which creates a hybrid metric.
- NPV heating baseline: We cap heating demand in the NPV baseline at heat-pump efficiency (SCOP 4.6). This prevents resistive heating from artificially inflating solar NPV, but it also means NPV does not reward switching from gas/wood to resistive electric heating.
Updates & Corrections
Last updated: 2026-05-28 Next review: 2026-11-23
2026-05-28 — NPV baseline cap for heating
- What changed: NPV now uses a baseline capped at heat-pump efficiency (SCOP 4.6) instead of the actual heating electricity demand.
- Why: Resistive electric heating (COP 1.0) creates 4.6× more electricity demand, which was artificially inflating solar NPV. The calculator showed "solar + resistive heating" as a better investment than "solar + heat pump," which is economically absurd.
- Effect: NPV is now an honest measure of solar investment quality, independent of heating-system efficiency. Total lifetime cost (system + energy) remains the honest headline for comparing complete setups.
If you find an error, contact us. We correct mistakes publicly.
Sources
| Data Type | Primary Source | Backup |
|---|---|---|
| Solar yield | PVGIS JRC | DWD (Germany), MeteoSwiss |
| Electricity prices | Eurostat | National regulators |
| Equipment specs | Manufacturer datasheets | Independent tests |
| Reliability data | NREL, Fraunhofer | PVEL, TÜV |
| Subsidies | National agencies | EU Commission |
| Real-world performance | Academic studies | Open datasets |
License
All calculations, data, and methodology are published under [CC-BY-SA]. You may use them for any purpose, commercial or non-commercial, with attribution.