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
Download the Spreadsheet
Every calculation on this page can be reproduced in a spreadsheet. We have built an Excel version with 39 country presets, 5 PVGIS climate zones, 8,760 hourly rows, and 25-year financials with all formulas exposed.
Available on request. Email us and we'll send you the preview. We'll publish a direct download once it's ready for self-service use.
Disclaimer: All figures on this page are modeled estimates based on publicly available data and stated assumptions. They are not guarantees of future performance. Solar yields, electricity prices, equipment costs, and carbon intensities vary by location and change over time. Consult a qualified professional before making investment decisions.
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, plus Albania, Belarus, Bosnia and Herzegovina, Estonia, Iceland, Latvia, Lithuania, Macedonia, Moldova, Montenegro, Norway, Russia, Serbia, Switzerland, TΓΌrkiye, Ukraine, and the United Kingdom.
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
Dynamic Payback (years) = First year where Cumulative Net Savings β₯ Total Upfront Cost
What this means: We simulate every year of your system's life, accounting for panel degradation, price changes, and equipment replacements, then find the exact year when you've broken even. This is more honest than the simple "cost Γ· year-1 savings" formula most installers use.
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). Every single day of the year is modeled hour-by-hour using a single unified engine that powers both the interactive calculator and the build-time country reference data.
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 (Hungary): Installing solar cancels the discounted heat-pump tariff. Our engine models this by pricing HP electricity at the discounted H-tarifa rate in the baseline, and all post-solar grid import at the full A1 rate. H-tarifa only applies to heat-pump electricity β resistive heating is not eligible for the discount and is priced at the standard retail rate in the baseline.
- 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.
- Dynamic payback formula: We track cumulative net savings year-by-year over the full system lifetime, including degradation, price growth, and replacements. This is more honest than simple payback (upfront cost Γ· year-1 savings), which ignores degradation and replacements.
- 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.