Microsoft Advertising tracking pixel

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

  1. Start with the current gauge reading, then look at the forecast target time and projected flow.
  2. Follow the projected rise or recession against the river’s reference range to plan the next water window.
  3. 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 estimateValueRecorded 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.

Grand River at Painesville · USGS gauge 04212100

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.

Live Example: Black River (Watertown)

Timing Badge:
Low water — projection flat
Projected State: low
Next Event: none
Confidence: 45%
Active Sources: NWS AHPS

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. 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. 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. 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. 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 timing JSON 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-04T10:05:37+00:00. First locked prediction: 2026-10-05 00:45:49. 12,462 recorded cases.

  • Excluded not prospective: 3
  • Excluded proxy: 1,836
  • Missing actual: 13
  • Missing prediction: 36
  • Pending: 1,667
  • Scored: 8,907

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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
0-24h170 / 14521.021.1 / 18.1 (n=144)87 / 144
unknown3 / 0PendingNo paired outcomes0 / 0
24-72h614 / 51442.642.7 / 22.9 (n=512)349 / 512
>72h1073 / 89863.864.0 / 42.3 (n=895)615 / 895
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river60 / 0PendingNo paired outcomes0 / 0
rocky-river60 / 6016.016.0 / 4.9 (n=60)48 / 60
conneaut-creek60 / 604.24.2 / 3.9 (n=60)32 / 60
chagrin-river60 / 609.59.5 / 7.4 (n=60)33 / 60
vermilion-river60 / 605.96.4 / 5.0 (n=54)35 / 54
grand-river60 / 594.24.2 / 3.3 (n=59)36 / 59
cuyahoga-river60 / 5917.217.2 / 27.2 (n=59)16 / 59
brandy-run60 / 600.20.2 / 0.2 (n=60)52 / 60
elk-creek60 / 0PendingNo paired outcomes0 / 0
walnut-creek60 / 601.31.3 / 0.8 (n=60)37 / 60
twenty-mile-creek60 / 0PendingNo paired outcomes0 / 0
crooked-creek60 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek60 / 5910.410.4 / 10.9 (n=59)23 / 59
chautauqua-creek60 / 601.11.1 / 0.6 (n=60)38 / 60
eighteen-mile-creek60 / 601.21.2 / 0.8 (n=60)41 / 60
huron-river60 / 6014.514.5 / 10.7 (n=60)37 / 60
black-river60 / 6017.817.8 / 17.1 (n=60)42 / 60
euclid-creek60 / 602.42.4 / 1.3 (n=60)47 / 60
canadaway-creek60 / 601.01.0 / 0.8 (n=60)20 / 60
silver-creek60 / 600.40.4 / 0.2 (n=60)51 / 60
buffalo-creek60 / 608.08.0 / 3.8 (n=60)47 / 60
cazenovia-creek60 / 6015.015.0 / 4.2 (n=60)40 / 60
salmon-river60 / 607.17.1 / 3.6 (n=60)46 / 60
oak-orchard-creek60 / 60571.0571.0 / 282.8 (n=60)45 / 60
genesee-river60 / 60200.4200.4 / 160.2 (n=60)46 / 60
sandy-creek-hamlin60 / 6027.627.6 / 10.9 (n=60)46 / 60
irondequoit-creek60 / 6033.633.6 / 12.2 (n=60)51 / 60
johnson-creek60 / 0PendingNo paired outcomes0 / 0
eighteenmile-creek-niagara60 / 6036.736.7 / 14.8 (n=60)48 / 60
black-river-watertown60 / 60279.1279.1 / 226.4 (n=60)45 / 60
sandy-creek-adams60 / 6084.684.6 / 57.3 (n=60)49 / 60
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet1704 / 143151.151.3 / 32.8 (n=1425)945 / 1425
recovering72 / 4866.066.0 / 32.3 (n=48)36 / 48
watching72 / 6668.768.7 / 54.2 (n=66)59 / 66
active12 / 12111.0111.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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
0-24h214 / 18442.642.8 / 29.8 (n=183)139 / 183
24-72h604 / 50486.386.7 / 61.1 (n=502)374 / 502
>72h1042 / 872187.3187.9 / 176.1 (n=869)497 / 869
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river60 / 0PendingNo paired outcomes0 / 0
rocky-river60 / 6047.747.7 / 39.2 (n=60)33 / 60
conneaut-creek60 / 603.83.8 / 2.8 (n=60)45 / 60
chagrin-river60 / 6072.872.8 / 71.7 (n=60)24 / 60
vermilion-river60 / 6045.845.8 / 34.1 (n=60)31 / 60
grand-river60 / 6014.514.5 / 5.4 (n=60)52 / 60
cuyahoga-river60 / 60217.3217.3 / 105.1 (n=60)39 / 60
brandy-run60 / 600.50.5 / 0.5 (n=60)36 / 60
elk-creek60 / 0PendingNo paired outcomes0 / 0
walnut-creek60 / 604.14.1 / 3.1 (n=60)42 / 60
twenty-mile-creek60 / 0PendingNo paired outcomes0 / 0
crooked-creek60 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek60 / 6063.463.4 / 37.2 (n=60)50 / 60
chautauqua-creek60 / 602.92.9 / 1.9 (n=60)35 / 60
eighteen-mile-creek60 / 607.47.4 / 6.7 (n=60)33 / 60
huron-river60 / 6093.593.5 / 27.4 (n=60)53 / 60
black-river60 / 6080.180.1 / 57.7 (n=60)30 / 60
euclid-creek60 / 6025.425.4 / 24.2 (n=60)46 / 60
canadaway-creek60 / 603.73.7 / 2.5 (n=60)39 / 60
silver-creek60 / 601.01.0 / 0.9 (n=60)28 / 60
buffalo-creek60 / 6025.925.9 / 20.8 (n=60)42 / 60
cazenovia-creek60 / 6029.631.8 / 28.1 (n=54)41 / 54
salmon-river60 / 6013.813.8 / 10.1 (n=60)41 / 60
oak-orchard-creek60 / 60347.6347.6 / 265.0 (n=60)35 / 60
genesee-river60 / 60517.2517.2 / 295.1 (n=60)45 / 60
sandy-creek-hamlin60 / 6015.515.5 / 9.7 (n=60)41 / 60
irondequoit-creek60 / 6024.224.2 / 18.1 (n=60)44 / 60
johnson-creek60 / 0PendingNo paired outcomes0 / 0
eighteenmile-creek-niagara60 / 6032.932.9 / 19.1 (n=60)36 / 60
black-river-watertown60 / 601,585.11,585.1 / 1,809.1 (n=60)30 / 60
sandy-creek-adams60 / 60302.1302.1 / 259.3 (n=60)39 / 60
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet1200 / 1002110.7110.7 / 84.0 (n=1002)654 / 1002
recovering102 / 90345.0345.0 / 372.4 (n=90)59 / 90
watching528 / 438146.3148.2 / 152.3 (n=432)276 / 432
active30 / 30286.0286.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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
0-24h31 / 26262.0262.0 / 169.3 (n=26)19 / 26
24-72h62 / 52233.2233.2 / 225.2 (n=52)30 / 52
>72h93 / 78355.4355.4 / 249.7 (n=78)41 / 78
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river6 / 0PendingNo paired outcomes0 / 0
rocky-river6 / 679.379.3 / 55.6 (n=6)2 / 6
conneaut-creek6 / 68.08.0 / 7.3 (n=6)4 / 6
chagrin-river6 / 695.895.8 / 108.7 (n=6)2 / 6
vermilion-river6 / 652.652.6 / 49.0 (n=6)6 / 6
grand-river6 / 611.911.9 / 10.1 (n=6)4 / 6
cuyahoga-river6 / 6224.4224.4 / 195.7 (n=6)4 / 6
brandy-run6 / 60.70.7 / 0.6 (n=6)5 / 6
elk-creek6 / 0PendingNo paired outcomes0 / 0
walnut-creek6 / 64.64.6 / 4.1 (n=6)3 / 6
twenty-mile-creek6 / 0PendingNo paired outcomes0 / 0
crooked-creek6 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek6 / 672.472.4 / 60.8 (n=6)3 / 6
chautauqua-creek6 / 63.63.6 / 3.2 (n=6)1 / 6
eighteen-mile-creek6 / 66.46.4 / 5.9 (n=6)3 / 6
huron-river6 / 660.560.5 / 49.3 (n=6)6 / 6
black-river6 / 642.342.3 / 74.7 (n=6)1 / 6
euclid-creek6 / 627.627.6 / 26.3 (n=6)4 / 6
canadaway-creek6 / 64.24.2 / 3.4 (n=6)5 / 6
silver-creek6 / 61.41.4 / 1.3 (n=6)4 / 6
buffalo-creek6 / 69.69.6 / 14.1 (n=6)3 / 6
cazenovia-creek6 / 69.79.7 / 12.6 (n=6)4 / 6
salmon-river6 / 633.133.1 / 10.7 (n=6)4 / 6
oak-orchard-creek6 / 6150.3150.3 / 150.3 (n=6)0 / 6
genesee-river6 / 6752.5752.5 / 448.8 (n=6)6 / 6
sandy-creek-hamlin6 / 615.115.1 / 10.8 (n=6)5 / 6
irondequoit-creek6 / 630.630.6 / 28.7 (n=6)4 / 6
johnson-creek6 / 0PendingNo paired outcomes0 / 0
eighteenmile-creek-niagara6 / 612.612.6 / 25.8 (n=6)1 / 6
black-river-watertown6 / 6747.4747.4 / 2,886.7 (n=6)0 / 6
sandy-creek-adams6 / 65,320.35,320.3 / 1,687.5 (n=6)6 / 6
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet108 / 8442.442.4 / 38.0 (n=84)50 / 84
watching66 / 60182.1182.1 / 363.8 (n=60)33 / 60
active12 / 122,681.32,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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
0-24h31 / 26262.0262.0 / 169.3 (n=26)19 / 26
24-72h124 / 104137.4139.2 / 206.0 (n=102)55 / 102
>72h217 / 182231.0234.7 / 217.6 (n=178)96 / 178
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river12 / 0PendingNo paired outcomes0 / 0
rocky-river12 / 1257.255.5 / 55.6 (n=6)0 / 6
conneaut-creek12 / 129.39.3 / 8.3 (n=12)10 / 12
chagrin-river12 / 12109.7109.7 / 110.3 (n=12)2 / 12
vermilion-river12 / 1259.559.5 / 52.9 (n=12)11 / 12
grand-river12 / 1212.312.3 / 10.5 (n=12)7 / 12
cuyahoga-river12 / 12227.4227.4 / 184.9 (n=12)10 / 12
brandy-run12 / 120.70.7 / 0.5 (n=12)11 / 12
elk-creek12 / 0PendingNo paired outcomes0 / 0
walnut-creek12 / 124.54.5 / 4.1 (n=12)6 / 12
twenty-mile-creek12 / 0PendingNo paired outcomes0 / 0
crooked-creek12 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek12 / 1276.976.9 / 63.5 (n=12)9 / 12
chautauqua-creek12 / 124.54.5 / 3.6 (n=12)5 / 12
eighteen-mile-creek12 / 126.76.7 / 6.0 (n=12)6 / 12
huron-river12 / 1258.358.3 / 47.9 (n=12)10 / 12
black-river12 / 1282.482.4 / 77.9 (n=12)2 / 12
euclid-creek12 / 1228.228.2 / 26.7 (n=12)11 / 12
canadaway-creek12 / 124.44.4 / 3.4 (n=12)11 / 12
silver-creek12 / 121.41.4 / 1.3 (n=12)8 / 12
buffalo-creek12 / 1215.115.1 / 14.5 (n=12)7 / 12
cazenovia-creek12 / 1215.815.8 / 13.2 (n=12)8 / 12
salmon-river12 / 1215.815.8 / 15.0 (n=12)2 / 12
oak-orchard-creek12 / 12121.7121.7 / 121.7 (n=12)0 / 12
genesee-river12 / 12658.9658.9 / 348.7 (n=12)12 / 12
sandy-creek-hamlin12 / 1219.819.8 / 12.3 (n=12)11 / 12
irondequoit-creek12 / 1229.329.3 / 28.9 (n=12)1 / 12
johnson-creek12 / 0PendingNo paired outcomes0 / 0
eighteenmile-creek-niagara12 / 1232.932.9 / 30.0 (n=12)7 / 12
black-river-watertown12 / 121,705.81,705.8 / 2,737.5 (n=12)0 / 12
sandy-creek-adams12 / 121,903.61,903.6 / 1,394.0 (n=12)3 / 12
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet210 / 16242.141.5 / 36.6 (n=156)102 / 156
watching120 / 108265.9265.9 / 358.0 (n=108)48 / 108
active30 / 30650.6650.6 / 422.8 (n=30)18 / 30
recovering12 / 12673.8673.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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
24-72h930 / 77487.187.1 / 87.3 (n=774)294 / 774
>72h1643 / 136696.496.4 / 113.0 (n=1366)452 / 1366
0-24h217 / 18285.185.1 / 56.1 (n=182)91 / 182
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river90 / 0PendingNo paired outcomes0 / 0
rocky-river90 / 8458.858.8 / 68.6 (n=84)14 / 84
conneaut-creek90 / 908.88.8 / 9.1 (n=90)19 / 90
chagrin-river90 / 9097.697.6 / 118.8 (n=90)18 / 90
vermilion-river90 / 8444.844.8 / 55.0 (n=84)15 / 84
grand-river90 / 9011.011.0 / 12.4 (n=90)33 / 90
cuyahoga-river90 / 9096.296.2 / 147.0 (n=90)31 / 90
brandy-run90 / 900.70.7 / 0.5 (n=90)68 / 90
elk-creek90 / 0PendingNo paired outcomes0 / 0
walnut-creek90 / 905.95.9 / 7.0 (n=90)62 / 90
twenty-mile-creek90 / 0PendingNo paired outcomes0 / 0
crooked-creek90 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek90 / 9085.785.7 / 71.0 (n=90)28 / 90
chautauqua-creek90 / 904.84.8 / 3.0 (n=90)58 / 90
eighteen-mile-creek90 / 906.76.7 / 7.7 (n=90)20 / 90
huron-river90 / 9030.730.7 / 36.0 (n=90)31 / 90
black-river90 / 9066.366.3 / 75.4 (n=90)23 / 90
euclid-creek90 / 9010.410.4 / 15.1 (n=90)44 / 90
canadaway-creek90 / 906.36.3 / 5.4 (n=90)46 / 90
silver-creek90 / 901.41.4 / 1.3 (n=90)36 / 90
buffalo-creek90 / 9020.520.5 / 28.0 (n=90)22 / 90
cazenovia-creek90 / 9017.217.2 / 19.7 (n=90)26 / 90
salmon-river90 / 9031.331.3 / 21.0 (n=90)52 / 90
oak-orchard-creek90 / 84131.9131.9 / 131.9 (n=84)0 / 84
genesee-river90 / 90357.2357.2 / 161.8 (n=90)54 / 90
sandy-creek-hamlin90 / 9013.613.6 / 12.1 (n=90)45 / 90
irondequoit-creek90 / 9037.937.9 / 30.8 (n=90)43 / 90
johnson-creek90 / 0PendingNo paired outcomes0 / 0
eighteenmile-creek-niagara90 / 9014.214.2 / 15.5 (n=90)17 / 90
black-river-watertown90 / 901,045.21,045.2 / 1,312.4 (n=90)17 / 90
sandy-creek-adams90 / 90194.6194.6 / 229.6 (n=90)15 / 90
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet1902 / 156069.769.7 / 86.6 (n=1560)531 / 1560
active132 / 108134.5134.5 / 96.7 (n=108)26 / 108
watching450 / 39080.180.1 / 76.4 (n=390)216 / 390
recovering306 / 264227.5227.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
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
0-24h248 / 21626.426.4 / 26.4 (n=216)126 / 216
24-72h992 / 85825.425.4 / 28.2 (n=858)390 / 858
>72h1736 / 139334.734.7 / 40.3 (n=1393)497 / 1393
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river96 / 0PendingNo paired outcomes0 / 0
rocky-river96 / 923.33.3 / 2.7 (n=92)43 / 92
conneaut-creek96 / 922.12.1 / 1.7 (n=92)49 / 92
chagrin-river96 / 924.44.4 / 4.0 (n=92)38 / 92
vermilion-river96 / 921.81.8 / 6.9 (n=92)5 / 92
grand-river96 / 9212.412.4 / 14.9 (n=92)29 / 92
cuyahoga-river96 / 9256.756.7 / 36.7 (n=92)66 / 92
brandy-run96 / 920.10.1 / 0.0 (n=92)48 / 92
elk-creek96 / 0PendingNo paired outcomes0 / 0
walnut-creek96 / 811.91.9 / 0.7 (n=81)57 / 81
twenty-mile-creek96 / 0PendingNo paired outcomes0 / 0
crooked-creek96 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek96 / 926.46.4 / 7.3 (n=92)28 / 92
chautauqua-creek96 / 921.21.2 / 0.8 (n=92)80 / 92
eighteen-mile-creek96 / 921.61.6 / 1.1 (n=92)67 / 92
huron-river96 / 923.03.0 / 4.2 (n=92)27 / 92
black-river96 / 922.42.4 / 8.1 (n=92)16 / 92
euclid-creek96 / 862.12.1 / 1.3 (n=86)52 / 86
canadaway-creek96 / 920.40.4 / 0.3 (n=92)40 / 92
silver-creek96 / 920.60.6 / 0.6 (n=92)39 / 92
buffalo-creek96 / 923.23.2 / 1.9 (n=92)63 / 92
cazenovia-creek96 / 922.62.6 / 1.3 (n=92)63 / 92
salmon-river96 / 9210.210.2 / 9.3 (n=92)29 / 92
oak-orchard-creek96 / 92160.6160.6 / 160.6 (n=92)0 / 92
genesee-river96 / 92245.8245.8 / 200.2 (n=92)37 / 92
sandy-creek-hamlin96 / 928.98.9 / 8.3 (n=92)34 / 92
irondequoit-creek96 / 922.72.7 / 2.3 (n=92)43 / 92
johnson-creek96 / 9219.719.7 / 17.3 (n=92)29 / 92
eighteenmile-creek-niagara96 / 929.59.5 / 13.2 (n=92)0 / 92
black-river-watertown96 / 92255.7255.7 / 410.3 (n=92)18 / 92
sandy-creek-adams96 / 925.65.6 / 18.8 (n=92)13 / 92
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet2976 / 246730.730.7 / 34.9 (n=2467)1013 / 2467

