The messiness of the graph is mainly due to cloudy days. For a closer look at just how big this effect can be, here's the last week's production with weather annotations. March 27 was a pretty sucky production day because the clouds remained thick all day long. March 31 started out similarly -- it was raining heavily all morning -- but then the sun came out in the afternoon. And it was sunny on April 1 pretty much all day.
But even if we smoothed the cloudiness away, there's a huge difference between peak production days near the summer solstice and peak production days near the winter solstice: there's more than a factor of four difference between our best day on June 10 and the local maximum in December.
What accounts for this big difference? We could think of a bunch of possibilities. There's the solar angle (the sun's maximum height in the sky) and the amount of atmosphere that sunbeams have to travel through both vary with the season, both governed by the Earth's tilted axis relative to its plane of orbit. There are also potential nonlinearities introduced by the angle of the solar panels and by tree shadows: ten of our 18 panels are on an eastward-tilted part of our roof, the other eight are on a southward-tilted part, and all get a bit of shade from nearby trees at certain times of the day and certain times of year. (We optimized for the best angles and as little shade as possible, of course.) And then there's varying atmospheric absorption the solar radiation, the abilities of our solar panels to absorb the radiation that reaches them (which varies by the part of the spectrum and declines over time), and even variation in solar radiation levels (we just *think* the sun is a constant source of energy up there, but it totally isn't!).
One of the easiest effects to account for is the effect of seasonal solar angle, which Wikipedia tells me is summed up by the awesome-sounding word "insolation." Based on this graph from the aforementioned Wikipedia page that I annotated, the solar angle alone (without accounting for atmospheric thickness -- basically, if our house were in space) accounts for a factor of 2.6 change between summer and winter, more or less:
So the solar angle alone accounts for amost two-thirds of the seasonal variation.
Though we played around with them for a while, the other factors proved harder to approximate. Do you have any thoughts on how to do it?