Solar Panel Tilt and Azimuth: What Shade Costs in kWh

A roof described as "south-facing" on one proposal and "southwest-facing, 225 degrees" on another is not a difference in vocabulary. On the reference roof this site has used since the PVWatts walkthrough — a 7.2 kW array in Denver, panels tilted 20 degrees — that's the difference between 11,473 kWh a year and 10,816 kWh. Same panels, same losses, same inverter. 657 kWh, every year, for as long as the array sits on the roof.

That number, and the ones below it, came out of the PVWatts v8 API on 25 September 2026, run at the same coordinates (39.7392, -104.9903) and system size used in this site's PVWatts walkthrough, changing only the field this post is about: azimuth, tilt, and the shading input. If your proposal's production estimate depends on any of the three, you can find out exactly how much by running the same comparison on your own roof, with your own numbers, in the same tool.

The three fields, and what each one is a compass reading of

PVWatts asks for three separate things that a proposal often folds into one adjective like "good roof."

Azimuth is the direction the panel faces, in degrees clockwise from true north: 0 is north, 90 is east, 180 is south, 270 is west. Tilt is the angle the panel surface makes with the ground, where 0 is flat and 90 is a wall. Shading is a separate loss percentage, folded into PVWatts's system-loss stack rather than the sun-position geometry — it doesn't move with the sun, it moves with your yard.

The tilt-and-azimuth pair is sometimes reported together as a single output, the Tilt and Orientation Factor. Solmetric, which makes shade-measurement hardware, defines it as "the solar insolation at the actual tilt and orientation divided by the insolation at the optimal tilt and orientation, expressed in percent," and defines Total Solar Resource Fraction as TOF multiplied by Solar Access, the shading term. That single TSRF percentage on a shade report is standing in for everything below.

One thing worth checking before any of the arithmetic: true north or magnetic. PVWatts and the satellite maps behind it are surveyed to true north. A compass on your roof reads magnetic north. The gap between them, magnetic declination, is a real number that varies by location and drifts over years, and NOAA's National Centers for Environmental Information run an official calculator for it. If nobody corrected for declination before writing "azimuth 190" on your proposal, ask which reading it was.

What azimuth alone costs, holding everything else fixed

Starting from the base case — 7.2 kW, 20-degree tilt, due south — here is what happens to annual AC production when only the compass direction changes, with system loss held at the PVWatts default 14.08% throughout:

Azimuth Direction Annual kWh vs. south
180° South 11,473 —
135° Southeast 11,059 −3.6% (−414 kWh)
225° Southwest 10,816 −5.7% (−657 kWh)
90° East 9,781 −14.7% (−1,692 kWh)
270° West 9,425 −17.9% (−2,049 kWh)
0° North 7,347 −36.0% (−4,126 kWh)

Two things stand out. First, the curve is not symmetric around south the way a quick guess might suggest: southeast loses less than southwest (−3.6% against −5.7%) at this location, because the morning sun in a Denver June has less atmosphere to travel through than the afternoon sun, and PVWatts's hourly weather file carries that asymmetry into the annual number. Second, the drop from south to a 45-degree miss (southeast or southwest) is a few percent, but the drop from south to a 90-degree miss (east or west) is in the mid-teens — the loss accelerates, it doesn't accumulate in a straight line. A north-facing roof, which no installer should be proposing as a primary array, loses more than a third of the output outright.

If your roof is a true intermediate — a hip roof with a plane at, say, 200 degrees — none of these six rows is your number, but the shape of the curve tells you what to expect: small azimuth errors near south cost a few percent, and every 45 degrees further off costs several times more than the 45 degrees before it.

What tilt alone costs, and why it matters less than azimuth here

Change only the tilt angle, holding azimuth at 180 (south) and everything else fixed:

Tilt Annual kWh vs. 20° base
0° (flat) 9,826 −14.4% (−1,648 kWh)
10° 10,803 −5.8% (−671 kWh)
20° (base) 11,473 —
40°* 11,913 +3.8%

*The 40-degree figure is from this site's earlier PVWatts walkthrough run on the same reference roof on 30 August 2026; it is reproduced here rather than re-run to keep this table on a single, already-published data point, and you can rerun it yourself with the same inputs at pvwatts.nlr.gov.

A completely flat roof gives up 14.4% against the 20-degree case — a real number, and one worth knowing if you're pricing a low-slope commercial-style roof — but the range that most residential roofs actually fall into, roughly 10 to 40 degrees, only spans about 9 to 10 percentage points end to end. Compare that with the azimuth table above: a 45-degree compass error alone (south to southwest) already costs more than the entire swing from 10 to 20 degrees of tilt. Tilt is not free to ignore, but on a roof that's already facing a reasonable direction, it is the smaller of the two dials.

