Timing Projection Methodology
Every 5 minutes, Steelhead Almanac projects what each Steelhead Alley river is about to do over the next 18 hours, and surfaces the result as a Timing badge next to the current Rating on every river page. This page explains how that projection is computed, what each state means, and where the inputs come from.
By looking ahead at rising and falling water levels, our modeling helps anglers target the optimal fishing windows. Timing projections should always be used alongside the current rating to determine when conditions are best for fishing.
How to use a timing projection
- Start with the current gauge reading, then look at the forecast target time and projected flow.
- Follow the projected rise or recession against the river’s reference range to plan the next water window.
- Recheck as rain arrives and the gauge changes. We retain issued forecasts and compare them with later readings at the target time.
Forecast confidence: Confidence describes the strength of the forecast inputs and model fit. The recorded checks below show how the flow forecasts actually performed.
Forecast check: Grand River, October 6, 2026
Dated example, not current conditions. Captured .
| Reading or estimate | Value | Recorded time / basis |
|---|---|---|
| Flow when the forecast was prepared Gauge reading |
31.3 CFS | Oct 4, 2026 at 8:00 PM EDT |
| Forecast flow Recorded before the target time |
37.8 CFS | Issued Oct 4, 2026 at 8:45:48 PM EDT; target Oct 6 at 8:00 PM EDT |
| Actual flow at the target time Same river, same gauge, exact target time |
24.1 CFS | Oct 6, 2026 at 8:00 PM EDT |
| Forecast error Forecast compared with actual flow |
13.7 CFS high | 37.8 − 24.1 CFS |
| Unchanged-flow comparison Starting flow held unchanged |
7.2 CFS high | 31.3 − 24.1 CFS |
The forecast called for a rise from 31.3 to 37.8 CFS. Instead, the Grand fell to 24.1 CFS. Holding the starting flow unchanged would have been closer on this one. That is why we keep both the forecast and the gauge result: the river gets the last word, and we keep the score.
Recorded check 68 · own-gauge-flow-v1 · model c5c4a91f. Latest eligible scored case at capture, selected by target time rather than by how well the forecast performed.
Sources and further explanation
Read the Grand River briefing →
Published by Steelhead Almanac / Buell EA LLC. Agency observations, Almanac estimates and fishing reports serve different purposes. Suggest a correction with its source.
The 7 Timing States
| State | Technical Definition | Angler Meaning | Badge Display |
|---|---|---|---|
| opening | Flow is moving into the optimal window. | Flow may enter the reference range; check the current rating and access separately. | Renders (Green) |
| closing | Flow is currently inside the optimal window, but projected to leave it. | Flow is in range now but may leave it; this does not establish safe access or fish presence. | Renders (Yellow) |
| blown | Flow is above the optimal window and peak is ahead or no recovery within 18h. | Flow is above the reference range. Check local conditions; clarity is not directly measured by this state. | Renders (Red) |
| recovering | Flow is dropping back toward fishable, but clarity typically lags flow. | Water dropping; watch clarity before driving out. | Renders (Cyan) |
| low | Flow is below the optimal window and projected to remain below it. | Flow is below the reference range. This state alone does not establish clarity or fish behavior. | Renders (Gray) |
| stable | Flow is inside the optimal window and projected to remain inside it. | Projected flow stays in range; other inputs can still change the rating. | Silent |
| unknown | Insufficient signals or confidence is below floor (0.2). | No usable timing projection. Check fresh observations and local conditions before planning. | Silent |
Next-Event Indicators
When a state transition is imminent, the projector identifies the next inflection point within the 18-hour window:
| Event Indicator | Definition |
|---|---|
| rises_into_range | Flow is projected to rise into the optimal window from below. |
| drops_into_range | Flow is projected to fall into the optimal window from above (the drop). |
| rises_above_range | Flow is projected to rise above the optimal range, blowing the river out. |
| drops_below_range | Flow is projected to drop below the optimal fishable range. |
| peaks | Flow is projected to hit its maximum storm peak and begin receding. |
How Confidence is Computed
Confidence is a 0.0 – 1.0 score that blends four factors: how trustworthy the strongest input source is, how far ahead in time we're projecting, how well a flow trend can be fit to the recent 24-hour data, and how active the regional storm lifecycle is.
High (0.8+)
Trust the projection. Strongly backed by NWS AHPS forecast points or high-correlation regressions.
Moderate (0.5–0.8)
Projection is directional. Combine with current ratings before making a final trip choice.
Low (Below 0.4)
Do not commit to the timing. Default purely to the river's current Rating.
Data Signal Cascade
The projector gathers four primary input signals to construct the sub-daily hydrologic projection:
-
1. NWS AHPS (Advanced Hydrologic Prediction Service)
Where available, we fetch official NOAA/NWS river forecast graphs. These are highly accurate, hydrologist-reviewed data points. Not all Steelhead Alley streams have AHPS monitoring stations.
-
2. Storm Pulses
We maintain a database of storm events. Rain-driven flow projections require quantitative NOAA rainfall forecasts, converted to inches over the weather periods. Weather phrases and rain probabilities alone do not supply a rainfall amount. When quantitative coverage is missing, this rain-driven model is skipped; that does not mean no rain is expected.
-
3. Recent Flow Regression
Local flow models require a dated gauge measurement within the ingestion freshness limit (normally two hours). Saving an old reading again does not make it current. Trend fitting uses distinct observation times and excludes readings unavailable at issuance. A confirmed peak followed by three consecutive hourly observations and a decline of at least 5% replaces an older rising trend with a recession fit; that short fit is extrapolated only across the number of hours it covers. Otherwise, rising trends are limited to 24 hours ahead and recession extrapolation to 48 hours. Dam-controlled rivers use official guidance where available, otherwise unchanged fresh flow. Missing or stale local flow remains unavailable. These rules do not predict dam releases or establish forecast accuracy.
-
4. Storm Lifecycle Context
Our system monitors regional weather conditions to determine the storm phase (quiet, watching, active, recovering). This context modulates the confidence score rather than driving the flow projection curve directly.
UI Integration
- River Show Pages: Renders as an inline badge (e.g.
Low water,Closing ~4h) adjacent to the main rating. Hovering or clicking reveals confidence and sources. - Smart Gauge: Displays a dashed 18-hour projection curve extending from the "NOW" indicator.
- Day Analysis Chart: The flow timeline is stretched to 90 hours, showing a dashed future projection with crossing markers when events occur.
- Explorer Map: Hovering over a river pin shows the timing badge directly inside the popup.
- Public API: Accessible via the
timingJSON payload on our public API endpoints.
Prospective flow forecast checks
We are recording future flow predictions from the twice-daily 7-day Index forecast before their target time, then comparing them with that river's own primary USGS gauge. This checks flow in cubic feet per second, not catches, fishing safety, clarity, the whole Index, or the separate 18-hour timing display.
Each prediction keeps its declared target time: the selected official river-forecast point, or the exact hour used by our flow model. We take the closest observed gauge reading within 30 minutes of that target, allowing 24 hours for arrival. Missing readings and excluded proxy rivers stay in the counts. The comparison forecast is the last fresh measured flow available when the prediction was prepared, held unchanged.
Aggregate last checked: 2026-11-03T23:00:33+00:00. First locked prediction: 2026-10-05 00:45:49. 12,276 recorded cases.
- Excluded not prospective: 3
- Excluded proxy: 1,812
- Missing actual: 13
- Missing prediction: 36
- Pending: 1,854
- Scored: 8,558
Model version c5c4a91f9199
1860 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 0-24h | 170 / 145 | 21.0 | 21.1 / 18.1 (n=144) | 87 / 144 |
| unknown | 3 / 0 | Pending | No paired outcomes | 0 / 0 |
| 24-72h | 614 / 514 | 42.6 | 42.7 / 22.9 (n=512) | 349 / 512 |
| >72h | 1073 / 898 | 63.8 | 64.0 / 42.3 (n=895) | 615 / 895 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 60 / 60 | 16.0 | 16.0 / 4.9 (n=60) | 48 / 60 |
| conneaut-creek | 60 / 60 | 4.2 | 4.2 / 3.9 (n=60) | 32 / 60 |
| chagrin-river | 60 / 60 | 9.5 | 9.5 / 7.4 (n=60) | 33 / 60 |
| vermilion-river | 60 / 60 | 5.9 | 6.4 / 5.0 (n=54) | 35 / 54 |
| grand-river | 60 / 59 | 4.2 | 4.2 / 3.3 (n=59) | 36 / 59 |
| cuyahoga-river | 60 / 59 | 17.2 | 17.2 / 27.2 (n=59) | 16 / 59 |
| brandy-run | 60 / 60 | 0.2 | 0.2 / 0.2 (n=60) | 52 / 60 |
| elk-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 60 / 60 | 1.3 | 1.3 / 0.8 (n=60) | 37 / 60 |
| twenty-mile-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 60 / 59 | 10.4 | 10.4 / 10.9 (n=59) | 23 / 59 |
| chautauqua-creek | 60 / 60 | 1.1 | 1.1 / 0.6 (n=60) | 38 / 60 |
| eighteen-mile-creek | 60 / 60 | 1.2 | 1.2 / 0.8 (n=60) | 41 / 60 |
| huron-river | 60 / 60 | 14.5 | 14.5 / 10.7 (n=60) | 37 / 60 |
| black-river | 60 / 60 | 17.8 | 17.8 / 17.1 (n=60) | 42 / 60 |
| euclid-creek | 60 / 60 | 2.4 | 2.4 / 1.3 (n=60) | 47 / 60 |
| canadaway-creek | 60 / 60 | 1.0 | 1.0 / 0.8 (n=60) | 20 / 60 |
| silver-creek | 60 / 60 | 0.4 | 0.4 / 0.2 (n=60) | 51 / 60 |
| buffalo-creek | 60 / 60 | 8.0 | 8.0 / 3.8 (n=60) | 47 / 60 |
| cazenovia-creek | 60 / 60 | 15.0 | 15.0 / 4.2 (n=60) | 40 / 60 |
| salmon-river | 60 / 60 | 7.1 | 7.1 / 3.6 (n=60) | 46 / 60 |
| oak-orchard-creek | 60 / 60 | 571.0 | 571.0 / 282.8 (n=60) | 45 / 60 |
| genesee-river | 60 / 60 | 200.4 | 200.4 / 160.2 (n=60) | 46 / 60 |
| sandy-creek-hamlin | 60 / 60 | 27.6 | 27.6 / 10.9 (n=60) | 46 / 60 |
| irondequoit-creek | 60 / 60 | 33.6 | 33.6 / 12.2 (n=60) | 51 / 60 |
| johnson-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| eighteenmile-creek-niagara | 60 / 60 | 36.7 | 36.7 / 14.8 (n=60) | 48 / 60 |
| black-river-watertown | 60 / 60 | 279.1 | 279.1 / 226.4 (n=60) | 45 / 60 |
| sandy-creek-adams | 60 / 60 | 84.6 | 84.6 / 57.3 (n=60) | 49 / 60 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 1704 / 1431 | 51.1 | 51.3 / 32.8 (n=1425) | 945 / 1425 |
| recovering | 72 / 48 | 66.0 | 66.0 / 32.3 (n=48) | 36 / 48 |
| watching | 72 / 66 | 68.7 | 68.7 / 54.2 (n=66) | 59 / 66 |
| active | 12 / 12 | 111.0 | 111.0 / 23.9 (n=12) | 11 / 12 |
Model version 395a5868624c
1860 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 0-24h | 214 / 184 | 42.6 | 42.8 / 29.8 (n=183) | 139 / 183 |
| 24-72h | 604 / 504 | 86.3 | 86.7 / 61.1 (n=502) | 374 / 502 |
| >72h | 1042 / 872 | 187.3 | 187.9 / 176.1 (n=869) | 497 / 869 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 60 / 60 | 47.7 | 47.7 / 39.2 (n=60) | 33 / 60 |
| conneaut-creek | 60 / 60 | 3.8 | 3.8 / 2.8 (n=60) | 45 / 60 |
| chagrin-river | 60 / 60 | 72.8 | 72.8 / 71.7 (n=60) | 24 / 60 |
| vermilion-river | 60 / 60 | 45.8 | 45.8 / 34.1 (n=60) | 31 / 60 |
| grand-river | 60 / 60 | 14.5 | 14.5 / 5.4 (n=60) | 52 / 60 |
| cuyahoga-river | 60 / 60 | 217.3 | 217.3 / 105.1 (n=60) | 39 / 60 |
| brandy-run | 60 / 60 | 0.5 | 0.5 / 0.5 (n=60) | 36 / 60 |
| elk-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 60 / 60 | 4.1 | 4.1 / 3.1 (n=60) | 42 / 60 |
| twenty-mile-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 60 / 60 | 63.4 | 63.4 / 37.2 (n=60) | 50 / 60 |
| chautauqua-creek | 60 / 60 | 2.9 | 2.9 / 1.9 (n=60) | 35 / 60 |
| eighteen-mile-creek | 60 / 60 | 7.4 | 7.4 / 6.7 (n=60) | 33 / 60 |
| huron-river | 60 / 60 | 93.5 | 93.5 / 27.4 (n=60) | 53 / 60 |
| black-river | 60 / 60 | 80.1 | 80.1 / 57.7 (n=60) | 30 / 60 |
| euclid-creek | 60 / 60 | 25.4 | 25.4 / 24.2 (n=60) | 46 / 60 |
| canadaway-creek | 60 / 60 | 3.7 | 3.7 / 2.5 (n=60) | 39 / 60 |
| silver-creek | 60 / 60 | 1.0 | 1.0 / 0.9 (n=60) | 28 / 60 |
| buffalo-creek | 60 / 60 | 25.9 | 25.9 / 20.8 (n=60) | 42 / 60 |
| cazenovia-creek | 60 / 60 | 29.6 | 31.8 / 28.1 (n=54) | 41 / 54 |
| salmon-river | 60 / 60 | 13.8 | 13.8 / 10.1 (n=60) | 41 / 60 |
| oak-orchard-creek | 60 / 60 | 347.6 | 347.6 / 265.0 (n=60) | 35 / 60 |
| genesee-river | 60 / 60 | 517.2 | 517.2 / 295.1 (n=60) | 45 / 60 |
| sandy-creek-hamlin | 60 / 60 | 15.5 | 15.5 / 9.7 (n=60) | 41 / 60 |
| irondequoit-creek | 60 / 60 | 24.2 | 24.2 / 18.1 (n=60) | 44 / 60 |
| johnson-creek | 60 / 0 | Pending | No paired outcomes | 0 / 0 |
| eighteenmile-creek-niagara | 60 / 60 | 32.9 | 32.9 / 19.1 (n=60) | 36 / 60 |
| black-river-watertown | 60 / 60 | 1,585.1 | 1,585.1 / 1,809.1 (n=60) | 30 / 60 |
| sandy-creek-adams | 60 / 60 | 302.1 | 302.1 / 259.3 (n=60) | 39 / 60 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 1200 / 1002 | 110.7 | 110.7 / 84.0 (n=1002) | 654 / 1002 |
| recovering | 102 / 90 | 345.0 | 345.0 / 372.4 (n=90) | 59 / 90 |
| watching | 528 / 438 | 146.3 | 148.2 / 152.3 (n=432) | 276 / 432 |
| active | 30 / 30 | 286.0 | 286.0 / 187.2 (n=30) | 21 / 30 |
Model version c2a5feaf2ad6
186 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 0-24h | 31 / 26 | 262.0 | 262.0 / 169.3 (n=26) | 19 / 26 |
| 24-72h | 62 / 52 | 233.2 | 233.2 / 225.2 (n=52) | 30 / 52 |
| >72h | 93 / 78 | 355.4 | 355.4 / 249.7 (n=78) | 41 / 78 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 6 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 6 / 6 | 79.3 | 79.3 / 55.6 (n=6) | 2 / 6 |
| conneaut-creek | 6 / 6 | 8.0 | 8.0 / 7.3 (n=6) | 4 / 6 |
| chagrin-river | 6 / 6 | 95.8 | 95.8 / 108.7 (n=6) | 2 / 6 |
| vermilion-river | 6 / 6 | 52.6 | 52.6 / 49.0 (n=6) | 6 / 6 |
| grand-river | 6 / 6 | 11.9 | 11.9 / 10.1 (n=6) | 4 / 6 |
| cuyahoga-river | 6 / 6 | 224.4 | 224.4 / 195.7 (n=6) | 4 / 6 |
| brandy-run | 6 / 6 | 0.7 | 0.7 / 0.6 (n=6) | 5 / 6 |
| elk-creek | 6 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 6 / 6 | 4.6 | 4.6 / 4.1 (n=6) | 3 / 6 |
| twenty-mile-creek | 6 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 6 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 6 / 6 | 72.4 | 72.4 / 60.8 (n=6) | 3 / 6 |
| chautauqua-creek | 6 / 6 | 3.6 | 3.6 / 3.2 (n=6) | 1 / 6 |
| eighteen-mile-creek | 6 / 6 | 6.4 | 6.4 / 5.9 (n=6) | 3 / 6 |
| huron-river | 6 / 6 | 60.5 | 60.5 / 49.3 (n=6) | 6 / 6 |
| black-river | 6 / 6 | 42.3 | 42.3 / 74.7 (n=6) | 1 / 6 |
| euclid-creek | 6 / 6 | 27.6 | 27.6 / 26.3 (n=6) | 4 / 6 |
| canadaway-creek | 6 / 6 | 4.2 | 4.2 / 3.4 (n=6) | 5 / 6 |
| silver-creek | 6 / 6 | 1.4 | 1.4 / 1.3 (n=6) | 4 / 6 |
| buffalo-creek | 6 / 6 | 9.6 | 9.6 / 14.1 (n=6) | 3 / 6 |
| cazenovia-creek | 6 / 6 | 9.7 | 9.7 / 12.6 (n=6) | 4 / 6 |
| salmon-river | 6 / 6 | 33.1 | 33.1 / 10.7 (n=6) | 4 / 6 |
| oak-orchard-creek | 6 / 6 | 150.3 | 150.3 / 150.3 (n=6) | 0 / 6 |
| genesee-river | 6 / 6 | 752.5 | 752.5 / 448.8 (n=6) | 6 / 6 |
| sandy-creek-hamlin | 6 / 6 | 15.1 | 15.1 / 10.8 (n=6) | 5 / 6 |
| irondequoit-creek | 6 / 6 | 30.6 | 30.6 / 28.7 (n=6) | 4 / 6 |
| johnson-creek | 6 / 0 | Pending | No paired outcomes | 0 / 0 |
| eighteenmile-creek-niagara | 6 / 6 | 12.6 | 12.6 / 25.8 (n=6) | 1 / 6 |
| black-river-watertown | 6 / 6 | 747.4 | 747.4 / 2,886.7 (n=6) | 0 / 6 |
| sandy-creek-adams | 6 / 6 | 5,320.3 | 5,320.3 / 1,687.5 (n=6) | 6 / 6 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 108 / 84 | 42.4 | 42.4 / 38.0 (n=84) | 50 / 84 |
| watching | 66 / 60 | 182.1 | 182.1 / 363.8 (n=60) | 33 / 60 |
| active | 12 / 12 | 2,681.3 | 2,681.3 / 881.1 (n=12) | 7 / 12 |
Model version 467e92d71b50
372 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 0-24h | 31 / 26 | 262.0 | 262.0 / 169.3 (n=26) | 19 / 26 |
| 24-72h | 124 / 104 | 137.4 | 139.2 / 206.0 (n=102) | 55 / 102 |
| >72h | 217 / 182 | 231.0 | 234.7 / 217.6 (n=178) | 96 / 178 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 12 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 12 / 12 | 57.2 | 55.5 / 55.6 (n=6) | 0 / 6 |
| conneaut-creek | 12 / 12 | 9.3 | 9.3 / 8.3 (n=12) | 10 / 12 |
| chagrin-river | 12 / 12 | 109.7 | 109.7 / 110.3 (n=12) | 2 / 12 |
| vermilion-river | 12 / 12 | 59.5 | 59.5 / 52.9 (n=12) | 11 / 12 |
| grand-river | 12 / 12 | 12.3 | 12.3 / 10.5 (n=12) | 7 / 12 |
| cuyahoga-river | 12 / 12 | 227.4 | 227.4 / 184.9 (n=12) | 10 / 12 |
| brandy-run | 12 / 12 | 0.7 | 0.7 / 0.5 (n=12) | 11 / 12 |
| elk-creek | 12 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 12 / 12 | 4.5 | 4.5 / 4.1 (n=12) | 6 / 12 |
| twenty-mile-creek | 12 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 12 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 12 / 12 | 76.9 | 76.9 / 63.5 (n=12) | 9 / 12 |
| chautauqua-creek | 12 / 12 | 4.5 | 4.5 / 3.6 (n=12) | 5 / 12 |
| eighteen-mile-creek | 12 / 12 | 6.7 | 6.7 / 6.0 (n=12) | 6 / 12 |
| huron-river | 12 / 12 | 58.3 | 58.3 / 47.9 (n=12) | 10 / 12 |
| black-river | 12 / 12 | 82.4 | 82.4 / 77.9 (n=12) | 2 / 12 |
| euclid-creek | 12 / 12 | 28.2 | 28.2 / 26.7 (n=12) | 11 / 12 |
| canadaway-creek | 12 / 12 | 4.4 | 4.4 / 3.4 (n=12) | 11 / 12 |
| silver-creek | 12 / 12 | 1.4 | 1.4 / 1.3 (n=12) | 8 / 12 |
| buffalo-creek | 12 / 12 | 15.1 | 15.1 / 14.5 (n=12) | 7 / 12 |
| cazenovia-creek | 12 / 12 | 15.8 | 15.8 / 13.2 (n=12) | 8 / 12 |
| salmon-river | 12 / 12 | 15.8 | 15.8 / 15.0 (n=12) | 2 / 12 |
| oak-orchard-creek | 12 / 12 | 121.7 | 121.7 / 121.7 (n=12) | 0 / 12 |
| genesee-river | 12 / 12 | 658.9 | 658.9 / 348.7 (n=12) | 12 / 12 |
| sandy-creek-hamlin | 12 / 12 | 19.8 | 19.8 / 12.3 (n=12) | 11 / 12 |
| irondequoit-creek | 12 / 12 | 29.3 | 29.3 / 28.9 (n=12) | 1 / 12 |
| johnson-creek | 12 / 0 | Pending | No paired outcomes | 0 / 0 |
| eighteenmile-creek-niagara | 12 / 12 | 32.9 | 32.9 / 30.0 (n=12) | 7 / 12 |
| black-river-watertown | 12 / 12 | 1,705.8 | 1,705.8 / 2,737.5 (n=12) | 0 / 12 |
| sandy-creek-adams | 12 / 12 | 1,903.6 | 1,903.6 / 1,394.0 (n=12) | 3 / 12 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 210 / 162 | 42.1 | 41.5 / 36.6 (n=156) | 102 / 156 |
| watching | 120 / 108 | 265.9 | 265.9 / 358.0 (n=108) | 48 / 108 |
| active | 30 / 30 | 650.6 | 650.6 / 422.8 (n=30) | 18 / 30 |
| recovering | 12 / 12 | 673.8 | 673.8 / 590.8 (n=12) | 2 / 12 |
Model version ae671bd0df74
2790 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 24-72h | 930 / 774 | 87.1 | 87.1 / 87.3 (n=774) | 294 / 774 |
| >72h | 1643 / 1366 | 96.4 | 96.4 / 113.0 (n=1366) | 452 / 1366 |
| 0-24h | 217 / 182 | 85.1 | 85.1 / 56.1 (n=182) | 91 / 182 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 90 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 90 / 84 | 58.8 | 58.8 / 68.6 (n=84) | 14 / 84 |
| conneaut-creek | 90 / 90 | 8.8 | 8.8 / 9.1 (n=90) | 19 / 90 |
| chagrin-river | 90 / 90 | 97.6 | 97.6 / 118.8 (n=90) | 18 / 90 |
| vermilion-river | 90 / 84 | 44.8 | 44.8 / 55.0 (n=84) | 15 / 84 |
| grand-river | 90 / 90 | 11.0 | 11.0 / 12.4 (n=90) | 33 / 90 |
| cuyahoga-river | 90 / 90 | 96.2 | 96.2 / 147.0 (n=90) | 31 / 90 |
| brandy-run | 90 / 90 | 0.7 | 0.7 / 0.5 (n=90) | 68 / 90 |
| elk-creek | 90 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 90 / 90 | 5.9 | 5.9 / 7.0 (n=90) | 62 / 90 |
| twenty-mile-creek | 90 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 90 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 90 / 90 | 85.7 | 85.7 / 71.0 (n=90) | 28 / 90 |
| chautauqua-creek | 90 / 90 | 4.8 | 4.8 / 3.0 (n=90) | 58 / 90 |
| eighteen-mile-creek | 90 / 90 | 6.7 | 6.7 / 7.7 (n=90) | 20 / 90 |
| huron-river | 90 / 90 | 30.7 | 30.7 / 36.0 (n=90) | 31 / 90 |
| black-river | 90 / 90 | 66.3 | 66.3 / 75.4 (n=90) | 23 / 90 |
| euclid-creek | 90 / 90 | 10.4 | 10.4 / 15.1 (n=90) | 44 / 90 |
| canadaway-creek | 90 / 90 | 6.3 | 6.3 / 5.4 (n=90) | 46 / 90 |
| silver-creek | 90 / 90 | 1.4 | 1.4 / 1.3 (n=90) | 36 / 90 |
| buffalo-creek | 90 / 90 | 20.5 | 20.5 / 28.0 (n=90) | 22 / 90 |
| cazenovia-creek | 90 / 90 | 17.2 | 17.2 / 19.7 (n=90) | 26 / 90 |
| salmon-river | 90 / 90 | 31.3 | 31.3 / 21.0 (n=90) | 52 / 90 |
| oak-orchard-creek | 90 / 84 | 131.9 | 131.9 / 131.9 (n=84) | 0 / 84 |
| genesee-river | 90 / 90 | 357.2 | 357.2 / 161.8 (n=90) | 54 / 90 |
| sandy-creek-hamlin | 90 / 90 | 13.6 | 13.6 / 12.1 (n=90) | 45 / 90 |
| irondequoit-creek | 90 / 90 | 37.9 | 37.9 / 30.8 (n=90) | 43 / 90 |
| johnson-creek | 90 / 0 | Pending | No paired outcomes | 0 / 0 |
| eighteenmile-creek-niagara | 90 / 90 | 14.2 | 14.2 / 15.5 (n=90) | 17 / 90 |
| black-river-watertown | 90 / 90 | 1,045.2 | 1,045.2 / 1,312.4 (n=90) | 17 / 90 |
| sandy-creek-adams | 90 / 90 | 194.6 | 194.6 / 229.6 (n=90) | 15 / 90 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 1902 / 1560 | 69.7 | 69.7 / 86.6 (n=1560) | 531 / 1560 |
| active | 132 / 108 | 134.5 | 134.5 / 96.7 (n=108) | 26 / 108 |
| watching | 450 / 390 | 80.1 | 80.1 / 76.4 (n=390) | 216 / 390 |
| recovering | 306 / 264 | 227.5 | 227.5 / 215.0 (n=264) | 64 / 264 |
Model version 48521c910d45
2976 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 0-24h | 248 / 216 | 26.4 | 26.4 / 26.4 (n=216) | 126 / 216 |
| 24-72h | 992 / 858 | 25.4 | 25.4 / 28.2 (n=858) | 390 / 858 |
| >72h | 1736 / 1258 | 36.0 | 36.0 / 41.9 (n=1258) | 443 / 1258 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 96 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 96 / 87 | 3.4 | 3.4 / 2.9 (n=87) | 40 / 87 |
| conneaut-creek | 96 / 87 | 2.1 | 2.1 / 1.8 (n=87) | 47 / 87 |
| chagrin-river | 96 / 87 | 4.5 | 4.5 / 4.2 (n=87) | 35 / 87 |
| vermilion-river | 96 / 87 | 1.8 | 1.8 / 7.0 (n=87) | 5 / 87 |
| grand-river | 96 / 87 | 12.9 | 12.9 / 15.6 (n=87) | 27 / 87 |
| cuyahoga-river | 96 / 87 | 59.4 | 59.4 / 36.9 (n=87) | 64 / 87 |
| brandy-run | 96 / 87 | 0.1 | 0.1 / 0.0 (n=87) | 48 / 87 |
| elk-creek | 96 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 96 / 76 | 2.0 | 2.0 / 0.7 (n=76) | 54 / 76 |
| twenty-mile-creek | 96 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 96 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 96 / 87 | 6.5 | 6.5 / 7.6 (n=87) | 26 / 87 |
| chautauqua-creek | 96 / 87 | 1.2 | 1.2 / 0.8 (n=87) | 75 / 87 |
| eighteen-mile-creek | 96 / 87 | 1.6 | 1.6 / 1.1 (n=87) | 65 / 87 |
| huron-river | 96 / 87 | 3.1 | 3.1 / 4.3 (n=87) | 26 / 87 |
| black-river | 96 / 87 | 2.3 | 2.3 / 8.4 (n=87) | 15 / 87 |
| euclid-creek | 96 / 81 | 1.9 | 1.9 / 1.2 (n=81) | 47 / 81 |
| canadaway-creek | 96 / 87 | 0.4 | 0.4 / 0.3 (n=87) | 37 / 87 |
| silver-creek | 96 / 87 | 0.6 | 0.6 / 0.6 (n=87) | 36 / 87 |
| buffalo-creek | 96 / 87 | 3.2 | 3.2 / 1.9 (n=87) | 60 / 87 |
| cazenovia-creek | 96 / 87 | 2.6 | 2.6 / 1.3 (n=87) | 60 / 87 |
| salmon-river | 96 / 87 | 10.4 | 10.4 / 9.7 (n=87) | 27 / 87 |
| oak-orchard-creek | 96 / 87 | 165.3 | 165.3 / 165.3 (n=87) | 0 / 87 |
| genesee-river | 96 / 87 | 248.7 | 248.7 / 205.0 (n=87) | 35 / 87 |
| sandy-creek-hamlin | 96 / 87 | 8.0 | 8.0 / 7.5 (n=87) | 31 / 87 |
| irondequoit-creek | 96 / 87 | 2.5 | 2.5 / 2.2 (n=87) | 41 / 87 |
| johnson-creek | 96 / 87 | 19.1 | 19.1 / 17.3 (n=87) | 27 / 87 |
| eighteenmile-creek-niagara | 96 / 87 | 8.8 | 8.8 / 12.5 (n=87) | 0 / 87 |
| black-river-watertown | 96 / 87 | 259.8 | 259.8 / 414.5 (n=87) | 18 / 87 |
| sandy-creek-adams | 96 / 87 | 5.5 | 5.5 / 19.1 (n=87) | 13 / 87 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 2976 / 2332 | 31.2 | 31.2 / 35.4 (n=2332) | 959 / 2332 |
Model version b3f961a97961
2232 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.
Elapsed forecast lead
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| 24-72h | 744 / 213 | 29.2 | 29.2 / 26.0 (n=213) | 105 / 213 |
| >72h | 1302 / 27 | 18.5 | 18.5 / 21.0 (n=27) | 12 / 27 |
| 0-24h | 186 / 79 | 30.5 | 30.5 / 25.9 (n=79) | 51 / 79 |
River breakdown
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| ashtabula-river | 72 / 0 | Pending | No paired outcomes | 0 / 0 |
| rocky-river | 72 / 12 | 0.8 | 0.8 / 0.7 (n=12) | 2 / 12 |
| conneaut-creek | 72 / 12 | 1.5 | 1.5 / 0.9 (n=12) | 5 / 12 |
| chagrin-river | 72 / 12 | 2.8 | 2.8 / 2.1 (n=12) | 4 / 12 |
| vermilion-river | 72 / 12 | 1.6 | 1.6 / 1.1 (n=12) | 5 / 12 |
| grand-river | 72 / 12 | 5.7 | 5.7 / 2.0 (n=12) | 8 / 12 |
| cuyahoga-river | 72 / 12 | 71.1 | 71.1 / 56.0 (n=12) | 5 / 12 |
| brandy-run | 72 / 12 | 0.1 | 0.1 / 0.1 (n=12) | 6 / 12 |
| elk-creek | 72 / 0 | Pending | No paired outcomes | 0 / 0 |
| walnut-creek | 72 / 7 | 1.5 | 1.5 / 1.1 (n=7) | 4 / 7 |
| twenty-mile-creek | 72 / 0 | Pending | No paired outcomes | 0 / 0 |
| crooked-creek | 72 / 0 | Pending | No paired outcomes | 0 / 0 |
| cattaraugus-creek | 72 / 12 | 13.2 | 13.2 / 6.8 (n=12) | 11 / 12 |
| chautauqua-creek | 72 / 12 | 0.5 | 0.5 / 0.3 (n=12) | 10 / 12 |
| eighteen-mile-creek | 72 / 12 | 1.3 | 1.3 / 1.4 (n=12) | 6 / 12 |
| huron-river | 72 / 12 | 2.6 | 2.6 / 1.2 (n=12) | 9 / 12 |
| black-river | 72 / 12 | 1.8 | 1.8 / 1.0 (n=12) | 7 / 12 |
| euclid-creek | 72 / 12 | 3.4 | 3.4 / 2.5 (n=12) | 9 / 12 |
| canadaway-creek | 72 / 12 | 0.3 | 0.3 / 0.3 (n=12) | 4 / 12 |
| silver-creek | 72 / 12 | 0.4 | 0.4 / 0.3 (n=12) | 10 / 12 |
| buffalo-creek | 72 / 12 | 5.2 | 5.2 / 2.6 (n=12) | 8 / 12 |
| cazenovia-creek | 72 / 12 | 4.4 | 4.4 / 2.0 (n=12) | 10 / 12 |
| salmon-river | 72 / 12 | 3.6 | 3.6 / 2.7 (n=12) | 4 / 12 |
| oak-orchard-creek | 72 / 12 | 155.8 | 155.8 / 155.8 (n=12) | 0 / 12 |
| genesee-river | 72 / 12 | 288.6 | 288.6 / 226.3 (n=12) | 6 / 12 |
| sandy-creek-hamlin | 72 / 12 | 15.8 | 15.8 / 14.6 (n=12) | 4 / 12 |
| irondequoit-creek | 72 / 12 | 6.9 | 6.9 / 5.9 (n=12) | 9 / 12 |
| johnson-creek | 72 / 12 | 19.1 | 19.1 / 11.1 (n=12) | 7 / 12 |
| eighteenmile-creek-niagara | 72 / 12 | 7.9 | 7.9 / 9.3 (n=12) | 4 / 12 |
| black-river-watertown | 72 / 12 | 134.3 | 134.3 / 164.2 (n=12) | 5 / 12 |
| sandy-creek-adams | 72 / 12 | 10.5 | 10.5 / 8.0 (n=12) | 6 / 12 |
Modeled storm state when issued (not observed storm truth)
| Group | Cases / scored | Mean absolute error, CFS | Paired model / unchanged-flow error, CFS | Worse than unchanged flow |
|---|---|---|---|---|
| quiet | 2178 / 314 | 29.0 | 29.0 / 25.9 (n=314) | 167 / 314 |
| recovering | 12 / 4 | 0.9 | 0.9 / 1.3 (n=4) | 0 / 4 |
| active | 6 / 1 | 10.7 | 10.7 / 3.0 (n=1) | 1 / 1 |
| watching | 36 / 0 | Pending | No paired outcomes | 0 / 0 |
Gauge values are provisional as stored when evaluated; corrections made before evaluation can be included. Newly inserted readings after the arrival deadline are excluded. Once evaluated, results and missing outcomes are frozen. Neighboring rivers and repeated forecasts share weather and are not independent trials. Small samples do not establish forecast skill, and no score here automatically enables stronger fishing claims.
Frequently Asked Questions
How often does the projection update?
Projections are updated every 5 minutes server-side through cache invalidation, utilizing fresh feeds from NWS AHPS forecast points, rain gauges, and NWS QPF predictions.
What's the difference between stable and low?
stable means flow is currently inside the optimal window and projected to stay there for 18 hours. low means flow is currently below the optimal window and projected to stay below for 18 hours. Both describe steady projections; the difference is whether the steady level is inside or below the optimal flow window. For trip advice, combine timing.state with the river's current rating and is_fishable — Timing answers what flow will do, not whether you should fish.
What's the difference between Timing and the current Rating?
Current Rating tells you what the river is doing right now (e.g. Excellent, Good, Fair, Poor). The Timing projection looks ahead over the next 18 hours to tell you how that window is changing.
What if confidence is low?
If the timing confidence is low (below 0.4), treat the timing trend cautiously and check the observation time, current conditions and local access before planning.
Why doesn't the projection go beyond 18 hours?
Hydrologic modeling confidence degrades rapidly past the 18-hour mark for small, steep tributaries. For multi-day planning, use our 7-day Index Forecast instead.