Degradation, Soiling and Tilt: Building an Honest Loss Stack

In short This article assembles every derate factor from module to meter with UK-specific values and evidence for each, then shows how to apply them multiplicatively rather than the lazy flat 'minus 20%' most models use.

Route ahead 9 sections
  1. Why multiplicative, not subtractive
  2. Step 0: start from the right gross number
  3. The module-to-meter stack 1 min
  4. Degradation: the year-on-year factor 3 min
  5. Putting it together: a worked example 4 min
  6. Which number is your system’s “solar panel system losses percentage”? 5 min
  7. Monitoring against the stack 5 min
  8. Cleaning: is it worth it? 6 min
  9. From stack to forecast 6 min

Most solar models you’ll find online do the same thing. They take a kWp figure, multiply by a location yield, then knock off a flat 20% for “system losses” and call it done. It’s quick. It’s also wrong in ways that matter once you start pricing a battery or checking whether your array is underperforming.

The trouble is that a single flat number hides which losses are real, which are small, and which you can actually fix. If your solar panel system losses percentage is a guess, you can’t tell a healthy system from a sick one. So let’s build the stack properly, factor by factor, with UK values you can paste into a spreadsheet.

Why multiplicative, not subtractive

Losses compound. Each one acts on whatever energy is left after the previous stage, not on the original figure. Five losses of 5% don’t total 25%. They total:

1 - (0.95 ^ 5) = 1 - 0.7738 = 22.6%

Subtracting gives 25%, multiplying gives 22.6%. With a dozen small factors the gap widens, and more importantly the order-free multiplication lets you swap one factor and see its true effect. Your spreadsheet formula is simply:

Net = Gross_irradiated_kWh × F1 × F2 × F3 × ... × Fn

Where each F is a retention factor (0.97 means a 3% loss). Keep the factors in separate cells with a note on the evidence. That’s the whole method.

Step 0: start from the right gross number

Before any derates, get the in-plane irradiation for your actual tilt and azimuth. Use PVGIS (the EU Joint Research Centre tool, free, covers the UK with SARAH-based data) or the MCS-style lookup your installer would use. Ask for kWh/m² on your plane, not horizontal.

Tilt and orientation are the biggest “losses” of all, and the lazy model smears them into the 20%. Typical UK figures relative to the optimum (roughly 35° tilt, due south):

Orientation / tiltRetained vs optimum
South, 35°100%
South, 20°~97%
South, 50°~97%
South-east or south-west, 35°~95%
East or west, 35°~85%
East-west split, 30°~86–88% (but flatter day)
South, 90° (vertical)~70%

PVGIS will give you the exact figure; treat the table as a sanity check. Take this factor from the tool, don’t apply it again below.

The module-to-meter stack

Here are the factors, with a UK-realistic value and the reasoning for each.

1. Temperature: 0.975–0.985. Panels lose roughly 0.30–0.35% of output per °C above 25°C cell temperature (check the datasheet’s Pmax coefficient). The UK is mild, and cells run hot only on bright days, so the annual-average loss is small. Use 0.98. Hotter countries need 0.90 or lower, which is why imported rules of thumb overcook it.

2. Low-light and spectral response: 0.99–1.00. Modern modules do fine in grey UK light. PVGIS partly handles this already. Use 0.995 and don’t agonise.

3. Reflection (IAM): 0.97–0.98. Glass reflects more at low sun angles, which is most of a British winter. Use 0.975 unless your tool already includes it (PVsyst and PVGIS do).

4. Soiling: 0.98–0.995. Rain does most of the cleaning in the UK. Studies of UK and north-European sites generally show annual soiling under 2–3% on tilts above about 15°. Higher losses come from bird droppings (local, can hit a string hard), pollen, moss on the lower edge, and farm or roadside dust. Use 0.985 as a baseline. Near a farm, under trees or with a shallow roof pitch, drop to 0.97.

5. Shading: 0.95–1.00, highly site-specific. A chimney, a neighbour’s tree or a dormer can easily cost 3–10%. Do not guess. Use a horizon profile in PVGIS, a shade analysis from your installer’s survey, or a phone app such as Sun Seeker to log obstructions. A clean roof gets 1.00. A typical suburban roof with some morning shade: 0.97.

6. Module mismatch and wiring (DC): 0.97–0.98. Small differences between modules, plus cable resistance. Use 0.975. Optimisers or microinverters narrow the mismatch but add their own conversion losses, so the net gain is mostly in shaded cases.

7. Inverter efficiency: 0.96–0.97. Look up the European weighted efficiency on the datasheet, not the peak figure. Typical string inverters (SMA, Fronius, Solis, GivEnergy, SolarEdge) sit around 96–98%. Use 0.97. Note that an inverter running mostly at low load, as a 3 kW unit under UK cloud does, sits lower than its peak.