Model version b3f961a97961

2418 cases. Versions are reported separately. CFS errors across different rivers are not directly comparable; use the river breakdown too.

Elapsed forecast lead
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
24-72h806 / 31926.926.9 / 25.1 (n=319)153 / 319
>72h1426 / 10821.721.7 / 21.7 (n=108)44 / 108
0-24h186 / 10624.724.7 / 26.7 (n=106)66 / 106
River breakdown
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
ashtabula-river78 / 0PendingNo paired outcomes0 / 0
rocky-river78 / 201.01.0 / 0.7 (n=20)5 / 20
conneaut-creek78 / 201.61.6 / 1.0 (n=20)8 / 20
chagrin-river78 / 203.83.8 / 2.3 (n=20)9 / 20
vermilion-river78 / 201.51.5 / 1.6 (n=20)5 / 20
grand-river78 / 206.06.0 / 4.0 (n=20)9 / 20
cuyahoga-river78 / 2064.964.9 / 63.7 (n=20)7 / 20
brandy-run78 / 200.10.1 / 0.1 (n=20)9 / 20
elk-creek78 / 0PendingNo paired outcomes0 / 0
walnut-creek78 / 131.41.4 / 1.0 (n=13)7 / 13
twenty-mile-creek78 / 0PendingNo paired outcomes0 / 0
crooked-creek78 / 0PendingNo paired outcomes0 / 0
cattaraugus-creek78 / 2012.412.4 / 5.6 (n=20)18 / 20
chautauqua-creek78 / 200.70.7 / 0.4 (n=20)16 / 20
eighteen-mile-creek78 / 201.21.2 / 1.2 (n=20)11 / 20
huron-river78 / 202.72.7 / 1.1 (n=20)16 / 20
black-river78 / 201.71.7 / 1.1 (n=20)10 / 20
euclid-creek78 / 203.63.6 / 2.9 (n=20)15 / 20
canadaway-creek78 / 200.20.2 / 0.3 (n=20)8 / 20
silver-creek78 / 200.40.4 / 0.3 (n=20)18 / 20
buffalo-creek78 / 204.94.9 / 2.3 (n=20)13 / 20
cazenovia-creek78 / 204.04.0 / 1.8 (n=20)16 / 20
salmon-river78 / 203.33.3 / 2.8 (n=20)5 / 20
oak-orchard-creek78 / 20129.3129.3 / 129.3 (n=20)0 / 20
genesee-river78 / 20238.4238.4 / 210.5 (n=20)7 / 20
sandy-creek-hamlin78 / 2013.113.1 / 12.3 (n=20)7 / 20
irondequoit-creek78 / 205.85.8 / 5.1 (n=20)12 / 20
johnson-creek78 / 2016.016.0 / 9.5 (n=20)11 / 20
eighteenmile-creek-niagara78 / 207.27.2 / 8.9 (n=20)6 / 20
black-river-watertown78 / 20142.9142.9 / 180.0 (n=20)8 / 20
sandy-creek-adams78 / 209.79.7 / 8.8 (n=20)7 / 20
Modeled storm state when issued (not observed storm truth)
GroupCases / scoredMean absolute error, CFSPaired model / unchanged-flow error, CFSWorse than unchanged flow
quiet2274 / 52525.825.8 / 25.0 (n=525)262 / 525
recovering12 / 60.90.9 / 1.3 (n=6)0 / 6
active6 / 27.27.2 / 3.3 (n=2)1 / 2
watching126 / 0PendingNo paired outcomes0 / 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.

Scan to visit

Steelhead Almanac QR Code

Steelhead Almanac

steelheadalmanac.com

Privacy policy