The wettest month isn't the worst month

· Ilystics LLC ·

7 min read Original article ↗

HomeGuides › The wettest month isn't the worst month

I build software that turns NOAA weather data into documentation for construction delay claims. A few weeks back I got a number I didn't buy, spent way too long guessing at why, and it turned out a state government had already published the answer.

Richmond loses more workdays in January than in July

January gets 3.67 inches of rain over 6 rain days. July gets 5.44 inches over 8. July is wetter any way you measure it. January still costs more — 15.1 unworkable workdays against 12.2.

It's not just Richmond. I ran 45 metros. About 40 of them peak in January.

Here's why. Rain doesn't stop work. Mud stops work, and mud shows up after the rain does. Winter rain comes in as frontal systems, spread out — one storm every few days, and each one starts its own drying clock before the last one finished. Summer rain comes in as afternoon thunderstorms that stack up together, so their drying time overlaps and you only pay for it once.

Richmond, VA (clay)JanuaryJuly
Rainfall3.67″5.44″
Rain days6.08.2
Workdays lost to rain itself3.35.3
Workdays lost to drying10.86.9
Drying days charged per rain day3.271.30
Total unworkable workdays15.112.2

Any dirt contractor already knows this in their gut. They'd rather eat four inches in two days than half an inch every third day. But nobody bids that way, because contracts count rainfall and rainfall isn't the thing that costs you.

The number I didn't believe

My model said Richmond loses 139 of 261 workdays a year on earthwork. That's over half the year. I didn't buy it, so I went looking.

I guessed wrong three times. Same mistake every time — I sat there reasoning about my own code instead of just measuring it.

Guess one. My intensity factor is flat under half an inch, so a 0.11″ drizzle and a 0.49″ rain set the exact same drying tail. That's obviously dumb. Fixed it. 139 went to 124.6. Real, but not the thing.

Guess two. Frozen ground. When it thaws my model resets a full drying clock, and that sounded expensive. Measured it: happens 1.4 times a year. Nothing.

Guess three. The temperature term — cold weather stretches the drying tail, and January was the worst month everywhere, so this had to be it. I flattened it almost to nothing.

139.0 became 138.8.

That's when I quit guessing and wrote a script to run the real data through every variant I could think of. Nothing got below about 118. Whatever was wrong, it wasn't in any knob I had.

Turns out Tennessee already solved this

The Tennessee Board of Regents publishes a construction spec with a "Standard Baseline" — how many adverse weather days to expect each month, built off NOAA data, used to settle real contractor claims. It defines a weather day as more than 0.10 inches of rain. Same threshold I'd picked on my own.

Their number is 89 calendar days a year. Call it 63.6 workdays. Mine said 139.

But look at the shape instead of the size:

BaselineSeasonal spread (max/min)Worst monthvs. Tennessee
Tennessee published spec3.0×January
Memphis (silt)2.8×January1.9×
Richmond (clay)1.7×January2.2×
Nashville (clay)1.9×January2.3×

Every one picks January, same as they do. Memphis lands almost dead on their spread. And I'm off by a steady 1.9× to 2.3× across two states and two soil types.

If the model were actually broken those ratios would be all over the place. A steady multiplier means I've got the shape right and the level wrong.

Then Ohio said the same thing

Ohio DOT publishes its own version — Table 108.06-1 in the Construction and Material Specifications. Anticipated weather days, in workdays, December through April. Thirty-five days across those five months.

I ran Columbus and Cleveland against it and got the same answer Tennessee gave me: shape matches, level is off by 2.0×, range 1.75× to 2.33×. Three states now, two agencies that have never heard of each other, and the multiplier will not move.

So I pulled my own numbers apart to find out where they come from. Count only the days when weather was visibly happening — rain fell, or the ground was below freezing — and throw away every drying day:

MetroRain + frozen daysOhio DOT allowanceRatio
Cleveland (clay)32.8350.94×
Columbus (silt)35.7351.02×

Both inside 6% of the State of Ohio. Two metros, two different soils, arriving from opposite sides.

The whole 2× is the drying tail. Not some of it. All of it. Ohio counts days a resident engineer can see out a window. There is no line on their table for “it stopped raining Tuesday and the clay still would not carry a track hoe on Thursday,” because measuring that needs a soil model rather than a rain gauge.

Which is inconveniently the exact thing I sell, so take it with whatever salt you like. But the arithmetic is public and so is the table — it is 108.06 in the ODOT spec, and my numbers are on the metro pages. Check it.

Why I stopped worrying about it

Some of that gap is legitimate. Their spec covers building construction. I model earthwork, which eats a lot more weather. They count a day lost at 50% stoppage; I'm all or nothing.

The bigger thing: it cancels out. A delay claim compares what actually happened against that site's own ten-year baseline, and both come out of the same model. Cut every number in half and the answer doesn't move — same verdict, same count of worse years, same percentile.

Where it doesn't cancel is when you publish a straight number like "carry 12 weather days in your bid." Which is exactly what I'd been doing on my public pages.

So I pulled the annual totals off and kept the monthly ones.

The data

Ten years of baselines for 45 metros, CC BY 4.0, JSON download per metro. Every page names the NOAA station it used, how far away it is, the soil, and the drying constant. Where I disagree with the Tennessee numbers, that's on there too.

Example: Richmond, VA · raw JSON

Run it for a specific jobsite

A metro average is a planning figure. Enter a ZIP and the estimator runs the same model against the station nearest that site, on that site's soil, and returns a documented exhibit. Free, no account.

Open the estimator

Figures model soil-dependent site work — earthwork, grading, excavation, foundations and underground utilities. Enclosed and vertical construction is not modelled. These are planning figures derived from station observations and a deterministic soil model, not site-specific geotechnical findings.

Frequently asked questions

Why does January cost more construction workdays than July?

Because drying time, not rainfall, is what stops soil-dependent work. Winter rain arrives as spread-out frontal systems and each event starts its own drying clock, often before the previous one has run out. Summer rain arrives as clustered convective storms whose drying tails overlap, so you pay for the tail once instead of three times. In Richmond the model charges 3.27 drying days per rain day in January against 1.30 in July.

Does more rainfall always mean more lost workdays?

No. Spacing matters more than total. Richmond gets 3.67 inches over 6 rain days in January and 5.44 inches over 8 in July, and January costs more workdays. The same is true across metros: several wetter cities lose fewer days than drier ones because the water drains or because the rain arrives all at once.

How do you know the model is right?

It is right about the shape and off by a level constant, and the constant is now explained. Measured against the Tennessee Board of Regents Standard Baseline and against Ohio DOT Table 108.06-1, the seasonal pattern matches almost exactly, the worst month agrees, and the absolute counts run about twice as high across three states and two soil types. Splitting those counts apart shows why: days when rain fell or the ground was frozen match the Ohio allowance within 6 percent, and the entire remaining difference is soil drying time, which a contract weather table has no mechanism to measure.