Skip to main content
Arapahoe Basin — forecast verification backdrop
Arapahoe Basin

Verified, not guessed

Forecast Trust

Most apps show you what models predict. SnowSure scores those predictions against measured snowfall — SNOTEL stations, resort reports, and ERA5 — so you know which models to trust at each mountain.

Updated Oct 30, 2026, 9:20 PM UTC · n = 10,561,992 rows

The accuracy edge, measured

Our blend beats the best single model

5.3%

lower forecast error than the best single model at 1–3 days out

We blend all seven models and score the result against measured snowfall. No single model wins at every horizon or at every mountain, which is the case for blending — and the table below shows where it holds and where it does not.

HorizonBlend MAEBest single modelvs best
All horizons5.6 cmNAM (5.5 cm)2% worse
1–3 days out5.2 cmNAM (5.5 cm)5.3% better
4–7 days out5.7 cmNBM (5.2 cm)8.6% worse
8–14 days out6.4 cmNBM (3.0 cm)112% worse

MAE = mean absolute error, in the units you have chosen. Scored on snow days (measured snowfall ≥ 1 cm), against measured ground truth only — SNOTEL stations and resort-reported totals, never another model. Lower error is better; “X% better” means the blend’s error is that much lower than the strongest single model’s for that horizon. Coverage today is weighted toward SNOTEL-instrumented (largely North American) resorts. Updated Oct 25, 2026, 8:00 AM UTC.

Why we built this

Ski forecasts disagree — a lot. ECMWF, GFS, GEM, and four other global models can diverge by 30 cm or more on the same storm. Picking the wrong one means bad trip timing, missed powder, or chasing storms that never arrive.

SnowSure runs a daily verification pipeline: we store what each model predicted, wait for the snow to fall, then grade the forecast against real ground truth — never against another model. That corpus powers regional model weights, per-resort accuracy cards, and our ML extended outlook.

Verification corpus

One row per resort × model × forecast day × target day. Grows daily as the verify-forecasts cron runs.

Verified forecast rows

10,561,992

All horizons, all models

Resorts tracked

592

Mountains with coordinates

Weather models

13

ECMWF, GFS, GEM, JMA, Météo-France, Met Norway, ICON, UKMO, NBM, NAM, HRRR, MeteoSwiss ICON, ICON-2I

Date range

2024-01-01 → 2026-10-29

Historical backfill + live archive

Historical backfill

4,007,823 rows

Open-Meteo Previous Runs vs ERA5 actuals, 2024-01-01 → pre-archive gap

Live daily archive

6,554,169 rows

From 2026-02-21 — stored forecasts vs measured outcomes each morning

Ground truth tiers

We never grade a forecast against itself. Actual snowfall is resolved through a strict priority ladder — higher tiers always win when available for that resort and date.

T1SNOTEL station readings
943,569 rows · 34%

981 active stations matched to resorts · daily NRCS ingestion

T2Resort-reported 24h snowfall
7,541 rows · 0%

Relayed from official resort snow reports where available

T5ERA5 / Open-Meteo retrospective
1,835,145 rows · 66%

Used only when no SNOTEL or resort report exists for that mountain and date

Best model by region

Recalculated weekly from verified mean absolute error (MAE). Skill score is 100 − (MAE × 5), capped 0–100 — higher is better. Each resort page shows a 90-day breakdown for that specific mountain.

RegionTop modelDay-1 MAESamplesSkill score
AlpsNBM2.5 cmn = 12687.5
RockiesMétéo-France4.2 cmn = 3,16578.5
CascadesUKMO5.8 cmn = 37768.7
AndesMétéo-France8.6 cmn = 14356.9
SierraNBM9.1 cmn = 6348

Ten-day totals, graded at the station’s own height

Every night, the ten-day snow total SnowSure published for each resort is graded against what one station measured over those same ten days. The station is the one nearest the forecast’s own height, within 300 m, that reported every day of the window, and only stations held out of all model training count. A cell with fewer than 20 station-days says “too few” rather than a number. The result is published whichever way it falls.

Last graded 2026-10-30 (UTC) over forecasts issued 2026-09-28 to 2026-10-18.

SnowSure, as published

Days 1–10 — the headline window. Days 1–5 alone can flip a verdict when a storm lands on day 6.

RegionStation-daysBiasAverage miss≥10cm hit≥25cm hit
All regions416+5.1cm6.5 cm65% · 73% false38% · 90% false
Alps5 / 20too fewtoo fewtoo fewtoo few
Cascades16 / 20too fewtoo fewtoo fewtoo few
Rockies390+5cm6.2 cm63% · 75% false0% · 100% false
Sierra5 / 20too fewtoo fewtoo fewtoo few

Days 1–5, all regions: bias +0.7cm, average miss 1.5 cm · 520 station-days

Days 6–10, all regions: bias +2.5cm, average miss 4.1 cm · 680 station-days

Forecast:
published_forecast_verifications, the number on the resort page, summed over horizons 1–10 of each issue, at the height it was made for.
Measured:
snowfall_actuals_screened, boards and gauges only (no depth-derived floors, no model analyses), the station nearest the forecast’s height within 300 m, held out by rule interim-fnv1a-1in5.
Grade:
forecast_scorecard_daily, bias is forecast minus measured; a hit is a window that measured at least the threshold and was forecast at least the threshold; the false share is the forecasts at the threshold that did not measure it. A station-day is one resort’s issue graded at one station over its window.

How verification works

  1. 1

    Capture forecasts

    Every hour, weather-sync stores each model's multi-day snowfall forecast per resort in weather_snapshots. A daily archive row is kept indefinitely.

  2. 2

    Measure what fell

    SNOTEL cron pulls station snow-water equivalent; sync-resort-depths captures operator-reported 24h totals. ERA5 fills gaps for resorts without local sensors.

  3. 3

    Grade predictions

    The verify-forecasts cron (8 AM UTC) pairs yesterday's stored forecasts with measured actuals and writes one verification row per model and horizon.

  4. 4

    Weight and display

    Weekly model-accuracy cron updates regional blending weights. Resort pages show per-model MAE; this page shows the global corpus and regional leaders.

Use this data

Per-resort accuracy appears on every resort page. Developers and AI agents can query the JSON API — cite SnowSure when sharing forecast credibility.

GET /api/v1/blend-accuracy · GET /api/v1/forecast-trust · GET /api/v1/resorts/{slug}/forecast-accuracy