The reason a common rule of thumb — set the tilt near your latitude for the best annual number — exists at all is visible in the pattern: steeper tilt trades winter gains for summer losses (a steeper panel catches a low winter sun better and a high summer sun worse), and at Denver's latitude of about 39.7°N, the 20-to-40-degree band is close enough to flat in its annual total that the "right" answer depends more on your rate structure — whether summer or winter kWh is worth more on your tariff — than on squeezing out the last percentage point. How a tariff prices exported kWh differently by season and time of day can matter more than the tilt angle itself.

Shading doesn't move with a slider — it moves with your yard

Azimuth and tilt are fixed the day the racking goes up. Shading changes every year a neighbor's tree grows, and it behaves differently from the other two in one important way: a shaded module doesn't just lose the light that lands on it, it can drag down the modules wired in series with it, because a series string carries one current set by its weakest link.

PVWatts's own default system-loss stack bundles a shading term of 3% — described in the loss defaults as the average measured on installations characterized as "unshaded" — inside its total 14.08% loss figure, which this site's PVWatts walkthrough breaks out multiplier by multiplier. Because the losses in that stack multiply rather than add, isolating just the shading term and swapping in a different measured value produces this table on the same reference roof:

Shading loss input Annual kWh vs. 3% default
0% (shade-free) 11,828 +355 kWh
3% (PVWatts default) 11,473 —
7% ("light" band) 11,000 −473 kWh
15% ("moderate," low end) 10,054 −1,419 kWh
19% ("moderate," high end) 9,581 −1,893 kWh
25% ("heavy" band) 8,871 −2,602 kWh

The "light," "moderate," and "heavy" labels are NREL's own, from the shading testbed report used in this site's post on microinverters and optimizers — NREL/TP-5J00-62471 (September 2016) defines light shading as a 7% annual irradiance reduction, moderate as 15% to 19%, and heavy as 25%. That report also found that module-level electronics recover 25% to 35% of whichever of these numbers your shade turns out to be — a partial fix, not an escape from the arithmetic, and the sizes above are what there is to recover a fraction of.

The practical problem is that the 3% in the PVWatts default is not a measurement of your yard. It's an industry-average placeholder for a roof with no particular shading issue. If there's a tree, a chimney, or a neighboring roofline in the picture, 3% is not your number, and the only way to get your actual figure is a shade measurement — a Solar Pathfinder reading, a fisheye-lens tool, or the shade-analysis output built into most design software your installer already owns.

Why a single annual percentage can hide a worse winter number

PVWatts's shading input, like the other nine terms in its loss stack, is one multiplier applied to the whole year at once — there's no month-by-month shading field. But the sun's position is not evenly distributed across the year, and the base case shows it plainly. Here is the same 7.2 kW, 20-degree, due-south roof's monthly AC output at zero added shading, from the API response read on 25 September 2026:

Month Annual AC kWh
Jan 720
Feb 806
Mar 1,052
Apr 1,065
May 1,116
Jun 1,148
Jul 1,137
Aug 1,073
Sep 1,006
Oct 883
Nov 775
Dec 691

December and January together make 1,411 kWh. June and July together make 2,285 kWh — 62% more, from the identical panels, with no shading involved anywhere in that difference. It's the sun angle and day length alone. October through March, the six weaker months, carry 43% of the year's production; April through September carry the other 57%.

That split matters once an actual obstruction enters the picture, because a tree or a neighboring roofline usually blocks the sun at one fixed, low angle, and the sun's angle is lowest exactly when the months are already producing the least. Something that clears the high summer sun with room to spare can sit squarely in the December sun's path, and the resulting loss lands inside the smaller half of the year's production — it isn't spread evenly across twelve months the way a single annual shading percentage implies. A shade report or an adjusted PVWatts shading input will still get the annual total right. It won't tell you, by itself, whether that loss is concentrated in the winter months a seasonal or time-of-use tariff may already price differently. That's worth asking the installer's shade-tool report directly, since most of them can show a monthly or hourly breakdown even when the proposal only prints the single annual number.

Turning a TSRF number on a shade report into a checkable kWh figure