8. Clipping: 0.99–1.00. UK installers often oversize the array against the inverter (say 4.4 kWp on a 3.68 kW inverter, the G98 limit per phase). Clipping on a south roof in the UK is typically under 1–2% a year. Use 0.995, or 0.98 if your array is more than 20% oversized.

9. AC cabling and availability: 0.99–0.995. Short domestic runs, plus the odd grid trip or maintenance day. Use 0.993. Voltage rise to the grid can trigger inverter curtailment in rural areas, so if your meter shows trips, go lower.

10. Degradation: see next section.

Degradation: the year-on-year factor

This one isn’t a constant, so model it as a per-year multiplier. Warranties promise a lot (commonly 98% in year one, then 0.4–0.5% a year to 87–92% at year 25 or 30). Real-world evidence from the NREL “Compendium of Photovoltaic Degradation Rates” found a median around 0.5% a year, and newer module technologies generally fare better than old ones.

Use this:

  • Year 1: 0.98 (light-induced degradation, LID/LeTID, in the first months)
  • Years 2 onward: 0.995 per year

So in year n (n ≥ 2):

D(n) = 0.98 × 0.995^(n-1)

Year 10 is 0.98 × 0.995⁹ = 0.937. Year 25 is 0.98 × 0.995²⁴ = 0.869. That fits a quality warranty curve closely. For a 10-year payback calculation, averaging about 0.955 over the decade is a fair figure, far gentler than the “20%” lump but important to include.

Putting it together: a worked example

A 4.4 kWp array in Leeds, 35° tilt, south-west facing (azimuth +30°), light morning shading. PVGIS reports roughly 960 kWh/kWp/year before system losses for this plane, so gross is 4.4 × 960 = 4,224 kWh. Note this figure already includes the orientation penalty, so do not apply it twice.

FactorRetention
Temperature0.980
Low light0.995
Reflection (IAM)0.975
Soiling0.985
Shading0.970
Mismatch / DC wiring0.975
Inverter0.970
Clipping0.995
AC and availability0.993

Multiply them:

0.980 × 0.995 = 0.9751
× 0.975 = 0.9507
× 0.985 = 0.9365
× 0.970 = 0.9084
× 0.975 = 0.8857
× 0.970 = 0.8591
× 0.995 = 0.8548
× 0.993 = 0.8488

Combined retention is 0.849, so the loss is about 15.1%. Year-one output with LID: 4,224 × 0.849 × 0.98 = 3,514 kWh. In year 10: 4,224 × 0.849 × 0.937 = 3,360 kWh.

Compare the flat approach: 4,224 × 0.80 = 3,379 kWh. Close in year 10, but it underestimates early years by about 4% and cannot tell you why. Shift the shading from 0.97 to 0.90 (a tree grows) and the multiplicative stack immediately shows 3,260 kWh in year one, while the flat model has no way to represent it.

Which number is your system’s “solar panel system losses percentage”?

Honest answer: typically 13–18% for a well-installed UK domestic system, excluding the orientation and tilt effects, and 18–25% if you fold orientation in. That’s where the flat 20% comes from, and it’s why it’s not outrageous as a headline. It just isn’t a model.

Monitoring against the stack

The payoff is diagnosis. Pull your actual generation from your inverter app (SolarEdge monitoring, SMA Sunny Portal, Solis Cloud, GivEnergy Cloud, Enphase Enlighten) or export a CSV, then compare monthly against your prediction. A useful metric is the performance ratio against measured irradiance, but most homeowners don’t have a pyranometer. Instead compare to PVGIS monthly values scaled to the year’s weather, or use Open-Meteo’s historical solar radiation API, which is free and gives hourly irradiance for your coordinates.

Rules of thumb for what a gap means:

  • Within ±5% of prediction over a year: your stack is sound.
  • Consistent 5–10% under: check shading and soiling first, then inverter clipping on your dashboard’s daily curve.
  • One string or one hour of the day dropping out: look for shade, or a failed optimiser.
  • Steady slide beyond 1% a year: investigate module faults, hot spots or connector problems.

If you’re feeding data to an AI tool, give it the factor table above and your monthly CSV, and ask it to back out which factor best explains the residual. That works far better than asking it to “explain why I’m underperforming” with a single 20% in the model.

Cleaning: is it worth it?

With soiling at 1.5%, cleaning gains roughly 60 kWh a year on the Leeds example. At about 25p per kWh of avoided import, that’s £15. A professional clean costing £60–£100 loses on money alone. Clean only if you see visible bird droppings, moss, or a measurable step change in output. Do it from the ground with a water-fed pole and no detergent, and don’t go on the roof yourself.

From stack to forecast

Once you have a defensible net yield, the next job is turning it into month-by-month and hour-by-hour generation that a battery model can use. That’s covered in Forecasting What Your Roof Will Actually Generate, including how to handle weather-year variability, which matters more than any single loss factor here.

Build the table once, keep one cell per factor, and change them as evidence arrives. That is all “honest” means here.