Soft Commodity Signals

Good, excellent, and why USDA's crop condition weighting matters

Every Monday afternoon during the growing season, USDA's Crop Progress report drops a table of five numbers per state: very poor, poor, fair, good, excellent. Most market commentary collapses that into one figure, good-plus-excellent, and treats it like a scoreboard. That shortcut works until the week it doesn't, and the week it doesn't is usually the week that moves new-crop futures.

The five buckets and what they actually mean

The condition categories aren't a smooth scale like a school grade. "Fair" isn't the midpoint between poor and good in any statistical sense, it's a subjective call made by a state statistician's office based on extension agent input, county-level observation, and some amount of institutional memory about what "fair" looked like in prior years for that crop and that region. A corn stand at V8 that's slightly moisture-stressed but still on pace gets called fair in July and might get upgraded to good by August if rains come. The categories describe a narrative, not a percentile.

That's the first thing to unlearn before you lean on good-plus-excellent as a single number. It's a convenient aggregate, but it throws away information sitting in the other three buckets.

Why good-plus-excellent alone misses the turn

Say soybean good-excellent sits at 62% one week and 60% the next, a two-point decline that on its own reads as mildly bearish and not much of a story. But look at what happened in poor and very poor over the same week: if those categories jumped from 6% combined to 11% combined, while fair absorbed most of the shift out of good, you've got a crop that's deteriorating faster at the bottom than the top-line number suggests. A drought stress event typically shows up first as a drain from good into fair, then a second wave pushes fair into poor. The good-excellent percentage lags that second wave by a week or two because it only tracks the top two buckets.

This is the weighting problem. USDA itself doesn't publish an official single-number condition index, it reports the raw percentages and lets analysts build their own composite. The most common approach, sometimes called a Crop Condition Index or Brugler-style index, assigns numeric weights to each category, something like 1 for very poor up through 5 for excellent, multiplies each percentage by its weight, and sums the result on a 0-to-500 scale (or normalizes it to 0-100). That index moves when very poor and poor shift even if good-excellent hasn't budged yet, which is exactly the early signal a lot of traders are missing when they only watch the headline pair.

Building your own weighted read

Pull all five percentages weekly, not just the two that get quoted in the wire stories, and compute the weighted score yourself. A simple version:

Index = (1 × very poor%) + (2 × poor%) + (3 × fair%) + (4 × good%) + (5 × excellent%)

Track that number week over week alongside the raw good-excellent figure. When the two diverge, meaning the weighted index is falling faster than good-excellent would imply, that's usually poor and very poor expanding, and it tends to show up in state-level NDVI and vegetation stress readings before it reaches the national tally USDA publishes on Monday.

That lag is the gap that matters for positioning. The crop progress survey is a snapshot collected the prior week and released days later. A regional vegetation-index feed that updates on a similar weekly cadence but doesn't wait on the survey window gives you a second data point to check the weighted score against, and sometimes that second point moves first. That's the gap Soft Commodity Signals' weekly index curves and planted-area layer are built to sit in, ahead of the Monday release rather than reacting to it. If you're already building your own condition index from the raw percentages, pulling a vegetation-index feed from a site built around that same pre-report window is the next logical step.

Worth checking your weighted number against the official USDA good-excellent print once it posts, if only to see which weeks the gap was widest.

Get started

← Back to the blog