Say a shade report attached to a proposal states a TSRF of 87%. On its own, that percentage doesn't say how many kWh the design should make — it says what fraction of an ideal, shade-free array at the best tilt and orientation for that spot the design is expected to reach. If the roof in question is already close to this post's baseline tilt and azimuth (20 degrees, due south, which the tilt table above shows is close to this location's flattest part of the curve), the Tilt and Orientation Factor term in Solmetric's TSRF formula is close to 1, and the 87% is standing in mostly for the shading term, Solar Access. Multiplying it out: 0.87 × 11,473 kWh = 9,982 kWh is what that design should produce in a year.

You can also run the arithmetic the other way, through the isolated-shading table above: an output of 9,982 kWh corresponds to a shading input of roughly 15.6%, which falls inside the "moderate" band the NREL testbed report defines as 15% to 19%. If a shade report's narrative describes "light shading from one tree" but its own TSRF number implies moderate-band losses once you run this arithmetic on it, that's a specific, answerable question for the installer — not a vague sense that the number looks off. If the roof's tilt or azimuth is far from ideal for the location, the TOF term absorbs part of the TSRF shortfall instead, and this shortcut won't isolate shading as cleanly; in that case, ask for Solar Access and TOF as two separate figures, which is how a shade report is built before the two get multiplied into one headline percentage.

Reading the tilt, azimuth, and shading lines on the proposal in front of you

Three checks, in the order they're cheapest to do:

Pull the compass reading yourself. Use a phone compass or a map view (both typically report true, not magnetic, north for the roof plane) and compare it against the azimuth your proposal lists. If the proposal's number came from an on-roof compass check with no declination correction, and NOAA's calculator says your location's declination is more than a couple of degrees, ask which number actually went into the production model.

Rerun the tilt and azimuth in PVWatts. Enter your system size, your roof's real tilt and azimuth, and the array type (roof mount, for most houses) at pvwatts.nlr.gov. This is the same tool and the same fields behind every number in the two tables above, and it's the fastest way to find out whether your proposal is describing your roof or a generic one.

Ask what shading number actually went into the model, and how it was measured. "Shading loss: 3%" with no site visit, no photo, and no shade-tool output attached is the PVWatts default, not a measurement of your roof. If your installer's proposal quotes a TSRF instead — the combined tilt, orientation, and shading figure Solmetric's shade-measurement tools report — ask for the underlying shade report, not just the single percentage; a proposal that is missing supporting figures like this one is already short at least one of the twelve items it should state up front.

None of these three checks costs money, and none of them requires taking the installer's word for a number that a free federal-lineage calculator can reproduce from the same inputs they already had to enter to build your quote.

Frequently asked questions

How much does facing my panels southwest instead of south actually cost?

On this site's reference roof — 7.2 kW, Denver, 20-degree tilt, PVWatts V8 defaults — south (azimuth 180) produces 11,473 kWh a year and southwest (azimuth 225) produces 10,816 kWh, a difference of 657 kWh, or 5.7%. Both figures came from the PVWatts v8 API (version 8.5.0, weather source NSRDB PSM V3 GOES tmy-2020) on 25 September 2026 at the same coordinates, 39.7392, -104.9903, with only the azimuth field changed. Run the same comparison at your own address and system size before treating either number as yours.

Does tilt matter more than azimuth?

Not in the range most roofs fall in. On the same reference roof, going from the 20-degree base case down to a dead-flat 0-degree roof cost 14.4% (1,648 kWh); going from 20 to 10 degrees cost only 5.8% (671 kWh). This site's earlier PVWatts walkthrough found that going the other way, up to 40 degrees, gained 3.8%. So the full swing from 10 to 40 degrees of tilt moves the total by roughly 9 to 10 percentage points — smaller than the 5.7% a 45-degree azimuth error already costs, and much smaller than the 17.9% a full south-to-west azimuth error costs on the same roof.

What does 'TSRF' or a shading-loss percentage on my proposal actually mean?

Total Solar Resource Fraction is a ratio, not a raw output figure. Solmetric's published definition is that TSRF equals Solar Access (the fraction of available sunlight reaching the array after shading) multiplied by Tilt and Orientation Factor, TOF (the insolation at your actual tilt and azimuth divided by the insolation at the optimal tilt and azimuth for that location), expressed in percent. A TSRF of 91% means the design is expected to capture 91% of what a shade-free array at the ideal tilt and azimuth would get at that location — not 91% of some fixed national number. You can reproduce the pieces yourself: PVWatts gives you the tilt-and-azimuth piece directly by comparing two runs, and its shading field (defaulted to 3%, bundled into the 14.08% total system loss) is the closest free stand-in for the shading piece if your installer will not share the shade-tool report itself.

Why does a proposal ask for a compass reading of my roof, and does it matter if it's magnetic or true?

It matters, because PVWatts measures azimuth from true north, in degrees clockwise from 0 to 360 (180 is due south), and the maps and satellite imagery the tool and most shade-analysis software use are surveyed to true north. A handheld compass on your roof points to magnetic north, and the offset between the two, called declination, varies by location and shifts slowly over time. NOAA's National Centers for Environmental Information publish an official declination calculator (ngdc.noaa.gov/geomag-web) for exactly this conversion. If an installer's azimuth number came straight off a compass with no adjustment, ask whether it was corrected for declination at your address before it went into the production model.