Methodology
How the fishing-day score works
What goes into each score, where the data comes from, and what we deliberately don't do.
The score, in plain English
Every location–species page computes a 0–100 score that answers one question: given today's live conditions, how good is this place for targeting this fish? The score starts from a neutral baseline (60) and adds or subtracts points based on a dozen environmental factors. An "ideal" day scores 85+; a "skip" day scores under 35.
The factors the score considers, roughly in order of impact:
- Water temperature vs species preference — every species has a preferred range and an ideal point. Inside ideal ±3°F is a big positive; outside the active range is a big negative.
- Solunar window — when the moon is near overhead or underfoot, a "major" feeding period may be active. Minor periods happen at moonrise and moonset.
- Weather — thunderstorms, high winds, active NWS alerts — these are safety-first factors and drive the score down hard.
- Tide phase vs species preference — striped bass prefer an incoming tide on the Chesapeake; yellow perch work the slack.
- Wind speed — a light chop (5–15 mph) is actually a positive for many species because it oxygenates the surface and activates baitfish. Calm water and heavy wind both pull scores down.
- Moon phase — some species feed harder under a full moon; others go nocturnal and shy during peak brightness.
- Barometer trend — a falling barometer ahead of a front is positive; rising post-front pressure is neutral-to-negative. Trend is derived from NWS gridpoint pressure forecast: a 6-hour delta classifies the window as rising, falling, or steady.
- Water-quality advisory — an active MDE or analogue advisory pulls down the score for the given location.
Season status (in-season vs closed)
The score is a measure of environmental conditions, not a legal go-ahead. Each page also computes whether today is inside an open harvest season for the species–location's jurisdiction. If harvest is closed, you'll see a prominent banner and an explicit note that catch-and-release may still be permitted, depending on the specific regulation. Always check the regulations block on the page before keeping any fish.
Closed-to-harvest periods come in two flavors: catch-and-release (you can fish, but can't keep — e.g. MD rockfish Jan 1–Apr 30) and no-targeting (you can't legally fish for the species at all, even catch-and-release — e.g. MD rockfish August thermal closure). Pages display distinct banners for each state so the legal framing is unambiguous.
A note on solunar theory
We include solunar windows because they're an industry standard and many anglers schedule trips around them. Solunar theory is disputed. The underlying claim — that fish feed predictably in ~2-hour windows when the moon is overhead or underfoot — has weak empirical support in the peer-reviewed fisheries literature. Plenty of experienced anglers swear by it; plenty of others say it's no better than chance. We surface the windows as one factor among many; we don't weight them so heavily that a solunar hit alone drives a "great day" verdict. Use them with appropriate skepticism.
Limitations
- Barometer trend uses forecast pressure, not observed. The trend is derived from NWS gridpoint hourly pressure forecasts — a 6-hour delta classifies rising/falling/steady. This is a good-enough signal but is not identical to what a weather station's barometer reports; it's a model forecast, not a real-time reading.
- No catch reports. We don't aggregate user-submitted reports or MD DNR's weekly fishing report yet. The score is environmental-conditions only.
- Regulation freshness: auto-flagged but not real-time. Every regulation carries a
lastVerifiedISOdate. A verification script (npm run verify:regs) flags source-page drift; a stale-banner on each page auto-alerts users when regs are > 7 days old. Assume the ground truth is always the state agency. - Location-specific rules aren't fully encoded. Some MD trout waters are catch-and-return by specific water; some VA bass waters have per-river slot limits. The current model treats rules as "per species per jurisdiction per waterbody class" — that covers most but not all cases. Notes fields carry water-specific caveats.
Related reading
- Data sources — every external API we query, with freshness notes.
- itsabeachday methodology — our sibling site's approach to a parallel problem (beach conditions scoring).