Upload your production data and set a location to get started
The short version, then the detail.
The core input isn't "weather" in a vague sense — it's a specific daily figure called solar radiation (kWh/m²), sourced from Open-Meteo for your exact coordinates. That single number already combines two very different things: the sun's position and day length for that calendar date (deterministic, no forecasting needed — astronomy, not meteorology) and the actual cloud cover, humidity and haze on the day (the genuinely uncertain part). So seasonality and daytime length aren't separate inputs to the model; they're baked into the radiation figure before it ever reaches the regression.
Your uploaded daily kWh is regressed against that day's radiation across your whole history (ordinary least squares). The resulting slope and intercept aren't generic panel-efficiency numbers — they're fitted to your system specifically, so they automatically absorb your array size, panel efficiency, orientation and tilt, shading, inverter losses and degradation, without you having to specify any of it.
Radiation from Open-Meteo is measured on a flat horizontal plane, but your panels sit at a fixed tilt, so the relationship between "radiation" and "your output" isn't perfectly constant through the year — low winter sun, for instance, can hit an angled panel more efficiently than it hits flat ground. The tool checks the regression's leftover error for each calendar month and applies a small correction, shrunk toward zero when a month has few data points so noise doesn't get baked in as a lasting bias.
Days 1–16 use an actual weather forecast (cloud cover and radiation) for your coordinates, run through the calibrated model above. Beyond day 16, no legitimate weather forecast exists that far out — so the tool switches to a seasonal estimate instead: the average and spread of your own actual production on nearby days of the year from past history, widening the search window until there's enough data to be meaningful. These two modes are always labelled separately in the charts and cards, never blended silently.
For the near-term forecast, the range comes from the calibration model's typical error, widening slightly the further out the day is, since cloud forecasts get less reliable with lead time. For the longer-range seasonal estimate, the range comes from the actual historical spread on similar days — a wider, more honest band, since there's no forecast to lean on that far out.
Panel degradation over multiple years, one-off soiling from dust, pollen or snow, heat de-rating on extreme days, and physical changes like new shading from tree growth aren't broken out as their own variables. They show up bundled into the regression's average behaviour and its error term, rather than as explicit inputs.
Set up your forecast
Upload a daily solar production export and tell it where the system is. It calibrates itself to your data and location — nothing is hardcoded.